前言¶
DeepSeek Harness(DSH)自带完整的智能体运行时:工具、LLM、会话与预设。但它是一个 Cordis 应用,外部智能体无法直接调用其中的能力。
如果你已经在用 Hermes 等 MCP 客户端做编排,却希望把具体编码任务交给 Harness 执行,就需要一座桥。下面介绍的 dsh-harness-mcp-server 正是为此设计:在 Harness 进程内启动 MCP 服务,把 ctx.agents、ctx.agentPresets、ctx.tools 等核心服务暴露出去,让外部「大脑」驱动 Harness 的「手臂」完成真实编码任务。
这是什么¶
dsh-harness-mcp-server 由社区维护者 chushixixin 发布,npm 包名为 @chushixixin/dsh-harness-mcp-server(当前版本 0.1.10),许可证为 MIT。项目在 SkillHub 目录中归类为「工作流」。
一句话定位:把 DeepSeek Harness 的智能体能力以 MCP 服务形式对外提供,任意 MCP 客户端(例如 Hermes)可通过 HTTP 调用 Harness 执行编码任务。
架构关系如下:
Hermes (MCP client, brain)
│ agent_run / task_inbox (HTTP)
▼
dsh-harness-mcp-server (MCP server, :8090)
│ ctx.agents.create → mount 'standard' preset
▼
Harness agent (flash) — full toolset: bash, fs, todo, web…
核心功能¶
插件在 Harness 内部启动 StreamableHTTP MCP 服务,默认监听 127.0.0.1:8090。对外提供以下工具:
| 工具 | 方向 | 用途 |
|---|---|---|
echo |
— | 验证 MCP 连通性 |
harness_list_tools |
— | 列出 Harness 已注册的工具名 |
agent_run |
客户端 → Harness | 同步运行任务并返回结构化结果 |
task_inbox |
客户端 → Harness | 将结构化任务(task + memory context + cwd)推入异步队列 |
task_result |
客户端 ← Harness | 轮询队列任务的结构化结果 |
每次任务返回的结构化结果包含会话 ID、助手文本、工具调用记录、变更说明、验证方式与遗留问题等字段,便于客户端将 context 写入任务、把 changes / verification / leftovers 持久化到记忆,形成闭环。
{
"sessionId": "...",
"assistantText": "final answer",
"toolCalls": [{ "name": "bash", "args": "..." }],
"toolResults": ["command output"],
"changes": "what was changed",
"verification": "how it was verified",
"leftovers": "open issues"
}
其他行为要点:
- 按
cwd复用 agent 会话,避免每次调用重新加载项目上下文(README 称相比一次性dsh headless约省 15–20 倍开销)。 - Bash 在
workspace-write沙箱中运行;主机需安装bubblewrap,否则写操作会被拒绝。 - 每个新 MCP 会话对应独立的
McpServer与 transport。
安装与启用¶
方式一:从 npm 安装(推荐)¶
在 Harness 工作区中安装包:
npm install @chushixixin/dsh-harness-mcp-server
随后在 Harness 工作区中引用该插件(见下方 cordis.yml 补丁)。
方式二:从源码安装¶
将仓库放到 Harness 工作区的 packages/mcp/harness-mcp-server/ 目录(pnpm workspace 匹配 packages/*/*,需两层目录):
cd /path/to/deepseek-harness
mkdir -p packages/mcp/harness-mcp-server
# 将本仓库文件复制到该目录后:
corepack pnpm install
在 tsconfig.host.json references 与 tsconfig.base.json paths 中注册插件(参见 Harness 插件文档),然后构建:
corepack pnpm exec tsc -b packages/mcp/harness-mcp-server
corepack pnpm run build:lib:host
cordis.yml 补丁¶
- insert:
- id: harness-mcp-server
name: '@chushixixin/dsh-harness-mcp-server'
config:
http: true
port: 8090
host: 127.0.0.1 # 默认仅本机; 暴露前必须加认证
# authToken: 'your-secret-token' # 可选: Bearer token 认证
# workspaceRoots: ['/workspace'] # 可选: cwd 白名单
启动 Harness¶
设置 API Key 并以补丁方式启动:
export DEEPSEEK_API_KEY=...
corepack pnpm dsh web --patch ./packages/mcp/harness-mcp-server/cordis.yml
MCP 服务监听 http://127.0.0.1:8090/mcp。将任意 MCP 客户端指向该地址即可。
典型用法¶
在 Hermes 中注册 MCP 端点¶
printf 'n\nY\n' | hermes mcp add harness_plugin --url http://127.0.0.1:8090/mcp
注册完成后,Hermes 可通过 agent_run 同步下发编码任务,或通过 task_inbox / task_result 走异步队列。
连通性检查¶
先调用 echo 确认 MCP 链路正常,再用 harness_list_tools 查看 Harness 侧可用工具,最后通过 agent_run 提交具体任务。
适用场景与注意¶
适合谁
- 已使用 Hermes 等 MCP 客户端做任务编排,需要把具体编码执行委托给 Harness。
- 需要上下文隔离:大型重构等任务若放在主客户端会撑爆上下文,可交给 Harness 独立会话处理。
- 需要并行执行多个互不相关的编码任务。
定位建议
README 建议将其作为备用工具而非日常主力:日常改代码仍直接驱动主智能体;在需要隔离上下文或并行执行时再调用本插件。
安全与权限
- 默认仅绑定
127.0.0.1。该服务暴露的是无认证的远程代码执行能力,切勿绑定到0.0.0.0或暴露到公网/局域网,除非已配置认证、TLS 与反向代理。 - 插件以当前
dsh进程权限运行,安装前应自行检查源码与 MIT 许可证。
结尾¶
dsh-harness-mcp-server 把 Harness 从 Cordis 应用「翻转为」可被外部 MCP 客户端调用的执行层,适合 Hermes + Harness 的「大脑 + 手臂」协作模式。更多说明见 SkillHub 目录页 与 GitHub 仓库。