← 返回列表
⚠ 装前注意
在终端里流式渲染 Markdown 与工具卡,管理会话记忆
基本兼容但装前注意:未发布到 npm registry,仅可从源码安装 · 最近上游提交 2026/9/15 · 已提供中文文档
官方 DeepSeek Harness 的交互式终端 UI 插件:自研 ANSI 极简交互渲染、流式 Markdown/工具卡、16+ 主题、slash 命令与选择器、输入历史与本地偏好持久化、LSP 诊断、memory记忆,很丝滑的开发体验。
综合分
64.6
GitHub 分
64.6
用户评分
—
★ Stars
277
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add huiliyi37/dsh-tianshu-tui未发布到 npm registry,仅可从源码安装,改用 GitHub 源安装
🟢实装验证通过· 2026/9/17
由 dsh-plugin-verify(GitHub Actions)在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/15(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包@huiliyi37/dsh-tianshu-tui(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19 || >=24 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
未发布到 npm registry,仅可从源码安装
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/17 00:29:55
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-agent-presets@deepseek-ai/cordis@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis-plugin-loader@deepseek-ai/cordis-plugin-timer@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-default-model@deepseek-ai/dsh-agent-instructions@deepseek-ai/dsh-agent-loop@deepseek-ai/dsh-agent-spine-demo@deepseek-ai/dsh-atomic-write@deepseek-ai/dsh-attachment用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-tianshu-tui — DeepSeek Harness 编码终端
npm
license
node
release
dshfind
dsh-tianshu-tui
dsh-tianshu-tui 是官方 [DeepSeek Harness] 上的交互式终端 TUI 面板插件。渲染核心为自研极简 ANSI 引擎,轻量渲染使用体验极度流畅。(由作者的 [天枢 Tianshu-harness] https://github.com/huiliyi37/Tianshu-harness 演进而来。UI 是纯展示层:所有 agent 状态都来自会话事件流,流式 Markdown/工具卡、16+ 主题、slash 命令与选择器、输入历史与本地偏好持久化、LSP 诊断。在此之上做了工程层的改造,如图像与视觉桥接、代码智能检索、memory 记忆与跨会话召回等。
文档
| 文档 | 说明 |
|---|---|
| 快速开始 | 安装、启动与常见问题 |
| 交互手册 | 快捷键与命令全表 |
| 配置 | 装配选项、环境变量与运行时配置 |
| 架构 | 分层、数据流与设计决策 |
| 主题 | 16 个内置主题与自定义 |
| 插件生态 | 伴生插件与扩展点 |
| VS Code | 在 VS Code 中使用 |
| ADAPTER.md | TUI ↔ harness 边界契约 |
| 贡献指南 | PR 规范与验证矩阵 |
| 开发说明 | 结构、构建与发布 |
安装
本包不是独立程序。须先有官方 CLI @deepseek-ai/dsh(npm latest,当前 0.1.5-rc.1;需 ≥ 0.1.5-rc.1,peer 依赖对齐)。只 npm i 本包跑不起来。
一键安装(推荐):仓库自带跨平台脚本,自动检测 Node/pnpm、经 pnpm 安装官方 CLI + 装配本插件并启动(国内网络默认走 npmmirror 镜像):
macOS / Linux(bash)
bash =24
- pnpm(dsh plugin 会转发给它;没有时 corepack enable 即可——Node 自带 corepack)
⚠ npm 11 的 OOM 坑:官方 CLI @deepseek-ai/dsh 依赖树较大(60+ 子包),npm 11(Node 24 自带)安装时会 JavaScript heap out of memory(卡住数分钟后 OOM,实测复现)。请用 pnpm(下方命令)。若你已经在用 npx -y @deepseek-ai/dsh 且卡住/报 heap OOM,切到 pnpm 即可。
不要直接敲 dsh。 若 PATH 上已有旧的 dsh(例如 ~/.local/bin/dsh,dsh --version 低于 0.1.0-rc.8),会走到本地 staging,出现 ERR_FS_EISDIR / Path is a directory .../@deepseek-ai/dsh。请始终用下面的 pnpm dlx 命令。
2. 把本插件装进 tui profile
sh
pnpm dlx @deepseek-ai/dsh plugin --profile tui add @huiliyi37/dsh-tianshu-tui
pnpm 可能提示 peer missing,可忽略:peer 由官方 dsh 宿主提供,不必另装。没有 pnpm 也可以 npx -y pnpm dlx @deepseek-ai/dsh plugin --profile tui add @huiliyi37/dsh-tianshu-tui。
从 npm 安装后,每次启动会对照 npm latest:有新版本就写入 profile,提示重启后生效。也可在 TUI 里敲 /update 手动检查(只查不装,给出更新命令)。不想联网检查时设 DSH_TUI_SKIP_UPDATE=1。github: / link: 安装不会改写成 npm 包。
也可以从 Git 装:pnpm dlx @deepseek-ai/dsh plugin --profile tui add github:huiliyi37/dsh-tianshu-tui(仓库已包含 lib/index.js,不必再打包)。
3. 启动
pnpm dlx @deepseek-ai/dsh --profile tui
看到欢迎页品牌 dsh-tianshu-tui 即成功。Ctrl+Q 或 /exit 退出。
已全局安装官方 CLI(pnpm add -g @deepseek-ai/dsh)且 dsh --version 不低于 0.1.0-rc.8 时,把上面的 pnpm dlx @deepseek-ai/dsh 换成 dsh 即可。
4. agent 预设(/preset)
命令是 /preset(没有 /presets)。本包 bundle 对标官方 web:关掉 host 上的 agent 面,挂上 @deepseek-ai/dsh-agent-presets(依赖钉死 0.1.5-rc.1,npm latest 仍停在过时的 0.0.1-rc.1)。plugin add 本包即连带装上花名册;新会话在 setup 里 mount,/preset 换的是官方 shipped 面(标准 / PTC / 极简 / 创造),不是叠在 dsh-base 工具上。
用法:
- /preset —— 列出每套预设的能力与工具集,* 标当前项;footer / 欢迎顶栏也会显示当前短名(标准 / PTC / 极简 / 创造)。说过话后还附最近一次请求的 wire: 工具面
- /preset —— 切换到指定预设(仅空白会话可换:先 /session new 再切;ptc/creative 是 code/cordis 的别名)
若 npx 仍报 ERR_FS_EISDIR,是 ~/.dsh/profiles/node_modules 里旧的安装 fallback 与官方 CLI 冲突。换干净目录再启动:
DSH_HOME=/tmp/dsh-tianshu pnpm dlx @deepseek-ai/dsh plugin --profile tui add @huiliyi37/dsh-tianshu-tui
DSH_HOME=/tmp/dsh-tianshu pnpm dlx @deepseek-ai/dsh --profile tui
不要在 DeepSeek Harness 工作区根目录对本包跑 tsdown:会把未发布的 @deepseek-ai/dsh-root 写进 bundle,加载必失败。
需要图片再询问能力时,再装配同仓伴生包 vision-ask/。LSP 模型工具面(lsp_goto_definition / lsp_find_references / lsp_diagnostics)已随本包内置(@huiliyi37/dsh-lsp 伴生插件,bundle patch 自动 insert)——装 TUI 一个包即得展示桥 + 模型工具面,二者共享同一 LSP server 集(不双份 spawn)。TUI 桥的诊断源探测顺序:内置伴生插件 lsp 服务(getDiagnostics 形状)→ 官方 ctx.lsp seam(deepseek-harness 的 dsh-lsp,经 query(getDiagnostics) 适配)→ 内置桥降级。⚠ 此前单独装过旧社区版(github:omdsh-dev/dsh-lsp)的用户请先 plugin remove 旧版再升级——新旧同时装配会重复注册同名模型工具。
更新说明
当前 npm latest:@huiliyi37/dsh-tianshu-tui@1.0.0-rc.1(GitHub Release)。
1.0.0-rc.1(2026-09-14):1.0.0 的首个候选版,版本号进入 1.0 线。收录 0.1.2-rc.31 之后的四项收敛——重试路径正文丢失修复(LLM 重试成功后该 step 的正文曾被整段丢弃:宿主每次尝试都是独立 attempt,按 step 粒度去重是模型性错误);失败尝试的正文前落 ⟳ 未完成的尝试 标记,避免它与成功正文被读成一段连续答案;assistant 流语义合并到 adapter/assistant-stream 单点维护(此前四处各自实现,同一宿主行为变更需四处联动);移除两处无消费方的死状态(SessionManager 快照层、TranscriptView.streaming 聚合)。⚠ 需宿主 ≥ 0.1.5-rc.1;node ≥ 24.4。
0.1.2-rc.31(2026-09-14):修复 #58——0.1.5 宿主正常回合的助手正文不渲染(attempt 事件只在报错/中断路径出现,正常回合正文随 assistant/message 内嵌流到达;现于 message 边界回退渲染,防重复由同 step 流式增量把关)。⚠ 需宿主 ≥ 0.1.5-rc.1;另请确保 node ≥ 24.4(0.1.5 宿主 CLI 入口依赖 import.meta.main,过旧 node 下静默无输出)。
0.1.2-rc.30(2026-09-12):宿主线上到 0.1.5(官方 latest 已切 0.1.5-rc.1)——流式事件 assistant/chunk→assistant/attempt 批量改批、sessionPersistence 新契约(快照列表 + open/read 句柄)、遗留库时间渲染防御;真机 pty e2e 全绿。⚠ 需宿主 ≥ 0.1.5-rc.1。
0.1.2-rc.29(2026-09-09):宿主线上到 0.1.2-rc.1(官方 latest 已转正,修复 #56 启动即崩)——Session.events 移除改 snapshotEvents()、userQuestions 改 waterfall answerer(global 注册)、CallId→ToolCallId、preset code→ptc、fork 血缘改 isSeeded+inheritedEventCount、bundle patch 补 subagent-model-selection-settings;旧宿主(≤0.1.1-rc.2)启动即 fail-loud 附升级/回退指引。⚠ 本次升级需宿主 ≥ 0.1.2-rc.1。
0.1.2-rc.28(2026-08-29):回应 #55 的 vim 优化——光标形态分模式(NORMAL 反色块 / insert 竖线)、历史搜索两阶段输入(编辑段可输 n/N,Enter 后跳转、搜索对象显式标注)、搜索命中子串高亮(含 /scroll);另投递失败自动回填输入行 + README 键位表一致性守卫。
0.1.2-rc.27(2026-08-29):回流 Tianshu 两项——错误时刻可行动(错误落底 + 指引之外,最近一条已投递消息自动回填输入行,↩ 告知「可能未被完整处理」,改一下即可重发;成功回合清底料、有草稿不抢写);plan-review 决策卡视觉分层(dim 决策区分隔线 + approve ❯/success 主操作高亮,主题不传时渲染不变)。
0.1.2-rc.23(2026-08-27):LSP 三件套对齐上游 0.6.0 官方 seam 线(单 lsp 工具四操作 + 本地 provider 默认 tsserver),诊断源能力门控防 /lsp 面板退化;宿主 peer 对齐 ^0.1.1-rc.2。
0.1.2-rc.22(2026-08-27):LSP 模型工具面随包内置首版(伴生插件自动挂载,装 TUI 一个包即得展示桥 + 模型工具面;旧社区版请先移除)。
0.1.2-rc.21(2026-08-27):社区反馈三连修——输入框光标反色化(#50)、preset 缺省 standard(#48)、malformed SSE payload 根因定位并上报官方(#49)。
完整版本历史见 CHANGELOG.md;TUI 内 /changelog 查看(/changelog all 全部)。
亮点
- 终端内的完整会话工作区 — 实时渲染、只增滚动转录、启动时会话恢复、/fork 探索分支、/rewind 回退(会话截断 + 可选文件回退)、/export 导出 Markdown 转录、中轮转向(/steer / Ctrl+T)。
- 图片端到端 — 剪贴板粘贴(Ctrl+V / 终端菜单粘贴)、以终端图形协议内联渲染(kitty / iTerm2)、经 harness 附件服务投递、让具备视觉能力的模型真正看见——主模型不识图时自动经独立视觉模型把图片转成描述(视觉桥)。
- 完整输入面 — grok 风格 slash 下拉菜单(模糊前缀匹配、MRU 排序、ghost 预览)、@-路径 Tab 补全与 @mention 展开、bracketed paste、可选 vim 键位、外部编辑器(Ctrl+E)、历史搜索(Ctrl+F/Ctrl+R)——Ctrl+. 随时调出完整键位表。
- 终端内交互面 — 结构化提问面板(数字键选择、plan-review 反馈模式)、带内联 diff 预览的挂起审批卡片、模式循环(Shift+Tab:normal → plan → always-approve)、命令面板,以及 status / config / skills / tasks / 委派树 / workflow 实时面板。
- 推理过程可视化 — think 通道以实时头行流动、在滚动区折叠为紧凑行(✻ 思考 (3.2s) · 12 行)、Ctrl+O 原位展开(对标竞品:默认折叠)。
- 个性化 harness 集成 — /doctor 终端诊断、/memory 项目记忆浏览器、/btw 后台 agent 侧问、/model + /effort 热切换(当前会话立即生效)。
- 构造上可审计 — TUI 自身不注册任何 prompt、工具或上下文面;用户输入成为普通日志消息,所有渲染状态都派生自会话事件。
- 与 harness 协同演化 — 在 2026-08-09 基线快照之上与 harness 侧能力同步开发(250+ 提交):图片/视觉链路、DeepSeek Spark 模型工程、会话持久化与文件快照、记忆、验证门与失败路由、代码智能、git 工具。见下一节。
与 harness 协同演化的能力(2026-08-09 基线以来)
终端 UI 从 天枢 Tianshu-Tui 演进而来(Apache-2.0;逐文件来源见 SOURCE-MAP.md)。本 bundle 随后在 DeepSeek Harness 基线快照 snapshots/20260809T140917Z 之上与 harness 侧工作同步开发——2026-08-10 至 2026-08-13 共 250+ 提交。下列能力位于宿主 harness(独立包,不随本 bundle 分发);TUI 是它们的主要交互面:
- 图片链路与视觉桥 — image ContentBlock 加入 merge-extensible 内容词汇,dsh-llm-deepseek 把用户图片 block 序列化为 OpenAI 风格 image_url content parts——用户图片端到端可达 wire(剪贴板 → 输入行 → 会话 → 模型请求)。模型经 supportsVision 声明识图能力(LlmModelInfo + llm-deepseek catalog)。dsh-vision-bridge 覆盖 text-only 主控:agent/pre-step 时经独立视觉模型描述图片附件(visionAutoBridge 在未指定 provider/model 时自动选首个识图模型;备用模型 fallback + data URL 校验;prompt 按 UI/报错关键词在通用结构与 OCR 级精确转写间自动选择),描述作为 plugin-source user message 注入——Model-visible ⟺ logged;桥失败降级为可见提示,绝不整轮 failed。
- DeepSeek Spark 别名 — 官方 API 没有 spark 模型,本宿主也不注册 deepseek-spark provider。/model spark-flash / spark-pro 映射到已注册的 deepseek-official 路由,wire 模型分别为 deepseek-v4-flash / deepseek-v4-pro。
- 会话持久化与文件快照 — Session.truncate 回卷事件日志并重置派生状态;持久化后端新增 deleteFrom 与 truncate 协调器,回滚跨重载存活;dsh-fs-snapshot 移植 FileHistory(trackEdit / rewindToBoundary),在写入工具执行前快照。TUI 入口:/rewind(会话截断 + 可选文件回退)。
- 记忆 — dsh-memory(MemoryService + Markdown 文件后端、非 git 兜底)与 tool-memory(memory_save / memory_search + 记忆摘要注入)提供跨会话召回。TUI 入口:/memory、/remember。
- 验证门与失败路由 — dsh-evidence-gate 强制执行 RED-first 验证:义务状态机、编辑/验证计数、TDD 门(enforce 模式)、探针建议 + 冷却、L2 终审门,原生接入 str_replace_editor 与 headless-agent 装配。dsh-agent-router 依据回合历史预测步骤失败并路由工作——含验证子代理调度与按 profile 工具限制——带真实回合 e2e 覆盖。
- 代码智能与检索 — dsh-semantic-index(BM25 + salience/RRF/向量融合、增量更新)以 semantic_search 工具暴露;dsh-meridian 代码索引(node:sqlite schema、TypeScript/Python/Go 三语言 tree-sitter 解析器、graph/impact/flow 查询、行为信号、后台回填)以 repo_graph 与 摘要暴露;dsh-pheromone 文件级信息素 + 原子 JSON 持久化,经 file_info 与 read 工具 focus 语义上屏。
- Git 服务与工具 — dsh-git 服务接缝(GitLocal CLI provider,服务类即插件)+ dsh-tool-git 面向模型的单一 git 工具(operation 判别:status / diff / log / commit),装配进 base bundle。
功能
会话管理
| 能力 | 说明 |
|---|---|
| /session new\|list\|switch | 新建、列出、切换会话;恢复时经同一渲染桥重放完整转录 |
| 恢复面板 | 启动时把可恢复会话列表写入滚动区 |
| /fork [directive] · /branch | 分叉当前会话(历史复制到新子会话),可选带起始指令 |
| /rewind | 回退到指定消息——会话截断和/或文件回退到边界前快照 |
| /export | 把当前会话转录导出为 Markdown 文件 |
| /clear | 清空当前会话滚动区视图 |
输入面
- Slash 命令菜单 — 输入 / 打开下拉菜单:模糊前缀匹配、↑↓ / PageUp / PageDown 选择、Tab 接受、Enter 提交、MRU 排序、参数占位 ghost 与输入行 ghost 预览。
- 剪贴板与图片粘贴 — Ctrl+V 读取剪贴板图片(回退到文本);终端菜单粘贴检测图片;看起来像图片的粘贴路径按附件加载;Alt+W / vim yank 经 OSC52 把选区复制到系统剪贴板。
- 图片提交 — 附件图片显示 📎 N images 标记,提交时在用户气泡下方以内联图形渲染,并经附件服务到达模型;气泡携带识图提示(已转发 / 经视觉模型桥接 / 未发送)。超大图发送前自适应压缩:长边 1568px 封顶(PNG 保留透明),逐级 JPEG 0.82 → 0.55 → 1024px + 0.55 直到低于 provider 上限,全程只缩不放。
- Vim 编辑键位(#51) — Esc 进 NORMAL,键位表对标 Claude Code:h j k l / w e b W B E / 0 $ ^ / gg G / f F t T ; , 导航与查找重放、d c y × motion + 数字前缀、文本对象 iw aw iW aW、行级 dd cc yy Y 与 p P 粘贴、x X D C s S r o O J u .;v/V visual 选区两端含光标下字符。多行草稿 j/k 保持列移动;中文连续段成词不逐字跳。运行时 /vim 开关,/vim default 设为启动默认。insert 两键序列→Esc(vimInsertRemaps,如 {"jj":"esc"} 写入 prefs;1 秒窗防误触)。光标形态随模式区分:NORMAL 反色块、insert 竖线(#55)。NORMAL / 打开会话历史搜索(两阶段:输入即过滤,Enter 确认后 n/N 跳转——搜索词可含 n/N)。
- 编辑 — 外部编辑器(Ctrl+E)、Tab 文件补全、@mention 展开、输入历史、多行输入、bracketed paste(多行/长文本粘贴整段进输入行,不逐行提交);输入行绘制为完整圆角框体。
- 运行中排队(对标 Claude Code queue) — agent 运行时提交的消息进入输入轨上方的本地队列(立即回显、不直发);回合结束按序自动投递,中断不投递(留给你 ↑ 取回的余地);空输入 ↑ 取回队首回输入行;切换会话丢弃并回显条数。中轮即时纠偏仍走 /steer / Ctrl+T。
- 图片再询问 — 同仓伴生插件 @deepseek-ai/dsh-vision-ask 登记已发送图片,并经 ask_image 回答模型的定向问题(见 vision-ask)。
渲染与投影
- 对话流 — markdown 渲染、工具族着色 + 逐工具计时、并行工具调用折叠为组。
- 工具卡实时结算 — 已结算的工具结果按 harness presenter 意图渲染为滚动区卡片:diff 结果渲染结构化红/绿文件差异(与审批预览共用)、terminal 结果带命令标题 + cwd + 退出/信号徽标、其余折叠为文本卡片。
- 推理通道 — 思考中实时 shimmer 头行、段末折叠滚动行、Ctrl+O 在 live 区展开全文。
- 流利度折叠 — 重复的例行工具流量在 quiet 策略下折叠;compact 模式(/density)只保留头行。
- 轮次状态 — braille spinner + 阶段文本状态行、workflow 运行汇总、委派树、任务窗格、config/skills 面板作为 live-region 面板;turn 结束(非中断)且有工具调用时落 dim 摘要行(turn N · 读X 改Y · 耗时)。
- Subagent 运行 — 每个运行一条 live spinner 行;终态以 ✓/✗/◌ 条目落入滚动区。
- 窗口 chrome — 欢迎页(品牌头、友好会话短 id、环境检查行)、顶部栏(cwd + git 分支 + 模型)、底部三行区:输入行(底边线随模式着色)→ footer(模式徽标 + 快捷键提示)→ metrics 行(模型 / token 用量 / 缓存命中率)。
- 主题 — 内置调色板 + custom:;自动终端检测与 16 色降级;尊重 NO_COLOR;自定义主题加载时按声明背景做对比度警告(WCAG [off|high|max] 同一条命令内设置推理等级。
- /effort — 设置推理等级(off / high / max;auto 回模型默认),当前会话热切。
- 视觉桥 — 识图能力按模型声明(supportsVision,经 llm catalog 自动刷新)并驱动气泡提示;主模型不识图时,自动选定的视觉模型在提交前生成图片描述(一次性路径;见已知限制)。桥可用性来源:装配方传入 vision.bridgeEnabled,或宿主视觉桥插件 provide visionBridge 服务(TUI 提交图片前按服务存在性自动探测);两者皆无则图片不发送并警告。
- 视觉副驾 — 装配同仓伴生插件 @deepseek-ai/dsh-vision-ask 后,每张已发送图片被登记为短 id(img_1 …),模型可经 ask_image 反复询问——定向问题、换角度、不限次数;同图同角度重复提问命中 per-image 描述缓存。细节与配置见 vision-ask README。
- /mcp — 列出已连接 MCP server 与工具数;tools 查看某 server 的工具清单。
命令
| 命令 | 作用 |
|---|---|
| /session new\|list\|switch | 会话管理(list/选择器按今天/昨天/本周/更早分组) |
| /fork [directive] · /branch | 分叉当前会话,可选带起始指令 |
| /rewind | 两阶段回滚(消息列表 → 粒度) |
| /export [path] | 导出转录为 Markdown |
| /scroll | 分页查看器:全文浏览转录(滚动 / 实时搜索 / n·N 跳转 / g·G 首尾) |
| /clear | 清空滚动区视图 |
| /compact | 压缩会话上下文 |
| /steer | 中轮转向(不中断地纠正方向) |
| /model [target] [effort] | 查看/切换模型(别名:spark-flash、spark-pro) |
| /effort off\|high\|max\|auto | 设置推理等级(热切) |
| /theme [name] | 切换主题 |
| /density | 切换紧凑工具卡渲染 |
| /vim [on\|off\|default] | 切换 vi/vim 编辑键位;default 写入启动默认 |
| /lsp | 切换 LSP 诊断面板(agent 触碰文件时自动拉取该文件诊断;诊断徽标上工具卡) |
| lsp_goto_definition · lsp_find_references · lsp_diagnostics | LSP 模型工具面(伴生插件 lsp/ 注册;定义跳转 / 引用查找 / 文件诊断) |
| /status | 切换状态面板(goal/todos/plan 投影 + 会话汇总段) |
| /config [notify [on\|off]] | 切换设置面板(空输入 n 通知、d 密度)。无参开关面板 |
| /skills | 切换技能浏览面板 |
| /tasks | 任务窗格(后台任务) |
| /goal | 目标管理(创建 / 暂停 / 恢复 / 完成 / 阻塞) |
| /subagents | 委派树面板 |
| /workflow | workflow 运行面板 |
| /btw | 向后台 agent 侧问 |
| /remember | 保存一条记忆 |
| /memory | 记忆浏览器(列表 / 过滤 / 删除 / 预览) |
| /doctor | 终端诊断 + 修复指引 |
| /mcp [tools ] | 列出 MCP server;查看某 server 的工具 |
快捷键
| 按键 | 作用 |
|---|---|
| Enter | 发送 |
| Shift+Enter | 换行(或 \+Enter 续行) |
| Ctrl+N | 新会话 |
| Ctrl+S | 恢复最近会话 |
| Ctrl+Q | 退出(同 /exit) |
| Ctrl+P | 命令面板 |
| Ctrl+. | 键位表 overlay |
| Ctrl+F / Ctrl+R | 历史搜索(输入即过滤;Enter 确认后 n/N 下一个、p/P 上一个) |
| Ctrl+O | 展开/收起最近推理块 |
| Ctrl+E | 用 $EDITOR 打开输入行(可经 editorKey 配置) |
| Ctrl+T | 中轮转向 |
| Ctrl+Enter | 插队:打断当前回合并立即发送草稿(需终端支持 kitty 键盘增强协议,RIVET_KITTY_KEYBOARD=1 可强制开启) |
| Ctrl+C | 打断在途回合(空闲时空输入双击退出) |
| Ctrl+V | 粘贴剪贴板图片(无图时回退剪贴板文本) |
| Alt+W | 把选区复制到系统剪贴板(OSC52) |
| Shift+Tab | 模式循环:normal → plan → always-approve |
| Tab | @-路径补全;接受 slash 菜单选中项 |
| Ctrl+U | 删除到行首 |
| ↑/↓ | 输入历史(slash 菜单打开时为选择;有排队消息时空输入 ↑ 取回队首) |
| PageUp/PageDown | slash 菜单翻页 |
| Esc | 关闭菜单/overlay/检查面板;取消挂起提问;空闲双击 rewind |
| t | 审批卡:记住此工具(本会话内该工具自动放行,其他工具仍逐卡审批) |
| a | 审批卡:本会话放行(always-approve + 结算当前请求) |
装配
bundle patch 在 dsh-base 之上插入 tui-runner 插件:
- id: tui-runner
name: '@huiliyi37/dsh-tianshu-tui'
TuiRunnerConfig(均可选):stdin/stdout(流注入,缺省走进程流)、initialSessionId、editorKey(缺省 ctrl_e;ctrl+o 保留给推理展开)、vimEnabled(缺省 false)、vision(supportsVision / bridgeEnabled / bridgeSource;未传入时 supportsVision 经 llm catalog 自动刷新、bridgeEnabled 按宿主 visionBridge 服务存在性自动探测——视觉桥插件装配时应 provide 该服务)、workflowHistoryLimit(缺省 50)、lsp(enabled / timeoutMs;缺省启用、单次拉取超时 2000ms——本地语言服务桥:agent 触碰文件时按扩展名懒启动 LSP server(typescript 经 npx 默认可用,pyright/gopls/rust-analyzer/clangd/jdtls 按 PATH 探测)拉取诊断,展示于工具卡徽标与 /lsp 面板;诊断只进 TUI 本地展示缓存,不写会话事件、不注册任何模型面)。
服务依赖:sessions/agents/agentDefaultModel 必需(必选 inject);goals/subagents/memory/compact/tasks/skills/sessionProjections/workflowEngine/planMode 可选——未装配时相关命令与面板 fails loud 报不可用,绝不静默吞,也不阻塞 TUI 启动。
验证
npm test
Model Experience
无——TUI 渲染已记录的会话事件并转发普通用户输入;不注册任何 prompt、工具或上下文面。
KV Cache 影响
无直接影响;经 TUI 提交的用户输入成为普通日志消息,其请求影响归属 session 与 loop 包。
已知限制与待办
- 图片再询问需伴生插件 — ask_image 工具与会话图片注册表位于 @deepseek-ai/dsh-vision-ask(同仓独立包);TUI bundle 本体不携带它们。未装配插件时,已发送图片无法再次询问,同角度重复描述会再次调用视觉模型;视觉桥仍覆盖一次性提交时描述路径。
- LSP 桥的运行时限制 — 模型工具面(goto/find/diagnostics)已随包内置(@huiliyi37/dsh-lsp);如天枢 edit-diff 的 diagnostics-narrowing 这类深度集成仍属未来工作。server 初始化慢于超时(默认 2s)时静默无诊断,下次触碰文件重拉;大仓库 tsserver 常驻内存(懒启动缓解,无空闲回收);切会话不重启 server(rootUri 沿用首会话 cwd)。
- app.ts 单体(约 3.2k 行) — 挂起状态机已控制器化(question/approval),渲染组合与键仲裁仍在 app.ts;C4 拆分方案(纯函数面板段)持续推进。
- 投影层部分接线 — 四个纯折叠模型中 turn-summary(turn/end 摘要行)与 summary-state(/status 会话汇总段,宿主投影总线缺失时仍有数据)已接线;activity-status/activity-store 有意保留未接线(statusline 是自包含投影,替换无收益;activity-store 暂无消费方)。当前状态记录于 docs/projection-layer.md。
许可与来源
Apache-2.0。终端渲染引擎从 天枢 Tianshu-Tui 演进而来(Apache-2.0);逐文件来源与修改声明见 SOURCE-MAP.md 与 NOTICE。
友情链接
| 项目 | 简介 |
|---|---|
| dsh-web-ui | DSH Web UI 插件与皮肤合集 |
| dshfind | DeepSeek Harness 中文学习与分享社区 |
| deepseek-harness-ux | 长任务不刷屏:关键进度清晰可见,完成后自动折叠 |
| dsh-TUI | Claude Code 风格全屏交互终端插件 |
| DSH-better-sidebar | 侧边栏完整工作台:第三方 Tab、文件/终端/Git/子代理 |
| DSH Desktop | DeepSeek Harness 社区桌面端(Electron,Windows x64 / macOS Apple Silicon 安装包),下载即用、免配置命令行环境。内置本地 Harness 宿主与插件系统,支持 iOS/Android 远程下发任务、跟踪 agent 进度。 |
| dsh-whale-report | 把 session、token、cost、tool call 与风险异常转成可读的 Agent 报告 |扫码进群