dsh-tui2go:让 dsh-tui 通过 AgentBackend 连接 DSH-GO

前言

在 DSH 生态里,终端侧常用 dsh-tui 作为交互前端,而 Go 实现的 DSH-GO 主机(dshd)则负责会话与工具执行。若要在 TUI 的 /kernel 后端列表里直接选用 Go 主机,通常需要一条正式的 AgentBackend 装配链,而不是 Fork TUI 或在 Go 侧再挂一层插件。

dsh-tui2go(维护者 MYCF711)是面向 dsh-tui 0.19 的第三方 AgentBackend bundle:把声明、惰性 backend 处理逻辑和连接池钩子打进 TUI profile,在 picker 中增加名为 dsh-go 的后端,由 TUI 按既有组装流程与 dshd 通信。下面介绍其定位、安装步骤与运行时要遵守的约定。

这是什么

  • 名称:dsh-tui2go(npm 包名同插件 id)
  • 仓库:github.com/MYCF711/dsh-tui2go
  • 许可证:MIT
  • 当前公开版本:0.1.0(README 中称首个公开发布的 bundle)

该包不是 TUI 分叉,也不是 Go 主机插件;它只交付 bundle 侧能力,完整装配链仍在 TUI 内完成。因 dsh-go-host 未发布到 npm,包内故意不写 spec.install 配方,需要自行安装 dshd 并通过环境变量指向可执行文件。

版本兼容

dsh-tui2go DSH-GO host dsh-tui
0.1.x 0.2.2-go.* ^0.19.0

TUI 0.18 不在支持范围内。运行时需要 Node ^22.19 或 >=24(见 package.json 的 engines)。

核心功能(资料已核实部分)

  1. 在 TUI profile 中注册后端 dsh-go,与默认通道一并出现在 /kernel 选择器中。
  2. 按 DSH-GO 运行时约定发起连接:一次性 GET /connect?token=、WebSocket WS /ws,以及 POST /api/<method>。
  3. 通过环境变量配置 home、dshd 路径、审批策略与模型覆盖,并在启动时校验非法策略值。
  4. 随包提供 workspace 相关 TypeScript 端口与可复现的临时 profile overlay(fixture 测试);不对未在主机侧实现的 workspace 能力做隐藏或伪造(见 README「Workspace capability」一节)。

审批策略由主机决定:未设置 DSH_GO_POLICY 时,backend 不向 dshd 传递 --policy,因而采用 dshd serve 自身默认(allow)。显式设置为 deny、ask 或 allow 会原样透传;其他非空值会拒绝启动。

安装与启用

安装命令须与 README 一致,分三步完成。

# 1) 将 bundle 装入 dsh-tui 所用的 profile
dsh plugin --profile dsh-tui add -w dsh-tui2go

# 2) 构建/运行 DSH-GO,记下 ready 行中的 url 与 token
dshd serve --home <home> --addr 127.0.0.1:0
# ready {"url":"http://127.0.0.1:<port>","token":"<token>"}

# 3) 指定 dsh-go 后端启动 TUI
dsh-tui --backend dsh-go

TUI 会在自有连接流程中读取主机 URL 与 token。独立运行模式下,可显式传入 --base <url> --token <token>。

在启用 backend 之前,请自行安装 dshd 并准备好 DSH-GO 的 home 目录;本 bundle 不会替你拉取或发布 Go 主机二进制。

运行时环境变量

变量 是否必填 含义
DSH_GO_HOME 是 DSH-GO home(会话、工具状态等)
DSH_GO_DSHD 否 dshd 路径,默认在 PATH 中查找 dshd
DSH_GO_POLICY 否 未设置则不传 --policy(主机默认 allow);deny/ask/allow 原样透传
DSH_GO_MODEL 否 模型覆盖,使用网关 fully-qualified id(group/...)

典型用法小结

  1. 用 dsh plugin --profile dsh-tui add -w dsh-tui2go 把 bundle 写入当前 TUI profile。
  2. 本地启动 dshd serve,确认控制台出现带 url 与 token 的 ready 行。
  3. 配置 DSH_GO_HOME(以及按需的 DSH_GO_DSHD、DSH_GO_POLICY、DSH_GO_MODEL)。
  4. 执行 dsh-tui --backend dsh-go;必要时在 standalone 模式下补充 --base 与 --token。

仓库中的自检流程(供贡献者或自行验证构建)包括:

npm install --ignore-scripts
npm run build
npm run typecheck
npm test
npm pack --dry-run

公开测试套件以单元级为主,不要求本地检出 TUI 0.19;与 0.19 完整装配/conformance 相关的证据未放在公开仓库中。

适用场景与注意

适合谁:已在用 dsh-tui 0.19,并打算把交互后端切到自托管的 DSH-GO(0.2.2-go.*),且愿意自行维护 dshd 安装与 home 目录的开发者。

权限与安全:插件与 TUI、后端进程以你当前用户身份运行,可访问该用户能读写的路径与环境变量。安装前应阅读 GitHub 源码 与 MIT 许可证,确认 bundle 行为符合你的部署策略。

workspace:TUI 0.19 在非 DSH 通道上对若干 workspace 动作标记为不可用;本 bundle 虽附带 workspace 端口与 overlay 测试夹具,但 DSH-GO 侧仍需实现 workspace.list/resolve/switch 等主机方法后,才能在真实 dshd 上完整演练。README 指出当前仅 workspace.init 在主机侧接线。

状态说明:0.1.0 发布时,TUI 0.19 profile 启动器可能仍受上游 workspace:* 发布问题影响(见 CHANGELOG.md);包本身可构建、打包并通过 0.19 装配检查。社区目录页(SkillHub)与 GitHub 为独立信息源,与 DeepSeek / 幻方无法官方从属关系;DSH 生态遵循「一切皆插件」,本件为社区第三方 bundle。

结尾

dsh-tui2go 把 dsh-go 后端稳妥地挂进 dsh-tui 0.19 的 AgentBackend 列表,用环境变量对接你已安装的 dshd,避免 Fork TUI 或误把它当成 Go 主机插件。查阅插件说明与版本记录可打开目录页 skillhub.cn/plugins/MYCF711/dsh-tui2go 与仓库 github.com/MYCF711/dsh-tui2go。

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

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

Xiaoye