前言¶
DeepSeek Harness(DSH)本身已經能管理 workspace、跑 agent 會話、讀寫文件和執行命令。若你同時在用 Claude Code、Codex、另一個 DSH 實例,或想在 CI 裏用腳本驅動同一套 harness,常見做法是再寫一層膠水:單獨封裝 API、或在本機重複實現沙箱與權限邏輯。
dsh-as-mcp 走另一條路:在 DSH 宿主進程內部掛一個 MCP 端點,對外暴露與 harness 一致的能力。通過 MCP 創建的會話就是 DSH 界面裏可見的真實會話,跑在同一沙箱、同一權限策略下,agent 側沒有「再實現一遍 DSH」。
下面介紹插件定位、工具能力、安裝接入方式,以及分發 token 前需要了解的安全邊界。
這是什麼¶
- 名稱:dsh-as-mcp(npm 包名與插件 id 相同)
- 維護者:xiseliuli
- 分類:工作流(社區目錄 SkillHub)
- 源碼:github.com/xiseliuli/dsh-as-mcp(MIT 許可證;package.json 當前版本 0.1.5)
- 一句話:把正在運行的 DSH 實例暴露爲 MCP server,供任意 MCP 客戶端創建工作區、開 session、下發編碼任務、讀寫文件、執行 shell。
端點跑在宿主進程內,經插件註冊的 MCP 工具調用 harness 自帶的 workspace、session、fs、shell 等服務,而不是平行再造一套 agent 運行時。
核心功能¶
傳輸與鑑權¶
- 客戶端經 Streamable HTTP 或 stdio(隨包提供的
dsh-as-mcp橋接)連接。 - 每個請求需 Bearer token,解析順序爲:插件配置
auth.token→$DSH_HOME/dsh-as-mcp/token→ 首次運行自動生成並寫入(權限0600)。 - 默認 HTTP 端點:
http://127.0.0.1:8790/mcp;無法設 Header 時可用?token=,文檔建議優先用 Header,避免憑證進 shell 歷史或代理日誌。
MCP 工具一覽¶
| 工具 | 作用 |
|---|---|
dsh_info |
端點、token 來源、已啓用的工具組、當前 profile 可用的 harness 服務 |
workspace_create / workspace_list |
註冊或列出工作區 |
session_create / session_list / session_messages / session_cancel |
創建、列舉、讀記錄、取消 DSH agent 會話 |
session_prompt |
向會話下發任務;默認等待本輪結束並返回回覆與 agent 調用的工具 |
file_read / file_write / file_list |
經 DSH 文件系統服務讀寫、列目錄 |
shell_run |
經 DSH shell 服務執行命令 |
dsh_tool_list / dsh_tool_call |
在指定 sessionId 下列舉或調用 DSH agent 工具白名單內的工具 |
接入後應先調用 dsh_info,以區分「profile 未掛載某服務」與「命令執行失敗」等情況。
典型編碼鏈路¶
README 給出的順序是:建工作區 → 建會話 → 用自然語言任務驅動 agent:
workspace_create { path: "/Users/me/project" }
-> session_create { workspaceId: "..." }
-> session_prompt { sessionId: "...", prompt: "給 CLI 加一個 --verbose 開關,並補一個測試。" }
session_prompt:讓 DSH agent 自行規劃、改文件、調內置工具(含子 agent)。file_*/shell_run:調用方直接操作,不經過 agent 推理。dsh_tool_call:在已有會話上直接跑 harness 白名單內的 agent 工具;須先dsh_tool_list,且必須帶sessionId。
tools 配置項可以關閉某一組工具的暴露,但文檔強調:這收窄的是「客戶端能發現什麼」,不是操作系統級隔離(見下文「適用場景與注意」)。
安裝與啓用¶
DSH 通過 profile 的 bundle 機制加載插件;dsh plugin add 會寫入 dsh.profile.bundles,並由包內 cordis.patch.yml 提供默認插件行。安裝後需重啓 DSH——bundle patch 在啓動時讀取,不支持熱重載。
從 npm(推薦)¶
dsh plugin --profile <名稱> add dsh-as-mcp
在 DSH 源碼 checkout 內等價於:
pnpm dsh plugin --profile <名稱> add dsh-as-mcp
從 GitHub¶
dsh plugin --profile <名稱> add github:xiseliuli/dsh-as-mcp
Git 依賴拉的是源碼,需執行包的 prepare(tsdown && node scripts/build-client.mjs)。pnpm ≥10 可能因未放行構建腳本報 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED;按報錯中的精確 git spec,在 ~/.dsh/profiles/<名稱>/pnpm-workspace.yaml 的 allowBuilds 裏放行後再重試 add,並建議 pin 到具體 commit。細節見倉庫 README「安裝」一節。
從本地 tarball¶
pnpm pack
dsh plugin --profile <名稱> add /絕對路徑/dsh-as-mcp-<版本>.tgz
確認已加載¶
dsh --profile <名稱> --dump-config | grep -A 30 '# == dsh-as-mcp'
環境要求(package.json):Node ^22.19.0 || >=24.0.0;Harness peer @deepseek-ai/dsh ≥ 0.1.5-rc.1。
DSH Desktop 的 desktop profile 不能直接用 CLI dsh plugin add,需按 README「裝進 DSH Desktop」手動 pnpm add tarball 並編輯 cordis.patch.yml,且避免與 dsh.profile.bundles 重複插入同 id 插件行。
典型用法:連接 MCP 客戶端¶
HTTP 客戶端¶
在 MCP 配置裏指向本地端點並帶上 token(設置面板的「複製」會生成已填 token 的片段):
{
"mcpServers": {
"dsh": {
"type": "http",
"url": "http://127.0.0.1:8790/mcp",
"headers": { "Authorization": "Bearer <token>" }
}
}
}
僅支持 stdio 的客戶端¶
{
"mcpServers": {
"dsh": {
"command": "npx",
"args": ["-y", "dsh-as-mcp"],
"env": { "DSH_AS_MCP_TOKEN": "<token>" }
}
}
}
本地可執行 dsh-as-mcp --help 查看橋接將使用的端點與 token 狀態。
冒煙驗證¶
安裝目錄下提供 scripts/smoke.mjs:握手、tools/list、dsh_info、workspace_list;成功時輸出 OK。加 --prompt "..." 可跑完整鏈路(臨時工作區 → 會話 → agent 任務)。
適用場景與注意¶
適合誰
- 已在本機或內網跑 DSH,希望 Claude Code、Codex、另一個 agent、CI 腳本通過 MCP 標準 驅動同一 harness。
- 需要遠程編排「真實 DSH 會話」(UI 可見、審計與權限與手工操作一致),而不是在外部進程裏模擬 coding agent。
安裝與信任
- 插件以 當前 DSH 進程的用戶權限 運行;MCP 側的動作最終走 harness 的 fs、shell、session 服務。
- 文檔將 bearer token 類比爲 SSH 私鑰:token 即安全邊界,默認監聽
127.0.0.1。持有 token 的調用方可通過file_*、shell_run觸及 DSH 進程能觸及的路徑;工作區主要約束 agent 的起點,並不圍住這些直接工具。 - 橋是 實例級 的:
session_list/session_messages可看到本實例內其它會話(含你在 UI 裏手工開的對話),分發 token 前需評估隱私與信任範圍。 tools.shell: false等開關不能替代獨立賬號或 OS 級沙箱;若調用方不可信,應單獨實例、非特權用戶,並在安裝前閱讀源碼與 MIT 許可證。
審批策略
approval.policy: inherit(默認):無瀏覽器接入時,需人工審批的工具對 agent 失敗關閉。approval.policy: allow:對本插件創建的會話自動批准審批請求,便於無人值守任務,但擴大 agent 可執行範圍。
社區插件目錄 SkillHub 與 DeepSeek / 幻方無官方從屬關係;DSH 生態強調「一切皆插件」,本包亦標註 dsh-plugin topic 便於發現。
結尾¶
dsh-as-mcp 把 DSH 從「只能在本機 UI 或 CLI 裏用」擴展成 標準 MCP 後端:外部 agent 仍操作同一套 workspace、session 與沙箱,無需重複實現 harness。按 profile 安裝、重啓、配置 token 與客戶端後,用 dsh_info 覈對服務與工具組,再按 workspace_create → session_create → session_prompt 即可復現 README 中的編碼流程。