前言¶
在 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)。
核心功能(资料已核实部分)¶
- 在 TUI profile 中注册后端
dsh-go,与默认通道一并出现在/kernel选择器中。 - 按 DSH-GO 运行时约定发起连接:一次性
GET /connect?token=、WebSocketWS /ws,以及POST /api/<method>。 - 通过环境变量配置 home、
dshd路径、审批策略与模型覆盖,并在启动时校验非法策略值。 - 随包提供 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/...) |
典型用法小结¶
- 用
dsh plugin --profile dsh-tui add -w dsh-tui2go把 bundle 写入当前 TUI profile。 - 本地启动
dshd serve,确认控制台出现带url与token的ready行。 - 配置
DSH_GO_HOME(以及按需的DSH_GO_DSHD、DSH_GO_POLICY、DSH_GO_MODEL)。 - 执行
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。