前言¶
DeepSeek Harness(下面简称 dsh)的默认入口是本地 Web UI。官方开发者预览页给出的快速启动命令是 npx @deepseek-ai/dsh web,界面、工具、会话、权限这些能力都按「一切皆插件」挂到 Cordis 内核上。对习惯在 SSH、tmux 或纯终端里干活的人来说,开浏览器并不是最顺手的路径。UI 本身也是插件,换一套终端界面并不需要改 dsh 源码。
deepseek-harness-tui 就是沿着这条路做的:用 Rust 和 ratatui 在终端里画出 agent 时间线,把流式推理、工具调用、Skills、多图 prompt 和持久会话收进同一个界面。它由 openma-ai 维护,MIT 许可证,当前 npm / Cargo 版本均为 0.2.1。社区插件目录把它归在「界面增强」,收录日期是 2026-08-15。本文写于 2026-08-17,GitHub 仓库星标为 34。
需要先分清两件事。第一,社区插件目录(deepseek-harness-plugin.com)是独立站点,和 DeepSeek / 幻方没有官方从属关系,不能当成官方应用商店。第二,目录里还有名称非常接近的 TUI 项目,例如精选插件 dsh-TUI。本文只写维护者为 openma-ai、npm 包名为 @openma/deepseek-harness-tui 的这一份,安装时认准仓库和包名。
仓库 README 也写明:本项目与 DeepSeek、xAI 无关联;交互设计参考了 grok-build,运行底座是 DeepSeek Harness。
这是什么¶
一句话定位:deepseek-harness-tui(命令名 dsh-tui)是 DeepSeek Harness 的终端原生 agent UI。
它解决的问题很具体。默认 Web UI 适合本机浏览器;一旦你人在服务器、跳板机,或者就是不想离开终端,推理过程、工具结果、token 用量和会话恢复就缺少一个能在 TTY 里看完的界面。这个插件把上述信息画进 ratatui 界面,并且提供两种接法:
1、作为 dsh 的 profile 插件运行(仓库推荐)。agent、工具、provider、凭据和可调用 skills 都来自宿主 profile,TUI 只负责呈现和输入。
2、Standalone 模式,直接连 SDK JSON-RPC runtime。界面还是同一套,会话目录改到 ~/.dsh-tui/sessions。
插件 runner 在宿主 TTY 上拉起平台原生二进制,通过 Unix 的 fd 3/4,或 Windows 上带认证的 loopback TCP,提供一套与官方 SDK server 兼容的 JSON-RPC。它不是把 @deepseek-ai/dsh-sdk-jsonrpc-server 直接挂进 profile;agent、工具、provider 和持久化仍由外围 dsh profile 提供。Cordis 补丁里的插件 id 是稳定的 tui-runner。
核心能力¶
仓库 README 列出的能力可以按使用顺序理解。
1、完整的 agent 时间线。推理、回复、工具参数与结果、plugin 上下文、subagent 生命周期、token / cache 指标会实时画在同一条时间线上。最新消息下方持续显示阶段、耗时和队列深度。
2、宿主能力原生接入。plugin 模式下读取 dsh 的模型、agent preset、权限、provider、凭据和可调用 skills。skills 与内置命令共用可搜索、可滚动的斜杠菜单。0.2.0 起,斜杠菜单会走 runner 的 tui/skills,过滤用户可调用的 skill;选中后落入 /name,回车作为普通 prompt 发出,skill 正文由宿主注入。
3、多图 prompt。从文件、剪贴板或粘贴操作最多暂存 8 张图片,草稿里以可编辑的 [image n] chip 内联显示,并支持名称、尺寸、大小和类型预览。发送顺序就是 token 顺序。
4、终端友好的 Markdown。标题、列表、引用、代码块、行内代码、强调、删除线、链接和图片标记都能渲染,同时保留 CJK / Latin 混排和软换行。
5、高密度工具视图。工具调用区分进行中、成功和失败;结果可折叠,长输出有独立滚动视窗,不会把整段对话挤掉。
6、适合长对话的控制。回合中可以排队 follow-up,也可以打断并立即发送。持久化 JSONL 会话用 /new、/resume 和 --session-id 管理。plugin 模式会话写在 ~/.dsh/sessions。
7、跨平台输入。readline 编辑、上下文快捷键;macOS 上会直接读物理 ⌘ / ⌥ 状态,Linux / Windows 用 ctrl 组合键,让行首尾、跳词、删词在不同终端尽量一致。
8、终端原生界面。深浅主题、窄屏布局、鼠标选择和工具交互、原生 / tmux / OSC 52 剪贴板。支持 kitty graphics protocol 的终端可以预览图片,也可以用可选的 /liang 像素宠物。Ghostty、Kitty、WezTerm 等会显示 RGBA 精灵,其他终端退回半块字符鲸鱼;宽度低于 60 列时自动隐藏。
当前集成基线写在 README 里:dsh 0.1.0-rc.6,Node.js 18+,pnpm 10+。官方 npm 包带了四套原生二进制:macOS Apple Silicon(darwin-arm64)、macOS Intel(darwin-x64)、Linux x64、Windows x64。
安装与启用¶
社区目录页给出的安装命令如下,在已经装好的 DeepSeek Harness 终端里运行即可:
dsh plugin add github:openma-ai/deepseek-harness-tui
目录页同时提醒:如需可复现安装,请固定 commit 哈希:
dsh plugin add github:openma-ai/deepseek-harness-tui#commit
把 #commit 换成实际提交哈希。插件以当前 dsh 进程的权限运行,安装时可能执行代码,装之前应检查源代码仓库和许可证。
仓库 README 更推荐按 profile 安装 npm 包,而不是只加 GitHub 源。前置条件是已安装并配置好的 dsh、Node.js 18+ 和 pnpm 10+。安装命令不需要 -w:
dsh plugin --profile tui add @openma/deepseek-harness-tui
dsh --profile tui
装完可以用下面的命令确认 bundle 已挂成 tui-runner:
dsh --profile tui --dump-config
如果只想先看界面、暂时不接 runtime 也不准备 API key,可以用 demo:
npm install --global @openma/deepseek-harness-tui
dsh-tui --demo
主命令是 dsh-tui,dsb 是兼容别名。卸载全局包:
npm uninstall --global @openma/deepseek-harness-tui
Standalone 模式只装 TUI 二进制是不够的,还需要在工作区附近的 .venv 里装 DeepSeek Harness SDK,或显式指定 runtime:
python -m venv .venv
.venv/bin/pip install deepseek-harness-sdk
dsh-tui --workspace .
也可以设置 DSH_RUNTIME_BIN,或传入 --runtime-bin。凭据优先使用 --api-key、DEEPSEEK_API_KEY,随后尝试读取本机 ~/.dsh 配置。找不到 dsh-jsonrpc-agent 时,README 的建议是装 SDK、设环境变量,或改回 plugin 模式。
常用操作¶
进入界面后,仓库给出的按键和命令如下。完整列表可以在界面里用 /help 和 /keys 查看。
| 按键 / 命令 | 行为 |
|---|---|
enter |
发送;回合运行时排队 follow-up |
ctrl+x |
打断当前回合并立即发送下一条 |
esc |
打断当前回合(保留草稿);空闲时清空草稿 |
ctrl+c |
先清草稿,再中断;连按两次退出 |
/ |
打开命令菜单并按前缀过滤;plugin 模式下 host 的 skills 也在其中 |
/model · /mode |
选择模型和 agent preset;完整目录需要 plugin 模式 |
/permission · shift+tab |
选择或轮换权限 preset;需要 plugin 模式 |
/effort · /plan |
设置推理力度,或把 plan 模式传给宿主 |
/image [text] |
发送本地图片(png / jpeg / webp / gif);需要 plugin 模式 |
/clip [text] · ctrl+v |
暂存剪切板图片,最多 8 张同行;macOS / Linux |
ctrl+o · ctrl+t |
展开输出 · 切换主题 |
!cmd |
在客户端本地执行 shell 命令,不经过 agent |
几条和模式相关的差别值得单独记下:
- plugin 模式下,
ctrl+x把中断转发给宿主,不做硬中断;Standalone 里esc会停 runtime,会话日志仍保留。 /model、/permission、/image以及完整 skill 目录依赖 plugin 模式。- 输入框右侧的
/liang可用/liang on、/liang off显式开关,不影响主界面功能。
两种模式的会话目录也不一样:plugin 写 ~/.dsh/sessions,Standalone 默认写 ~/.dsh-tui/sessions,可用 --session-root 修改。
适用场景与注意事项¶
比较适合这几类用法:已经在用 dsh,但更想在终端里看推理和工具过程;需要 SSH / tmux 远程会话,浏览器不方便;希望沿用宿主的模型、权限、skills 和会话,而不是另起一套 Web 皮肤。
安装和运行前有几件事需要核对。
1、权限模型。插件以当前 dsh 进程的权限运行,安装时可能执行代码。装之前阅读仓库源码和 MIT 许可证,不要把来源不明的 GitHub 地址直接丢进生产环境的 profile。
2、平台限制。npm 包目前只带 darwin-arm64、darwin-x64、linux-x64、win32-x64 四套二进制。启动时报 no native binary for ...,先确认装的是最新版本,并且自己的平台在这个矩阵里。仓库提供从源码构建的路径:需要 Rust stable 和 Node.js 18+,本地脚本只编当前平台。
3、版本基线。README 写明当前集成基线是 dsh 0.1.0-rc.6。dsh 仍处于开发者预览,核心插件和 API 还会变,钉版本比追 latest 更稳妥。0.1.0 及更早的 runner 是 CJS,可能和 dsh 并行加载的 ESM 插件抢同一份模块,出现 ERR_REQUIRE_ESM_RACE_CONDITION;仓库要求升到 0.1.1 以上。本文核实到的发布包是 0.2.1。
4、pnpm。遇到 workspace root 相关错误,README 的处理是升级到 pnpm 10+,再重新运行不带 -w 的安装命令。
5、像素宠物和图片预览。依赖 kitty graphics protocol。终端不支持时主界面仍可用,只是宠物或缩略图退回降级显示。
6、同名插件。社区目录里至少还有其他 TUI 实现,包名、维护者和安装命令都不同。认准 github:openma-ai/deepseek-harness-tui 或 @openma/deepseek-harness-tui,避免装到另一套界面上。
小结¶
deepseek-harness-tui 做的事情很克制:不替换 dsh 的 agent 循环,只把终端变成一套能看流式推理、工具调用、skills 和持久会话的界面。推荐路径是 dsh plugin --profile tui add @openma/deepseek-harness-tui,再用 dsh --profile tui 启动;目录页等价入口是 dsh plugin add github:openma-ai/deepseek-harness-tui。先看界面可以用 dsh-tui --demo,不接 runtime、不需要 API key。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/deepseek-harness-tui/
GitHub:https://github.com/openma-ai/deepseek-harness-tui
npm:https://www.npmjs.com/package/@openma/deepseek-harness-tui