前言¶
DSH 支持以插件方式擴展工具調用行爲。下面介紹一個社區插件:dsh-gpt-perm-strip。
在 DSH 中,工具調用參數可能包含 sandbox_permissions 或 justification。DSH 對 sandbox escalation 的要求是:這些權限字段必須嚴格寬於當前會話。相同或更窄的字段會直接失敗,例如:
sandbox escalation to "danger-full-access" is not strictly wider than this call's current "danger-full-access" mode
GPT 系列模型有時會在當前會話已有相應權限時,仍發送這些字段。dsh-gpt-perm-strip 是一個僅針對 GPT 系列模型運行的 DeepSeek Harness 插件,它在工具執行前移除不嚴格寬於當前會話的 sandbox_permissions / justification。
這是什麼¶
dsh-gpt-perm-strip 由 FengLingYaaa 維護,包名爲 dsh-gpt-perm-strip,許可證爲 MIT,倉庫版本爲 0.1.0。
它解決的是 GPT 系列模型在工具調用中攜帶“非升級型”sandbox 權限字段時,觸發 DSH sandbox escalation 檢查失敗的問題。插件只處理 GPT 系列模型,不改變非 GPT 模型的權限參數。
核心功能¶
下面是該插件已覈實的行爲邊界。
- 按
model id而不是 provider 匹配 GPT 系列模型。README 中給出的匹配示例包括gpt-4o、gpt-5.6-sol、chatgpt-4o-latest、openai/gpt-4.1、ft:gpt-4o:…。 - 在 DSH sandbox escalation check 前,移除不嚴格寬於當前會話的
sandbox_permissions/justification。 - 保留真實權限升級,例如從
workspace-write到danger-full-access,以及從read-only到workspace-write。 - 通過
includeOpenAiReasoning將o1/o3/o4視爲 GPT 系列;該配置默認開啓。 - 除非配置
extraModelPatterns,否則忽略 Grok 和 DeepSeek。 - 由於
tools/pre-execute不能重寫凍結參數,插件包裝每個工具的execute,並傳入移除多餘字段後的克隆參數對象。 permission/permissions只有在值爲已知 sandbox mode 時,才被視爲 sandbox 字段。- 持久
tool/call記錄仍會顯示模型最初輸出的內容;插件隻影響執行前進入 DSH 檢查的參數對象。
安裝與啓用¶
插件運行環境要求 Node >=22,可選 peer dependency 爲 @deepseek-ai/cordis >=4.0.0。
如果從 GitHub 安裝,先執行下面命令。該命令會把指定 GitHub 倉庫作爲 DSH 插件添加到 web profile:
dsh plugin --profile web add github:FengLingYaaa/dsh-gpt-perm-strip
如果本地查看源碼或做改動,可以按下面步驟安裝:
git clone https://github.com/FengLingYaaa/dsh-gpt-perm-strip.git
cd dsh-gpt-perm-strip
pnpm install
pnpm test
pnpm build
dsh plugin --profile web add .
注意:該插件會在當前 dsh 進程內包裝工具執行邏輯。安裝前應檢查源碼、依賴和許可證。本文給出的信息以倉庫資料爲準。
配置¶
下面是 README 中給出的默認配置。
| 字段 | 默認值 | 含義 |
|---|---|---|
includeOpenAiReasoning |
true |
將 o1 / o3 / o4 視爲 GPT 系列 |
extraModelPatterns |
[] |
對 provider、model 或 provider/model 追加正則匹配 |
injectPrompt |
true |
爲 GPT 系列相關運行上下文注入提醒 |
logStrips |
true |
將每次移除記錄爲 [gpt-perm-strip] stripped … |
默認情況下,Grok 和 DeepSeek 會被忽略;只有添加 extraModelPatterns 後,纔可能納入額外模型。
典型行爲¶
下面是同一插件在不同會話權限下的結果。
| 當前會話權限 | GPT 工具參數 | 結果 |
|---|---|---|
danger-full-access |
sandbox_permissions: danger-full-access |
移除,調用繼續 |
workspace-write |
sandbox_permissions: workspace-write |
移除 |
workspace-write |
sandbox_permissions: danger-full-access |
保留,屬於真實升級 |
read-only |
sandbox_permissions: workspace-write |
保留,屬於真實升級 |
| 非 GPT 模型 | 任意權限字段 | 保持不變 |
也就是說,插件只移除“相同或更窄”的 sandbox 權限字段;如果字段代表從當前會話到更高權限的升級,則保留給 DSH 的 escalation 檢查處理。
適用場景與注意¶
適合以下場景:使用 GPT 系列模型,當前 DSH 會話已經具備某些 sandbox 權限,且模型仍會發送 sandbox_permissions / justification。它可以幫助避免相同權限字段觸發 escalation 失敗,同時保留真實升級。
需要注意:
- 它只針對 GPT 系列模型,不處理 Grok、DeepSeek,除非通過
extraModelPatterns顯式擴展。 - 它不會改寫模型輸出本身;持久
tool/call記錄仍會顯示模型最初輸出的內容。 - 它是社區插件,不是 DeepSeek 或幻方官方應用商店中的官方應用;安裝前建議自行審查源碼。
- DSH 的插件機制允許擴展工具調用行爲,但權限清理仍應放在可審計的配置與源碼範圍內。
結尾¶
dsh-gpt-perm-strip 的作用範圍較小:它只在 GPT 系列模型執行工具調用前,移除不嚴格寬於當前會話的 sandbox_permissions / justification,從而減少因相同或更窄權限字段導致的 escalation 失敗,同時保留真實權限升級。
GitHub 倉庫:https://github.com/FengLingYaaa/dsh-gpt-perm-strip
社區目錄頁:本次已覈實資料未提供可直接列出的目錄頁 URL;可按插件名 dsh-gpt-perm-strip 在 DSH 社區目錄中檢索。