deepseek-harness-external-migration:把 Codex、Claude Code 的配置和會話遷進 DeepSeek Harness

前言

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-harnessdeepseek-harness-plugin.com 是社區整理的插件目錄,與 DeepSeek / 幻方沒有官方從屬關係,不能把它當成官方應用商店。安裝任何第三方插件前,都應先看源碼和許可證。

這是什麼

deepseek-harness-external-migrationbuguoshixc 維護,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.jsonCLAUDE.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/startuser/messageassistant/messagesession/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

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