前言¶
在同一个工作区运行多个智能体时,它们经常会互相覆盖彼此的变更。为了让多个客户端共享同一套协议,了解对方正在思考什么、在操作哪些文件、谁拥有「发言权」,以及如何在当前回合中插入干预,需要一个桥接层。dsh-as-mcp-server 的作用就是将 DSH 暴露为一个 MCP 服务器,让任何支持 Streamable HTTP 的 MCP 客户端都能实时观察并干预 DSH 的行为。
这是什么¶
dsh-as-mcp-server 是由 qian-dsh 维护的一个 DSH 插件,分类属于工作流。它通过 Streamable HTTP 协议把 DSH 的思考过程、工具调用、文件变更意图、锁定状态和审核请求等信息推送给远程客户端,并提供一组 MCP 工具让客户端获取状态、设置意图、获取/释放锁定、注入警报以及请求审核。
核心功能¶
插件提供以下能力(能力 → 机制):
- 看到智能体思考:通过 LLM 流式增量将思考过程推送到
notifications/dsh/thinking(节流 200 ms)。 - 看到它操作的内容:工具调用推送到
notifications/dsh/tool;write/edit目标推送到notifications/dsh/file。 - 共享意图:通过
dsh_set_intent/dsh_get_intent,并在每轮对话中自动注入到 DSH 的系统提示中。 - 同一时间只有一个写入者:提供
dsh_lock_acquire/dsh_lock_release锁机制;锁持有期间,DSH 的write/edit/git工具会被物理拒绝。 - 在当前回合中插入警报:通过
dsh_inject_alert注入到agent/pre-step,如果当前步骤无法注入,警报会进入队列并在下一个步骤尝试。 - 委托审核:通过
dsh_review_request生成一个磁盘上的待办事项(inbox/<id>.json),审核结果写回inbox/done/。
安装与启用¶
使用官方安装命令添加插件:
dsh plugin --profile web add dsh-as-mcp-server
安装后,在 MCP 客户端中添加该桥接(任何支持 Streamable HTTP 的客户端都可以,如 WorkBuddy、Claude Desktop 的 MCP-HTTP 适配器、Cursor、Cline 等):
{
"mcpServers": {
"dsh-bridge": {
"type": "streamableHttp",
"url": "http://127.0.0.1:51630/mcp",
"timeout": 60000
}
}
}
重启 DSH 后,日志中应显示 [dsh-as-mcp-server] MCP server 就绪: http://127.0.0.1:51630/mcp。
典型用法¶
不安装即可进行自测。在终端 A 中启动演示服务器:
node dsh/mcp.js 51999
在终端 B 中发起握手,测试所有 8 个工具、锁定和 SSE 流:
node dsh/mcp-test.js http://127.0.0.1:51999/mcp
预期结果为 13 次检查全部通过(全部通过 ✅)。
此外,插件包含一个无需启动服务器的单元回归套件:
node dsh/bridge-regression.test.mjs
配置¶
配置文件位于 ~/.dsh-mcp-bridge/config.json,所有字段均为可选:
{
"port": 51630,
"host": "127.0.0.1",
"token": "",
"lockTtlMs": 300000,
"denyTools": ["write", "edit", "git"],
"alertInjection": true,
"inboxRoot": ""
}
默认情况下,inboxRoot 为 ~/.dsh-mcp-bridge/inbox。
适用场景与注意¶
- 适合需要在多个 MCP 客户端之间共享 DSH 状态、意图和审核流程的场景。
- 插件以当前 DSH 进程的权限运行,安装前应检查源码与许可证(MIT)。
- 默认仅绑定到 127.0.0.1,不建议暴露端口。
- 锁机制仅在 DSH 侧强制,远程客户端需通过约定遵守锁的语义。
- 警报注入为尽力而为,如果当前步骤无法注入,警报会进入队列并在下一个步骤尝试。
结尾¶
dsh-as-mcp-server 为多客户端协作提供了一套统一的观察与干预协议。如果你需要在 DSH 上运行多个智能体或需要外部系统实时介入,这个插件提供了一套可复用的能力。更多细节可参考插件目录页与 GitHub 仓库。