前言¶
DeepSeek Harness(DSH)按會話頭裏的 cwd 把會話歸屬到工作區。當文件夾被改名、刪除或移走後,路徑對不上,會話就不再出現在任何工作區分組裏——文件還在、日誌還完整,但界面上找不到了。
dsh-workspace-heal 是 DSH 的一個插件,用於處理這種情況:自動重建被誤刪的空目錄,以及把失去歸屬的會話摺疊成摘要,導入到新會話中作爲上下文。它不會改寫會話日誌。
插件定位¶
- 維護者:nlflora
- 分類:記憶
- 核心能力:工作區目錄自愈、會話上下文摘要導入
- MIT 許可證
- GitHub 星標:1
安裝¶
從 npm 安裝(推薦):
dsh plugin --profile <你的 profile> add dsh-workspace-heal
改本地代碼時,從目錄安裝(link: 方式,改動即時生效):
dsh plugin --profile <你的 profile> add /absolute/path/to/dsh-workspace-heal
也可以在 DSH 的插件管理器裏安裝。裝完無需重啓即可激活(HMR)。
使用方式¶
插件的全部能力通過一個工具暴露:workspace_heal。
| action | 參數 | 作用 |
|---|---|---|
status |
— | 工作區清單:路徑、目錄狀態、綁定會話數;外加孤兒會話數量 |
list |
limit? |
列出失去歸屬的會話(sessionId / 原 cwd / 創建時間 / 事件數 / 大小) |
preview |
sessionId, maxChars? |
返回該會話的摘要,先給用戶看 |
import |
sessionId, maxChars? |
返回帶標記的摘要正文,貼進對話即成上下文 |
heal |
— | 立即執行一次檢查與重建,不等定時器 |
典型流程:
你 → 幫我把舊會話的上下文遷到新工作區
模型 → workspace_heal({ action: 'list' })
模型 → workspace_heal({ action: 'preview', sessionId: 'session-…' })
你 → 就這個
模型 → workspace_heal({ action: 'import', sessionId: 'session-…' })
配置¶
在 cordis.patch.yml 裏按 id workspace-heal 覆蓋:
- id: workspace-heal
config:
autoHeal: true # 關掉就只保留工具(拿不準時先設 false)
intervalSeconds: 60 # 檢查間隔,最少 10 秒
digestMaxChars: 1800 # 單個摘要的字符上限
autoHeal 默認是 true:插件每 60 秒檢查一次,命中條件時會真的往磁盤 mkdir。三重條件很窄,但如果你希望”我沒明確要求之前什麼都別寫”,先把 autoHeal 設成 false,需要時手動調 workspace_heal({ action: 'heal' })。
判定規則¶
什麼時候重建目錄:三個條件同時成立才動手。
workspace.status() === 'missing-dir'- 該工作區
sessionIds.length > 0(仍綁定着會話) mkdir沒拋錯
沒有會話綁定的空文件夾被刪掉,永遠不重建。手動建的臨時目錄、清掉的空殼,插件不會復活它們。
什麼算孤兒會話:header.cwd 有值,且不等於任何已註冊工作區的規範化路徑,且不是 origin: 'subagent' 的子代理會話。
注意:這跟界面上的「丟會話」不是一回事。界面丟會話多半是索引沒收錄,但 cwd 仍然匹配現存工作區——那種走 heal,不走遷移。
邊界與保證¶
- 舊會話日誌只讀。不做幀級改寫、不搬遷會話目錄、不碰
session.v4.jsonl.zstd。 - 唯一的寫操作是
mkdir,且僅限上面那三個條件。 - 摘要是有損的:用於接着幹活,不是逐字恢復。
- 摘要來自會話日誌裏的
user/message/assistant/message/tool/call;運行時注入塊會被剔除(<system-reminder>、[MNEMON]快照、Current runtime context等),所以「最近的請求」裏不會出現系統塞進去的上下文。 - 讀會話走
sessionPersistence的只讀句柄,取頭尾各一段,不會把 13 MB 的日誌整個讀進內存。 - 卸載插件不會刪掉它建出來的目錄。重建出來的目錄屬於你的文件系統,卸載後照舊存在;要清理請手動刪。
測試¶
node --check index.js
node test.mjs
19 項斷言,不需要 DSH 環境。其中「自動重建」一組用樁註冊表 + 真實文件系統:會真的建目錄、真的刪掉,最後斷言無殘留。測試目錄建在系統臨時目錄下,跨平臺。
與已有插件的區別¶
同類項目(2026-10 起步,均 MIT):
dsh-plugin-workspace-archive:文件夾消失時歸檔會話,放回來時帶回。它隱藏,本插件重建。dsh-session-mover:幀級改寫 zstd 頭,把會話真正搬到另一個工作區,逐字節校驗 + 全目錄備份。它無損,但要改日誌。dsh-move-session/dsh-session-relocate/dsh-manage-sessions:移動或批量管理會話。
本插件的定位是不碰日誌的那一側:重建優先,遷移用摘要。兩者互補——想要無損搬運請用 session-mover,想要零風險請用這個。
生態背景¶
DSH 理念是「一切皆插件」。社區目錄(SkillHub)是獨立站點,與 DeepSeek / 幻方無官方從屬關係,不是官方應用商店。