让外部客户端实时观察并干预智能体工作
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/qian-dsh/dsh-as-mcp-server.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 10 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 8 处,展示前 8 条)
- 读取本地文件dsh/index.js:43
const saved = JSON.parse(readFileSync(STORE_PATH, 'utf8').replace(/^ FEFF/, '')) - 写入本地文件dsh/index.js:78
const ensureInbox = () => mkdirSync(inboxRoot, { recursive: true }) - 读取本地文件dsh/index.js:87
if (existsSync(path)) return - 写入本地文件dsh/index.js:88
writeFileSync(path, `${JSON.stringify({ - 写入本地文件dsh/index.js:114
writeFileSync(join(inboxRoot, `${id}.json`), `${JSON.stringify(manifest, null, 2)}\n`) - 读取本地文件dsh/mcp.js:38
const PKG_VERSION = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf8')).version - 发起网络请求dsh/mcp-test.js:17
const res = await fetch(base, { - 发起网络请求dsh/mcp-test.js:42
const res = await fetch(base, {
扫描于 2026/11/1(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
把 DSH 暴露成 MCP 服务器:流式推送思考、工具、文件通知,共享意图,持有地板锁期间拒绝 DSH 写入,回合中注入提醒,并委派评审。
README
由 DeepSeek 最新模型翻译生成dsh-as-mcp-server
把 DSH 变成一个 MCP server,让任何 MCP 客户端都能看见 agent 正在做什么,并在过程中干预它。
两个 agent 共用一份工作区,通常的结局是互相覆盖。这个桥给它们一套共享协议:对方在想什么、正在动哪个文件、谁占着工作区,以及怎么打断。
连上来之后对方能拿到什么
| 能力 | 机制 |
| 看见 agent 在想什么 | LLM 流式增量 → notifications/dsh/thinking(200 ms 节流) |
| 看见它在动什么 | 工具调用 → notifications/dsh/tool;write/edit 目标 → notifications/dsh/file |
| 共享意图 | dsh_set_intent / dsh_get_intent,每轮自动注入 DSH 的 system prompt |
| 同一时间只许一个写 | dsh_lock_acquire / dsh_lock_release 地板锁——持锁期间 DSH 的 write/edit/git 被物理拒绝 |
| 打断当前这一轮 | dsh_inject_alert → 经 agent/pre-step 插进正在执行的步骤 |
展开完整文档(README 剩余 1 节)
dsh-as-mcp-server
把 DSH 变成一个 MCP server,让任何 MCP 客户端都能看见 agent 正在做什么,并在过程中干预它。
两个 agent 共用一份工作区,通常的结局是互相覆盖。这个桥给它们一套共享协议:对方在想什么、正在动哪个文件、谁占着工作区,以及怎么打断。
连上来之后对方能拿到什么
| 能力 | 机制 |
| 看见 agent 在想什么 | LLM 流式增量 → notifications/dsh/thinking(200 ms 节流) |
| 看见它在动什么 | 工具调用 → notifications/dsh/tool;write/edit 目标 → notifications/dsh/file |
| 共享意图 | dsh_set_intent / dsh_get_intent,每轮自动注入 DSH 的 system prompt |
| 同一时间只许一个写 | dsh_lock_acquire / dsh_lock_release 地板锁——持锁期间 DSH 的 write/edit/git 被物理拒绝 |
| 打断当前这一轮 | dsh_inject_alert → 经 agent/pre-step 插进正在执行的步骤 |
| 委托一次审查 | dsh_review_request → 落盘到收件箱(inbox/<id>.json),结果回写 inbox/done/ |
8 个 MCP 工具
dsh_get_status · dsh_get_intent · dsh_set_intent · dsh_lock_acquire · dsh_lock_release · dsh_lock_status · dsh_inject_alert · dsh_review_request
通知事件(server → client,SSE)
notifications/dsh/status · thinking · tool · file · intent · lock · alert-queued · review
安装
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
日志前缀是 [dsh-mcp-bridge](内部标识,历史原因),和包名不一致,但确实是这一行。
不装也能先自测
终端 A —— 起一个演示服务(51999 端口)
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 # 13 通过 / 0 失败
配置
~/.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。
诚实边界
- 默认只监听 loopback。 绑 127.0.0.1;支持 token 但默认为空。不要把这个端口暴露到公网。
- 锁只在 DSH 一侧被强制执行。 持锁期间,DSH 的 write/edit/git 在 tools/pre-execute 被拒绝。远端客户端是靠约定守锁的——这是一个协作原语,不是防恶意对手的安全边界。
- 提醒注入是尽力而为。 走 agent/pre-step。如果当轮插不进去,提醒留在队列里,下一轮必达。
- 每个客户端一套 Server + transport。 这是 MCP SDK 的限制;多个客户端(比如一个记录器加一个 agent)各拿各的。重连必须换新 sessionId(旧 id 会 400 死循环)。
- 思维流只转发文本增量,工具参数截断到前 120 字符——这是可见性通道,不是完整对话录制。
许可
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
qian-dsh/dsh-as-mcp-server
让外部客户端实时观察并干预智能体工作
相关插件 · 开发 / 工程
隐私简历生成器reactive-resume/reactive-resume
Reactive Resume 已迁至 GitHub 上的…
★ 45,125已汉化MCP
71.7
AI 架构文档生成器sopaco/deepwiki-rs
🚀 Litho 已进化为 Terrain —— 给你的 AI 智能体一张会呼吸的代码库地图。
★ 3,157已汉化DSH
70.8
长时任务执行闭环AMAP-ML/LongHorizon-Harness
面向 Computer-Use Agent 的 Loop Engineering
★ 1,764已汉化DSH
70.5
AI 编程纪律方法包GanyuanRan/Aegis
让 AI 编程 agent 变得可信:少返工、更安全、说“完成”前先给证据。
★ 1,384已汉化DSH
69.6
多代理编排运行时Enderfga/claw-orchestrator
面向编程智能体的运行时。把 Claude Code、Codex、Antigravity、Grok…
★ 586已汉化MCP
69.4
记忆进化插件csyangwen/dsh-memory-evolve
dsh-memory-evolve 使用场景指南
★ 461已汉化DSH
67.9