dsh-tianshu-tui

224Star8Fork1Issue0Watching

官方 DeepSeek Harness 的交互式终端 UI 插件:流式 markdown、slash 命令、会话 tab、LSP 诊断徽标、成本跟踪与 16+ 主题。

机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
TypeScript
License
Apache-2.0
分支
main
codingdshdsh-pluginharnessharness-engineeringtui

安装

$ dsh plugin --profile web add github:huiliyi37/dsh-tianshu-tui

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 huiliyi37/dsh-tianshu-tui:先查看仓库 https://github.com/huiliyi37/dsh-tianshu-tui.git 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

dsh-tianshu-tui 是 DeepSeek Harness 官方宿主上的交互式终端 UI 插件,纯展示层渲染会话事件流,把同一份 agent/会话/模型服务以流式 markdown、slash 命令、会话 tab、LSP 徽标、成本跟踪与多主题的方式呈现在终端里。

核心能力

  • 在终端内提供流式 markdown 渲染、推理通道折叠与原位展开(Ctrl+O)、并行工具调用折叠为组、回合结束落 turn N · 读X 改Y · 耗时 摘要行
  • 提供 30+ slash 命令与会话工作流:/session /fork /branch /rewind /export /clear /compact /steer /model /effort /theme /density /status /config /skills /tasks /goal /subagents /workflow /btw /remember /memory /doctor /mcp /lsp /help
  • 多会话 tab 栏(Ctrl+X 循环切换、Alt+1~Alt+9 直接跳转)、命令面板(Ctrl+P)、键位表 overlay(Ctrl+.)、历史搜索(Ctrl+F)、@-路径 Tab 补全、可选 vim 键位、外部编辑器(Ctrl+E
  • 图片端到端:剪贴板粘贴(Ctrl+V)→ 终端图形协议内联渲染(kitty/iTerm2)→ 附件服务投递 → 主模型识图能力声明;主模型不识图时自动经独立视觉模型把图片转成描述(视觉桥)
  • 实时面板:状态、配置、技能、任务、委派树、workflow、记忆;面板依赖宿主服务缺失时回显 ⚠ 警告,不静默空白
  • 启动自更新对照 npm latest,落盘后空会话自动重启生效;16 个内置主题 + ~/.dsh-tui/themes/*.json 自定义主题

技术实现

  • 语言: TypeScript
  • 关键依赖: chalk / diff / get-east-asian-width / string-width(运行时均为纯 JS 包,无原生模块)
  • 架构模式: Cordis bundle patch —— cordis.patch.ymldsh-base 之上以稳定 id tui-runner 插入宿主;apply(ctx, config) 注入 sessions/agents/agentDefaultModel 三个必需服务并构造 TuiApp,可选服务(goals/subagents/memory/skills/workflow 等)走 reflect.get 探测,缺失时面板降级而非阻塞装配
  • 入口文件: src/index.ts(同时 re-export 渲染核心 30+ 子模块:engine/*ui/app.tscommands/registry.tstheme-palettes.tsprefs.ts 等)

适用场景

习惯用键盘在终端里跟 AI agent 对话、需要流式 markdown 与结构化工具卡,又不想离开 shell 的开发者;尤其是用 DeepSeek 模型做长任务、需要 /rewind 回退、/fork 探索分支、/export 归档转录,或要在 VPS/CI 环境远程操作的场景。

前置依赖与兼容性

依赖最低版本说明
DeepSeek Harness0.1.0-rc.7由 peerDependencies 约束;插件不修改宿主核心,仅以 bundle patch 形式挂载
Node.js^22.19 || >=24engines.node 声明
平台macOS / Windows / Linux跨平台;Windows 在 0.1.2-rc.10 起对 PowerShell/conhost 下 Ctrl+C 双触发做了去重与终端恢复兜底
原生模块运行时依赖均为纯 JS 包(chalk、diff、get-east-asian-width、string-width)
pnpm任意dsh plugin 命令会转发到 pnpm;首次安装时 peer missing 警告可忽略

安装方式

dsh plugin --profile web add github:huiliyi37/dsh-tianshu-tui

配置项

配置类型说明默认值
theme字符串主题名(auto / 内置名 / custom:<name>),优先级:装配 > ~/.dsh-tui/prefs.json > autoauto
vimEnabled布尔是否启用 vim 键位false
editorKey字符串外部编辑器触发键;ctrl+o 保留给推理展开ctrl_e
workflowHistoryLimit正整数/workflow 面板已结算 run 缓存上限(超限 drop-oldest)50
lsp.enabled布尔LSP 诊断拉取开关(agent 触碰文件时按扩展名懒启动语言服务)true
lsp.timeoutMs数字单次诊断拉取超时(毫秒)2000
vision.supportsVision布尔主控模型是否原生识图(未传入时由 llm catalog 自动刷新)自动探测
vision.bridgeEnabled布尔是否配置了独立识图桥模型(主模型不识图时经桥转文字描述)按宿主 visionBridge 服务存在性自动探测
autoRestartOnUpdate布尔启动自更新落盘后是否自动重启生效true
prefsPath字符串或 null本地偏好文件路径;null 显式禁用(不读写 ~/.dsh-tui/prefs.json~/.dsh-tui/prefs.json
inputHistoryPath字符串或 null输入历史文件路径;null 显式禁用~/.dsh-tui/input-history.json
环境变量 DEEPSEEK_API_KEY字符串API key(欢迎页/状态行按 credentials 分层判断)未设置
环境变量 DSH_TUI_SKIP_UPDATE字符串1 时跳过启动时的 npm 更新检查未设置
环境变量 EDITOR / VISUAL字符串Ctrl+E 外部编辑器的命令(Windows 上支持 .cmd/.bat未设置

常见问题

Q: 这个插件和官方 web 端是什么关系?会冲突吗?

A: 不冲突。本插件以 Cordis bundle patch 形式挂在 dsh-base 之上,与官方 dsh-web-app 共用同一份 Agent、模型、会话和工具服务;同一 profile 下两者 session/event 共享真源,可同时安装。

Q: 卸载插件会丢失已有会话吗?会改动 harness 核心吗?

A: 不会。本插件不修改 DeepSeek Harness 核心代码;TUI 自身的偏好与输入历史保存在 ~/.dsh-tui/ 下,卸载后可手动删除该目录。

Q: 启动时提示 ERR_FS_EISDIR / Path is a directory .../@deepseek-ai/dsh 怎么办?

A: 这是 ~/.dsh/profiles/node_modules 里旧的安装 fallback 与官方 CLI 冲突。用干净 DSH_HOME 目录重装即可(详见 README 与 docs/getting-started.md)。

Q: 图片粘贴了但模型说看不见怎么办?

A: 主模型不识图时需要装配视觉桥插件 dsh-vision-bridge(provide visionBridge 服务)或在装配方里显式注入 vision 配置;两者皆无则图片不发送并显示警告,这是有意的 fails loud 设计。

Q: LSP 诊断为什么只在 TUI 屏上显示,模型看不到?

A: 本插件里的 LSP 桥是展示层本地桥,诊断只进工具卡徽标与 /lsp 面板,不注册到模型工具面;如需模型可调 lsp_goto_definition 等工具,再装社区插件 omdsh-dev/dsh-lsp

Q: 怎么关闭启动时的 npm 更新检查?

A: 设置环境变量 DSH_TUI_SKIP_UPDATE=1 即可跳过;github:link: 安装的副本不会被改写成 npm 包。

Q: 更新后一定要退出再手动重启吗?

A: 0.1.2-rc.10 起,会话未开始工作时启动自更新落盘后会自动重启;会话非空白或关闭 autoRestartOnUpdate 时只提示,可手动输入 /restart

Q: Windows 上能跑吗?需要注意什么?

A: 能。Ctrl+C 打断会同时产生 0x03 字节与 SIGINT 信号,0.1.2-rc.10 起已加 SIGINT 双注册与去重避免「输入框消失」,并对 PowerShell/conhost 控制台做了退出时终端恢复兜底。

上手难度

进阶 — 终端交互 + slash 命令体系需要适应,但常用操作(输入回车对话、Ctrl+C 打断、Ctrl+N 新会话、Ctrl+Q 退出)即开即用;想要发挥 /fork /rewind /lsp /cost 等深度能力需要读一遍交互手册。

已知问题与限制

  • 图片再询问需伴生插件 @deepseek-ai/dsh-vision-ask(同仓独立包);TUI 本体不带 ask_image 工具与图片注册表,未装时已发图片无法再次定向询问
  • LSP 桥是展示层本地桥:诊断只上屏、不进模型工具面;server 初始化超过 2s 默认超时时静默无诊断,下次触碰文件重拉;大仓库 tsserver 常驻内存(懒启动缓解,无空闲回收);切会话不重启 server,rootUri 沿用首会话 cwd
  • app.ts 单体约 4032 行,挂起状态机已控制器化(question/approval),渲染组合与键仲裁仍在 app.ts,C4 拆分(纯函数面板段)持续推进
  • 投影层仅部分接线:turn-summary(turn N · 读X 改Y · 耗时 摘要行)与 summary-state(/status 会话汇总段)已接线;activity-status/activity-store 有意保留未接线
  • 视觉桥一次性提交路径:未装 vision-ask 时同角度重复描述会再次调用视觉模型,无 per-image 缓存
  • 启动自更新需联网;离线/受限网络下设 DSH_TUI_SKIP_UPDATE=1,但失去「更新后自动重启」能力

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/huiliyi37/dsh-tianshu-tui)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录