orriduck/dsh-tui
一个轻量级、支持会话感知的DeepSeek Harness终端界面
Project Overview项目介绍
dsh-tui is a terminal UI plugin for DeepSeek Harness, distributed as an out-of-tree profile bundle. It streams text, reasoning, tool activity, approvals, and ask_user_question prompts in the terminal, with slash commands such as /sessions, /resume, /new, /permission, /skills, Tab completion, a Codex-style composer, context-usage display, and DSH version plus an npm update hint, and it reports lifecycle to Herdr automatically. Use it for one-person daily work in the current directory, resuming the same workspace later. Caveat: DeepSeek Harness is still a developer preview, so review the changelog and compatibility notes before upgrading across preview releases.
dsh-tui 是面向 DeepSeek Harness 的命令行 TUI 插件,以 out-of-tree profile 形式分发。它在终端内流式呈现文本、推理、工具调用、审批与 ask_user_question,支持 /sessions、/resume、/new、/permission、/skills、Tab 补全,提供 Codex 风格编辑器、上下文用量、DSH 版本与 npm 更新提示,并自动向 Herdr 上报生命周期。适用于单人每日在当前目录即时聊天并续接会话。注意:DeepSeek Harness 仍为开发者预览,跨预览版升级前请查阅 CHANGELOG 与兼容性说明。
请帮我了解并安装插件:【dsh-tui】【https://github.com/orriduck/dsh-tui】
Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。
Or use CLI install (for developers)或使用命令行安装(适合开发者)
CLI Install命令行安装
dsh plugin --profile web add github:orriduck/dsh-tui
把 orriduck/dsh-tui 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-tui
A small terminal UI for DeepSeek Harness, built as an out-of-tree DSH profile bundle.
It is intentionally optimized for one-person daily use: start in the current directory, chat immediately, close the terminal, and continue the same workspace later.

Quick start
Open a terminal in the project you want DeepSeek to work on:
cd /path/to/your/project
dsh-tui
To continue the newest session for that same project later:
cd /path/to/your/project
dsh-tui -c
Install
Requirements: Node.js 22+, pnpm, and the official DeepSeek Harness CLI.
npm install -g @deepseek-ai/dsh
npm install -g github:orriduck/dsh-tui
Then enter any project and run:
cd /path/to/your/project
dsh-tui
The first launch creates the local tui profile and registers this bundle automatically. DSH remains responsible for credentials, model settings, sessions, tools, sandboxing, and approvals.
Daily use
dsh-tui # new session in the current directory
dsh-tui -c # continue the newest session for this directory
dsh-tui "fix the failing test" # start with a prompt
dsh-tui -r <session-id> # resume an exact session
Inside the UI:
- Enter sends a follow-up; while the agent is running, it steers the current turn.
- The composer uses a real terminal cursor, keeping macOS IME composition and candidate UI anchored to the text insertion point.
Ctrl+Ccancels a running turn. When idle, it saves and exits./sessionslists the 10 most recent sessions saved for the current directory./resumeopens a numbered picker,/resume <session-id>switches directly, and/newstarts fresh. Session switches are idle-only and preserve the finished session before restarting the TUI. A corrupt saved log is marked unreadable instead of blocking the rest of the list, and is omitted from the resume picker./status,/permission,/skills,/sessions,/new,/resume,/cancel,/help,/quit, and/exitare available.- Tool calls, reasoning, approvals, and
ask_user_questionprompts render in the terminal. - A near-full-width neutral composer surface holds the input with one row of vertical breathing room. Like Codex, it probes the terminal background and paints an opaque RGB tint equivalent to 4% black on light terminals or 12% white on dark terminals; ANSI has no per-cell alpha. The compact status sits immediately below the surface and shows model state, installed DSH version, and accumulated context usage without repeating the default workspace sandbox. Non-default permission states remain visible, with Full Access emphasized.
/permissionswitches this session through DSH's official command — idle only, with a typedFULL ACCESSconfirmation for full access. /skillslists user-invocable skills. Type/skill-nameto load one directly; slash commands and catalog skills appear in a compact, described menu below the composer and offer Tab completion.
Interface states
Slash completion combines built-in commands with the current DSH skill catalog:

