AllDSH
EN

dsh-tianshu-tui

huiliyi37 · huiliyi37/dsh-tianshu-tui

给 DSH 的完整终端工作区:流式 Markdown 与工具卡、16+ 主题、slash 命令、会话标签页与 LSP 诊断——纯展示层,自身不注册任何 prompt 或工具面。

dsh-tianshu-tui 是 huiliyi37 开发的 DSH 插件,给 DSH 的完整终端工作区:流式 Markdown 与工具卡、16+ 主题、slash 命令、会话标签页与 LSP 诊断——纯展示层,自身不注册任何 prompt 或工具面。收录于界面与体验和会话与消息,适合终端与 Shell。验证等级 L3(安装命令可解析),安全扫描尚未完成,兼容目标是 DeepSeek Harness >=0.1.5-rc.1,条目最后核查于 2026-09-18,采用 Apache-2.0 许可。安装命令:dsh plugin --profile tui add @huiliyi37/dsh-tianshu-tui

本条目由 赤榆 核查,数据更新于 · 引用规则

L3active
dsh-tianshu-tui 验证面板:验证等级 L3(共 5 级)——安装命令可解析,已声明 DSH 目标版本。安全扫描:未验证(未运行扫描)。兼容目标:DeepSeek Harness >=0.1.5-rc.1。许可:Apache-2.0。GitHub 星标:280。条目最后核查 2026-09-18。
dsh-tianshu-tui 的验证面板。该条目处于 5 级验证中的 L3 级:安装命令可解析,已声明 DSH 目标版本。安全扫描:未验证(未运行扫描);兼容目标:DeepSeek Harness >=0.1.5-rc.1;许可:Apache-2.0;条目最后核查于 2026-09-18。 验证规则说明

安装命令

dsh plugin --profile tui add @huiliyi37/dsh-tianshu-tui

需要先启动 harness:npx @deepseek-ai/dsh web,然后执行上面的命令。第一次用?先看安装教程。

它做什么

dsh-tianshu-tui 是 Harness 的终端前端,而 README 里关于它最吃重的一句话是架构性的:TUI 自身不注册任何 prompt、工具或上下文面。它画出来的每一处状态都派生自会话事件流,你输入的内容成为一条普通日志消息。这正是它能在不改变模型所见的前提下提供极大界面的原因——也是可以把它当作展示层、而不是一次 agent 改写来对待的原因。

渲染核心是自研的极简 ANSI 引擎,由作者早前的天枢 Tianshu-Tui 项目演进而来(Apache-2.0,逐文件来源见 SOURCE-MAP.md 与 NOTICE)。

区域 README 记录的能力
会话 /session new|list|switch、/fork、/branch、/rewind(转录截断 + 可选文件回退)、/export 导出 Markdown、/clear
输入面 模糊前缀 slash 菜单(MRU 排序、ghost 预览)、@-路径补全与 @mention 展开、bracketed paste、可选 vim 键位、$EDITOR 转交、历史搜索
图片 剪贴板粘贴、经 kitty / iTerm2 图形协议内联渲染、发送前自适应压缩到长边 1568px
交互 结构化提问面板、带内联 diff 预览的审批卡、模式循环(Shift+Tab:normal → plan → always-approve)、命令面板,以及 status / config / skills / tasks / 委派树 / workflow 实时面板
推理 实时思考头行,折叠为紧凑滚动行(✻ 思考 (3.2s) · 12 行),Ctrl+O 原位展开
主题 16+ 内置加 custom:、自动终端检测与 16 色降级、尊重 NO_COLOR、自定义主题按声明背景做对比度警告

两半:展示层,以及它站在什么之上

清单把这条分界写得很明确。dsh.runtime 为 "host",dsh.bundle.patch 指向 cordis.patch.yml,后者在 dsh-base 之上插入单行 tui-runner:

- id: tui-runner
  name: '@huiliyi37/dsh-tianshu-tui'

TUI 展示的一切都来自宿主;它暴露的能力——图片与视觉桥、记忆、带文件快照的会话持久化、验证门、代码智能、git 工具——位于独立的宿主包中,不随本 bundle 分发,README 对此说得很直白。TUI 是这些能力的主要交互面。

