dsh-scratch-workspace:DSH 會話級沙箱隔離與草稿目錄清理

前言

在 DeepSeek Harness(DSH)裏並行開多個 Agent 會話,或直接在默認工作區即興提問時,常見問題是:所有會話共用同一工作區根目錄,產物互相覆蓋;舊式隔離方案依賴 DSH 內部私有 API,在 0.2.x 升級後容易報錯;即興會話留下的臨時文件又很少被自動清理。下面介紹社區插件 dsh-scratch-workspace(維護者 MDX-Tom,分類 admin-security),它按 DSH 原生工作區規範做物理寫隔離、側邊欄歸集,並帶磁盤生命週期回收。

這是什麼

dsh-scratch-workspace 是 DSH 插件,npm 包名同爲 dsh-scratch-workspace,當前資料記載版本 0.1.4,MIT 許可證,要求 Node.js 22+,並標註 Cordis Ready。源碼倉庫:MDX-Tom/dsh-scratch-workspace。插件目錄頁:SkillHub 插件條目。

一句話定位:爲每個需要隔離的會話分配獨立子沙箱,寫入收斂於 session-<id> 子目錄,項目在會話側只讀可用;同時在側邊欄把會話掛在母工作區下,並用 GC 清理空閒與孤兒目錄。

核心功能

物理寫沙箱與只讀項目

在已開啓隔離的工作區裏,新會話會動態創建 session-<shortId>(README 示意圖中爲 session-<標題>-<ID>)子目錄,並重定向會話寫入邊界。既有項目文件對會話只讀,可降低並行重構、分析或測試時的互相踩踏。

版本自適應

相對依賴 sessionPath 的傳統補丁(如 README 中提到的 dsh-session-isolation),本插件同時適配 DSH 0.2.x+(包裹 candidateMatches(id, path),將沙箱路徑映射到母工作區)與 0.1.x(保留對 sessionPath / rememberSessionPath 的適配)。資料還說明會在客戶端複用帶歷史根路徑的空白會話時,解除路徑認領綁定,以緩解 ApiSessionCwdConflict。

側邊欄歸集

會話在界面上仍歸屬母工作區樹,而不是散落成 Ungrouped 孤兒項,便於多會話並行時保持側欄結構可讀。

磁盤生命週期 GC

資料記載的三類策略:

  1. 實時釋放:監聽會話刪除,刪除對應沙箱目錄。
  2. 空閒回收:創建超過 5 分鐘且無實際文件產出的空沙箱,靜默清理。
  3. TTL 孤兒掃描:後臺每 30 分鐘檢查,清理已無活動會話對應且超過 24 小時的孤兒目錄。

交互入口

  • 聊天內 Slash:/scratch 或 /isolate,子命令包括 status、enable、disable、gc。
  • 根目錄標記文件 .dsh-isolate:普通工程可持久開啓隔離。
  • default-workspace:README 寫明內置免配置自啓,無需手動放標記。
  • LLM 工具 session_isolation:action 可取 enable、disable、status、gc。

安裝與啓用

插件以當前 DSH 進程權限訪問磁盤;安裝前建議瀏覽倉庫源碼並確認 MIT 許可證與行爲是否符合你的環境策略。

從 npm 安裝(README 推薦)

dsh plugin add dsh-scratch-workspace

也可在 Profile 裏用包管理器安裝:

pnpm add dsh-scratch-workspace

通過 Git URL 安裝

dsh plugin --profile desktop add https://github.com/MDX-Tom/dsh-scratch-workspace.git

在 DSH Profile 目錄(示例 ~/.dsh/profiles/desktop)中:

cd ~/.dsh/profiles/desktop
pnpm add "link:/path/to/dsh-scratch-workspace"

然後將 dsh-scratch-workspace 加入該 Profile 的 package.json 裏 dsh.profile.bundles 列表,並重啓 DSH。

典型用法

先做狀態查看,再按需開關隔離或手動 GC。

  1. 在輸入框輸入 /scratch status,查看母工作區映射與草稿目錄路徑(README 提供狀態看板截圖說明)。
  2. 對當前工程需要隔離時執行 /scratch enable(會寫入 .dsh-isolate);不需要時 /scratch disable。
  3. 磁盤堆積明顯時執行 /scratch gc,立即跑一輪空閒與孤兒目錄回收。

若使用 Agent 工具而非 Slash,可讓模型調用 session_isolation,action 與上述子命令對應。插件行爲摘要也可在 DSH 側邊欄 插件 → dsh-scratch-workspace 中查看。

適用場景與注意

適合誰:經常在同一項目上開多個 DSH 會話、或大量使用 default-workspace 即興提問,且希望寫操作物理隔離、側欄仍按工作區歸集的開發者。

注意:

  • 隔離只解決「寫入邊界」與清理策略;敏感代碼仍應按你們團隊規範做權限與審計,不要誤以爲沙箱等同安全合規邊界。
  • GC 會刪除符合條件空閒/孤兒沙箱目錄;若有未同步產物,先確認文件已提交或已拷出再開 gc。
  • DSH 小版本架構變動時,仍需關注插件 release 說明;README 強調「永久兼容」是相對舊私有 API 補丁而言的設計目標,升級 DSH 後建議跑一遍 /scratch status 與並行會話冒煙。

開發者:運行測試

倉庫內置基於 Node.js 原生 test runner 的單元測試:

cd "dsh-scratch-workspace"
node --test "tests/*.test.js"

結尾

dsh-scratch-workspace 把會話寫入放進獨立 session-* 子目錄、母工作區側欄歸集和自動 GC 合成一套流程,針對多會話踩踏、0.2.x 兼容性和磁盤殘留三類問題給出可復現的操作路徑(Slash、.dsh-isolate、default-workspace 自啓)。詳情見 SkillHub 目錄頁 與 GitHub 倉庫。

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

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

小夜