跳到主内容

dsh-sandbox-escalation-fix

13Star1Fork0Issue0Watching

按会话实时权限动态隐藏工具中无效的沙箱升级参数,解决 All Access 下 OAI 模型反复升级失败循环。

机审证据5/5方法论数据来源安装命令持续维护DSH 版本风险扫描
机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
TypeScript
License
MIT
分支
main
deepseek-harnessdeepseek-harness-plugindeepseek-harness-pluginsdsh-plugindsh-pluginssandbox-escalation

安装

命令web profile
$ dsh plugin --profile web add github:JUSTMONIKA2022/dsh-sandbox-escalation-fix

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 JUSTMONIKA2022/dsh-sandbox-escalation-fix:先查看仓库 https://github.com/HakureiMonika/dsh-sandbox-escalation-fix 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

这是一个 DSH 兼容插件,按当前 Session 的沙箱权限和审批策略,实时调整模型可见的工具参数和说明,解决在 All Access 下 OAI 系列模型反复触发 sandbox_permissions / justification 升级校验失败而陷入重试循环的问题。

核心能力

  • 动态隐藏无效升级字段:按 Session 当前的 Sandbox Mode 和 Approval Policy,把模型不需要也不应该看到的 sandbox_permissions 与 justification 参数从工具 Schema 中剔除
  • 精确同模式参数归一化:仅在模型发来与当前模式完全一致的冗余升级请求时,静默删除这对参数并按普通调用放行,不改变更窄/更宽等其它请求
  • 同步清理描述和结果中的升级提示:从 Shell 工具说明尾部、文件工具结果以及 job_output 中过滤已不再可执行的"升级可用"提示
  • 监听 Agent/Preset/工具生命周期,自动接入和退出包装,限制解除后无需重建 Agent 即可恢复
  • 启动时校验 DSH 包版本一致性,避免混装导致运行期行为不一致
  • 与实现 dsh.tool-wrapper.v1 协作协议的同类包装插件按优先级链式协作

技术实现

  • 语言: TypeScript
  • 关键依赖: @deepseek-ai/cordis、@deepseek-ai/dsh-agent、@deepseek-ai/dsh-sandbox、@deepseek-ai/dsh-sandbox-policy、@deepseek-ai/dsh-tools
  • 架构模式: Cordis 插件,启动时通过 cordis.patch.yml 将自身注册为 sandbox-escalation-fix 节点;Supervisor 监听 agent/created、agent/disposed、agent-preset/selected、tools/change 事件,按 Agent 维护一个 bash / pwsh / write / edit 的包装绑定,优先尝试协作协议 Symbol.for('dsh.tool-wrapper.v1'),否则回退到自有 WrapperBinding 注册到 agent.ctx.tools 精确作用域
  • 入口文件: src/index.ts(构建产物 lib/index.mjs)

适用场景

DSH 用户使用 OAI 系列第三方模型(典型如 GPT)在 All Access(danger-full-access + approval=never)或权限边界会话中执行 bash、pwsh、write、edit 工具时,模型反复发送同模式/空 justification 升级请求导致工具失败并陷入重试循环。Code Mode 与 Native Tool Call 表现不一致,或者 Preset 动态调用 agent.ctx.tools.restrict() 后需要 Agent 重建才能恢复包装时,本插件通过 Schema 投影的方式让模型在请求阶段就看不到这些不可能成功的参数,从根源上消除循环。

前置依赖与兼容性

依赖最低版本说明
@deepseek-ai/cordis4.0.1插件运行时
@deepseek-ai/dsh-agent / dsh-llm / dsh-sandbox / dsh-sandbox-policy / dsh-scope / dsh-session / dsh-tools / dsh-user-approval0.1.0-rc.5、0.1.0-rc.6、0.1.0-rc.7、0.1.0-rc.8、0.1.1-rc.1同一 Profile 内必须保持单一版本,启动时强制校验
@deepseek-ai/schemastery3.18.1Schema 声明
Node.js^22.19.0 || >=24.0.0engines 声明
平台跨平台未声明 os/cpu 限制

安装方式

dsh plugin --profile web add --allow-build=dsh-sandbox-escalation-fix github:JUSTMONIKA2022/dsh-sandbox-escalation-fix

