前言¶
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 倉庫。