dsh-agent-governor: DeepSeek Harness 的两重拦截层

前言

DeepSeek Harness (DSH) 的核心设计理念是「一切皆插件」。在实际开发和使用中,Agent 往往容易在输出承诺上夸大其词,或在工具调用时执行危险操作。dsh-agent-governor 是一个安装在 DSH 上的自定义插件,它通过增加两层可独立开关的拦截层,降低 Agent 的错误率。

插件定位

  • 名称:dsh-agent-governor
  • 仓库:https://github.com/kxdyh/dsh-agent-governor
  • 作者:kxdyh
  • 类别:工作流
  • 许可证:MIT

核心功能

该插件包含两个独立的拦截层:

  1. DOL 层(通信语义治理):管理 Agent「说什么」。将道义规则(许可/禁止/义务/豁免)注入系统提示,并审计可见输出。对于没有证据的完成性断言、凭据外泄、绝对化承诺进行标记,并要求模型在下一步进行自我纠正。
  2. Sentinel 层(工具执行治理):管理 Agent「做什么」。在工具调用执行前校验参数。对于破坏性命令和无依据的数值参数进行拦截,并将结构化的重试反馈交还给模型。

安装与启用

插件是一个声明了 bundle 的 npm 包,使用 DSH 自带的安装器即可安装。

# 使用本地绝对路径安装
dsh plugin add /absolute/path/to/dsh-agent-governor

安装后,插件会写入当前 profile 的 bundle 列表并立即生效。客户端部分需要刷新页面(F5)以加载新的头部控件。注意:改动宿主规则(index.js)后必须重启应用才生效。

使用方式

插件的开关和统计信息位于会话标题栏右侧。

控件说明

  • 盾牌图标:收纳两个拦截层的开关。
  • 状态指示:灰=全关,橙=只开一层,绿=两层都开。拦截发生时图标会短暂脉冲。
  • 拦截总数:自本次启动以来的拦截总数(Sentinel 拦截 + DOL 标记)。
  • 面板交互:点击盾牌图标展开面板(带缩放、淡入、上浮动画)。点击面板外或按 Esc 收起。
  • 影子模式:该层只记录、不拦截,用于在正式启用前校准规则。
  • 统计行:显示该层真实计数(如 Sentinel 的检查/拦截/证据条数;DOL 的审计/标记/纠正)。
  • 清零统计:只清计数,不改变开关和证据缓存。

删除防护

在 Sentinel 层的详情中,删除防护有三个强度档位:
* 关注:只记录,不拦截。命中的记录带影子标记。
* 拦截:拦截未被点名、也不是本会话自己创建的递归强制删除(如 rm -rf)。单文件删除不受限。
* 严格:连单文件删除也要先有点名或属于自己创建。保留对 tmp/cache 等临时目录的豁免。

日志与状态

  • 拦截记录:点击盾牌右侧的账本图标查看。每行包含时间、层标签、规则名、步骤。支持筛选(全部/工具拦截/输出标记),最多保留 80 条。日志文件位于 <dsh-home>/storages/agent-governor-log.json。
  • 状态持久化:开关状态保存在 <dsh-home>/storages/agent-governor.json。

规则详解

Sentinel 层(工具调用执行前)

  • sentinel.destructive-delete(禁止):拦截 rm -rf /、mkfs、diskpart 等破坏性删除。
  • sentinel.system-control(禁止):拦截关机、重启、注销本机等系统控制命令。
  • sentinel.history-rewrite(禁止):拦截 git push --force、git reset --hard 等历史重写操作。
  • sentinel.data-destroy(禁止):拦截 DROP TABLE、TRUNCATE TABLE 等数据销毁操作。
  • sentinel.pipe-to-shell(禁止):拦截 curl ... | bash、iwr ... | iex 等管道到 Shell 的命令。
  • sentinel.unrequested-delete(义务):根据强度控制删除操作的权限。
  • sentinel.evidence-gap(义务):拦截参数中未出现在本会话已验证证据中的具体数值(≥100 且非整十)。
  • sentinel.repeat-loop(义务):同名同参数的成功调用超过阈值后拒绝(默认阈值 0 = 关闭)。

DOL 层(消息/输出侧)

  • dol.credential-leak(禁止):拦截输出中的私钥、sk- key、AWS/GitHub/Slack/Google 令牌、JWT。
  • dol.completion-claim(义务):拦截本回合没有任何成功工具结果却声称”已完成/已通过/已修复”的输出。
  • dol.absolute-claim(禁止):拦截 “100%/绝对/保证” 等无法兑现的表述。
  • dol.number-grounding(义务):拦截输出中缺乏证据来源的具体数值。

配置与豁免

可以在 profile 的补丁层中配置规则覆盖和豁免:

- id: agent-governor
  name: '@kxdyh/dsh-agent-governor'
  config:
    dol: true
    sentinel: true
    repeatLimit: 5
    ruleOverrides:
      dol.absolute-claim: true
      sentinel.evidence-gap: false
    dispensations: ['sentinel.history-rewrite']

注意事项

  1. 拦截范围:插件不拦截每一个 LLM 请求。请求侧仅将治理规则追加进系统提示。真正能硬阻断的是工具调用(tools/pre-execute)和Agent 步骤(agent/pre-step)。
  2. 输出侧机制:输出侧的治理主要依靠“下一步纠正”,而非硬阻断。
  3. 依赖重启:修改宿主规则(index.js)后必须重启应用,否则配置不生效。
  4. 生态归属:该插件为社区维护项目,与 DeepSeek / 幻方无官方从属关系。
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