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 倉庫

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

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

小夜