前言¶
DeepSeek Harness(DSH)裏,每個新 Session 都會開在默認工作區裏。宿主在註冊這條工作區時就把路徑釘死;全新安裝時通常是 <Documents>/deepseek-harness/default-workspace,在 Windows 上往往落在系統盤。會話產物(代碼、數據集、緩存等)會持續寫進這個目錄,而內置邏輯寫明宿主不會自動重命名或搬遷已有默認工作區;Remote API 也沒有改 path 的接口。手工改 ~/.dsh/storages/workspace.json 需要重啓,還容易觸發會話日誌 header 的 cwd 與磁盤路徑不一致,Session 從列表裏消失。下面介紹社區插件 dsh-default-workspace(維護者 Elefseus,分類:客戶端),它在這套約束下提供受控的查看、切換與修復能力。
這是什麼¶
dsh-default-workspace 是在運行中的 DSH Host 內操作默認工作區的插件:可檢查當前默認路徑與健康狀態,把默認工作區改到指定絕對路徑(可選搬目錄、遷會話日誌),並對宿主已靜默跳過的日誌做重幀化修復。目標是不重啓、也不用手工編輯 workspace.json 完成上述工作。
- 目錄頁:SkillHub - dsh-default-workspace(社區插件目錄,與 DeepSeek / 幻方無官方從屬關係)
- 源碼與說明:GitHub - Elefseus/dsh-default-workspace
- 許可證:MIT(見倉庫)
- 當前 package 版本:0.1.0;要求 DSH
>=0.1.7-rc.1,README 寫明已在 DSH0.2.1-rc.3上驗證
核心功能¶
插件暴露一個工具 default_workspace,對應三種 action:
| action | 作用 |
|---|---|
status |
查看默認工作區路徑、目錄是否存在、關聯會話數量與正在運行的會話數;並對已存會話日誌做健康掃描(只讀)。 |
switch |
通過宿主存儲域 entity.mutate 改寫工作區記錄,內存與落盤同步,無需重啓;可選 moveFiles 搬舊目錄內容;默認 migrateSessions: true 會把 header 仍指向舊路徑的會話日誌一併遷移。 |
repair |
對「首幀 Zstandard 不是恰好一行 header」、被 listArtifacts 靜默跳過的日誌做重幀化修復。 |
常用參數(摘自 README):
| 參數 | 含義 |
|---|---|
action |
必填:status / switch / repair |
path |
僅 switch:新默認工作區的絕對路徑,不存在會創建 |
moveFiles |
僅 switch:是否搬舊目錄內容,默認 false;舊目錄有活 Session 時會拒絕 |
migrateSessions |
僅 switch:是否改寫 header 並搬日誌,默認 true |
dryRun |
switch / repair:只輸出計劃不改動,默認 false |
安全設計上,switch 與 repair 支持先 dryRun;改寫日誌時只重壓第一幀,其餘幀字節拷貝;校驗通過才替換;舊日誌會 rename 到備份目錄而非刪除;活 Session 不會被遷移,會在結果中列出。
除工具外,插件帶 Web 客戶端面板:側欄「工作區」入口可圖形化執行上述動作。README 說明首次安裝帶 dsh.client 元數據的插件後,需要重啓一次 DSH,面板纔會出現;之後改 lib/client.js 可由 HMR 生效。
可選配置在 cordis.patch.yml 中:sessionsRoot 留空則使用宿主 sessionPersistence 的根(通常爲 ~/.dsh/sessions)。
安裝與啓用¶
在已安裝 DSH 的環境中,官方 README 給出的安裝方式爲:
dsh plugin add https://github.com/Elefseus/dsh-default-workspace
也可按 README 將依賴寫入 profile 的 package.json 並加入 bundle 列表。安裝後若需使用 Web 面板,按文檔重啓一次 Host。
插件以當前 DSH 進程權限讀寫工作區記錄、目錄與會話日誌;安裝前應自行審閱源碼與 MIT 許可證,確認路徑與備份策略符合你的環境。
典型用法¶
在 Session 中調用工具(與 README 示例一致)。先查狀態,再 dry run 預覽切換,確認後再執行:
default_workspace {"action": "status"}
default_workspace {"action": "switch", "path": "D:\\work", "dryRun": true}
default_workspace {"action": "switch", "path": "D:\\work", "moveFiles": true}
default_workspace {"action": "repair", "dryRun": true}
建議順序:先用 status 看清默認路徑與會話/日誌體檢結果;switch 前務必 dryRun: true 覈對計劃(衝突路徑、活 Session、缺失日誌等);需要搬目錄時再設 moveFiles: true。若列表裏缺 Session 而磁盤上仍有日誌,可先用 repair 的 dry run 評估,再執行修復。
適用場景與注意¶
適合以下情況:
- 系統盤空間緊張,希望把默認工作區遷到數據盤,且保留已有 Session 日誌。
- OneDrive 或策略重定向了「文檔」路徑,導致記錄指向的默認目錄不存在。
- 希望新 Session 統一開在固定絕對路徑(例如
D:\work),而不是用戶配置下的默認文檔子目錄。
需要注意:
- 默認工作區依賴桌面的
workspaceRegistry與(遷移日誌時的)sessionPersistence;非桌面或缺少這些服務時能力會受限。 switch會拒絕與已有工作區路徑衝突、或新舊路徑互相嵌套的目標。- 正在運行的 Session 不會隨工作區搬遷;計劃裏會單獨報告,需自行結束或另開 Session。
- README 中的大規模遷移數據(條目數、文件數、體積、會話數)是作者編寫插件時的量級參考,不是你的環境必然結果;以你自己
status/dryRun輸出爲準。
結尾¶
DSH 生態強調「一切皆插件」;dsh-default-workspace 補的是默認工作區路徑在運行時不可改、手改又易損壞會話索引這一缺口。若你正被默認目錄釘在系統盤或日誌打不開困擾,可先安裝插件、用 status 與 dryRun 摸清現狀,再決定是否執行 switch 或 repair。