DeepSeek Harness Hub
← 返回列表

raktim-mondol/dsh-tui-en

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

dsh-TUI 的英文 TypeScript 分支。命令为 dsh-tui-en。这是原始的

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/18 · 已提供中文文档

dsh-TUI 的纯英文分支——面向 DeepSeek Harness 的 Claude Code 风格终端 UI

综合分
29.9
GitHub 分
29.9
用户评分
★ Stars
0
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add raktim-mondol/dsh-tui-en
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-instructions@deepseek-ai/dsh-agent-presets@deepseek-ai/dsh-atomic-write@deepseek-ai/dsh-attachment@deepseek-ai/dsh-brand@deepseek-ai/dsh-code-runtime@deepseek-ai/dsh-commands@deepseek-ai/dsh-cordis-host-runner
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-tui-en

dsh-TUI 的英文 TypeScript 分支。命令为 dsh-tui-en。这是原始的
Ink/Cordis 插件,而非 Rust 重写版。

dsh-TUI 是 DeepSeek Harness 的交互式终端入口。它作为
Cordis 插件挂载,提供 Claude Code 风格的对话、工具、
会话和全屏终端体验,同时继续使用
官方 DSH 的 agent、模型、工具、会话和持久化服务。

本项目不会修改 DeepSeek Harness 核心。安装该插件即可启用
该界面,卸载后不会留下任何核心修改。

状态:公开测试版。它适合日常使用和扩展开发。在依赖其
权限模型或终端特定行为之前,请阅读
架构与限制。

亮点

- 终端原生交互:流式 Markdown、结构化工具卡片
(terminal-card 多行命令头部可通过 /settings 折叠为第一行加
计数;按 Ctrl+O 或点击卡片可展开)、命令和文件补全、@ 文件引用(可在任意位置补全;文本
文件附加内容,目录附加列表,PNG/JPEG/WebP/GIF 作为
持久化图像块发送;@path#L12-14 行范围仅附加
所请求的行,超出 EOF 的范围会被截断,或回退到整个文件
并附带说明)、历史记录
搜索、消息选择、内联或备用屏幕渲染,以及英文 UI(/lang zh 仍作为兼容性别名保留,并且仍显示英文)。
- 时间线导航:一条 Grok 风格的回合轨道,覆盖*每一个回合
(包括已折叠的回合)——即使折叠窗口只暴露最后
几个回合,完整历史也只需一次点击即可访问(点击已折叠的刻度会
显示该回合并滚动到它)。当未固定到底部时,
Enter/End 可一步跳回(不会因长距离出现空白闪烁),
并且可点击的新消息胶囊会保持在视野中;右侧边栏提供
时间线 / 滚动条 / 隐藏模式。
- 可见的 agent 状态:实时活动、分段上下文使用量、TPS、缓存
命中率、推理强度、输入/输出 token,以及 Git/会话元数据。
- 完整的会话工作流:/resume、/new、/workspace、/compact、/export、
/btw 侧问、模型切换,以及通过
会话分叉进行双击 Esc 回退。
- 官方 DSH 集成:agent 预设、技能、MCP、目标、待办事项、
子 agent 和 ask_user_question 通过现有服务和
注册表连接。
- 为长会话而设计:事件驱动投影、差分输出、
消息虚拟化、重放合并和有界缓存可防止渲染
成本和内存无限制增长;指纹记忆化热路径
以每帧零分配渲染(在 3200 行会话中每
16ms tick 节省约 200KB 的 GC 抖动),wrapText 和 markdown token 跨挂载复用全局
LRU 缓存,主屏幕按帧绘制(折叠窗口
300→120 行),长会话恢复直接落到内容上(跳过启动画面,
锚定到最新消息的最后一行)。

预览

实时活动、目标/待办状态和上下文指标:

快速开始

前提条件:交互式终端 TTY、官方 dsh CLI,以及
pnpm 10+。模型请求还需要 DEEPSEEK_API_KEY。

