dsh-harness-mcp-server:把 Harness 能力暴露为 MCP 服务

前言

DeepSeek Harness(DSH)自带完整的智能体运行时:工具、LLM、会话与预设。但它是一个 Cordis 应用,外部智能体无法直接调用其中的能力。

如果你已经在用 Hermes 等 MCP 客户端做编排,却希望把具体编码任务交给 Harness 执行,就需要一座桥。下面介绍的 dsh-harness-mcp-server 正是为此设计:在 Harness 进程内启动 MCP 服务,把 ctx.agentsctx.agentPresetsctx.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 仓库

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

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

小夜