在 DeepSeek Harness (DSH) 的開發流程中,保持倉庫級的狀態(如當前任務 ID)和會話間的上下文連續性是常見挑戰。手動導出與導入往往缺乏一致性,且難以追蹤證據。shared-handoff-dsh 插件封裝了 shared-handoff-kit 的核心工作流,提供零依賴的解決方案,適配 macOS、Linux 和 Windows 平臺,實現了 Codex 和 Claude 中類似的自動化行爲。
核心定位¶
這是一個 DeepSeek Harness (dsh) 技能插件,由 eve1329 維護。它提供基於證據的會話交接和倉庫本地任務 ID 狀態管理技能,支持跨 Codex、Claude 和 dsh 互操作。該插件通過 DSH 事件系統模擬了原 Kit 的鉤子行爲,且不需要構建步驟。
安裝與啓用¶
安裝過程僅包含一行命令。安裝完成後,重啓 dsh web,技能將自動加入技能目錄,模型會通過 skill 工具加載它們。
dsh plugin --profile web add shared-handoff-dsh
核心功能¶
插件包含兩個主要技能:
- 證據驅動的會話交接:支持導出和恢復會話上下文,並在 Codex、Claude 和 dsh 之間共享狀態文件。
- 倉庫本地任務 ID 狀態管理:在
.agents/state/tasks/<task-id>/下管理任務狀態,綁定當前 dsh 會話。
此外,它具備以下特性:
* 跨平臺支持:原生支持 Windows 10 與 11 的 Python 環境差異。
* 自動化 Hook 等效行爲:通過 agent/pre-step 和 session/event 事件監聽,自動處理會話啓動、任務路由、續寫和壓縮保護。
* 零依賴、無構建步驟:純 Node.js 實現(基於 Node.js >=20.16.0)。
典型用法¶
安裝後無需記憶命令,技能通過對話觸發。
task-id-bootstrap:打開一個任務¶
在 dsh 聊天中輸入指令即可啓動新任務。例如:
新開task-id=init-kmp,然後開個 init-kmp 分支
模型會運行內置的 bootstrap 腳本。成功後,模型會輸出三行關鍵信息以證明狀態建立:
Task state: .../.agents/state/tasks/init-kmp
Current task: init-kmp
Session binding: /Users/you/.dsh/sessions/.../session.jsonl.zstd
後續在需要恢復時,只需說 繼續,task-id=init-kmp。
注意:task-id-bootstrap 需要 Python 3.9+。如果系統中缺少 Python,插件不會靜默安裝,而是報告缺失並顯示安裝命令,必須獲得明確同意後纔會執行。
handoff:導出 / 恢復會話¶
當對話線程過長時,可以使用交接功能。輸入:
幫我做個 handoff
模型會生成一段可直接粘貼到新線程的提示詞,包含工作區、分支、完成狀態和下一步驟。在新線程中,輸入:
繼續上次 handoff
模型會從狀態文件重建上下文,而不是依賴聊天曆史。觸發詞包括 交接、新開線程繼續、繼續上次、resume 等。
自動化機制¶
插件的自動化行爲通過 DSH 事件系統實現,無需手動干預:
| 原始 Hook | DSH 等效事件 | 行爲說明 |
|---|---|---|
SessionStart |
agent/pre-step |
將當前任務的 process.md 作爲基線注入,提示完成里程碑後運行 handoff 技能。 |
UserPromptSubmit |
agent/pre-step |
掃描消息中的 task=<id> 標記,綁定會話並切換當前任務。 |
| Continuation | agent/pre-step |
識別 繼續 等關鍵詞,重新注入持久化的狀態。 |
Stop |
session/event |
在每次交互後刷新 process.auto.md,並將摘要追加到 process.md 的 ## Auto Log 部分。 |
PreCompact / PostCompact |
compaction/start / compaction/summary |
在壓縮前後寫入快照,生成 context_guard.json,並在達到閾值時建議清理。 |
設計細節與限制¶
- Subagents 是隻讀的:由父會話派生的子代理或 Fork,只能接收基線注入,不會寫入狀態(無快照、無 Auto Log、無任務綁定更新、無壓縮保護更新)。
- Session Binding:插件通過環境變量
DSH_SESSION_JSONL獲取當前會話記錄路徑,確保狀態文件與 DSH 會話嚴格對應。 - 互操作性:狀態佈局與 Codex/Claude 版本一致,
session-tasks.json可共享。context_guard.json採用讀-合併-寫策略,確保交替使用不同運行時時仍能正確保護上下文。 - 配置覆蓋:如果默認行爲不符合需求,可以通過 Profile Patch 覆蓋配置項(如關閉基線注入、關閉自動快照、調整日誌條目數等)。
許可證與資源¶
該插件採用 MIT 許可證。它以當前 DSH 進程的權限運行,安裝前建議檢查源碼與許可證。