前言¶
DeepSeek Harness(dsh)把模型、工具、会话、沙箱和界面都做成可替换的插件。官方默认入口是 Web UI:npx @deepseek-ai/dsh web 之后,浏览器打开 http://127.0.0.1:3080。对习惯在终端里写代码的人来说,来回切浏览器并不方便:思考过程刷屏、审批要看 diff、多会话切换、图片粘贴,这些都更适合全屏 TUI。
dsh-tianshu-tui 就是这条路上的社区插件。它不替换官方 CLI,而是把一套交互式终端界面挂到官方 DeepSeek Harness 的 tui profile 上。渲染核心来自天枢 Tianshu-Tui,仓库维护者是 huiliyi37。社区插件目录把它归在「界面增强」,收录日期 2026-08-15,当时标注 143 星标。
本文按插件目录页、GitHub README / 快速开始文档,以及 npm 包 @huiliyi37/dsh-tianshu-tui 核对后整理:它是什么、能做什么、怎么装、怎么用。社区目录 deepseek-harness-plugin.com 是独立站点,和 DeepSeek / 幻方没有官方从属关系,不能当成官方应用商店。
这是什么¶
dsh-tianshu-tui(npm 包名 @huiliyi37/dsh-tianshu-tui)是跑在官方 @deepseek-ai/dsh 上的交互式终端 UI 插件。许可证 Apache-2.0,主要语言 TypeScript。当前 npm latest 为 0.1.2-rc.10(2026-08-16 发布),宿主 CLI 文档要求 0.1.0-rc.6。
它解决的问题可以收成一句话:在官方 dsh 进程里提供全屏终端工作区,而不是另起一套 harness。
仓库 README 把边界写得很清楚:UI 是纯展示层,所有 agent 状态都来自会话事件流。TUI 自身不注册 prompt、工具或上下文面;用户输入会变成普通日志消息,渲染状态从会话事件派生。TDD 门、证据门、视觉桥、语义检索这类能力在宿主 harness 的独立包里,不随本插件分发——TUI 只是它们的主要交互面。宿主服务没装时,对应面板会打出 ⚠ 警告,而不是空白启动失败。
三个容易混的名字:
| 名字 | 实际是什么 |
|---|---|
dsh-tianshu-tui(本文) |
官方 dsh 的 TUI 插件,数据目录 ~/.dsh |
oh-my-tianshu(原 tianshu-public) |
独立集成发行,自带 CLI,home 与官方隔离 |
Tianshu-Tui |
本插件渲染核心的上游来源(Apache-2.0,逐文件见 SOURCE-MAP.md) |
同分类里还有另一款全屏终端插件 dsh-TUI(Claude Code 风格)。两者都是社区界面增强,不是同一套代码。
核心功能¶
下面这些能力来自仓库 README 与快速开始文档,不是演示环境里的额外发挥。
终端里的会话工作区¶
启动后是完整的会话界面,不是一行 REPL:
- 欢迎页:品牌头、会话短 id、环境检查(API key / git 是否就绪)
- 顶部栏:当前工作目录、模型、git 分支和未提交文件数
- 底部三行:圆角输入框 → footer(模式徽标 + 快捷键)→ metrics(模型 / 成本 / 上下文占用 / token / 耗时)
- 对话流:Markdown 渲染、工具卡着色与计时、并行工具调用折叠成组
- 推理通道:思考中显示实时头行,结束后折成类似
✻ 思考 (3.2s) · 12 行的紧凑行,Ctrl+O原位展开
会话侧常用命令:
/session new|list|switch:新建、列出、切换;恢复时按同一渲染桥重放转录/fork//branch:把当前历史复制到子会话,可选带起始指令/rewind:回退到指定消息(会话截断,可选文件回退到边界前快照)/export:把转录导出为 Markdown/steer或Ctrl+T:中轮转向,不中断当前回合/compact:压缩会话上下文
多会话时,输入轨上方会显示短 id tab 栏。Ctrl+X 循环切换,Alt+1~Alt+9 直接跳转。空闲时连按两次 Esc(1 秒窗口)打开 rewind 回退面板;在途输出时单次 Esc 打断,路径与 Ctrl+C 相同。
输入、审批与模式¶
输入面按终端编码场景来做:
- 输入
/打开 slash 菜单:模糊前缀匹配、MRU 排序、ghost 预览 - 空输入框按
Tab弹出全部命令菜单,选中回车直接执行 @路径 Tab 补全和@mention展开- 可选 vim 键位;
Ctrl+E用$EDITOR编辑当前输入 Ctrl+F搜索历史;Ctrl+P命令面板;Ctrl+.调出键位表- 以
/开头的真实路径(如/src/main.ts、~/xxx、Windows 盘符)不会再被误判成 slash 命令
审批和提问也在终端里完成。挂起的工具调用可以看内联 diff,y / N / Ctrl+C 结算。Shift+Tab 在 normal → plan → always-approve 之间循环。plan 模式会改 footer 徽标;always-approve 是会话级本地状态,切换或退出时复位。
实时面板包括 /status、/config、/skills、/tasks、/subagents、/workflow、/goal。/cost 按模型分桶累计用量并给出美元估算(内置 flash/pro 定价表,未知模型不猜价)。上下文占用达到 95% 时,footer 会加 ⚠ 前缀。
图片、模型与工作流观察面¶
图片链路是端到端的:Ctrl+V 从剪贴板读图(没有图则回退文本),kitty / iTerm2 可用终端图形协议内联渲染,再经 harness 附件服务交给模型。主模型声明了 supportsVision 时直接转发;主模型不识图时,走视觉桥:提交前用独立视觉模型生成描述。桥可用性来自装配配置 vision.bridgeEnabled,或宿主 visionBridge 服务;两者都没有则图片不发送,并给出警告。同图反复追问需要再装同仓伴生包 vision-ask/。
/model 无参数打开选择器,可热切换当前会话模型。spark-flash / spark-pro 是别名,分别映射到官方路由上的 deepseek-v4-flash / deepseek-v4-pro。/effort 设置推理等级(off / high / max / auto)。
主题用 /theme 切换,仓库文档列出 16 个内置调色板,也支持 custom: 自定义。不支持真彩色的终端会降到 16 色;legacy 终端会把 emoji 收成 ASCII,避免破版。
需要说明:验证门(dsh-evidence-gate 的 RED-first / TDD 门)、失败路由、记忆(/memory、/remember)、语义检索等,README 把它们标成「与 harness 协同演化」的宿主能力。本插件提供 /workflow、/memory、/doctor、/btw 这些入口和观察面,并不把这些包打进 TUI bundle。
安装与启用¶
插件目录页给出的安装命令是:
dsh plugin add github:huiliyi37/dsh-tianshu-tui
需要可复现安装时,按目录页说明固定 commit 哈希:
dsh plugin add github:huiliyi37/dsh-tianshu-tui#<commit>
把 <commit> 换成仓库里的真实哈希。插件以当前 dsh 进程的权限运行,安装时可能执行代码。装之前应检查源代码仓库和 Apache-2.0 许可证。
仓库 README 写得更细:本包不是独立程序,只 npm i 跑不起来。需要先有官方 CLI @deepseek-ai/dsh(文档写的是 0.1.0-rc.6),并满足:
- Node.js
^22.19 || >=24 - PATH 上有
pnpm(dsh plugin会转发给它) - 跑模型需要
DEEPSEEK_API_KEY,或走官方 CLI 的登录流程
README 强调:不要直接敲 PATH 上旧的 dsh。 如果 dsh --version 不是 0.1.0-rc.6(例如 ~/.local/bin/dsh),可能走进本地 staging,出现 ERR_FS_EISDIR。它推荐始终用 npx,并把插件装进名为 tui 的 profile:
npx -y @deepseek-ai/dsh plugin --profile tui add @huiliyi37/dsh-tianshu-tui
npx -y @deepseek-ai/dsh --profile tui
从 GitHub 装、且希望走同一套 profile 时:
npx -y @deepseek-ai/dsh plugin --profile tui add github:huiliyi37/dsh-tianshu-tui
仓库已包含 lib/index.js,不必再打包。pnpm 可能提示 peer missing,文档说可以忽略:peer 由官方 dsh 宿主提供。
看到欢迎页品牌 dsh-tianshu-tui 即成功。退出用 Ctrl+Q 或 /exit。已经全局安装官方 CLI 且版本符合文档时,把上面的 npx -y @deepseek-ai/dsh 换成 dsh 即可。
若 npx 仍报 ERR_FS_EISDIR,文档给的退路是换干净 home 再装:
DSH_HOME=/tmp/dsh-tianshu npx -y @deepseek-ai/dsh plugin --profile tui add @huiliyi37/dsh-tianshu-tui
DSH_HOME=/tmp/dsh-tianshu npx -y @deepseek-ai/dsh --profile tui
从 npm 安装后,每次启动会对照 npm latest,有新版本就写入 profile。不想联网检查时设 DSH_TUI_SKIP_UPDATE=1。github: / link: 安装不会被改写成 npm 包。0.1.2-rc.10 起,会话尚未开始工作时,自更新落盘后会自动重启;已经在干活则只提示,不打断。也可以输入 /restart 手动重启同一进程。
典型用法¶
下面操作都来自 docs/getting-started.md 和 README,可以按原文复现。
1. 启动后直接对话¶
启动成功后,欢迎页会检查 API key 和 git。直接输入问题回车即可。常用按键:
| 想做什么 | 怎么做 |
|---|---|
| 查看全部快捷键 | Ctrl+. |
| 切换模型 | /model 回车后 ↑↓ 选择,或 /model <名称> |
| 切换主题 | /theme 回车后 ↑↓ 选择(会实时预览) |
| 新会话 / 恢复会话 | Ctrl+N / Ctrl+S |
| 中断当前回复 | Ctrl+C(在途);空闲空输入需连按两次才退出 |
| 退出 | Ctrl+Q 或 /exit |
/help 会列出全部命令;/help <命令> 看单条详情。
2. 用 slash 命令管会话和模型¶
/session new
/model spark-flash
/effort high
/theme graphite
/export ./session.md
/model spark-flash 和 /model spark-pro 不会注册一个叫 spark 的 provider,只是映射到已注册的 deepseek-official 路由。切模型后,footer 的 glance 和视觉能力提示会跟实际模型走。
探索性改动可以用 /fork 开一条子会话;要回到某一轮之前,用 /rewind。需要把当前对话留档时用 /export。
3. 看工作流、记忆和诊断¶
宿主已装配对应服务时:
/workflow
/status
/memory
/remember 这条约定下次还要用
/doctor
/mcp
/workflow 是运行观察面:时长、run 名、阶段数、workflow/log 叙述。/memory 浏览跨会话记忆(列表 / 过滤 / 删除 / 预览)。/doctor 做终端诊断并给出修复指引。/mcp 列出已连接的 MCP server 和工具数。
缺 goal / subagent / workflow 等插件时,TUI 仍会启动,相关命令回显 ⚠,不会整屏空白。需要模型侧 LSP 工具(lsp_goto_definition 等)时,文档指向社区插件 omdsh-dev/dsh-lsp,TUI 展示桥会消费同一套 LSP server,不双份拉起。
适用场景与注意事项¶
适合这些情况:
- 已经在用官方 DeepSeek Harness,希望把日常编码交互留在终端,而不是默认 Web UI
- 需要全屏看思考过程、工具 diff、审批卡、多会话 tab 和 workflow 运行状态
- 终端支持 kitty / iTerm2 图形协议,想把截图直接贴进对话
- 和独立发行
oh-my-tianshu同时安装:两套 home 隔离,文档写明可并存;共存时给 tianshu 侧设DSH_HOME=~/.dsh-tianshu
使用时注意下面几条,都来自目录页或仓库文档:
- 权限与供应链。 插件以当前 dsh 进程权限运行,安装可能执行代码。先看 GitHub 源码、
LICENSE、SOURCE-MAP.md和NOTICE。生产或要复现的环境,用github:huiliyi37/dsh-tianshu-tui#<commit>钉死版本。 - 它不是独立 harness。 只安装本 npm 包不会出现可运行的 agent。宿主能力(证据门、视觉桥、记忆、语义索引)在别的包里;没装时对应面板会明确报不可用。
- Node 和 CLI 版本要匹配。 文档要求 Node.js
^22.19 || >=24,官方 CLI0.1.0-rc.6。PATH 上的旧dsh是ERR_FS_EISDIR的常见原因。 - 不要在 DeepSeek Harness 工作区根目录对本包跑 tsdown。 README 写明会把未发布的
@deepseek-ai/dsh-root写进 bundle,加载必失败。 - 图片再询问是伴生能力。 一次性提交时的视觉桥在宿主侧;
ask_image和图片注册表在同仓vision-ask/。未装配时,已发送图片不能再追问。 - LSP 默认只是展示层。 内置桥把诊断画在工具卡徽标和
/lsp面板上,不写会话事件,也不注册模型工具面。模型可调的 LSP 工具需要另装dsh-lsp。 - 已知结构债。 README 写明
app.ts仍是较大的单体(约 3.2k 行),渲染组合和键仲裁还在里面。这不影响安装使用,但二次开发时要有预期。
小结¶
dsh-tianshu-tui 给官方 DeepSeek Harness 补了一层全屏终端 UI:会话、审批、思考折叠、主题、图片和 workflow 观察面都在 TTY 里完成。它刻意把自己限制成展示层,agent 状态仍走会话事件;TDD、证据门、视觉桥等工程能力则继续留在宿主插件里。对已经在用 dsh、又不想把编码交互交给浏览器的人,按目录页或 README 把插件装进 tui profile 即可验证。
地址:
- 社区目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-tianshu-tui/
- GitHub:https://github.com/huiliyi37/dsh-tianshu-tui
- npm:https://www.npmjs.com/package/@huiliyi37/dsh-tianshu-tui
- 官方 DeepSeek Harness:https://github.com/deepseek-ai/deepseek-harness