前言¶
DeepSeek Harness(dsh)把模型适配、工具、会话、沙箱和 UI 都做成可替换插件,官方口号是「一切皆插件」。开发者预览阶段默认入口是网页界面:npx @deepseek-ai/dsh web 能在浏览器里跑智能体。习惯 SSH、tmux、纯终端的人会立刻碰到缺口——官方仓库本身并不提供一套完整的全屏 TUI。
社区目录 DeepSeek Harness 插件库 把这类扩展按功能分类收录。需要说明:该站点是独立社区目录,与 DeepSeek / 幻方没有官方从属关系,不是官方应用商店。目录里「界面增强」分类下,精选条目 dsh-TUI 把 Claude Code 风格的全屏终端交互接到现有 dsh 服务上:像素鲸鱼顶栏、实时工作状态行、思考流式展开、双击 Esc 时间回溯,以及上下文进度条和 TPS 仪表。
本文按目录详情页、GitHub 仓库 README、docs/getting-started.md、docs/architecture.md、npm 包说明和 DeepSeek Harness 官方仓库 交叉核对后整理。
这是什么¶
dsh-TUI 是给 DeepSeek Harness 用的全屏终端界面插件,由 GitHub 用户 ccch1mneyyy 维护,许可证 MIT,主要语言 TypeScript。仓库地址是 ccch1mneyyy/dsh-TUI,发布到 npm 的包名是 @deepseek-harness-tui/dsh-tui。本稿核对时 GitHub API 显示 1551 星,npm 上当前版本是 0.8.0;社区目录页当时列出 1058 星,目录数据可能滞后。
它解决的是「dsh 能跑智能体,但终端里没有一套完整交互界面」这件事。插件以 Cordis 方式挂到独立的 dsh-tui profile 上,不改 DeepSeek Harness 核心源码:装上就启用,卸掉不会留下核心补丁。TUI 只负责交互与呈现;模型调用、工具执行、fork / resume、compaction 和持久化仍由 dsh 现有服务拥有,会话日志才是对话真源。
仓库 README 写明:该插件曾被 DeepSeek Harness 官方公众号作为「内测用户精选插件」展示。这是仓库自己的收录说明,不改变它仍是社区维护插件这一事实。
核心功能¶
按 README 与交互文档,能力可以分成下面几块。
1、终端原生对话。流式 Markdown、结构化工具卡、/ 命令与 @ 文件补全(消息任意位置都能补全;文本会附加文件内容,PNG / JPEG / WebP / GIF 作为持久图片块发送)、历史搜索、消息选择。渲染有 inline 和 alternate-screen 两种模式;/lang 可在中英界面之间切换。
2、可观察的 Agent 状态。实时工作状态行、上下文分段进度条、TPS 仪表、缓存命中率、推理等级、输入 / 输出 token,以及 Git / 会话信息。工作状态行复用同作者的 dsh-working-activity 状态机,从会话事件在进程内派生,不把 UI 状态写进共享日志。TPS 仪表按仓库说明采用流式 1/8 格 gauge,速度语义色为 ≥50 绿 / ≥20 黄 / <20 红。
3、完整会话工作流。/resume 打开全屏会话浏览器,/new 开新会话,/compact 压缩,/export 导出 Markdown,/btw 做不进主历史的侧问。输入框为空时连按两次 Esc,会按 turn 边界做会话 rewind / fork:选中一条用户消息后,历史回放到该边界之前,原消息回到输入框供修改重发。
4、接到 dsh 已有能力。Agent preset、Skills、MCP、Goals、Todos、子代理、ask_user_question 问卷都走现有服务或命令注册表,而不是在 TUI 里另起一套 Agent。preset 包含官方的 standard / code / minimal / cordis,以及随包提供的「梁神模式」liangshen,用 /preset 切换;已经产生对话的会话不能原地换 preset。
5、为长会话做的渲染。事件驱动投影、差分终端输出、消息虚拟化、回放合并与有界缓存,避免每帧成本随会话无限增长。屏幕外的消息行会变成固定高度占位,不参与完整子树布局。
安装与启用¶
目录详情页给出的安装命令如下,在已经装好 dsh CLI 的终端里运行即可:
dsh plugin add github:ccch1mneyyy/dsh-TUI
如需可复现安装,目录页建议固定 commit 哈希:
dsh plugin add github:ccch1mneyyy/dsh-TUI#commit
把 #commit 换成实际提交哈希。插件以当前 dsh 进程的权限运行,安装时可能执行代码;装之前应检查源代码仓库和许可证。
仓库 README 推荐的路径更完整:全局安装官方 CLI 和本插件,首次启动会自动初始化 dsh-tui profile。前置条件是 Node.js ^22.19 || >=24、官方 @deepseek-ai/dsh、pnpm 10 或更高,以及支持交互输入的终端 TTY。跑模型还需要 DEEPSEEK_API_KEY。
# 1. 全局安装 CLI + 本插件(自带 dsh-tui 命令)
npm install -g @deepseek-ai/dsh @deepseek-harness-tui/dsh-tui
# 2. 未装 pnpm 时先装(首次初始化 profile 需要)
npm install -g pnpm
# 或:corepack enable pnpm
# 3. 启动;首次运行会执行
# dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tui@<版本>
dsh-tui
手工分步与上面等价:
npm install -g @deepseek-ai/dsh
dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tui
dsh --profile dsh-tui
dsh-tui 和 dsh --profile dsh-tui 等价。命令从当前目录启动,Agent 的默认工作区也是当前目录,所以要先 cd 到目标项目再启动。macOS / Linux 下密钥这样导出:
export DEEPSEEK_API_KEY='your-key'
PowerShell 则是:
$env:DEEPSEEK_API_KEY = 'your-key'
不要把真实密钥写进仓库。自定义兼容端点还可以设置 DEEPSEEK_BASE_URL。
更新时仓库要求显式带 @latest,否则 pnpm 可能按 profile 里已记录的版本范围就地解析,看起来像「重复执行安装命令但版本没变」:
dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tui@latest
TUI 内输入 /update 也会更新已安装的 @deepseek-harness-tui/dsh-tui 并自动重启、恢复当前会话。启动横幅右上角会显示当前版本(✦ dsh-TUI vX.Y.Z)。
旧版用过无 scope 包 dsh-cc-tui 和 cc-tui profile 的,需要迁到新包和新 profile,不要把旧包和新包加到同一个 profile 里。环境变量已从 CC_TUI_* / DSH_CC_* 统一为 DSH_TUI_*,数据目录从 ~/.dsh-cc 改为 ~/.dsh-tui;首次启动若旧目录存在而新目录不存在,会整体复制(不移动)并提示一行。
典型用法¶
进入项目目录后启动:
cd /path/to/your-project
dsh-tui
恢复上次会话:
dsh-tui --resume
Windows 仓库检出还提供 dsh-tui.cmd,行为等价。dsh-tui 不支持把 stdout 重定向后启动,必须在交互式终端里跑。
进去之后,常用操作如下。
1、对话。输入内容后 Enter 发送,Shift+Enter 换行。模型正在工作时:Enter 把文本 steer 到当前回合的下一步边界,Tab 排成 follow-up,Ctrl+Enter 中断当前回合并立即投递。Ctrl+O 展开或收起思考全文、工具参数与输出。
2、时间回溯。输入框为空时连按两次 Esc,打开用户消息列表,选中并确认后 fork 出一条分支会话。智能体跑偏时不必丢掉整个会话。空闲时连按两次 Ctrl+C 退出。
3、会话管理。输入 / 打开命令菜单。/resume 浏览并恢复历史会话(可搜索、预览、跨项目;子 agent 运行默认折叠),/new 新开,/compact 压缩上下文,/export 导出 Markdown,/btw <问题> 做不进 session log 的单轮侧问。/model 切换模型走的是会话 fork,不是原位替换:历史原样保留,新会话路由到新模型,旧会话仍留在 /resume 列表里。
4、环境自检。/doctor 看终端类型和模式,/status 看会话信息,/cost 看 token 用量,/permissions 看权限说明,/mcp 看 MCP 连接状态。主题用 /theme(auto / light / dark / dark-ansi),也可把自定义 JSON 放到 ~/.dsh-tui/themes/。
VS Code 里有两条路:直接在集成终端运行 dsh-tui;或者按仓库 docs/vscode.md 安装 companion 扩展 dsh-tui-vscode(发布者 baobaolaodie,已上架 VS Code Marketplace)。扩展本身是另一个仓库,不在本稿安装范围内。
适用场景与注意事项¶
目录页把适用对象写得很明确:住在终端里的开发者,不用浏览器也能跑 DeepSeek Harness。
- SSH 或 tmux 管服务器上的智能体时,不必做端口转发,也不必开浏览器。
- 小 VPS 或同时跑着重构建的笔记本上,TUI 比浏览器标签页更省资源。
- 需要 Claude Code 那一类全屏状态行、流式思考和双击 Esc 回退的终端体验时,这是目前目录里对口的补位插件。
使用前有几条边界必须看清楚。
插件以当前 dsh 进程权限运行。dsh-TUI 自己不实现独立沙箱,而是使用当前 profile 的文件、Shell、sandbox 与 approval 策略。仓库提供的 profile 在非 Windows 平台默认采用工作区约束与审批(DSH_PERMISSION_MODE 为 workspace-write,审批策略通常为 ask);Windows 当前没有对应的沙箱后端,组合会退回到 danger-full-access,审批策略设为 never。在包含敏感凭证或不可信仓库的环境里启动前,应检查实际的 profile 配置,而不是只看界面。
pnpm 必须是 10 或更高。文档写明 pnpm 9 对传递依赖的提升行为不同,profile 里会解析不到 dsh-working-activity,表现为启动后立刻退出且几乎无报错(issue #60)。遇到这种情况先升级 pnpm 再重装:
npm install -g pnpm@latest
dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tui@latest
不要对同一个 profile 再单独 add dsh-working-activity,否则工作状态行可能重复。
其他已知限制来自架构文档,不是使用故障:注入到 system prompt 的插件上下文不会在 UI 里单独列出;Ctrl+V 读剪贴板依赖平台工具(Windows 用 PowerShell Get-Clipboard,macOS 用 osascript / pbpaste,Linux 需要 wl-paste / xclip / xsel 之一);退出时以进程退出收尾,不等待 Agent 异步落盘,持久化由 persistence 插件兜底;/vim、/connect、/hooks 是 Claude Code 同名占位命令,DSH 侧没有等价机制时会给出说明,而不是静默执行。
结尾¶
dsh-TUI 做的事情很集中:在不改 dsh 核心的前提下,给 DeepSeek Harness 补一套能在 SSH、tmux 和本地终端里用的全屏界面。Agent、模型、工具和会话仍然走官方服务,TUI 只把这些事件画到终端上,并补上状态行、回溯和会话工作流。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-tui/
GitHub:https://github.com/ccch1mneyyy/dsh-TUI
npm:https://www.npmjs.com/package/@deepseek-harness-tui/dsh-tui