有两条依赖事实在安装前值得读清楚,因为它们决定了这是「一个视图插件」还是「一个带运行时血统的视图插件」:

  • peerDependencies 是官方包——十七个,@deepseek-ai/dsh-agent、-llm、-session、-tools、-subagent、-workflow、-user-approval 等均为 ^0.1.5-rc.1,外加 @deepseek-ai/cordis ^4.0.2。这些由宿主提供,不要另装。
  • dependencies 包含十七个 @huiliyi37/dsh-*@0.6.0——TUI 演进自的那条 fork 血统,另有 chalk、diff、sharp、string-width、get-east-asian-width。

声明的 Harness 目标为 >=0.1.5-rc.1。它来自 README(「需 ≥ 0.1.5-rc.1」,peer 对齐),而不是 dsh.compatibility 块——清单里没有该字段。本条目把它逐字记录为 dshTarget,因此等级为 L3。

要求与安装

  • Node ≥ 24.4。 README 明确解释了原因:0.1.5 宿主 CLI 入口依赖 import.meta.main,过旧的 Node 会静默无输出。engines.node 声明为 ^22.19 || >=24,比 README 自己的警告更宽松——这里请以 README 为准。

  • 先装官方 @deepseek-ai/dsh CLI 且版本 ≥ 0.1.5-rc.1。 本包不是独立程序,只 npm i 本包跑不起来。

  • 用 pnpm,不要用 npm 11。 README 记录了用 npm 11(Node 24 自带)安装官方 CLI 那棵 60+ 包的依赖树时会稳定复现 JavaScript heap out of memory,并建议改用 pnpm。

  • 不要直接敲 PATH 上的旧 dsh。 低于 0.1.0-rc.8 的二进制会把安装带到本地 staging 路径,报 ERR_FS_EISDIR / Path is a directory …/@deepseek-ai/dsh。请显式使用 pnpm dlx @deepseek-ai/dsh。

  • 装进 tui profile——这是插件面向的 profile,上面的安装命令保留了它:

    pnpm dlx @deepseek-ai/dsh plugin --profile tui add @huiliyi37/dsh-tianshu-tui

    用 github:huiliyi37/dsh-tianshu-tui 也可以,因为仓库已包含构建好的 lib/index.js。README 说明 pnpm 可能提示 peer missing,可忽略——peer 由宿主提供。

  • 启动用 pnpm dlx @deepseek-ai/dsh --profile tui。 欢迎页显示 dsh-tianshu-tui 品牌即表示加载成功。Ctrl+Q 或 /exit 退出。

  • 无安装期生命周期脚本。 声明的脚本为 build、lint、typecheck、test、e2e:tui。

  • LSP 用户的迁移提示: 如果你此前单独装过旧的社区版 github:omdsh-dev/dsh-lsp,请在升级前先移除——两者注册同名模型工具,同时装配会重复注册。

网络与数据

升级检查是它唯一主动出网的行为。 从 npm 安装后,每次启动会对照 npm latest:有新版本就写入 profile 并提示重启。/update 是按需检查且只打印命令、不安装。设置 DSH_TUI_SKIP_UPDATE=1 可关闭该检查。github: / link: 安装不会被改写成 npm 包——如果你刻意钉了某个分支,这一点很重要。

LSP 桥是本地行为。 agent 触碰文件时按扩展名懒启动语言服务,默认单次拉取超时 2000ms(typescript 经 npx 默认可用;pyright、gopls、rust-analyzer、clangd、jdtls 按 PATH 探测)。诊断只进 TUI 本地展示缓存——README 声明它们不写入会话事件、也不注册任何模型面。初始化慢于超时的服务就是静默无诊断,下次触碰文件再拉。

其余一切跟随宿主。 除升级检查外,TUI 不新增自己的出站流量:模型调用、附件与视觉桥都走宿主自己的服务。

未记录遥测。 本条目为 security: unverified,没有第三方扫描或独立审计记录。