配置项

配置类型说明默认值
logLevel'silent' | 'info' | 'debug'控制插件自身日志输出;'silent' 表示完全静默,'info' 输出启动提示和动态协调警告,'debug' 输出更详细的协调过程'info'

常见问题

Q: 安装后还需要修改任何配置吗?

A: 不需要,本插件是零配置设计。安装到当前 DSH Profile 后重启 DSH 即可,插件会按每个 Session 当前的 Sandbox Mode 与 Approval Policy 自动调整模型可见的工具参数。

Q: 它会修改 DSH 的安全校验逻辑吗?

A: 不会。严格变宽检查、审批流程、一次性授权语义都保持原样,插件只做模型可见面的参数投影和最小兼容处理,不会自动批准任何升级请求,也不会为缺失或空白的 justification 填占位内容。

Q: 卸载插件的命令是什么?

A: 在安装使用的同一 Profile 下执行 dsh plugin --profile <profile> remove dsh-sandbox-escalation-fix,卸载后重启 DSH 即可恢复原始工具行为,所有包装层会随插件生命周期自动释放。

Q: 0.1.1-rc.1 用户还需要这个插件吗?

A: 官方 0.1.1-rc.1 在 approval=never 路径上做了部分运行时改善,但仍使用相同的静态升级 Schema 和执行期校验。如果你仍然看到 invalid justification、同模式 danger-full-access 等错误或模型陷入重试循环,可以安装本插件从 Schema 层面进一步收敛。

Q: 多个 Agent 各自权限不同时,会不会互相影响?

A: 不会。插件按 Agent Exact Scope 独立包装,不同 Session 即使在同一进程内各自按自己的权限状态计算参数,互相不会污染;中途切换权限后,下一次模型请求的工具 Schema 会立即按新状态重新计算。

Q: 启动时报版本错误怎么办?

A: Profile 内的 @deepseek-ai/dsh-* 包必须保持版本一致,且必须落在白名单 0.1.0-rc.5、0.1.0-rc.6、0.1.0-rc.7、0.1.0-rc.8 或 0.1.1-rc.1 中的某一个。混装或未知版本会被插件拒绝启动,错误信息会列出实际检测到的版本组合。

Q: 另一个插件也包装了 bash/pwsh/write/edit 怎么办?

A: 取决于对方是否实现 Symbol.for('dsh.tool-wrapper.v1') 协作协议。已实现的可以按 priority + owner 稳定排序链式协作;未实现的同名工具注册会被本插件明确拒绝,避免静默改变包装顺序或产生错误语义,此时需要卸载其中一个插件。

Q: 升级字段仍然出现怎么办?

A: 确认查看的是安装后新建 Session 的 Schema(旧 Session 沿用安装前的工具定义),并通过 dsh --profile <profile> --dump-config 确认 sandbox-escalation-fix 层与 Bundle 行都存在;若仍有后加载的插件替换同名工具,按上一个问题处理。

上手难度

入门 — 零配置、零运行期干预,安装到 Profile 并重启 DSH 即可生效,失败时仅在启动日志或协调警告中给出明确错误信息。

已知问题与限制

  • 仅包装四个内置工具:bash、pwsh、write、edit;其它工具不在覆盖范围
  • 目标工具必须满足 Schema 约束:同时声明 sandbox_permissions 和 justification 两个字段,或同时省略,只声明其中一个会在注册时被拒绝
  • 运行期被替换为不兼容定义(缺字段、output 契约残缺)的目标工具,仅让对应 Agent 的对应工具进入休眠并记录警告,不会终止 Host 进程;兼容定义恢复后自动重新接入
  • 仅支持 DSH 0.1.0-rc.5 至 0.1.1-rc.1 之间且版本一致的部署,其它版本会拒绝启动
  • 当 approval 策略为 never 时,任何升级目标都会被隐藏,模型走不到审批流程(此为既有安全语义,非本插件引入)
  • 暂未发现源码内 TODO/FIXME 标记的未解决问题

查看使用指南 →

该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/JUSTMONIKA2022/dsh-sandbox-escalation-fix)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录