前言¶
在 DeepSeek Harness(DSH)裏用 GPT 等第三方模型跑 Agent 時,常見一類失敗:會話已是 All Access(danger-full-access + approval=never),模型卻仍從 bash、pwsh、write、edit 的 Schema 裏看到 sandbox_permissions 和 justification,填參後在校驗階段被拒,然後換參數重試,陷入循環。
DSH 0.1.0-rc8、0.1.1-rc.1、0.1.1-rc.2 通過 approval=never 的運行時提示做了部分改善,但工具註冊仍暴露靜態升級字段,執行期校驗邏輯未改;0.1.1-rc.2 的更新集中在圖像處理,與本問題無關。下面介紹社區插件 dsh-sandbox-escalation-fix:按每個 Session 的即時 Sandbox Mode 與 Approval Policy 投影模型可見 Schema,零配置安裝到 Profile 後即可生效。
這是什麼¶
dsh-sandbox-escalation-fix 由社區維護者 JUSTMONIKA2022 發佈,分類爲 admin-security,當前包版本 0.1.1-rc2,許可證 MIT。它是獨立社區插件,不由 DeepSeek 官方發佈或背書,也不修改 DSH 核心包。
一句話定位:讓 DSH 只向模型展示當前會話真正能用的沙箱升級選項,並在執行前對同模式冗餘升級請求做最小兜底。
若你遇到過下列錯誤,README 標明插件即針對此類場景:
Error: invalid justification: expected a non-empty sentence
Error: sandbox escalation to "danger-full-access" is not strictly wider than this call's current "danger-full-access" mode
Error: sandbox escalation to "workspace-write" is not strictly wider than this call's current "danger-full-access" mode
核心功能¶
按會話動態投影工具 Schema¶
DSH 工具註冊時公開靜態升級字段,但真正可請求的升級目標取決於 Session 當前的 Sandbox Mode 與 Approval Policy。本插件在 Agent Exact Scope 內按即時狀態投影模型可見參數:
| 當前模式 | 審批策略 | 模型看到的結果 |
|---|---|---|
read-only |
ask |
workspace-write、danger-full-access |
workspace-write |
ask |
僅 danger-full-access |
danger-full-access |
ask |
不展示升級參數 |
| 任意模式 | never |
不展示升級參數 |
投影覆蓋 bash、pwsh、write、edit;Native Tool Call 與 Code Mode SDK 讀取同一份定義,避免「一邊修好、另一邊仍誤導模型」。
執行期最小兜底¶
當 requestedMode === effectiveMode 時,包裝器刪除冗餘的 sandbox_permissions 與 justification 後委託原工具執行。降級請求、非法目標、缺失配對參數和真實升級請求仍交給 DSH 原有校驗;插件不自動填充虛假 justification,不繞過 approveEscalation() 的嚴格變寬檢查。
清理矛盾的升級提示¶
會話無合法升級目標時,插件會裁剪 Shell 工具描述中的升級引導段落,並清理 Shell、文件工具、job_output 結果裏已不成立的 escalation available 提示,避免參數 Schema、工具描述與失敗輸出互相矛盾。
生命週期與多 Session 隔離¶
插件按 Agent/Session 獨立包裝,監聽 Agent 創建、銷燬、Preset 切換與 agent.ctx.tools.restrict() 等事件;動態限制解除後無需重建 Agent 即可恢復投影。同一進程內不同 Session 互不影響。README 記載自動測試 28 項,覆蓋 Schema 投影、Code Mode SDK、動態限制、多 Agent 隔離與卸載等路徑。
安裝與啓用¶
安裝前建議先在實際 Profile 上覆現同類錯誤;DSH 0.1.0-rc8 / 0.1.1-rc.1 / 0.1.1-rc.2 用戶尤應先觀察內置行爲,確認仍有問題再安裝。安裝或升級前須完全關閉 DSH。
命令行安裝(推薦)¶
README 建議從可信倉庫鎖定 Commit SHA,安裝到指定 Profile:
dsh plugin --profile <profile> add github:JUSTMONIKA2022/dsh-sandbox-escalation-fix#<commit-sha>
將 <profile> 換成實際 Profile 名(如 web),<commit-sha> 換成你審覈過的提交哈希。Git 安裝會運行包的 prepare 構建腳本;pnpm 10 首次可能拒絕執行,按 DSH 輸出在該 Profile 的 pnpm-workspace.yaml 中加入:
allowBuilds:
dsh-sandbox-escalation-fix: true
然後重新執行安裝命令,並用下列命令確認插件層已加載:
dsh --profile <profile> --dump-config
輸出中應包含 dsh-sandbox-escalation-fix 層和 sandbox-escalation-fix 行。
Release 一鍵安裝(Windows)¶
0.1.1-rc1 Release 包提供 install-release.ps1 與 .tgz,適用於 DSH rc5、rc6、rc7、rc8、0.1.1-rc.1、0.1.1-rc.2。在 Release 目錄打開 PowerShell,安裝到默認 web Profile:
powershell -NoProfile -ExecutionPolicy Bypass -File ".\install-release.ps1"
腳本定位同目錄唯一的 .tgz 並執行 dsh plugin --profile web add <tgz-absolute-path>。安裝到其他 Profile 時加 -Profile headless 等參數。完成後重啓 DSH。
卸載¶
dsh plugin --profile <profile> remove dsh-sandbox-escalation-fix
卸載後再次執行 --dump-config,確認輸出中不再出現 dsh-sandbox-escalation-fix 層。
典型用法¶
插件爲零配置:安裝到實際使用的 Profile 後,按原方式啓動即可,無需改模型配置、Sandbox Mode 或 Agent Preset:
dsh --profile <profile>
驗證修復時,README 建議:
- 用安裝插件的 Profile 啓動 DSH。
- 選擇原先在 All Access 下受影響的 OAI 系列模型。
- 將權限設爲 All Access(
danger-full-access+ Approval Policynever)。 - 新建 Session,讓 Agent Scope 在插件已加載狀態下創建。
- 要求模型執行簡單 Shell 命令或寫入工作區文件。
修復生效時,bash、pwsh、write、edit 的模型可見 Schema 不再包含 sandbox_permissions 和 justification;即使模型發送同模式冗餘升級參數,工具也會刪除該對參數後正常執行。
適用場景與注意¶
適合誰: 在 DSH All Access 或 approval=never 下使用 GPT 等第三方模型,且 bash、pwsh、write、edit 因沙箱升級參數在校驗階段反覆失敗的用戶。
版本要求: Node.js ^22.19.0 或 >=24.0.0;@deepseek-ai/dsh-* 支持 0.1.0-rc.5~0.1.0-rc.8、0.1.1-rc.1、0.1.1-rc.2;@deepseek-ai/cordis 4.0.1。混裝不同 rc 版本會拒絕啓動。
安全邊界: 插件不修改 DSH 安裝目錄或核心包,不在 approval=never 時自動批准升級,不授予額外權限。approveEscalation()、審批流程與一次性授權語義保持原樣。
插件協作: 本插件佔用 Agent Exact Scope 中的 bash、pwsh、write、edit。另一包裝插件須實現 Symbol.for('dsh.tool-wrapper.v1') 協議方可鏈式協作;未實現協議時 Agent 註冊會明確失敗,需用戶擇一保留。
安裝前自查: 插件以當前 DSH 進程權限運行,安裝前應閱讀源碼與 MIT 許可證,確認行爲符合你的安全策略。SkillHub 社區目錄(https://www.skillhub.cn/plugins/JUSTMONIKA2022/dsh-sandbox-escalation-fix)爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;訪問時若頁面不可用,可直接以 GitHub 倉庫爲準。
小結¶
dsh-sandbox-escalation-fix 從根因側解決第三方模型在 DSH 下的沙箱升級 Schema 與即時會話狀態不一致問題:按 Session 投影可見參數、清理無效升級提示,並對同模式冗餘請求做剋制兜底。零配置安裝到 Profile 後即可恢復 bash、pwsh、write、edit 的連續調用。
- SkillHub 目錄:https://www.skillhub.cn/plugins/JUSTMONIKA2022/dsh-sandbox-escalation-fix
- GitHub 倉庫:https://github.com/JUSTMONIKA2022/dsh-sandbox-escalation-fix