前言¶
同時使用多個智能體工具的開發者,通常面對一份分散的配置:MCP servers 和 Skills 散落在 ~/.claude、~/.cursor、~/.codex,cc-switch 則把它們存在 ~/.cc-switch/cc-switch.db 這個 sqlite 文件裏。想在 DeepSeek Harness(下文簡稱 DSH)裏複用這些配置,就得按各自的格式逐條手搬。
DSH 的理念是「一切皆插件」。社區開發者 MayBeTheWorld 針對這個搬運問題寫了 dsh-inherit:自動檢測上面四個來源,先預演再寫入,把 MCP servers 與 Skills 一鍵導入 DSH。下面介紹它的功能、安裝與用法。
這是什麼¶
dsh-inherit 是一個 DSH 社區插件,當前版本 0.1.0,處於 Developer preview 階段;MIT 許可,與 DeepSeek 無官方關聯。它把 Claude Code / Cursor / Codex / cc-switch 的 MCP servers 與 Skills 一鍵導入 DSH,入口在 Settings → General → 導入智能體設置。
它是一個「雙面插件」,一個包裏同時包含兩側:
- 宿主側:提供
/api/dsh-inherit/sources與/api/dsh-inherit/run兩個接口,僅限 loopback 訪問; - 瀏覽器側:在
settings.general插入一行入口(settings.general.item),點開後是一個居中 Modal。
核心功能¶
來源自動檢測與多格式解析¶
插件掃描 ~/.claude、~/.cursor、~/.codex 和 cc-switch(~/.cc-switch/cc-switch.db,經 Node 內置 sqlite 讀取),並報告每個來源攜帶了什麼。解析層覆蓋三種格式:mcpServers JSON、Codex TOML、cc-switch sqlite。
按來源與分類勾選¶
彈窗裏每個 agent 一張卡片,右側各有一個 toggle,默認全開,不做任何調整也能一鍵導入全部。展開來源卡片後可按分類勾選:MCP servers 與 Skills 會被導入;instructions、memory、providers 只做檢測並如實標註,不由本插件導入;Sessions 不支持。
各來源的支持情況:
| 來源 | MCP | Skills | Instructions | Providers | Memory | Sessions |
|---|---|---|---|---|---|---|
| Claude Code | 可導入 | 可導入 | 僅檢測 | — | 僅檢測 | 不支持 |
| Cursor | 可導入 | 可導入 | 僅檢測 | — | 僅檢測 | 不支持 |
| Codex(TOML) | 可導入 | 可導入 | 僅檢測 | — | 僅檢測 | 不支持 |
| cc-switch(sqlite) | 可導入 | 可導入 | — | 僅檢測 | 僅檢測 | 不支持 |
標註按能力感知生成:插件會檢測當前實際加載的、負責某項能力的插件(例如 dsh-cc-switch)並在報告裏說明,因此對 fork 和改名後的插件同樣有效。
兩步安全:先預演,再寫入¶
1、點「導入所選(預演)」:只輸出 dry-run 報告,內容分 imported / skipped / notes 三類,不寫任何文件;
2、點「確認寫入」:確認報告後再執行,真正落盤,寫入前自動爲目標文件生成 .bak-<timestamp> 備份。
導入是冪等的:同名 server / skill 會被跳過,不會重複寫入。
寫入位置¶
- MCP servers 寫入當前 profile 的
cordis.patch.yml,作爲@deepseek-ai/dsh-mcp-client行,走官方組合層;若自動檢測到~/.dsh/mcp.json,則將其作爲備選寫入目標。 - Skills 以 SKILL.md 目錄爲單位複製到
~/.dsh/skills,冪等,已存在的直接跳過。
安裝與啓用¶
npm 安裝命令(原文註釋標註 once published,npm 包是否已發佈請以實際爲準):
# from npm (once published)
dsh plugin --profile web add dsh-inherit
若 npm 包尚不可用,也可以從本地 checkout 安裝:
dsh plugin --profile web add "D:\path\to\dsh-inherit"
裝完打開 Settings → General → 導入智能體設置即可。新 bundle 會在短暫延遲後熱掛載;如果改動的是宿主模塊代碼,需要重啓 dsh web。
典型用法¶
經過上面的安裝步驟,日常導入流程如下:
1、打開 Settings → General → 導入智能體設置;
2、彈窗列出檢測到的來源,右側 toggle 默認全開;
3、展開來源卡片,勾選分類(MCP / Skills …);
4、點「導入所選(預演)」,查看 dry-run 報告(imported / skipped / notes);
5、點「確認寫入」,正式應用(寫入前先備份)。
只想在本地調試、不落盤時,可以直接用 node --experimental-sqlite 運行 detectSources() 與 runImport(..., { target: 'patch', dryRun: true }):
node --experimental-sqlite -e "
import('./lib/import.js').then(m => {
console.log(JSON.stringify(m.detectSources(), null, 1).slice(0, 2000))
console.log(JSON.stringify(m.runImport([{source:'claude-code',categories:['mcp']}],{target:'patch',dryRun:true}), null, 1).slice(0, 800))
})"
這段命令只做來源掃描和 dry-run 導入,不寫入任何文件。
適用場景與注意¶
適合的場景:同時在用 Claude Code / Cursor / Codex / cc-switch,想把已有的 MCP servers 與 Skills 搬進 DSH;希望導入冪等、寫前有備份的遷移。
使用前請注意:
1、該插件處於 Developer preview(0.1.0),是社區插件,MIT 許可,與 DeepSeek 無官方關聯;
2、插件以當前 dsh 進程的權限運行,安裝前應檢查源碼與許可證;
3、MCP 憑據(env / headers)會以明文寫入 cordis.patch.yml 或 ~/.dsh/mcp.json,注意文件權限;${VAR} 引用尚未轉換爲 !!js process.env.VAR;
4、server 名稱須匹配 [A-Za-z0-9_-]{1,32} 且全局唯一;sse / ws 傳輸的 MCP server 會被跳過並給出警告;
5、暫無 doctor / restore 命令,回滾需手動使用 .bak 文件;
6、暫不遷移 hooks、slash commands、sessions。
小結¶
dsh-inherit 做的事情很聚焦:把散落在四個工具裏的 MCP servers 與 Skills 收攏進 DSH,用「預演 + 確認」兩步和 .bak 備份把遷移風險壓到最低。項目與目錄頁:
- GitHub:https://github.com/MayBeTheWorld/dsh-inherit
- 社區目錄:https://www.skillhub.cn/plugins/MayBeTheWorld/dsh-inherit (獨立站點,與 DeepSeek / 幻方無官方從屬關係)