1. 全局安装 CLI 和此插件(附带 dsh-tui-en 命令)
npm install -g @deepseek-ai/dsh @deepseek-harness-tui/dsh-tui

2. 启动它(首次运行会自动初始化 dsh-tui 配置文件;需要 pnpm)
dsh-tui-en

手动替代方案:dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tui
(仓库中的 sh install.sh 封装了此步骤并检查所需
命令),然后 dsh-tui-en 和 dsh --profile dsh-tui 等效。

新用户注意:如果 dsh plugin 失败并报 ERR_PNPM_IGNORED_BUILDS
(pnpm ≥11 默认阻止带有安装脚本的依赖,例如
@google/genai 和 protobufjs——这些脚本在
运行时都不需要,因此可以安全地忽略),请将以下内容添加到配置文件的
pnpm-workspace.yaml:
allowBuilds:
'@google/genai': false
protobufjs: false

/update 和 dsh-tui-en update 会自动生成此配置——
无需手动操作。

带 --resume 的 dsh-tui-en 会恢复最近选择的会话;在 Windows 上,
仓库中的 dsh-tui-en.cmd 行为相同。

CLI 子命令(dsh-tui-en help 会打印完整用法):

| 命令 | 用途 |
|---|---|
| dsh-tui-en update | 将配置文件更新到最新版本并对齐启动器(与 TUI 内的 /update 使用相同的安装逻辑,但不会重启进入 TUI) |
| dsh-tui-en doctor | 预检环境检查:dsh/pnpm、配置文件安装与版本对齐、是否设置了 API 密钥(仅显示状态,绝不显示值)、配置文件是否存在;补充 TUI 内的 /doctor 会话诊断 |
| dsh-tui-en version | 显示启动器和配置文件版本(--version/-v 等效) |
| dsh-tui-en help | 显示用法(--help/-h 等效) |

即使 dsh 缺失或配置文件未初始化,help/version 也能正常工作;update 需要 dsh(dsh 缺失时会给出安装提示);
其他所有参数仍会原样转发给 dsh --profile dsh-tui。
仓库根目录的 dsh-tui-en.cmd 是一个启动包装器,直接调用
dsh --profile,不包含任何子命令——子命令属于
通过 npm 安装的 dsh-tui-en 命令。

Herdr

直接在 Herdr 窗格中运行 dsh-tui-en;无需额外设置。
dsh-TUI 通过 Herdr 的本地集成 API 报告 idle、working 和 blocked 状态,并将问卷和工具审批标记为 blocked。该集成在 Herdr 之外完全处于非活动状态。herdr agent start --kind
dsh-tui、会话身份以及 Herdr 服务器重启后的自动恢复仍需要上游提供原生的 dsh-TUI agent 类型;手动启动的窗格已经能够保留、重新连接并暴露其实时状态。

关于在 VS Code 中运行 dsh-TUI——直接在集成终端中,或
通过 dsh-tui-vscode 配套扩展(真正的集成终端
会话,体验几乎与官方 Claude Code
扩展相同;可在 VS Code Marketplace 上获取)——请参阅
在 VS Code 中运行 dsh-TUI。

有关配置文件组成、
源码构建和故障排除,请参阅快速入门。

TUI 会在启动后于后台检查配置的注册表以获取更新版本
(该检查绝不会阻塞首帧,并会静默忽略
离线或注册表错误)。当有可用更新时,只需输入 /update
即可进行一次性升级:它会更新当前
dsh-tui-en 配置文件中实际运行的运行时,验证安装结果,然后自动重启并
恢复当前会话。

当通过全局 dsh-tui-en 命令启动时,较新版本
会自动将全局入口迁移/对齐为一个委托启动器:该
全局命令只会转发到 profile 内部的副本,因此启动逻辑始终遵循 profile 版本。

正常情况下无需额外手动步骤:

