用 dsh-tianshu-tui 给 DeepSeek Harness 装上全屏终端工作区

前言

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 latest0.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
  • /steerCtrl+T:中轮转向,不中断当前回合
  • /compact:压缩会话上下文

多会话时,输入轨上方会显示短 id tab 栏。Ctrl+X 循环切换,Alt+1Alt+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+Tabnormalplanalways-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 上有 pnpmdsh 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=1github: / 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

使用时注意下面几条,都来自目录页或仓库文档:

  1. 权限与供应链。 插件以当前 dsh 进程权限运行,安装可能执行代码。先看 GitHub 源码、LICENSESOURCE-MAP.mdNOTICE。生产或要复现的环境,用 github:huiliyi37/dsh-tianshu-tui#<commit> 钉死版本。
  2. 它不是独立 harness。 只安装本 npm 包不会出现可运行的 agent。宿主能力(证据门、视觉桥、记忆、语义索引)在别的包里;没装时对应面板会明确报不可用。
  3. Node 和 CLI 版本要匹配。 文档要求 Node.js ^22.19 || >=24,官方 CLI 0.1.0-rc.6。PATH 上的旧 dshERR_FS_EISDIR 的常见原因。
  4. 不要在 DeepSeek Harness 工作区根目录对本包跑 tsdown。 README 写明会把未发布的 @deepseek-ai/dsh-root 写进 bundle,加载必失败。
  5. 图片再询问是伴生能力。 一次性提交时的视觉桥在宿主侧;ask_image 和图片注册表在同仓 vision-ask/。未装配时,已发送图片不能再追问。
  6. LSP 默认只是展示层。 内置桥把诊断画在工具卡徽标和 /lsp 面板上,不写会话事件,也不注册模型工具面。模型可调的 LSP 工具需要另装 dsh-lsp
  7. 已知结构债。 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