dsh-as-mcp-server:将 DSH 暴露为 MCP 服务器

前言

在同一个工作区运行多个智能体时,它们经常会互相覆盖彼此的变更。为了让多个客户端共享同一套协议,了解对方正在思考什么、在操作哪些文件、谁拥有「发言权」,以及如何在当前回合中插入干预,需要一个桥接层。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 仓库。

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

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

Xiaoye