前言¶
DSH 生态强调「一切皆插件」。在一些自动化流程里,交互式审批是个实际断点:当 agent 需要扩大 sandbox 时,DSH 可能弹出给人看的 allow / deny 提示;如果流程希望无人值守,就需要一个边界清晰的前置审批路径。
dsh-approval-guardian 就是针对这个点做的 DeepSeek Harness(DSH)bundle:它只认领 strict sandbox escalation approvals,把这类请求交给一次性 approval-reviewer agent,并应用其结构化 allow 或 deny。
需要说明:社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系;本文也不把它描述为官方应用商店。
这是什么¶
dsh-approval-guardian 的定位是一个 DSH profile bundle:它拦截真实 sandbox escalation prompts,并把它们路由给专门的审批 reviewer。
它解决的核心问题是:自动化运行中,agent 需要扩大 sandbox 时,原本可能需要人工确认;该插件只处理与本次工具执行相关的 strict sandbox escalation,其他请求继续交给 downstream answerer。
可核实资料中:
- 仓库地址:
https://github.com/karuboniru/dsh-approval-guardian - 目录页:
https://www.skillhub.cn/plugins/karuboniru/dsh-approval-guardian - 许可证:MIT
- 维护者字段:可核实资料未给出 package.json 中的 author/maintainer 字段,因此本文不将仓库路径中的
karuboniru描述为已确认的维护者。
核心能力¶
下面介绍已核实的路由边界。一次工具执行会落入三种情况之一:
- 操作在当前 sandbox mode 内可执行:插件不干预。
- approval 不是由本次工具执行发出,或不是 strict widening:插件调用 downstream answerer,保持 DSH 原有行为。
- 一次 strict sandbox escalation 且与本次工具执行精确相关:插件启动新的 one-shot
approval-revieweragent,并应用其结构化allow或deny。
结果注入方式:
- reviewer 完成后,结果通过
deferContext排队,并注入到匹配的tool/result之后。 - 插件通过
package.json中的dsh.bundle.patch注册,指向cordis.patch.yml。
失败模式:
failureMode支持fail-closed和fallback-to-user。fail-closed:reviewer timeout、unavailable 或 invalid output 时返回unavailable。fallback-to-user:只在 reviewer failure 时把请求交回 downstream answerer。- 显式
deny是最终决定,在两种模式下都不回落到用户。
安装与启用¶
先确认运行环境:
- Node.js:
^22.19.0或>=24.0.0 - pnpm
- peer packages:
@deepseek-ai/cordis ^4.0.1,以及^0.1.0-rc.5的 DSH packages - 已核实对照 DSH CLI
0.1.0-rc.6
安装已发布包:
dsh plugin --profile <profile-name> add dsh-approval-guardian@0.1.1
这一步会把插件注册到指定 profile。插件通过 package.json 的 dsh.bundle.patch 指向 cordis.patch.yml,安装后重启 DSH surface 即可加载。
如果从本地 checkout 安装:
pnpm install
pnpm run build
dsh plugin --profile web add .
Git 安装会执行 prepare script。pnpm 10+ 可能需要在目标 profile 的 pnpm-workspace.yaml 中允许该包运行 build scripts。
升级:
dsh plugin --profile <profile-name> add dsh-approval-guardian@<new-version>
禁用:在 profile 的 cordis.patch.yml 中设置 id approval-guardian 为 disabled: true,然后重启:
- id: approval-guardian
disabled: true
移除:
dsh plugin --profile <profile-name> remove dsh-approval-guardian
如果之前添加过 profile-level override,也移除对应 approval-guardian 块,然后重启。
典型用法与配置¶
最小安装后即可使用。需要定制部署策略时,在 profile 的 cordis.patch.yml 中覆盖同一个 id。已核实的配置点包括:
prompt:可承载 deployment-specific security policy;如果包含内部规则,不要放入公共仓库。provider与model:必须同时提供或同时省略;只提供一个属于配置错误,插件会拒绝启动。failureMode:选择fail-closed或fallback-to-user。- 模型供应商凭据由 DSH 的 model routing 管理,该插件没有插件专属环境变量。
示例形态(仅列出已核实字段):
- id: approval-guardian
config:
prompt: |
- Deny operations that touch protected paths unless the user explicitly names them.
provider: <provider-id>
model: <model-id>
failureMode: fail-closed
说明:示例中的 prompt、provider、model、failureMode 均属于已核实资料中出现的配置项;示例中的占位值需要按部署环境替换。
适用场景与注意¶
适合:
- 希望 automation 中避免人工弹窗的 strict sandbox escalation 审批。
- 希望 reviewer 使用结构化
allow/deny,失败时有明确 fallback 的团队。 - 只对真实 sandbox 扩大请求做前置策略,不替代 general approval policy 的场景。
注意:
- 不要期望它处理 sandbox 内可执行的普通操作;这类操作不进入该流程。
- 非 strict、非本次工具执行相关的 approval 会继续到 downstream answerer。
- 插件以当前
dsh进程权限运行;安装前应检查源码、许可证和依赖版本。 prompt可能包含内部安全规则,公共仓库中应避免写入。- 可核实资料中 README 的
Permissions & data段落被截断,完整数据读取行为未确认;使用前请自行核对源码和运行日志。 dsh-approval-guardian不是 general approval-policy replacement;它只认领 genuine sandbox widening requests,其他请求交给下游 answerer。
结尾¶
dsh-approval-guardian 的价值比较具体:把 DSH 中真实出现的 strict sandbox escalation approvals 路由到一次性 reviewer,并保持结构化 allow / deny 与失败回退边界清晰。它适合需要无人值守、可解释审批路径的 DSH profile,也适合希望保留原有 interactive answerer 作为 fallback 的团队。
目录页:
https://www.skillhub.cn/plugins/karuboniru/dsh-approval-guardian
GitHub:
https://github.com/karuboniru/dsh-approval-guardian