dsh-grok-tui:用 grok-build 的 TUI 驱动 DeepSeek Harness

前言

DeepSeek Harness(以下简称 dsh)是 DeepSeek 开源的 Agent 运行时,核心理念是「一切皆插件」:模型、工具、会话、沙箱、调度,以及界面,都可以在配置层替换,而不必改 Harness 源码。官方提供的入口是 Web UI,一条 npx @deepseek-ai/dsh web 就能起来。

终端里写代码的人,往往已经习惯全屏 TUI:滚动回放、快捷键、权限弹窗、会话就在当前工作目录。xAI / SpaceXAI 的 grok-build 正是这一类界面。问题是:想用 grok 那套终端交互,又不想把提示词、工具和会话存储换成另一套内核。

社区插件 dsh-grok-tui 做的就是这件事。它把 grok-build 的 TUI 接到 dsh 上:界面是 grok 的,内核仍是 dsh。本文依据插件目录页、GitHub README 与仓库文档交叉核实后写成。文中提到的 DeepSeek Harness 插件库 是独立社区站点,与 DeepSeek / 幻方没有官方从属关系,不要把它当成官方应用商店。

这是什么

dsh-grok-tui 是一款界面增强插件,由 chen-001 维护,仓库地址是 chen-001/dsh-grok-tui。目录页的定位很短:通过 grok-build 的 TUI 使用 dsh。

仓库 README 把边界写得更清楚:只借用 grok 的前端;提示词、工具、模型路由、会话持久化仍由 dsh 提供。架构文档补充了一点:grok-shell 那一套 Agent 运行时并不会真正跑起来——pager 二进制在 leader 模式下连到本插件提供的服务,而不是自己拉起一套 agent。

截至本文核实(2026-08-17):

  • 许可证:MIT
  • 主要语言:TypeScript
  • npm 包版本:0.3.8(以仓库 package.json 为准)
  • GitHub 星标:10
  • 运行环境:macOS / Linux;Node.js 要求 ^22.19.0 || >=24.0.0
  • 平台限制:leader 传输走 Unix socket,Windows named pipe 尚未实现

它解决的痛点很具体:已经在用 dsh 的人,不必为了终端交互另起一套 Harness;已经习惯 grok TUI 的人,可以把会话、工具和模型路由留在 dsh 里。

核心功能

根据目录页、README 和 docs/ARCHITECTURE.md,当前已核实的能力如下。

1、前端与内核分离。 插件在 Unix socket 上实现 grok 的 leader 协议,再把 Agent Client Protocol(ACP)方法映射到 dsh 的 ctx.agents / ctx.llm 等服务。系统提示词组装、工具注册、审批、沙箱、会话落盘都还在 dsh 一侧。

2、挂进官方 dsh web 推荐用法是先启动官方 host,再开 TUI。grok-dsh setup 会把 grok-server 写入 ~/.dsh/profiles/web/cordis.patch.yml,并把插件软链进该 profile 的 node_modules,这样 npx @deepseek-ai/dsh web 会带上 leader socket。兼容性文档写明:自 0.2.0 起,推荐把插件跑在官方 host 进程里,而不是长期依赖独立后端。

3、与 Web UI 共用会话。 后端写入同一份会话存储(默认 ~/.dsh/sessions)。TUI 里 /resume 能看到 Web 侧的会话,TUI 里开的会话也会出现在 Web 侧。工作区分组会按会话的工作目录去对齐 Web 的 workspace 注册表。不要用 Web 和 TUI 同时驱动同一个会话,两边的追加会交错;文档说明服务端在 resume 时会尝试自愈交错日志,但日常仍应避免对打。

4、用量指标,不必自己编译 grok。 官方 grok 二进制就能在状态栏显示 token 用量(例如 18K/1.0M 的 context bar)。更完整的指标——缓存命中率、TTFT、TPS、累计输入/输出 token——在 herdr 的 pane 或 tmux 里会自动出现。README 明确写了:这两处不需要编译 grok 源码。herdr 侧栏配置由安装过程自动写入,重启 herdr 或 reload config 后生效。

5、终端内可操作的控制。 架构文档记录了 pager 侧已接通的操作:Ctrl+M/model 切换模型(列表来自 dsh 的 provider 目录);权限对话框用 Enter 允许一次、Esc 拒绝;/resume 打开会话选择器;Ctrl+T 打开 todo 面板;/exit 退出 TUI。斜杠命令以 grok pager 内置的为准,插件不会把 dsh 的 host 命令目录再广告一遍。

安装与启用

先满足两个前提:本机已安装 dsh,以及 grok TUI 二进制。grok 的安装命令来自 grok-build 仓库,macOS / Linux 为:

curl -fsSL https://x.ai/cli/install.sh | bash

dsh 可用官方文档中的快速入口:

npx @deepseek-ai/dsh web

社区目录页给出的安装命令如下,在 DeepSeek Harness 终端中运行即可:

dsh plugin add github:chen-001/dsh-grok-tui

如需可复现安装,按目录页说明固定 commit 哈希:

dsh plugin add github:chen-001/dsh-grok-tui#commit

