前言¶
DeepSeek Harness(DSH)本身已经能管理 workspace、跑 agent 会话、读写文件和执行命令。若你同时在用 Claude Code、Codex、另一个 DSH 实例,或想在 CI 里用脚本驱动同一套 harness,常见做法是再写一层胶水:单独封装 API、或在本机重复实现沙箱与权限逻辑。
dsh-as-mcp 走另一条路:在 DSH 宿主进程内部挂一个 MCP 端点,对外暴露与 harness 一致的能力。通过 MCP 创建的会话就是 DSH 界面里可见的真实会话,跑在同一沙箱、同一权限策略下,agent 侧没有「再实现一遍 DSH」。
下面介绍插件定位、工具能力、安装接入方式,以及分发 token 前需要了解的安全边界。
这是什么¶
- 名称:dsh-as-mcp(npm 包名与插件 id 相同)
- 维护者:xiseliuli
- 分类:工作流(社区目录 SkillHub)
- 源码:github.com/xiseliuli/dsh-as-mcp(MIT 许可证;package.json 当前版本 0.1.5)
- 一句话:把正在运行的 DSH 实例暴露为 MCP server,供任意 MCP 客户端创建工作区、开 session、下发编码任务、读写文件、执行 shell。
端点跑在宿主进程内,经插件注册的 MCP 工具调用 harness 自带的 workspace、session、fs、shell 等服务,而不是平行再造一套 agent 运行时。
核心功能¶
传输与鉴权¶
- 客户端经 Streamable HTTP 或 stdio(随包提供的
dsh-as-mcp桥接)连接。 - 每个请求需 Bearer token,解析顺序为:插件配置
auth.token→$DSH_HOME/dsh-as-mcp/token→ 首次运行自动生成并写入(权限0600)。 - 默认 HTTP 端点:
http://127.0.0.1:8790/mcp;无法设 Header 时可用?token=,文档建议优先用 Header,避免凭证进 shell 历史或代理日志。
MCP 工具一览¶
| 工具 | 作用 |
|---|---|
dsh_info |
端点、token 来源、已启用的工具组、当前 profile 可用的 harness 服务 |
workspace_create / workspace_list |
注册或列出工作区 |
session_create / session_list / session_messages / session_cancel |
创建、列举、读记录、取消 DSH agent 会话 |
session_prompt |
向会话下发任务;默认等待本轮结束并返回回复与 agent 调用的工具 |
file_read / file_write / file_list |
经 DSH 文件系统服务读写、列目录 |
shell_run |
经 DSH shell 服务执行命令 |
dsh_tool_list / dsh_tool_call |
在指定 sessionId 下列举或调用 DSH agent 工具白名单内的工具 |
接入后应先调用 dsh_info,以区分「profile 未挂载某服务」与「命令执行失败」等情况。
典型编码链路¶
README 给出的顺序是:建工作区 → 建会话 → 用自然语言任务驱动 agent:
workspace_create { path: "/Users/me/project" }
-> session_create { workspaceId: "..." }
-> session_prompt { sessionId: "...", prompt: "给 CLI 加一个 --verbose 开关,并补一个测试。" }
session_prompt:让 DSH agent 自行规划、改文件、调内置工具(含子 agent)。file_*/shell_run:调用方直接操作,不经过 agent 推理。dsh_tool_call:在已有会话上直接跑 harness 白名单内的 agent 工具;须先dsh_tool_list,且必须带sessionId。
tools 配置项可以关闭某一组工具的暴露,但文档强调:这收窄的是「客户端能发现什么」,不是操作系统级隔离(见下文「适用场景与注意」)。
安装与启用¶
DSH 通过 profile 的 bundle 机制加载插件;dsh plugin add 会写入 dsh.profile.bundles,并由包内 cordis.patch.yml 提供默认插件行。安装后需重启 DSH——bundle patch 在启动时读取,不支持热重载。
从 npm(推荐)¶
dsh plugin --profile <名称> add dsh-as-mcp
在 DSH 源码 checkout 内等价于:
pnpm dsh plugin --profile <名称> add dsh-as-mcp
从 GitHub¶
dsh plugin --profile <名称> add github:xiseliuli/dsh-as-mcp
Git 依赖拉的是源码,需执行包的 prepare(tsdown && node scripts/build-client.mjs)。pnpm ≥10 可能因未放行构建脚本报 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED;按报错中的精确 git spec,在 ~/.dsh/profiles/<名称>/pnpm-workspace.yaml 的 allowBuilds 里放行后再重试 add,并建议 pin 到具体 commit。细节见仓库 README「安装」一节。
从本地 tarball¶
pnpm pack
dsh plugin --profile <名称> add /绝对路径/dsh-as-mcp-<版本>.tgz
确认已加载¶
dsh --profile <名称> --dump-config | grep -A 30 '# == dsh-as-mcp'
环境要求(package.json):Node ^22.19.0 || >=24.0.0;Harness peer @deepseek-ai/dsh ≥ 0.1.5-rc.1。
DSH Desktop 的 desktop profile 不能直接用 CLI dsh plugin add,需按 README「装进 DSH Desktop」手动 pnpm add tarball 并编辑 cordis.patch.yml,且避免与 dsh.profile.bundles 重复插入同 id 插件行。
典型用法:连接 MCP 客户端¶
HTTP 客户端¶
在 MCP 配置里指向本地端点并带上 token(设置面板的「复制」会生成已填 token 的片段):
{
"mcpServers": {
"dsh": {
"type": "http",
"url": "http://127.0.0.1:8790/mcp",
"headers": { "Authorization": "Bearer <token>" }
}
}
}
仅支持 stdio 的客户端¶
{
"mcpServers": {
"dsh": {
"command": "npx",
"args": ["-y", "dsh-as-mcp"],
"env": { "DSH_AS_MCP_TOKEN": "<token>" }
}
}
}
本地可执行 dsh-as-mcp --help 查看桥接将使用的端点与 token 状态。
冒烟验证¶
安装目录下提供 scripts/smoke.mjs:握手、tools/list、dsh_info、workspace_list;成功时输出 OK。加 --prompt "..." 可跑完整链路(临时工作区 → 会话 → agent 任务)。
适用场景与注意¶
适合谁
- 已在本机或内网跑 DSH,希望 Claude Code、Codex、另一个 agent、CI 脚本通过 MCP 标准 驱动同一 harness。
- 需要远程编排「真实 DSH 会话」(UI 可见、审计与权限与手工操作一致),而不是在外部进程里模拟 coding agent。
安装与信任
- 插件以 当前 DSH 进程的用户权限 运行;MCP 侧的动作最终走 harness 的 fs、shell、session 服务。
- 文档将 bearer token 类比为 SSH 私钥:token 即安全边界,默认监听
127.0.0.1。持有 token 的调用方可通过file_*、shell_run触及 DSH 进程能触及的路径;工作区主要约束 agent 的起点,并不围住这些直接工具。 - 桥是 实例级 的:
session_list/session_messages可看到本实例内其它会话(含你在 UI 里手工开的对话),分发 token 前需评估隐私与信任范围。 tools.shell: false等开关不能替代独立账号或 OS 级沙箱;若调用方不可信,应单独实例、非特权用户,并在安装前阅读源码与 MIT 许可证。
审批策略
approval.policy: inherit(默认):无浏览器接入时,需人工审批的工具对 agent 失败关闭。approval.policy: allow:对本插件创建的会话自动批准审批请求,便于无人值守任务,但扩大 agent 可执行范围。
社区插件目录 SkillHub 与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,本包亦标注 dsh-plugin topic 便于发现。
结尾¶
dsh-as-mcp 把 DSH 从「只能在本机 UI 或 CLI 里用」扩展成 标准 MCP 后端:外部 agent 仍操作同一套 workspace、session 与沙箱,无需重复实现 harness。按 profile 安装、重启、配置 token 与客户端后,用 dsh_info 核对服务与工具组,再按 workspace_create → session_create → session_prompt 即可复现 README 中的编码流程。