DeepSeek Harness Hub
← 返回列表

终端交互式 REPLghbhiee/dsh-plugin-tui

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

在终端里流式对话、切换会话并应答审批请求

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

DeepSeek Harness(dsh)的 Claude Code 风格终端 UI 插件:流式 REPL、折叠式思考、交互式会话/模型选择器、历史回放、审批模式、底部状态栏

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

README

dsh-plugin-tui

一个用于 DeepSeek Harness 的交互式终端 UI:在一个可恢复的编码代理会话之上,提供 Claude Code 风格的 REPL。dsh-plugin-cli-session 只驱动单轮对话然后退出,而这个运行器会在整个对话过程中一直占用终端——在 token 增量、工具调用行和轮次错误提交时实时流式输出,并通过键盘应答审批请求。

安装

dsh plugin --profile tui add github:ghbhiee/dsh-plugin-tui

或者从本地克隆安装(使用 link:,这样本地重新构建会被自动采用):

dsh plugin --profile tui add ./dsh-plugin-tui

tui profile 只需要两个 bundle 层——本插件重新声明了 dsh-headless 原本会贡献的那几行,因此不要添加 headless bundle:

// ~/.dsh/profiles/tui/package.json
"dsh": { "profile": { "bundles": ["@deepseek-ai/dsh-base", "dsh-plugin-tui"] } }

用法

dsh --profile tui                       # 在提示符处启动
dsh --profile tui "explain this file"   # 发送第一条消息,然后保持交互
dsh --profile tui -r                    # 在此处恢复最近的 tui 会话
dsh --profile tui -s                # 恢复指定会话
dsh --profile tui -w ./scratch          # 在另一个目录中新建会话
dsh --profile tui -l                    # 列出此 profile 在此处的会话
dsh --profile tui -p danger-full-access # 启动即完全访问(无沙箱,无提示)
dsh --profile tui -p workspace-write -y # 沙箱化,但审批自动允许

在 REPL 内部:

| 输入 | 含义 |
|---|---|
| /exit、/quit、Ctrl-D | 退出(先刷新会话) |
| /session | 打印会话 id |
| /sessions | 交互式选择会话(↑/↓ 移动,Enter 切换,Esc 取消);/sessions list 打印静态列表 |
| /resume  | 就地切换到另一个会话(索引来自 /sessions list,或 id 前缀) |
| /history [n] | 显示当前会话更早的 n 轮交流(切入时只显示最近的几轮) |
| /new | 开始一个新会话,释放当前会话 |
| /title [text] | 显示会话标题,或重命名(重命名会固定标题) |
| /model [id] | 交互式选择模型(↑/↓、Enter、Esc)或按名称热切换(id 或 provider/id)——从下一步起生效 |
| /effort [id] | 交互式选择推理强度,或按名称设置(/effort default 恢复提供方默认值) |
| /help | 内置命令加上所有 harness 注册的命令 |
| 轮次运行时按 Ctrl-C | 取消该轮次,留在 REPL 中 |
| 空闲时按两次 Ctrl-C | 退出 |
| 审批提示处按 y / N | 允许 / 拒绝一次受门控的工具调用 |
| /approvals [ask\|auto] | auto 允许每个请求并显示一行暗色审计记录(沙箱仍然生效);ask 恢复提示。dsh --profile tui -y 以 auto 模式启动 |
| 在 ⁇ 问题处输入一个数字(或自由文本) | 选择一个选项 / 用自己的话回答;多选时输入以逗号分隔的数字 |

固定在终端底行的状态栏显示实时模型和
effort、审批模式、会话标题以及工作目录——
它会随这些内容的变化而刷新,并在调整大小时保持存在;转录内容在其上方滚动。
思考默认折叠——spinner 区域显示推理流上的实时
三行窗口,ctrl+o 切换完整的
暗色流。
/model 和 /effort 的选择按 profile 记忆(tui-model.json
位于 profile 旁边;机器范围的默认值绝不会被改动)——/model
default 清除该偏好。
工具调用始终渲染为一行任务摘要(⏺ Group counts (+14
lines));完整命令或脚本进入 ctrl+o 所显示的同一每轮详情流。
该切换只覆盖当前(或刚刚结束的)交互——开始新的交互会清除它。
恢复或切换到某个会话时,会静态重放其最近的交互
(绝不重新运行任何内容);/history 可进一步向前翻页,你的
终端自身的回滚缓冲区覆盖其余部分。提示符在远不到一秒内出现——
MCP 服务器在后台连接,其工具稍后加入。
当一轮运行时,盲文 spinner 覆盖安静时段;token 增量按
微批次(约 16ms)处理,因此高负载流保持流畅。回答文本按 markdown 渲染,
一次一行——粗体标题、彩色项目符号和内联代码、
绿色围栏代码块。工具调用通过每个工具自己的呈现器渲染——
⏺ $ ls -la — List files、⏺ Write foo.txt——其中 ⏺ 按
调用的类别(读取、编辑、执行……)着色,对于没有呈现器的工具则回退为紧凑的
原始参数行。Todo 快照绘制为 ☑/◐/☐
清单,每次交互以一行暗色 ↳ 1.2k in · 89 out 统计行结束,
并且提示历史在多次运行间持久保留(上箭头可调出较早的输入)。

Ctrl-C 作为按键生效,因为原始模式 readline 拥有终端;
启动器自身的 SIGINT 处理程序仍会以完整
拆除来响应外部 kill -INT,这正是你从 TUI 外部想要的行为。

开发

pnpm install
pnpm run check   # typecheck → vitest → tsdown build

因为 lib/ 已纳入版本控制(git 安装所提供的就是它),每次源代码变更都要重新构建并
提交它。

Harness 斜杠命令通过 ctx.commands 分发,因此 /help 也会
列出组合所注册的内容——这里就是 /compact、
/feedback、/goal、/permission 和 /plan。/permission
workspace-write 将实时会话切换为沙箱化的 ask-mode 预设;
受门控的工具调用随后会以 y/N 审批提示的形式出现。

状态 / 已知缺口

- 仅支持一次性审批:harness 审批接缝不携带工具参数,
也没有 allow-always 词汇表,因此目前还没有按命令的允许列表。
- 计划审查(/plan → exit_plan_mode)通过通用
- 问题流——计划 markdown 会作为问题的详情打印出来——而不是一个专门的 diff 风格视图。
- Token 增量是未批处理写入的;高流量流可能需要进行合并。
- 配置文件中任何向 stdout 记录日志的兄弟插件都会覆盖 REPL。由机器级 ~/.dsh/cordis.patch.yml 插入的行无法从配置文件补丁中覆盖(全局用户层在其之上应用),因此请在全局文件本身中让啰嗦的 MCP 代理静默——例如将命令包装为 sh -c 'exec npx … 2>>"$HOME/.dsh/mcp-.log"'。
- ctx.commands.execute 在已安装的 0.1.1-rc.2(agent, line, images, signal)与已发布的 rc.6 类型(agent, line, signal)之间存在签名漂移;运行器根据参数个数进行分派。

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

同作者(ghbhiee)的其他插件

💬 加入 DPharness 群聊

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

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