前言¶
DeepSeek Harness (DSH) 的設計理念是「一切皆插件」。在使用過程中,經常會遇到會話被移動過、或者在工作區目錄尚未創建時就已建立會話的情況。此時,這些會話會被標記爲「未分組」,且在 WorkspaceRegistry 初始化後不再被自動重新收養,從而永久停留在未分組列表中。
dsh-session-reattach 旨在填補這個空白。它不改變會話文件本身,僅通過校驗會話的當前工作目錄(cwd),將其歸屬記錄重新寫入正確的工作區。
插件定位¶
這是一款 DSH 宿主插件,用於解決歷史會話的「歸位」問題。它將游離的會話按 cwd 歸位到匹配的工作區分組中。
核心功能¶
- 只改歸屬記錄:插件僅修改
workspace.json中的歸屬記錄,不觸碰session.l.zstd等會話文件本身。 - 默認 dry-run:爲了安全,默認只進行校驗和報告,不執行寫入,直到顯式開啓寫入模式。
- 支持多種入口:既支持側邊欄的拖拽操作,也支持命令行輸入。
- 零運行時依賴:不依賴任何 DSH 內部包或第三方庫。
安裝與啓用¶
該插件僅支持 web profile。
- 執行安裝命令:
dsh plugin --profile web add dsh-session-reattach
- 安裝完成後,必須重啓
dsh web。宿主插件在啓動時裝配,安裝後不重啓不會生效。
使用方式¶
命令行¶
插件提供三個命令入口,默認處於 dry-run 狀態:
/reattach:僅報告將歸位哪些會話、哪些會話無法歸位及原因,不寫入。/reattach apply:執行歸位寫入操作。/reattach apply subagents:在執行歸位的同時,也處理子代理會話(默認跳過子代理)。
拖拽操作¶
在側邊欄展開「未分組」,按住某個會話行開始拖動。只有 cwd 與工作區目錄完全一致的分組會顯示虛線框,其餘分組顯示禁止光標,拖拽進去鬆手即可歸位。
歸位判定規則¶
插件使用 fs.realpath 將會話的 cwd 與工作區路徑歸一化後進行比較。只有路徑完全一致纔會進行歸屬。歸位前會先從其他工作區清除該會話的舊槽位,避免雙歸屬錯誤。
注意事項¶
- 默認安全策略:所有歸位操作默認不寫入,必須顯式傳入
false或使用apply參數。 - Web Profile 限制:僅支持 web profile,安裝後必須重啓
dsh web。 - 路徑一致性:歸位的前提是
cwd存在且有效。如果目錄被刪除、重命名或不可訪問,會話將被跳過。 - 子代理處理:默認跳過子代理會話,除非顯式指定
apply subagents。 - 文件安全:插件不修改會話文件本身,只修改歸屬記錄,不會造成數據丟失或內容篡改。
總結¶
dsh-session-reattach 是一個輕量級的修復工具,專門處理 DSH 中因歷史原因導致的會話歸屬錯位。通過拖拽或命令行,可以快速將游離會話歸位到正確的工作區,保持側邊欄結構的整潔。