#commit 换成实际的 commit SHA。目录页同时提醒:插件以当前 dsh 进程的权限运行,安装时可能执行代码,装之前应检查源码仓库和许可证。

只执行上面的 dsh plugin add,还不等于已经有一条可启动的 grok-dsh 命令。仓库 README 另外给出了两种启用方式,安装后的行为一致(命令、herdr 侧栏自动配置、用量面板)。

方式 A:npm 发布版

npm install -g dsh-grok-tui
grok-dsh setup
npx @deepseek-ai/dsh web
grok-dsh

各步含义如下:

  • npm install -g dsh-grok-tui:装全局包,提供 grok-dsh 启动器。
  • grok-dsh setup:显式把 bridge 挂进 dsh 的 web profile。README 强调全局安装不会静默改写 dsh 配置,需要你自己跑这一步;它是幂等的,可重复执行。
  • npx @deepseek-ai/dsh web:启动官方 host。若 host 已经在跑,重装后需要重启一次,leader socket 才会带上。
  • grok-dsh:打开 TUI,直连正在运行的 dsh web。

方式 B:git 完整安装

git clone https://github.com/chen-001/dsh-grok-tui.git
cd dsh-grok-tui && sh install.sh

这条安装脚本会自动完成同样的 bridge 挂接,再构建并把 grok-dsh 写入 PATH。

典型用法

推荐顺序:先起官方 host,再开 TUI。

dsh web
grok-dsh

grok-dsh 检测到正在运行的 dsh web 就直连;否则会在本窗口拉起独立后端。配套子命令如下:

grok-dsh stop      # 停止所有独立后端
grok-dsh status    # 查看 host 桥 / 独立后端状态与 grok 版本
grok-dsh restart   # 重启当前窗口的独立后端

在哪个目录执行 grok-dsh,会话的工作目录就在哪个目录。独立后端与 dsh web 不要同时跑,两者写同一份会话存储。

架构文档还记录了几个环境变量,适合按项目覆盖,而不是改全局默认:

  • DSH_GROK_MODEL:初始模型,文档默认值是 deepseek-v4-pro,较轻量的示例是 deepseek-v4-flash
  • DSH_GROK_EFFORT:推理力度,文档默认 max,可选 off|high|max
  • GROK_BIN:指定 grok / pager 二进制路径

在 herdr 的 pane 里跑 grok-dsh 时,左侧 agents 列表的 grok 条目下会实时显示:

字段 含义
dsh_cache 缓存命中率
dsh_ttft 平均首 token 延迟
dsh_tps 平均输出速率
dsh_in / dsh_out 累计输入 / 输出 token

在 tmux 里运行则会在 TUI 下方自动开一个用量面板,按 q 关闭。面板内容包括 cache hit、input / output / total tokens、api calls、tool time。这些数字来自插件文档中的示例界面,用来说明字段含义,不是某次实测结果。

适用场景与注意事项

比较适合这几类用法:已经把 dsh 当主 Harness、但更想在终端里干活;希望 Web UI 和 TUI 看同一份会话;需要在 herdr 或 tmux 里盯缓存命中、TTFT、TPS。如果主要在浏览器里用 dsh,或者需要 Windows 原生管道,这个插件对不上。

使用前需要把下面几条当作硬约束,而不是可选建议。

1、权限与来源。 插件以当前 dsh 进程的权限运行,安装时可能执行代码。装之前阅读仓库源码和 MIT 许可证。grok-dsh setup / install.sh 会改 ~/.dsh/profiles/web/cordis.patch.yml 并软链插件,这是显式操作,但改的是你本机的 dsh 配置。

2、平台。 README 写明支持 macOS / Linux。架构文档写明 Windows named pipe 未实现,leader 传输目前只有 Unix socket。

3、不要双开同一存储。 独立后端不要和 dsh web 同时跑;也不要用 Web 和 TUI 同时驱动同一个会话。

4、这是薄适配层。 插件连接的是两套各自迭代的项目:grok-build 的编译客户端,以及仍处于开发者预览的 dsh。leader 协议版本不匹配会在连接时直接失败;部分 grok 私有扩展字段变化时,更多是界面降级(缺状态栏、缺 todo),而不是把会话打挂。升级 grok 或 dsh 之后,应按仓库 COMPATIBILITY.md 再验一遍。

5、leader socket 没有额外鉴权。 架构文档写明:能连到该 socket 的本地进程就能驱动 Harness,防护面就是 socket 路径本身。这和 grok pager 自己的 leader 姿态一致,但在共享机器上需要留意。

6、归属。 本插件是社区项目,不是 DeepSeek 或 xAI 的官方产品。grok-build 本身是 Apache-2.0;dsh-grok-tui 是 MIT。目录页收录不等于官方背书。

小结

dsh-grok-tui 没有另做一套终端 Agent,而是把 grok-build 的 TUI 接到 dsh 现成的提示词、工具、路由和会话上。对已经在用 DeepSeek Harness、又习惯 grok 全屏终端的人,这条路径最短。

目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-grok-tui/

GitHub:https://github.com/chen-001/dsh-grok-tui

DeepSeek Harness:https://github.com/deepseek-ai/deepseek-harness

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