已知限制

  • 两套依赖,其中一套是 fork 血统。 十七个 @huiliyi37/dsh-*@0.6.0 运行时包作为硬依赖发布,而官方 DSH 包是 ^0.1.5-rc.1 的 peer。从依赖角度看它并不是一个轻量展示层,这也让声明的主机下限(>=0.1.5-rc.1)值得遵守而不是试探。
  • 图片再询问需要伴生包。 ask_image 工具与会话图片注册表位于同仓的独立包 @deepseek-ai/dsh-vision-ask。未装配时,已发送的图片无法再次询问,同角度重复描述会再次调用视觉模型;一次性提交时的视觉桥仍然可用。
  • LSP 诊断有锋利边缘。 初始化慢于超时的服务静默无输出;大仓库里 tsserver 常驻内存;切会话不重启服务,rootUri 沿用首个会话的 cwd。
  • app.ts 仍是约 3.2k 行的单体。 README 把它列为待办:挂起状态机已控制器化,渲染组合与键仲裁还没有。
  • 四个投影模型中只有两个已接线。 README 如实记录了这一点,而不是暗示全覆盖。
  • 不要在 Harness 工作区根目录跑 tsdown。 README 警告它会把未发布的 @deepseek-ai/dsh-root 写进 bundle,加载必失败。
  • Star(277)代表关注度,不代表审查。 本站没有条目声称 L4/L5,本条目也不表示已做过冒烟安装。

何时用 / 何时不用

适合你在终端里工作、并且希望整个会话都在终端里的人:可搜索可导出的滚动转录、fork 与 rewind、内联渲染的图片、带 diff 的审批卡、工具卡上的 LSP 诊断,以及你想要时的 vim 键位。「不注册任何模型面」这一性质是它最有力的论据——你能得到大得多的界面,而不改变模型被告知的内容。

不要指望它是无头渲染器,或者能用脚本驱动 Harness:它需要 TTY 和 pnpm 管理的主机。如果你在 Node 低于 24.4,或者不愿离开 npm 11 工具链,请先解决那件事——README 记录的那几个失败模式都是静默的。如果你要的是一个依赖极少的轻量展示层,那它不是——依赖树本身就是设计的一部分。

FAQ

它是插件还是 Harness 的 fork?

是插件——dsh.runtime 为 "host",以单行 tui-runner 装进 profile。但它带着十七个 @huiliyi37/dsh-*@0.6.0 作为依赖,所以也不是零足迹的视图。它需要的官方 DSH 包是宿主提供的 peer。

TUI 会改变模型看到的内容吗?

不会。README 声明它不注册任何 prompt、工具或上下文面:用户输入成为普通日志消息,所有渲染派生自会话事件。例外是面向模型的 LSP 工具(lsp_goto_definition、lsp_find_references、lsp_diagnostics),它们由随包内置的伴生 LSP 插件注册。

为什么每次启动都要查 npm?

为了在有新版本时告诉你——它会把版本写进 profile 并提示重启。/update 只报告。若你希望它永不外呼,设 DSH_TUI_SKIP_UPDATE=1;另外 github: 与 link: 安装永远不会被改写成 npm 包名。

安装报 ERR_FS_EISDIR 是为什么?

README 归因于 PATH 上的旧 dsh 二进制(低于 0.1.0-rc.8),或 ~/.dsh/profiles/node_modules 里旧的安装 fallback 与官方 CLI 冲突。文档给的处置办法是换干净目录启动,例如 DSH_HOME=/tmp/dsh-tianshu pnpm dlx @deepseek-ai/dsh …。

能和另一个 TUI 插件一起用吗?

同一个终端只应由一个前端占用。它可以和宿主自身的能力共存——记忆、workflow、子代理等是可选服务,未装配时 TUI 会明确报不可用,而不是静默吞掉。

来源与参考

本页的技术判断建立在以下第一手资料之上,链接可直接追溯核对。

  1. [1]huiliyi37/dsh-tianshu-tui — GitHub插件自身的仓库与 README——本条目的每一项论断都以这份第一手文档逐条核对。
  2. [2]deepseek-ai/deepseek-harness — GitHubDeepSeek Harness、Cordis 运行时与插件加载模型的上游仓库。
  3. [3]@deepseek-ai/dsh on npm — npm已发布的 harness 包,也是本站 dshTarget 字段跟踪的版本来源。
  4. [4]dsh-plugin GitHub topic — GitHub本站用于发现收录插件的检索入口。

全部链接最后核验于 2026-09-11

关于本条目的问题

