@aiwayds/dsh-tui-pi
A fully-featured pi-style terminal UI for DeepSeek Harness (dsh) — history look-back & fork-at-turn, guided preset switching, live subagent steering, model profiles & themes
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:fan56/dsh-tui-pi说明文档
阅读完整 README ↗Configuration
Every knob lives under the dsh-tui settings namespace in ~/.dsh/settings.yaml (note the section name: dsh-tui). Theme / panel height / footer hints / icon set are applies: 'live' — a committed change hot-applies to the running TUI, no restart:
| Key | Default | Meaning |
|---|---|---|
theme | auto | Color scheme: auto (follow the terminal) / light / dark / any registered theme name (/theme writes back to the same key) |
panelHeight | '1' | Think/tool panel height: '1' / '5' / '7' / '10' / 'all' (full content) |
maxAgents | 4 | Max concurrently running subagents, 0 = unlimited (hot-tunable in /agents → l limits) |
maxRounds | 75 | Max assistant messages per subagent before a wrap-up request is injected; 0 = unlimited |
maxRoundsGrace | 7 | Grace rounds after the wrap-up before the child is force-stopped (session preserved, resumable); 0 = warn only |
disableSubagent | true | Disable the native subagent tool; delegation goes through registered agents (~/.dsh/agents/*.md); subagent_fork/workflow/ralph stay available |
footerHints | all true | Per-segment footer hint toggles: send/stop/quit/quitEmpty/subagents/search/history |
cacheHitMode | lastMessage | Footer CH segment scope: lastMessage — the latest assistant message's cache-hit rate, matching the pi-tui footer (default); session — cumulative over the whole session |
iconSet | auto | auto/nerdfont/plain — powerline glyphs adapt to your font; install a Nerd Font with node scripts/install-font.mjs |
rememberPreset | true | Remember the last /preset selection per workspace (keyed by directory) and start the next launch there — the first session composes under it instead of the server-side default. false always starts on the server default. The memory itself lives in $DSH_HOME/workspace-presets.json |
favoriteModels | [] | Favorite models (provider/id), pinned to the top of the /model picker |
hiddenModels | [] | Hidden models (provider/id), moved to the picker's Hidden section (f favorites / h hides inside the picker — both persist to these keys) |
Session-store knobs (env overrides DSH_TUI_RETENTION_* / DSH_TUI_RESUME_*; precedence: settings.yaml > env > default):
dsh-tui:
retention: # startup janitor for ~/.dsh/sessions — DELETES old logs. Once per startup.
maxCount: 100 # <= 0 disables the janitor
maxAgeDays: 30
minIdleHours: 24
resume: # /resume display filter — only HIDES picker rows, never deletes.
maxAgeDays: 30
minBytes: 1024
Key remaps live in ~/.dsh/keybindings.json (keyboard section above); DSH_TUI_COPY_ON_SELECT=0 keeps drag-selection visual-only.
The plugin ships a bundled skill (dsh-tui-pi-config): ask the agent to "configure the TUI" and the guide loads automatically — it collects your choices interactively via ask_user_question (theme, panel height, subagent concurrency) and writes the dsh-tui: section for you. The full key table and the DSH_TUI_* env var list live in skills/dsh-tui-pi-config/SKILL.md.