Full access is deliberately conspicuous after its typed confirmation:

Herdr integration
When dsh-tui runs inside Herdr, it connects automatically. No separate hook installation is needed.
The bridge reports:
working,blocked, andidle/donelifecycle state- the current DSH session identity
- the generated session title and
DeepSeekdisplay label - clean release when the TUI exits
This makes the DeepSeek tab visible to herdr agent list, get, and wait, including notifications when a background turn finishes or needs an answer. It is inert outside a Herdr-managed pane and never changes DSH credentials or permissions.
Herdr 0.8.0 does not yet include a native dsh agent kind, so herdr agent start --kind dsh and herdr agent prompt are not available yet. Start and type into the TUI normally; native launch/control belongs in a future Herdr integration.
Appearance
The first launch creates ~/.dsh/tui.json:
{
"theme": "system"
}
system follows the terminal background automatically. It uses a short OSC 11 color probe first and retains the returned RGB value to derive the Codex-style composer tint. If exact RGB is unavailable, it falls back through COLORFGBG, the macOS appearance setting, and finally dark. Set theme to light or dark to pin it instead.
For a one-off override:
DSH_TUI_THEME=dark dsh-tui
Run /status inside the TUI to see the resolved theme and where it came from.
DSH version and updates
The status bar reads the installed Harness version from dsh --version. After startup, a non-blocking check against the official npm registry looks for a newer @deepseek-ai/dsh release. If one exists, the status bar shows the exact command to install it, for example:
npm install -g @deepseek-ai/dsh@0.1.0-rc.7
The check times out quickly and silently disappears when offline, so it never blocks the TUI. Set DSH_TUI_UPDATE_CHECK=0 to disable the registry request. DeepSeek Harness is still a developer preview; review the changelog and compatibility notes before upgrading across preview releases.
Credentials and permissions
This package never reads or stores a DeepSeek key itself. It uses the normal DSH credential chain, including ~/.dsh/.credentials.yaml and supported environment variables.
The default DSH permission preset is workspace-write with interactive approval. The TUI answers DSH's official approval/request and user-question seams; it does not bypass the sandbox. The current preset remains visible in the composer status, while /status provides the underlying sandbox/approval facts. /permission (bare or with a preset name) switches through the official command — switches are idle-only, affect only the current session, and full access requires typing FULL ACCESS to confirm.
Scope
Included:
- streaming text and reasoning
- tool activity and results
- interactive approvals and questions
- a persistent permission badge with
/permissionswitching (idle-only, full-access confirmation) - context-window usage and token totals
- installed DSH version and an optional npm update hint
- skill discovery, direct invocation visibility, and Tab completion
- durable sessions, current-directory continuation, and in-TUI list/new/resume commands
- one-command profile bootstrap
- automatic Herdr lifecycle reporting when available
Not included yet: split panes, remote persistence, a graphical cross-workspace session browser, image attachments, native Herdr launch/control, or Web-client parity. Herdr/tmux can own terminal persistence around this TUI if needed.
Development
pnpm install --registry=https://registry.npmjs.org
pnpm check
pnpm test
pnpm build
# Use the checkout directly while developing
dsh plugin --profile tui add link:.
dsh --profile tui
The official Harness is currently a developer preview. DeepSeek package versions are pinned to 0.1.0-rc.6 so an upstream breaking change is visible instead of silently changing behavior.
Release history is maintained in CHANGELOG.md. package.json remains the machine-readable source of the current dsh-tui version.
License
MIT
robiteame/dsh-session-tree-extension
chiro2001/dsh-oc
Julyves/dsh-git-ui
shiningsprk-arch/dsh-context-viewer
kevenxz/dsh-desktop
ccch1mneyyy/dsh-TUI