前言¶
让智能体在 DeepSeek Harness(DSH)里跑长任务时,审批环节是个两难:每次工具调用都人工确认,任务被频繁打断;完全放开权限,模型的错误命令又没有闸门。折中的做法是引入一个独立的、能力受限的审查代理,让它逐条评估待审批的操作并给出决定。本文介绍的 dsh-approval-auto-review 就是实现这一思路的插件。
这是什么¶
dsh-approval-auto-review 是 DeepSeek Harness 的自动审批审查插件,由 perlied03 维护,许可证为 MIT,当前版本 0.6.1。它处理被路由到所配置权限预设的审批请求:用锁定的 Guardian 代理评估每条请求的确切计划操作,并返回单一的审批决定。
两点定位值得注意。第一,它不创建持久的允许规则,每次决定只适用于单条审批请求,不会形成累积放行。第二,审查行为始终 fail-closed:审查超时按拒绝处理,宁可不放行。
核心功能¶
Guardian trunk 与并发审查¶
每个父代理有一个可复用的 Guardian trunk,审查请求优先走这条路径。trunk 忙时,插件启动独立的临时审查者处理请求,并发审批不会排队。审查者代理使用空的工具允许列表和专属的审查 persona,能力被限制在“读转录、给决定”范围内。
独立的审查者模型路由¶
审查者可以使用与父代理不同的模型:插件级配置 modelProvider 与 model 指定审查路由;也可以通过 modelOverrides 按父模型 id 覆盖 provider 与 model。缺省的路由字段可通过 fallback 配置从父代理继承。
有界的输入输出¶
发送给审查的父转录与工具参数均做长度上限,避免长会话撑爆审查上下文。拒绝理由在进入父转录之前也做长度限制,防止一条冗长的拒绝说明污染父代理的对话。
拒绝熔断与审计¶
重复自动拒绝会触发熔断,终止父回合,避免代理在反复被拒后陷入循环。所有被审查的命令与审查者判定写入持久的 JSONL 审计日志。
安装与启用¶
先安装插件。以 profile web 为例,从 GitHub 安装:
dsh plugin --profile web add github:perlied03/dsh-approval-auto-review
本地 checkout 安装:
dsh plugin --profile web add ./dsh-approval-auto-review
环境要求:Node ^22.19.0 || >=24.0.0,包管理器 pnpm@11.7.0。GitHub 安装会执行包的 prepare 构建;pnpm 10 及以上版本在询问构建许可时,需要在 profile 的 pnpm-workspace.yaml 的 allowBuilds 下加入 dsh-approval-auto-review: true,然后重复上面的安装命令。
主机组合需要提供以下 DSH 服务与插件:
dsh-agentdsh-sessiondsh-settingsdsh-user-approvaldsh-subagent- 按配置名注册的进程内 spawn 与 fork provider
启用方式:在对话的权限菜单选择 Approve for me,后续审批请求即路由给 Guardian;切回 Request approval 则恢复人工决定。
配置示例¶
在 Cordis 组合中注册插件的写法:
import * as ApprovalAutoReview from 'dsh-approval-auto-review'
await ctx.plugin(ApprovalAutoReview, {
provider: 'spawn',
ephemeralProvider: 'fork',
modelProvider: 'deepseek-official',
model: 'deepseek-v4-flash',
fallback: 'parent',
})
等价的 Loader 配置:
- id: approval-auto-review
name: 'dsh-approval-auto-review'
config:
provider: spawn
ephemeralProvider: fork
modelProvider: deepseek-official
model: deepseek-v4-flash
fallback: parent
字段含义:provider 是可复用 Guardian trunk 使用的子代理 provider;ephemeralProvider 是并发一次性审查使用的 provider;modelProvider 与 model 指定审查者的模型路由;fallback 设为 parent 时,缺失的路由字段从父代理继承。不需要并发路径的部署,两个 provider 可以填同一个名字。
审计相关的行为:audit 控制是否记录每条终局审查结果;auditPath 指定审计文件路径,在挂载时固定,修改需重启后生效。
审查策略¶
Guardian 只评估审批请求所提供的确切操作,不扩大审查范围。授权证据的分级是明确的:用户的直接消息与 AGENTS.md 显式加载的内容为可信授权证据;助手消息、工具调用/结果、文件内容、命令输出以及普通插件上下文均视为不可信。也就是说,模型自己在对话里生成的“用户已同意”之类的表述,不会被当作放行依据。
Web 界面¶
插件提供两处 Web 界面:
- 设置页 Plugins 区的 Automatic approval review 卡片,用于调整审查者的模型路由。
- 对话头部的只读 Review 标签页,用于查看当前会话的审查记录与审查者判定。该标签页需要
dsh-host-webserver提供只读审计路由;audit设为off时历史为空。
适用场景与注意¶
适合在 DSH 上跑长任务、希望减少逐条人工审批打断、同时又不想完全放开权限的开发者。它把审批决定交给一个受约束的审查代理,并保留了完整的审计与熔断兜底。
使用前注意几点:
- 插件以当前 dsh 进程的权限运行,安装前应检查源码与许可证(MIT)。
- 行为始终 fail-closed:超时的审查按拒绝处理。
- 不创建持久允许规则,每次决定只作用于单条审批请求。
auditPath在挂载时固定,改路径需要重启后生效。
结尾¶
dsh-approval-auto-review 在“全程人工审批”与“完全放开”之间给出了第三种选择:一个工具列表为空、输入输出有界、fail-closed 的 Guardian 代理替你看每一条待审批操作,并留下 JSONL 审计记录。对需要在自动化与安全之间找平衡的 DSH 用户来说,值得试一试。
- 社区目录页:https://www.skillhub.cn/plugins/perlied03/dsh-approval-auto-review
- GitHub 仓库:https://github.com/perlied03/dsh-approval-auto-review
社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。