shared-handoff-dsh:DeepSeek Harness 的跨平臺任務狀態管理與會話交接

在 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

核心功能

插件包含兩個主要技能:

  1. 證據驅動的會話交接:支持導出和恢復會話上下文,並在 Codex、Claude 和 dsh 之間共享狀態文件。
  2. 倉庫本地任務 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 進程的權限運行,安裝前建議檢查源碼與許可證。

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

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

小夜