DeepSeek Harness (DSH) 的默認文件沙箱限制寫入權限僅限於會話的工作目錄(cwd)。如果需要在已註冊的其他工作區目錄下寫入文件,通常需要通過沙箱提升權限。這增加了開發智能體或操作工作區時的配置負擔。
dsh-multi-workspace 是一個爲 DeepSeek Harness 設計的插件,由維護者 somnusovis 開發。它的核心作用是自動賦予已註冊的所有工作區文件寫入權限。
核心功能¶
該插件通過兩層機制實現多工作區寫入:
- 擴展沙箱策略:在每次沙箱策略檢查時讀取實時的工作區註冊表,將每個已註冊工作區的路徑注入到
sandboxPolicy.resolve()中。 - 文件系統重試:包裝
fs.writeText和fs.editText,在遇到寫入拒絕時,嘗試使用目標工作區的根路徑進行靜默重試。
安裝與啓用¶
使用官方插件安裝命令添加該插件:
dsh plugin --profile web add github:somnusovis/dsh-multi-workspace
安裝完成後,需要重啓 DSH Web 服務並刷新瀏覽器。
典型用法¶
在 DSH UI 中添加一個工作區後,直接使用文件寫入工具(如 fs.writeText 或 editText)即可對該工作區進行操作,無需額外的配置步驟。
注意事項與限制¶
-
Shell 命令範圍受限
該插件僅擴展了文件系統工具的寫入範圍。底層的命令沙箱(@deepseek-ai/dsh-sandbox-local)仍只讀取單一的policy.workspaceRoot。因此,pwsh或bash等命令在會話目錄外執行寫入仍會被拒絕。 -
靜默重試與信任機制
文件寫入失敗時,插件會在workspace-write權限下靜默重試,跳過審批流程。這意味着插件以當前 DSH 進程的權限運行。使用前,請務必確保已註冊的工作區是可信的。 -
API 返回值要求
被包裝的resolve()函數必須返回一個純對象(Plain Object),包含mode、workspaceRoot和sessionId等自有屬性。如果返回值依賴原型鏈繼承,執行器在展開對象時可能會丟失這些關鍵鍵,導致運行時錯誤(如SANDBOX_UNAVAILABLE)。
總結¶
dsh-multi-workspace 解決了 DSH 默認沙箱僅支持單工作區寫入的限制。對於需要頻繁在多個工作區之間切換並直接寫入文件的開發場景,該插件通過自動注入路徑和靜默重試機制簡化了操作流程。