前言¶
DeepSeek Harness(以下簡稱 dsh)把智能體能力拆成可替換的插件:模型、工具、會話、沙箱、界面都可以在配置層疊加,不必改框架源碼。官方口號是「一切皆插件」,當前仍處於開發者預覽階段,核心接口還會繼續變動。
另一邊,Multica 是一套把編碼智能體當同事來派活的平臺:本機守護進程負責調用已安裝的 CLI,看板負責任務入隊、認領、執行和回傳。官網文檔把 DeepSeek Harness 列進已支持的編碼工具,檢測命令是 dsh。但 dsh 默認面向交互式終端或 Web UI,Multica 需要的是無界面、可探測、能在 stdio 上走版本化協議的運行時。兩者中間缺一層橋。
dsh-multica-runtime 就是這層橋。它不改 DeepSeek Harness 源碼,而是以外掛插件的方式,把 dsh 接到 Multica 的運行時協議上。
這是什麼¶
dsh-multica-runtime 是一款開發與運行時類插件,由 GitHub 組織 multica-ai 維護,倉庫地址是 multica-ai/dsh-multica-runtime。包名是 @multica-ai/dsh-runtime,當前版本號爲 0.1.0-private.1,主要語言是 TypeScript。README 把它定位爲 Multica 與公開 DeepSeek Harness 之間的 out-of-tree runtime bridge:在 stdio 上暴露版本號爲 1 的 JSONL 協議,併疊加在 @deepseek-ai/dsh-base 之上。
目錄頁收錄日期是 2026-08-15,倉庫最近一次推送是 2026-08-14。GitHub 倉庫頁當前顯示 41 stars;社區目錄頁收錄時標註爲 33 stars,目錄數字是快照,文中星標以倉庫頁爲準。
它解決的問題很具體:讓 Multica 守護進程把本機的 dsh 登記成在線運行時,從而把任務派給 DeepSeek Harness 執行。倉庫明確寫了兩件事:只包含 Multica 集成層,不內嵌、不二次分發 DeepSeek Harness 源碼;不要求修改 DeepSeek Harness 本身。
核心能力¶
倉庫 README 列出的運行時約定,可以對照源碼裏的協議幀來看。插件在 --stdio 模式下啓動後,會先向 stdout 寫出一條 ready 幀,聲明自己是 runtime: dsh,並帶上這些能力位:resume、cancel、models、thinking、usage、tools,以及 MCP 傳輸 stdio 與 streamable-http。
1、探測與模型發現。--probe 返回協議版本 1;--list-models 從 dsh 自己的 LLM 服務枚舉 provider 與模型,並帶上思考強度(thinking level)。Multica 文檔寫明:只有 --probe 成功之後,守護進程纔會把 DeepSeek Harness 登記爲在線運行時。
2、JSONL 任務通道。stdin 接受 execute 與 cancel 兩條命令。一次進程只接受一條 execute:工作目錄必須是絕對路徑,可以指定模型、思考強度、MCP 服務器列表,也可以用 resume_session_id 續上一次會話。stdout 只走協議幀,診斷信息寫到 stderr。工具輸出超過 256 KiB 會被截斷;單條命令超過 8 MiB 會直接拒絕。
3、會話與取消。新建會話的 id 形如 multica-<uuid>。續跑時若會話工作目錄與本次 cwd 不一致,會以 DSH_RESUME_REJECTED 失敗,避免把任務接到錯誤目錄。cancel 走 dsh 的用戶取消路徑,屬於協作式中止,不是強殺進程。
4、MCP 配置翻譯。Multica 下發的 MCP 配置會被轉成 dsh 的 @deepseek-ai/dsh-mcp-client:stdio 服務器帶 command / args / env / cwd,streamable-http 服務器帶 url / headers。名稱會規範化到 dsh 允許的字符集。
5、無界面審批。這是給守護進程用的 headless 運行時,沒有交互式提問面。cordis.patch.yml 裏的系統提示明確寫了不要調用 ask_user_question;審批請求在源碼裏被處理成一次性放行(allowed-once)。熱更新(hmr)和 OpenTelemetry 遙測插件都被關掉,也不暴露 HTTP 監聽。
6、任務令牌的窄轉發。dsh 默認會從子進程環境裏清掉形如 *TOKEN*、*KEY*、*SECRET*、*PASSWORD* 的變量。插件只把 Multica 服務端簽發、以 mat_ 開頭的 MULTICA_TOKEN 放行,讓任務裏的 multica 命令還能帶上任務歸屬;模型供應商密鑰不會走這條路徑。DEEPSEEK_API_KEY 仍由 dsh 自己的憑據模塊在進程運行時讀取,倉庫要求不要把它寫進這個插件倉庫。
當前檢出針對 @deepseek-ai/dsh@0.1.0-rc.6 及同系列 @deepseek-ai/dsh-* 包做過驗證。package.json 的 engines 要求 Node.js 爲 ^22.19.0 || >=24.0.0。Multica 安裝文檔寫的是 Node.js 20+ 再全局安裝 @deepseek-ai/dsh;若兩者不一致,以本插件自己的 engines 爲準。
安裝與啓用¶
社區目錄頁給出的安裝命令如下,在 DeepSeek Harness 終端裏運行即可:
dsh plugin add github:multica-ai/dsh-multica-runtime
目錄頁同時提醒:如需可復現安裝,請固定 commit 哈希:
dsh plugin add github:multica-ai/dsh-multica-runtime#commit
把 #commit 換成實際的 commit 哈希,不要原樣複製佔位符。
若按倉庫 README 做本地構建,再裝進名爲 multica 的 profile(這也是 Multica 文檔採用的路徑),步驟是:
pnpm install
pnpm check
pnpm build
dsh plugin --profile multica add /absolute/path/to/multica-dsh-runtime
最後一行裏的路徑必須換成構建產物所在的絕對路徑。Multica 官方安裝文檔對應的流程是:先安裝 Node.js,再執行 npm install -g @deepseek-ai/dsh,然後把 Multica runtime profile 加到 dsh 上;守護進程只有在下面這條探測成功後纔會登記 DeepSeek Harness:
dsh --profile multica --probe
啓動守護進程前,還需要在環境裏設置 DEEPSEEK_API_KEY,或把它寫進 dsh 自己的設置。dsh 安裝路徑不標準時,把啓動器絕對路徑告訴守護進程:
export MULTICA_DSH_PATH=/absolute/path/to/dsh
默認模型可以用 MULTICA_DSH_MODEL 覆蓋,取值是 dsh 目錄裏的模型 id,文檔示例是 deepseek-official/deepseek-chat。會話落盤目錄由 MULTICA_DSH_SESSION_ROOT 控制,未設置時回落到 dsh 主目錄下的 sessions。
目錄頁寫明:插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前請檢查源代碼倉庫和許可證。
典型用法¶
裝好 multica profile 之後,插件支持下面三條命令,分別對應探測、列模型和進入 stdio 協議:
dsh --profile multica --probe
dsh --profile multica --list-models
dsh --profile multica --stdio
--probe 成功時,stdout 會寫出一條 JSONL 幀,字段包括 runtime: dsh、plugin_version 和 protocol_version: 1。Multica 守護進程靠這一條判斷協議是否對得上。
--list-models 會向 stdout 寫出 models 幀。模型 id 的編碼方式是 encodeURIComponent(provider)/encodeURIComponent(model),並標記當前默認模型;若該模型支持推理強度,會附帶 supported_levels 與 default_level。某個 provider 枚舉失敗時,插件把錯誤寫到 stderr,然後跳過該 provider,不會整條命令失敗。
--stdio 是守護進程真正跑任務時用的模式。進程先發 ready,再等待 stdin 上的第一條 execute。一條 execute 的核心字段是:
cwd:任務工作目錄,必須是絕對路徑;prompt:本輪用戶提示;resume_session_id:可選,續跑已有會話;model:可選,provider+id,以及可選的reasoning_effort;mcp_servers:可選,stdio 或 streamable-http 的 MCP 列表。
執行過程中,stdout 會按事件寫出 session、text、thinking、tool_call、tool_result、usage,最後一條是 result,狀態爲 completed、failed、aborted 或 cancelled。日常使用裏,這些幀由 Multica 守護進程讀寫,一般不需要手工往 stdin 灌 JSON。把本機守護進程拉起來後,到 Multica 的 Runtimes 頁面確認 DeepSeek Harness 顯示爲 online,就可以在創建或編輯 agent 時選這個運行時。
非標準安裝路徑、以及 Desktop 與終端 PATH 不一致時,用前面的 MULTICA_DSH_PATH 指向真實的 dsh 可執行文件,然後重啓守護進程:
multica daemon restart
適用場景與注意事項¶
適合已經(或準備)用 Multica 管編碼智能體,又希望把 DeepSeek Harness 當作其中一種運行時的人。典型場景是:本機或自建環境已經能跑 dsh,需要讓看板裏的任務落到 dsh 上執行,並保留取消、續會話、MCP 和用量事件。它不是給普通 dsh 用戶加 Web UI 或終端皮膚的插件;不跑 Multica 的話,這個橋沒有使用對象。
下面幾條需要在安裝前看清楚。
第一,許可證不要按目錄頁的套話理解。目錄頁 FAQ 寫「社區開源項目,可以查看源碼並免費安裝使用」;倉庫 package.json 則標明 "private": true、"license": "UNLICENSED",GitHub 也沒有 SPDX 許可證。README 標題用語是 Private runtime bridge。來源衝突時以倉庫一手信息爲準:源碼可以讀,但當前並未給出可再分發的開源許可證。安裝前應自行覈對。
第二,插件以當前 dsh 進程權限運行。目錄頁和社區目錄的通用安裝說明都強調:安裝時可能執行代碼,GitHub 來源的插件還可能跑構建腳本。只裝自己審查過的 commit。
第三,版本綁定較緊。當前驗證基線是 @deepseek-ai/dsh@0.1.0-rc.6。DeepSeek Harness 仍在開發者預覽,核心插件和 API 會變;升級 dsh 之後需要重新確認這條橋是否還能探測成功。
第四,headless 行爲與交互式 dsh 不同。沒有向用戶提問的界面,審批被做成一次性放行,系統提示禁止調用 ask_user_question。需要人工確認的操作,不會在這條運行時裏彈窗。
第五,憑據與隱私邊界以倉庫爲準。不要把 API key、MCP 密鑰、會話日誌或生成的 profile 提交進這個倉庫;DSH 遙測被 bundle patch 關掉;stdout 只允許協議幀。任務令牌只轉發 mat_ 前綴的 MULTICA_TOKEN,其它憑證仍按 dsh 的清洗規則剝離。
第六,package.json 裏的 repository 字段仍指向 github.com/dsh-external/dsh-multica-runtime,與當前公開倉庫 multica-ai/dsh-multica-runtime 不一致,安裝和引用時以後者爲準。
社區插件目錄 deepseek-harness-plugin.com 是獨立站點,與 DeepSeek / 幻方沒有官方從屬關係,不能當成官方應用商店。
小結¶
dsh-multica-runtime 做的事情很窄:給 Multica 提供一條不改 dsh 源碼的運行時橋,用 JSONL 協議把探測、模型列表、任務執行、取消和續會話接起來。對已經在用 Multica、又想把 DeepSeek Harness 加進運行時列表的人,這條插件是目前倉庫與官方文檔共同指向的安裝路徑。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-multica-runtime/
GitHub:https://github.com/multica-ai/dsh-multica-runtime