DeepSeek Harness 插件

dsh-workspace-mcp

DSH 插件: 按 workspace(session cwd) 自动加载/卸载 MCP server, 工具注册到 agent scope(英文原文)

跳到安装方式

来源信息

GitHub 仓库
Momojie-S/dsh-workspace-mcp
最近更新
2026年8月16日
分类
工具与能力
GitHub stars
4
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/Momojie-S/dsh-workspace-mcp
插件名:dsh-workspace-mcp
作者:Momojie-S

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器3 个文件
README.md来源说明 · 只读预览

@momojie-s/dsh-workspace-mcp

DSH 插件:按 workspace(session cwd) 自动加载/卸载 MCP server——每个项目自己的 .dsh/mcp.servers.yml 只在自己的会话生效,MCP 工具注册到 agent scope,随 agent 生灭自动回收,不同项目的 MCP 互不干扰。

环境要求

  • DSH >= 0.1.0-rc.6(已验证至 0.1.1-rc.2

用法

项目根放 .dsh/mcp.servers.yml

servers:
  my-server:
    transport: stdio
    command: npx
    args: ["-y", "some-mcp-server@latest"]
    env: {}
  remote:
    transport: streamable-http
    url: https://example.com/mcp
    headers:
      Authorization: "Bearer <token>"

字段与 @deepseek-ai/dsh-mcp-client 对齐(transport / command / args / env / url / headers / toolCallTimeoutMs / reconnect)。

  • agent 创建即连接注册(agent/created),首个模型请求就含这些工具;headless "create 后立刻发消息" 的竞速场景第 1 步可能没有,第 2 步必有
  • 断线自动重连(移植官方 dsh-mcp-client 的 supervisor):启动失败与中途断线均按指数退避重连并重新注册工具;重连期间旧工具保持注册(调用会失败),server 恢复后自动换新。stdio = 重新 spawn,http = 重新握手
  • 会话失效自愈(≥0.2.1,官方 client 尚无此能力):streamable-http server 重启/会话驱逐后的 Session not found 类错误自动判定断线并换代重连,无需手动"强制重连"
  • stdio 环境继承(≥0.3.0,与全局 MCP 一致):子进程拿到 scrubbed 父环境(剥 KEY|PASSWORD|SECRET|TOKEN 命中名与 DSH_* 前缀名)+ yml env 覆盖层——需要父环境变量(如 PYTHONPATH)的 server 直接工作;yml env 是覆盖层不是完整环境
  • server 声明受支持的 outputSchema 时进入 structuredContent 输出契约;非法工具列表 / 注册名冲突整代拒绝/回滚(≥0.3.0,官方对齐)
  • server 发 toolListChanged 通知时自动重同步工具列表
  • 改配置文件由 chokidar 监听,保存即重载;无该文件的目录不加载任何 MCP

安装

本插件是组合包dsh.bundle),用 dsh plugin 安装进 profile,自动追加配置层,无需手编 patch:

# GitHub(私仓需 git 凭据;pnpm ≥10 首次 add 会提示授权构建,按提示把包键
# 写进 ~/.dsh/profiles/web/pnpm-workspace.yaml 的 allowBuilds 后重新 add)
dsh plugin --profile web add github:Momojie-S/dsh-workspace-mcp

# 或 tarball(pnpm pack 产物,无授权要求)
dsh plugin --profile web add momojie-s-dsh-workspace-mcp-0.2.0.tgz

验证层就位后重启 DSH:

dsh web --dump-config | Select-String workspace-mcp   # 应看到对应层

<details><summary>开发模式:源码直连(改代码 → 重启验证)</summary>

编译 npm install && npm run build,profile 的 cordis.patch.yml 手动加行(namefile:/// URL 指向 lib/index.js):

- insert:
    - id: workspace-mcp
      name: file:///D:/code/workspace/deepseek-harness-101/plugins/dsh-workspace-mcp/lib/index.js
      config:
        configFile: '.dsh/mcp.servers.yml'
        verbose: true

</details>

配置

插件级(patch config 字段):

字段默认值说明
configFile.dsh/mcp.servers.yml相对 workspace 根的配置文件路径
verbosefalse输出连接/注册详细日志,排查用
reconnect.enabledtrue断线/启动失败是否自动重连
reconnect.initialDelayMs500首次重连延迟,此后指数翻倍
reconnect.maxDelayMs30000退避封顶;连接存活超此值则重置尝试预算(偶发崩的能无限恢复,crash-loop 的被掐掉)
reconnect.maxAttempts10一次断线周期内最大连续失败次数,耗尽后卸载该 server 全部工具;改配置文件或重启恢复

per-server 覆盖(.dsh/mcp.servers.yml,同名项优先于插件级):

servers:
  flaky:
    transport: stdio
    command: npx
    args: ["-y", "some-mcp"]
    reconnect:
      enabled: true
      initialDelayMs: 1000
      maxAttempts: 5

验证

项目根放 .dsh/mcp.servers.yml 配一个测试 server(如 MCP 官方 server-everything),在会话里让 agent 列工具:

mcp__<serverName>__<toolName>

工具出现即生效;切到无配置的目录,这些工具不再出现,即隔离生效。

断线重连的可执行验证(不经 DSH host):

npm test   # 杀 server 子进程 → 自动重连恢复;启动失败 → 退避重试 → 放弃卸载;Session not found → 换代重连;官方对齐五项(env 继承/输出契约等)

---

设计文档见 [docs/design/overview.md](docs/design/overview.md);MCP 配置详解与踩坑见合集仓库 docs/usage/mcp.md