dsh-tianshu-tui 安全吗?可以安装吗?
dsh-tianshu-tui 当前的验证等级是 5 级中的 L3 级(安装命令可解析,已声明 DSH 目标版本),安全状态为「未验证(未运行扫描)」。验证等级记录的是安装路径被核查到什么程度,它本身不是安全保证:是否安全取决于插件实际能碰到什么。安装前请阅读源码与安装脚本,确认它对文件、shell、网络和凭证的访问范围。
dsh-tianshu-tui 兼容哪个 DeepSeek Harness 版本?
dsh-tianshu-tui 声明 dshTarget 为 >=0.1.5-rc.1,即本站核查这条目时所对应的 DeepSeek Harness 版本。dshTarget 是插件作者声明的兼容目标,它只说明该版本被核查过,并不保证上游发布新版本后插件仍然可用。升级 harness 前请先在隔离的 profile 中试装。
dsh-tianshu-tui 怎么安装?
先用 npx @deepseek-ai/dsh web 启动 harness,然后复制页面顶部的安装命令。该命令由仓库发布的包名(或条目声明的安装 spec)生成,因此不会与仓库实际发布的内容脱节。本条目最后核查于 2026-09-18。
它是插件还是 Harness 的 fork?
是插件——dsh.runtime 为 "host",以单行 tui-runner 装进 profile。但它带着十七个 @huiliyi37/dsh-*@0.6.0 作为依赖,所以也不是零足迹的视图。它需要的官方 DSH 包是宿主提供的 peer。
TUI 会改变模型看到的内容吗?
不会。README 声明它不注册任何 prompt、工具或上下文面:用户输入成为普通日志消息,所有渲染派生自会话事件。例外是面向模型的 LSP 工具(lsp_goto_definition、lsp_find_references、lsp_diagnostics),它们由随包内置的伴生 LSP 插件注册。
为什么每次启动都要查 npm?
为了在有新版本时告诉你——它会把版本写进 profile 并提示重启。/update 只报告。若你希望它永不外呼,设 DSH_TUI_SKIP_UPDATE=1;另外 github: 与 link: 安装永远不会被改写成 npm 包名。
安装报 ERR_FS_EISDIR 是为什么?
README 归因于 PATH 上的旧 dsh 二进制(低于 0.1.0-rc.8),或 ~/.dsh/profiles/node_modules 里旧的安装 fallback 与官方 CLI 冲突。文档给的处置办法是换干净目录启动,例如 DSH_HOME=/tmp/dsh-tianshu pnpm dlx @deepseek-ai/dsh …。
能和另一个 TUI 插件一起用吗?
同一个终端只应由一个前端占用。它可以和宿主自身的能力共存——记忆、workflow、子代理等是可选服务,未装配时 TUI 会明确报不可用,而不是静默吞掉。

相似的 DSH 插件

查看全部

非官方 Command Code 中转服务 provider 插件:实时模型目录、按套餐过滤的模型选择、浏览器内 OAuth 登录与多账号轮换。

L3
278 TypeScript

DSH Mobile

saya-ch

在手机上使用电脑里的 DeepSeek Harness:Android App 或手机浏览器经配对加密的局域网 HTTPS 接入,可选多种远程隧道。

L3
274 TypeScript
编辑推荐

DSH 的服务化侧边栏:自带文件、终端、变更与任务页,并把注册接口开放给其他插件,用来挂自己的侧边栏页面与文件预览器。

L3
3.6k TypeScript

SeekTTY

Hilbert-beinghappy

运行在 dsh Host 之上的 Claude Code 风格终端工作台,含流式 Markdown、TextMate 高亮与各类管理中心。

L3
198 TypeScript

DSH TUI

ccch1mneyyy

DeepSeek Harness 的交互式终端界面:像素鲸鱼顶栏、实时工作状态、流式思考与双击 Esc 回溯。

L2
3.1k TypeScript

DSH Synapse

liangmianya

DeepSeek Harness 的画布会话地图——把会话、追问与原生 fork 组织成可浏览、可拖拽的工作区,同时让 DSH session log 继续作为唯一事实来源。

L2
404 JavaScript
ESC

输入关键词搜索索引,索引由 Pagefind 在部署时生成。