npm install -g @deepseek-harness-tui/dsh-tui

从旧版 dsh-cc-tui 包和 cc-tui profile 迁移,请参阅
快速开始。

快捷键

| 按键 | 操作 |
|---|---|
| Enter | 空闲时 = 发送(换行用 Shift+Enter,终端无法上报带修饰的 Enter 时用 Ctrl+J;macOS Terminal.app 上回退为 Option+Enter,见 issue #110);模型工作时 = 引导(注入下一步边界而不中断);命令菜单打开时执行选中项 |
| Ctrl+Enter(⌘Enter) | 中断当前回合并立即发送(中断) |
| Alt+Up | 将最后一条未处理的消息拉回输入框进行编辑(不中断当前回合) |
| Tab | 补全 / 命令或 @ 文件(可继续深入目录);模型工作时 = 后续消息(在当前回合之后排队) |
| Ctrl+C | 中断当前回合;中断尚未完成时再按一次强制退出;空闲时连按两次退出 |
| Esc | 关闭命令/文件菜单;空闲时连按两次清空输入;空输入时连按两次 = 时间回溯 |
| Ctrl+O | 展开/折叠详情(完整思考文本、工具参数和输出) |
| Ctrl+R | 历史搜索 |
| / | 会话内全文搜索(n/N 跳转) |
| Ctrl+V / Alt+V | 从文件管理器粘贴文本或文件;图片显示为 [Image #N] 并作为持久附件发送。终端拦截 Ctrl+V 时请使用 Alt+V |
| Ctrl+G | 用 $VISUAL/$EDITOR(如 nvim)编辑当前输入;保存退出后内容会回填 |
| ? | 快捷键菜单(仅在输入为空时响应) |
| Shift+↑ | 消息选择模式(Enter 展开单条消息) |
| Ctrl+P | 切换启动时加载的上下文面板(面板在屏幕上时有效) |
| Home / End、Ctrl+A / Ctrl+E | 逻辑行首 / 行尾;Ctrl+E 有双重用途:输入时为行尾,转录时展开/折叠隐藏的较早消息 |
| Ctrl+← / Ctrl+→(⌘←/→) | 按词跳转 |
| Ctrl+U / Ctrl+K | 删除光标前(至行首)/ 光标后(至行尾) |
| Ctrl+W | 删除前一个词 |

模型工作时的三种投递模式:Enter = 引导(注入下一步边界,不中断)· Tab = 后续消息(在当前回合之后排队)· Ctrl+Enter = 中断(打断并立即发送)。
自定义快捷键:上述操作快捷键(粘贴、历史搜索、外部编辑器、转录展开、轨迹、子代理仪表盘、已加载上下文面板、全部显示、重绘、待办折叠)可在 /settings → dsh-tui → Shortcuts 中重新映射:输入组合键如 alt+v 或 ctrl+shift+v,多个用逗号分隔,留空则恢复默认值;保存后即时生效,无需重启。与固定编辑键(Ctrl+A/E/U/K/W、Ctrl+←/→)或其他操作冲突的组合键会被拒绝。部署时也可通过 cordis.yml 中的 shortcuts. 静态固定(设置中的用户层优先)。

macOS 修饰键:上述 Ctrl+ 绑定在 macOS 上也可使用 ⌘(例如 ⌘V 粘贴、⌘O 展开详情、⌘Enter 立即发送);仅 Ctrl+C / Ctrl+D(中断/退出)保留在 Ctrl 上,以避免与 macOS 系统级 ⌘C 复制等操作的肌肉记忆冲突。⌘ 需要终端支持扩展键盘协议(iTerm2 / kitty / WezTerm / ghostty / tmux);macOS 自带的 Terminal.app 会自行消费 ⌘ 快捷键,因此请继续使用 Ctrl。

鼠标(自 0.9.0 起全屏为出厂默认;设置 fullscreen: false 可恢复内联主屏幕;从旧版本更新时会清除一次先前保存的内联选择——之后你仍可再次选择内联)

| 操作 | 功能 |
|---|---|
| 拖动选择 | 应用内文本选择,松开时复制(OSC 52,并回退到原生 wl-copy/xclip/xsel;在 tmux 内使用 load-buffer -w);复制后选择被清除,并弹出“已复制 N 个字符”提示 |
| 双击 / 三击 | 选择单词 / 行,同样在选择时复制 |
| 滚轮 | 仅在启用全屏鼠标跟踪时:帮助打开时滚动帮助,否则滚动消息(每格 ±3 行);默认内联模式不会将滚轮事件传递给 TUI |
| 点击时间线轨道刻度 | 跳转到该轮次——轨道覆盖每一轮(包括已折叠的);折叠的刻度会先展开其轮次,然后滚动到相应位置 |
| Esc | 取消进行中的拖动选择(不复制) |
| 单击消息行 | 展开/折叠该行 |
| 点击“加载更早的消息” / “ctrl+e 显示前 N 条” | 加载更早的消息 / 全部展开 |
| 点击 StickyHeader / “↓ N 条新消息” | 跳回固定消息 / 滚动到底部 |
| 点击超链接 | 在浏览器中打开 |
| 键盘扩展选择 | 有活动选择时,Shift+←/→/↑/↓/Home/End 可扩展或收缩选择(跨行环绕) |

问卷(当模型触发 ask_user_question 时)

| 按键 | 操作 |
|---|---|
| ↑/↓ | 选择选项 |
| Space | 切换多选选项 |
| Tab | 切换到自定义答案(无需选择选项即可直接输入) |
| Enter | 提交当前选择 |
| Esc(从第 2 个问题起) | 返回上一个问题并保留当前草稿 |
| Esc(来自问题 1)/ Ctrl+C | 取消整个问题批次(模型收到 ASK_CANCELLED 后可继续对话) |

本地命令(CC 命令集的完整复刻,全部经由官方 DSH 管道路由)

| 分组 | 命令 |
|---|---|
| 会话 | /new 新建会话 · /resume 会话浏览器(搜索、预览、跨项目、子代理运行折叠) · /rename 重命名会话 · /recap 会话回顾(一键应用建议标题;/settings 可启用会话打开时自动摘要——默认开启:恢复会话时在记录底部显示分隔线 + Recap: 行,发送新消息后自动消失) · /workspace resume|rename|open 管理工作区 · /clear 清屏 · /compact 压缩 · /export 导出 Markdown · /trace 追踪时间线(或 Ctrl+T) · /rewind 回退选择器(等同于空输入时双击 Esc) · /tree 会话家族树(所有分叉分支拼接在一起;悬停预览节点,点击打开回退/在此分叉/采用分支菜单) · /fork 将当前会话复制为可恢复的孪生会话(原会话不受影响) · /btw  附带问题(绝不打断主回合,不写入历史) |
| 状态 | /context 已加载上下文详情 · /status 会话信息 · /cost token 用量 · /balance DeepSeek 账户余额及本次会话花费 · /doctor 环境自检 · /config 配置来源 · /init 创建 AGENTS.md · /settings 设置面板(命名空间读取/编辑,自动保存) |
| 模型 | /model 两级选择器(首先是一个固定的最近使用分组——最近切换的 10 个模型,持久化于 ~/.dsh-tui/model-recents.json——然后是提供商分组;按 Enter 进入某分组的模型列表;若只有一个提供商且无最近记录,则直接进入列表;切换 = 分叉延续,历史保留) · /effort 推理强度(滑块 / status / ) · /preset 代理预设(会话开始后无法切换——仅限空白会话) · /thinking 思考显示 · /tokens token 详情 · /activity 工作动画(frames  / status) · /theme 主题选择器 · /color(不带参数打开调色板选择器; 直接设置;status/reset)会话强调色(输入框边框 + 右上角会话名称标签,按会话生效;标签默认关闭,可在 /settings 中启用) · /lang 中/英文 UI 切换(也可在 /settings 中选择) |
| 账户/策略 | /provider 添加模型提供商(包含内置的 dsh-auth 订阅 OAuth 登录分支——ChatGPT / Claude / Grok,无需 API 密钥;与 /auth status\|login\|logout 同源) · /login 凭据与账户状态 · /logout 登出说明 · /permissions 权限说明 · /add-dir 文件策略范围 · /hooks · /mcp |
| 技能 | /audit 代码审计 · /bug 缺陷报告 · /review 代码审查 · /practice 编码练习 · /pr-comments PR 评论 · /release-notes 发布说明 · /vuln-check 漏洞检查 |
| 其他 | /agents 子代理列表 · /skills 技能目录 · /plugins check  插件诊断 · /update 自动更新并重启 · /vim · /terminal-setup · /connect · /help · /exit(别名 /quit /q) |
| 注册表 | /plan /goal /feedback /permission(DSH 命令注册表插件,随插件自动合并到 / 菜单中) |

未知命令会作为普通消息发送给模型(例如在未挂载 /permission 的组合中)。

文档

| 主题 | 内容 |
| --- | --- |
| 快速开始 | 前置条件、安装、启动、配置文件生命周期、源码开发 |
| 配置 | Cordis 覆盖、字段、代理预设、MCP、环境变量 |
| 主题 | 内置主题、背景检测、自定义 JSON 主题、校验 |
| 交互与命令 | 键盘、鼠标、问卷、斜杠命令、会话工作流 |
| 架构与限制 | 运行时路径、渲染、持久化、安全边界、已知限制 |
| VS Code 指南 | 在 VS Code 集成终端中运行 dsh-tui;dsh-tui-vscode 配套扩展提供与官方 Claude Code 扩展几乎一致的体验(已在 Marketplace 上架) |
| 贡献 | 贡献流程、仓库地图、构建产物、验证矩阵、变更规则 |
| 插件准入与开发 | 接口与兼容性协议 / 插件准入规范 / 接缝 / 契约 / 验证清单(已合并到 dsh-ecosystem-spec) |

完整双语索引见 docs/README.md。

配置与扩展

- 代理预设:四种官方代理模式(standard / code / minimal / cordis)
外加 TUI 内置的 Liangshen 模式(liangshen),
通过 /preset 切换;已有对话的会话无法切换,而
空白会话会立即生效。默认预设持久化在
~/.dsh-tui/agent-preset.json;/model 选择持久化在 ~/.dsh-tui/model.json。
参见配置。
- 自定义主题:/theme 选择器(auto 跟随系统/终端背景,
内置 light / dark / dark-ansi)也接受来自
~/.dsh-tui/themes/.json 的自定义主题——选择后会热切换并持久化;优先级为
DSH_TUI_THEME 环境变量 > 持久化选择 > OSC 11 终端背景自动检测。
参见主题。
- MCP:服务器通过 @deepseek-ai/dsh-mcp-client 挂载,工具注册为
mcp____;/mcp 显示连接状态。
参见配置。

工作原理

dsh profile
-> dsh-base
-> dsh-TUI Cordis patch
-> agent 预设 + DSH 服务
-> 会话/事件
-> Channel 投影
-> React 组件
-> 移植的 Ink/Yoga 渲染器
-> 终端

TUI 仅负责交互与呈现。会话日志仍是对话的唯一事实来源,而模型调用、工具执行、分叉/恢复、压缩和持久化仍由 DSH 服务负责。有关模块边界和性能细节,请参阅架构指南。

chat / tool base events ──> persisted Session log ──> TUI / Web
└───────────────> ActivityTracker (memory) ──> TUI status only

技术说明

- Gentle Mist Blue 调色板:雾蓝色仅用于品牌、焦点、交互和高亮;正文文本保持中性灰色。启动时查询终端背景色(OSC 11)以自动选择浅色或深色调色板,当终端无响应时回退到深色。
- 事件驱动渲染:session/event 流驱动增量差异渲染;滚动状态独立维护。
- 布局级虚拟化:长会话的每帧开销从 O(整个会话) 降至 O(可见窗口)——屏幕外的消息行渲染为仅含高度的占位符,其子树从不参与布局。
- 零分配热路径:visibleRows 流水线(切片/过滤/边距)基于行标识、长度和 Uint8Array 流式位指纹进行记忆化——每次滚动 tick 零数组/Map 分配,而原地 settle 写入仍会立即重建缓存(空行过滤从不滞后);wrapText 和 markdown token 流经全局 LRU 缓存,跨挂载复用测量结果。
- 分帧回填与落点锚定:打开主屏幕时先挂载尾部窗口,再分帧回填历史;/resume 断言最终状态,使最新消息的最后一行可见且可达,长会话恢复时跳过启动动画,直接落到内容上。
- 上下文进度条:基于 pi-nano-context 算法(最大余数分段着色 + 多级精简读数)。
- TPS 仪表:基于 pi-tps-meter——流式 1/8 方块仪表、历史最小-最大迷你折线图,以及基于速度的语义颜色(≥50 绿色 / ≥20 黄色 / =24。

pnpm install --frozen-lockfile
pnpm build
pnpm smoke

lib/types/ 是被忽略的生成输出。pnpm build 会从干净的输出目录重新编译它,并运行构建门禁。不支持 Git URL 安装(源清单将 @dsh-std/ 保留为 workspace 依赖,vendor/dsh-std 是子模块,且 pnpm ≥11 默认拒绝 git 托管的 prepare 脚本);请安装 registry 包:
dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tui。渲染、问卷或工具卡片
的更改也需要相应的回归脚本。

插件生态

想为 dsh-TUI 构建插件或扩展?加入生态:

- 接口与兼容性约定 / 插件开发指南:终端交互生态插件准入与开发指南(准入规范、接缝、契约、验证清单)
- 组织:dsh-tui-ecosystem
(社区插件与模板的家园)
- 模板仓库:plugin-template
(从模板开始,几分钟内发布一个插件)
- 参考实现:dsh-working-activity(实时工作状态
行,具有双出口:TUI 提示槽 + activity/status 会话事件)

核心仓库保持独立;社区插件位于各自的
仓库中。该组织仅维护列表和准入规则——它
不认可或担保社区插件的功能、质量或安全性。
插件作者保留其仓库的完全所有权,并
负责其维护和安全。

社区

- 生态组织:dsh-tui-ecosystem——
社区插件、模板和精选列表的家园。来发布一个
插件、提出一个想法,或者只是闲逛 🐋
- 聊天群组(中文):使用问题、插件想法和
功能愿望都欢迎。

| 微信群 | QQ 群(群号 572549239) |
| :---: | :---: |
|  |  |

微信群二维码大约每 7 天过期一次;如果它失效了,请使用
QQ 群(572549239)或提交 issue 提醒我们刷新。

权限与安全边界

dsh-TUI 不实现单独的沙箱。它使用当前 DSH 配置文件的文件系统、
shell、沙箱和审批策略。所提供的
配置文件在非 Windows 平台上默认使用工作区限制和审批。
Windows 目前没有相应的沙箱后端,因此
组合回退到 danger-full-access,且没有审批提示。
在涉及敏感凭据或不受信任的仓库时,请在启动前检查该配置文件。

详情请参阅权限与安全边界。

DeepSeek Harness 专题报道

DeepSeek Harness 官方微信公众号在其
早期用户构建的扩展中专题报道了此插件。查看报道截图。

友情链接

由朋友们构建的社区、相关项目和配套工具:
查看链接页面

趋势

Star 历史

许可证

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(raktim-mondol)的其他插件

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群