前言¶
DSH 裏有些兼容問題不一定需要改主程序,可以先用一個可移除的插件繞開。dsh-same-mode-sandbox-noop 是面向 DeepSeek Harness / DSH 0.1.0-rc.6 的兼容插件,由 zhangzujian 維護,用來處理 bash、pwsh、write、edit 等工具調用中出現的冗餘 sandbox_permissions 和 justification 字段。
這是什麼¶
這是一個可移除的 DSH 0.1.0-rc.6 兼容插件。它不替代 DSH,也不新增一套沙箱策略;它只在 DSH 快照並凍結工具參數之前,把已知非升級請求中的冗餘字段移除,然後讓原運行時按現有策略繼續執行。
許可證爲 MIT,要求 Node.js >=22。
核心功能¶
插件會包裝兩個入口:
ctx.tools.execute()- DSH
0.1.0-rc.6Agent Loop scheduler 的準備入口
這些處理發生在 DSH 快照並凍結工具參數之前。對 bash、pwsh、write、edit,當請求的沙箱模式等於或窄於調用會話的有效模式時,插件會移除配對的 sandbox_permissions 和 justification 字段。
以下情況保持原樣傳給 DSH:
- 真正更寬的模式請求
- 未知模式
- 參數配對格式不正確
- 無關工具
- 沒有升級字段的調用
對於已知非升級請求,如果 justification 爲空,插件會在 DSH 校驗之前把它和冗餘權限字段一起移除。對於真正更寬請求,空的 justification 仍留給 DSH 按原規則校驗。插件移除或 disposal 時會恢復原運行時方法。
安裝與啓用¶
先確認本地 Node.js 版本滿足 >=22。下面以 web profile 爲例安裝本地目錄:
git clone https://github.com/zhangzujian/dsh-same-mode-sandbox-noop.git
cd dsh-same-mode-sandbox-noop
npx @deepseek-ai/dsh@0.1.0-rc.6 plugin --profile web add "$PWD"
安裝完成後,重啓 dsh web 讓插件生效。
如果要移除:
npx @deepseek-ai/dsh@0.1.0-rc.6 plugin --profile web remove @zhangzujian/dsh-same-mode-sandbox-noop
典型用法¶
一次性的本地 overlay¶
不安裝到 profile 時,可以在 base bundle 之後加載的 patch 裏按文件 URL 插入插件:
- insert:
- id: same-mode-sandbox-noop
name: file:///absolute/path/to/dsh-same-mode-sandbox-noop/index.mjs
這裏需要把 file:///absolute/path/... 替換爲實際本地路徑。
運行測試¶
單元測試只需要 Node.js:
npm test
集成測試需要指向一個已安裝的 DSH 目錄:
DSH_INSTALL_DIR=/path/to/npx/cache/package npm run test:integration
DSH_INSTALL_DIR 是指向包含 node_modules/@deepseek-ai 的目錄。
適用場景與注意¶
適合在 DSH 0.1.0-rc.6 環境中臨時規避已知非升級請求中的冗餘沙箱字段。它是一個 out-of-tree compatibility workaround;如果 DSH 後續版本在共享沙箱升級層中處理非升級請求,應優先使用 DSH 原生實現。
因爲插件會接入 DSH 的工具執行與調度準備路徑,並以當前 dsh 進程權限運行,安裝前應檢查倉庫源碼、許可證和依賴。許可證爲 MIT,維護者爲 zhangzujian。
GitHub 倉庫:
https://github.com/zhangzujian/dsh-same-mode-sandbox-noop
結尾¶
這個插件的作用面比較窄:只在 DSH 0.1.0-rc.6 的特定路徑中移除已知非升級請求裏的冗餘字段,並保留真正需要升級的請求給 DSH 繼續校驗。如果你正在排查 bash、pwsh、write、edit 調用中的沙箱字段兼容問題,可以先用這個方案做隔離測試。