前言¶
DeepSeek Harness(dsh)是 DeepSeek AI 開源的 agent 框架,核心設計是「一切皆插件」:模型、工具、會話、存儲都可以在配置層替換,不必改核心源碼。它目前仍處於開發者預覽階段,迭代很快。
很多人並不是從空白環境開始用 dsh。此前可能已經在 Codex、Claude Code、Qoder 或 OpenCode 裏攢了一批 MCP 配置、skills、以及很長的歷史會話。換工具時真正耗時間的,往往不是安裝新環境,而是這些積累要不要手工複製,複製時會不會把 token 一起帶過去。
社區插件目錄裏有一個專門處理這件事的插件:deepseek-harness-external-migration。下面根據插件目錄頁和 GitHub 倉庫交叉覈實後,說明它能遷什麼、怎麼裝、怎麼用,以及明確不會做的事。
需要先分清來源:DeepSeek Harness 本身的倉庫在 deepseek-ai/deepseek-harness。deepseek-harness-plugin.com 是社區整理的插件目錄,與 DeepSeek / 幻方沒有官方從屬關係,不能把它當成官方應用商店。安裝任何第三方插件前,都應先看源碼和許可證。
這是什麼¶
deepseek-harness-external-migration 由 buguoshixc 維護,MIT 許可證,主要語言是 JavaScript。package.json 中的版本是 0.1.0。社區目錄把它歸在「工具與能力」分類;目錄頁與 GitHub 目前都顯示 4 顆星。
它要解決的問題很具體:把 Codex、Claude Code、Qoder(也接受 qcoder 這個別名)和 OpenCode 的配置線索與歷史會話,遷到 DeepSeek Harness,不必手工複製粘貼。倉庫 README 把流程寫成「掃描 → 預覽 → 明確確認導入」:
- 源目錄始終只讀,源文件不會被修改。
- 會話寫入 Harness 當前啓用的原生持久化後端。
- 配置先導出成可審閱的遷移包,不會直接覆蓋現有配置。
- 認證信息不會被複制;MCP 密鑰會替換成環境變量引用,生成的 MCP 配置也不會自動生效。
能遷移什麼¶
README 給出的支持範圍如下。
| 來源 | 歷史會話 | 配置與擴展 |
|---|---|---|
| Codex | sessions/**/*.jsonl,可選 archived_sessions/**/*.jsonl |
config.toml 中的 MCP、模型/權限摘要,AGENTS.md、prompts、skills |
| Claude Code | ~/.claude/projects/*/*.jsonl |
用戶/項目 settings、.mcp.json、CLAUDE.md、commands、agents、skills |
| Qoder | ~/.qoder/projects/*/transcript/*.jsonl |
用戶/項目 settings、.mcp.json、commands、agents、skills |
| OpenCode | 當前 opencode.db 的 session/message/part 表,也兼容舊 storage/ JSON 樹 |
opencode.json / opencode.jsonc、AGENTS、commands、agents、skills |
遷移後的會話使用 Harness 的 turn/start、user/message、assistant/message、session/title 等原生事件,可被 JSONL 或 SQLite 持久化實現讀取。每個會話還會帶一個可忽略的來源事件,記錄來源、源會話 ID 和內容指紋,用來避免重複導入。
默認查找根目錄是:
Codex: $CODEX_HOME 或 ~/.codex
Claude: $CLAUDE_CONFIG_DIR 或 ~/.claude
Qoder: $QODER_HOME 或 ~/.qoder
OpenCode: $XDG_DATA_HOME/opencode 或 ~/.local/share/opencode
配置: $XDG_CONFIG_HOME/opencode 或 ~/.config/opencode
數據不在默認位置時,可以給插件配置 roots 覆蓋。README 特別提醒:Harness 後續 patch 會整體替換該行的 config,要重述所有希望保留的字段,不能只寫改動的那一項。
三個模型端工具¶
插件向模型暴露三個工具,職責分開,寫入只發生在最後一步。
1、external_migration_scan:只讀盤點。它讀取目錄、文件元數據和用於摘要的配置,不讀取會話正文,不返回認證值,也不寫任何內容。適合先看「有哪些可遷對象」,再決定要不要繼續。
2、external_migration_preview:只讀解析。它會解析會話,返回標題和少量正文預覽,仍然不寫任何內容。適合在導入前確認「遷過來的是不是我想要的那幾段對話」。
3、external_migration_import:真正寫入。必須傳入 confirm=true 纔會執行;它把會話寫入 Harness,並生成配置遷移包。
默認每種來源最多處理最近 200 個會話,單個會話文件上限 25 MiB。完全相同的會話再次導入會被跳過;源文件內容變化後會產生一個新的導入版本,舊版本不會被刪除。
安裝與啓用¶
運行環境要求來自倉庫 README:DeepSeek Harness 0.1.0-rc.5 或更高兼容版本,以及 Node.js 22.19+ 或 24+。package.json 裏對應的 peer 依賴是 @deepseek-ai/dsh-session、@deepseek-ai/dsh-session-persistence、@deepseek-ai/dsh-tools 的 ^0.1.0-rc.5。
社區目錄頁給出的安裝命令是:
dsh plugin add github:buguoshixc/deepseek-harness-external-migration
如需可復現安裝,目錄頁建議固定 commit 哈希。當前倉庫 main 分支最新提交是 12218a3f6d59370567ab92e6bde410ca4ccdd769(2026-08-14),可以寫成:
dsh plugin add github:buguoshixc/deepseek-harness-external-migration#12218a3f6d59370567ab92e6bde410ca4ccdd769
倉庫 README 另外提供了本地安裝方式。本包聲明瞭 dsh.bundle.patch,因此 dsh plugin 會把它作爲所選 profile 的配置層激活。把路徑換成本機絕對路徑後,可以安裝已打包文件或源碼目錄:
dsh plugin --profile web add /absolute/path/deepseek-harness-external-migration-0.1.0.tgz
dsh plugin --profile web add /absolute/path/deepseek-harness-external-migration
安裝完成後需要重啓該 profile。插件以當前 dsh 進程的權限運行,安裝時可能執行代碼,安裝前應檢查源代碼倉庫和許可證。
典型用法¶
安裝並重啓 profile 之後,直接在 Harness 對話裏按三步說即可。下面三句來自倉庫 README:
1、先盤點,明確不要導入:
掃描 Codex、Claude Code、Qoder 和 OpenCode 的可遷移內容,不要導入。
2、再預覽指定來源:
只預覽 Codex 和 Claude 最近 10 個會話。
3、檢查結果後,再確認寫入:
確認導入剛纔預覽的來源,並導出配置遷移包。
配置遷移包默認寫到:
$DSH_HOME/migrations/external-agents/
其中通常包含:
migration-report.json:來源、映射結果、未支持項、需要設置的環境變量。cordis.mcp.patch.yml:可審閱的 MCP 插件配置層。artifacts/:可審閱的指令、commands、agents 和 skills 文本副本。README.txt:應用檢查清單。
插件不會自動應用 cordis.mcp.patch.yml。檢查報告並設置所列環境變量後,可以在啓動時試用(把路徑換成實際文件位置):
dsh --profile web --patch /absolute/path/cordis.mcp.patch.yml
確認無誤後,再把該配置層合併到自己的 profile 流程中。
認證信息不會寫入遷移包。名稱裏帶 token、secret、password、api key、auth、credential 的環境變量或請求頭,看起來像 API token 的參數值,以及 URL 中的用戶名、密碼或疑似密鑰查詢參數,都會被替換成 process.env[...] 引用。需要設置的變量名列在 migration-report.json。OpenCode / Claude / Qoder 的 WebSocket MCP 配置只會報告爲不支持,不會錯誤轉換。
適用場景與注意事項¶
這個插件適合已經在 Codex、Claude Code、Qoder 或 OpenCode 裏積累了會話和配置、準備把工作流接到 DeepSeek Harness 的人。它不是「一鍵覆蓋現有 dsh 配置」的工具,配置部分默認只導出審閱包,要你自己檢查後再合併。
倉庫 README 列出了幾條有意限制,使用前值得看完:
- 原客戶端的工具調用和工具結果會轉成可閱讀文本,不會僞裝成可重新執行的 Harness 工具事件。
- 圖片和文件附件只保留佔位說明,不復制二進制內容。
- 模型和權限設置只寫入摘要,因爲不同客戶端與 Harness 的語義並不一一對應;插件不會擅自降低 Harness 的安全策略。
- 指令、commands、agents、skills 只複製到審閱目錄,需人工檢查後再合併。
- 檢測到常見私鑰或 token 形態的文本擴展文件會標記爲
possible-secret並跳過,不寫入審閱目錄。 - OpenCode 支持當前 message/part 的 SQLite 結構和舊 JSON 結構;如果將來完全切換到不同的 V2-only 表結構,需要新增適配器。
倉庫還說明:測試使用合成數據,覆蓋四種來源解析、OpenCode SQLite、事件日誌生成、MCP 脫敏、配置導出和重複導入;維護者用 DeepSeek Harness 0.1.0-rc.6 的實際 SessionStore 與 JSONL 持久化後端做過煙霧測試。這是倉庫自己的驗證說明,不是第三方評測。
最後再強調一次安全邊界。掃描工具只讀盤點,不返回憑據、不寫任何內容;預覽仍然只讀;導入必須顯式確認。即便如此,插件仍以當前 dsh 進程權限運行,生成的遷移報告和 artifacts 裏可能包含私有會話內容。安裝前檢查源碼與許可證,導入前先看預覽,應用 MCP 配置前先看 migration-report.json。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/deepseek-harness-external-migration/
GitHub:https://github.com/buguoshixc/deepseek-harness-external-migration