前言¶
在 DeepSeek Harness(dsh)生態裏,插件可以擴展會話、命令和 UI。實際開發中很多人會同時在 pi、opencode、OpenAI Codex、Claude Code 或 WorkBuddy 裏積累聊天記錄、AGENTS.md / CLAUDE.md / CODEBUDDY.md、skills 和自動化任務。換到 dsh 時,如果只拷貝 JSONL 或 SQLite 裏的對話,模型往往仍缺另一半上下文:指令文件、技能架、項目記憶和定時任務並不會自動跟過來。
下面介紹維護者 Chang-Tong 發佈的 DSH Unified Context(npm 包名 dsh-unified-context,社區目錄歸類爲工作流)。它把上述五類來源遷入 dsh,並用符號鏈接讓各 Harness 讀同一份真文件,而不是每個工具各存一份副本。
這是什麼¶
DSH Unified Context 面向「要從其它 Agent Harness 遷到 dsh,且希望會話可繼續、上下文不分裂」的開發者。插件在 dsh 內提供斜槓命令、composer 裏的 同步 按鈕,以及可選的 CLI(import.mjs);運行時主要依賴 Node 內置模塊(含 node:sqlite、node:zlib 的 zstd)和 dsh 平臺模塊,無額外運行時依賴。
當前 npm 發佈版本爲 0.5.0,許可證 MIT,要求 Node ≥ 22.19(與 dsh 一致)。
核心能力¶
五種來源,一次遷入¶
插件支持從以下來源導入可恢復的 dsh 會話(格式在 README 中寫明:pi / codex / claude-code / WorkBuddy 爲 JSONL,opencode 爲 SQLite):
| Harness | 遷移內容(據官方文檔) |
|---|---|
| pi | 會話;agent / 模式提示詞 → dsh skills;指令與技能上下文 |
| opencode | 會話;agent → dsh skills;指令與技能上下文 |
| OpenAI Codex | 會話;AGENTS.md 上下文;自動化 |
| Claude Code | 會話;CLAUDE.md 上下文;項目與 Agent 記憶 |
| WorkBuddy(騰訊) | 含真實工具結果的會話;CODEBUDDY.md 與 skills;項目記憶;自動化 |
會話 id 設計爲穩定前綴(如 pi-<uuid>、oc-<id> 等),重複導入會跳過已存在項。
上下文用鏈接共享,而不是複製¶
/link-context 讓各 Harness 通過符號鏈接讀同一份 AGENTS.md / CLAUDE.md / CODEBUDDY.md 和同一個 skill hub。內容相同的副本會摺疊爲鏈接;內容不同的副本會報告衝突,默認不覆蓋。項目記憶收斂到 <項目>/.agents/memory/,Agent 記憶收斂到 ~/.agents/agent-memory/<agent>/;默認策略爲 authority,可選 merge 生成引用索引。
自動化與 Agent 形態轉換¶
Codex 與 WorkBuddy 的自動化會翻譯成 dsh 定時任務(RRULE 翻譯),默認以暫停狀態導入,便於先在來源側停用再啓用。dsh 內用 /import-automations,CLI 的 node import.mjs automations 僅打印計劃,真正創建任務需要運行中的 dsh。
pi / opencode 的 agent 與模式提示詞會落到 $DSH_AGENTS_HOME/skills,並在 frontmatter 記錄 metadata.source / metadata.kind。
交互入口¶
- composer 工具行的 同步 按鈕:等價於執行
/import-all,內聯展示結果。 - 新的頂層會話:若檢測到未導入歷史,會詢問是否遷移(可按項目記住決定,狀態寫在
$DSH_HOME/unified-context-state.json)。
安裝與啓用¶
插件已發佈到 npm,並聲明 dsh.bundle,通過官方 dsh plugin add 安裝後會自動進入 profile 的 bundle 列表。
推薦一鍵安裝:
dsh plugin --profile web add dsh-unified-context
安裝後需 重啓 dsh web 並刷新頁面(舊頁面 RPC 會斷開)。驗證方式:composer 出現 同步 按鈕,且 /import-all 有響應。
也可指定版本或從 GitHub 安裝(文檔中的示例):
dsh plugin --profile web add dsh-unified-context@0.5.0
dsh plugin --profile web add github:Chang-Tong/dsh-unified-context
卸載示例:
dsh plugin --profile web remove dsh-unified-context
典型用法¶
Web 內快速遷移¶
- 重啓 dsh web 後刷新頁面。
- 點擊 同步,或輸入
/import-all。 - 在會話列表中按工作區查看導入會話;在 Automation tasks 頁面查看遷移任務(默認暫停,確認來源側已停後再恢復)。
完整遷移冪等:已導入會話、已有鏈接和相同自動化任務不會重複創建。
按需執行的斜槓命令¶
| 命令 | 作用 |
|---|---|
/import-pi … /import-workbuddy |
按來源導入會話 |
/import-agents |
pi / opencode agent → skills |
/link-context |
共享指令文件、skill hub、長期記憶(可加 --dry-run、--push、--memory=authority\|merge\|off 等) |
/import-automations |
遷移 Codex / WorkBuddy 自動化(默認暫停) |
/import-all |
會話 + agents + 上下文鏈接 + 暫停的自動化 |
/attach-workspaces |
爲已導入會話補掛與原始 cwd 匹配的工作區 |
常用選項包括 --limit N、--project 子串、--since、--no-tools、--activate 等,詳見倉庫中文 README。
不啓動 dsh 時的 CLI 預覽¶
在項目包目錄可用 import.mjs 做 dry-run 或局部寫入(自動化創建仍依賴運行中的 dsh):
node import.mjs all # dry-run 預覽
node import.mjs all --apply # 會話 + skills + 共享上下文鏈接
node import.mjs sessions codex --apply --limit 20
node import.mjs context --apply
配置要點¶
可在插件插入行覆蓋默認值。文檔列出的部分鍵如下:
| 鍵 | 默認值 | 含義 |
|---|---|---|
offerOnStart |
true |
新頂層會話是否詢問遷移 |
piRoot |
~/.pi/agent/sessions |
pi 會話根目錄 |
opencodeDb |
~/.local/share/opencode/opencode.db |
opencode SQLite |
codexRoot |
~/.codex/sessions |
codex 會話 |
claudeRoot |
~/.claude/projects |
claude-code 項目 |
workbuddyRoot |
~/.workbuddy |
WorkBuddy 數據根 |
timeZone |
Asia/Shanghai |
自動化 RRULE 翻譯時區 |
skillsRoot |
$DSH_AGENTS_HOME/skills |
skills 輸出目錄 |
toolTruncate |
1000 |
工具參數截斷長度 |
關閉啓動時遷移詢問示例:config: { offerOnStart: false }。
適用場景與注意¶
適合:已在 pi、opencode、Codex、Claude Code 或 WorkBuddy 中有大量歷史,計劃以 dsh 爲主界面,並希望 同一份項目上下文 仍被多個 Harness 讀取的場景。
需要注意:
- 插件隨 當前 dsh 進程權限 讀取本機會話目錄、數據庫和項目文件。安裝前應閱讀 GitHub 源碼 與 MIT 許可證,確認路徑與行爲符合你的安全策略。
- pi、opencode、codex、claude-code 的來源通常只保存工具調用,不含真實 tool result;WorkBuddy 在來源記錄了結果時會原樣導入。FAQ 中說明了佔位 result 的處理方式。
- WorkBuddy 的
SOUL.md/MEMORY.md等全局身份文件 不會 併入共享指令;MCP、provider 配置等也保持各 Harness 原生,不在此插件統一範圍內。 - 社區目錄 SkillHub 上的插件頁 與 DeepSeek / 幻方無官方從屬關係,屬於社區收錄;DSH 本身貫徹「一切皆插件」的擴展方式。
結尾¶
DSH Unified Context 解決的是 Harness 切換時的「半套上下文」問題:會話、指令、skills、記憶和自動化儘量一次遷入 dsh,並用符號鏈接維持單一真源。若你正在評估遷移,可從 dsh plugin --profile web add dsh-unified-context 裝起,用 /import-all 或 同步 按鈕跑一遍冪等導入,再按需細化 /link-context 與 /import-automations。