@kxdyh/dsh-agent-governor
提供语义通信与工具执行的双层拦截网关。 适合需要对Agent的通信和工具执行进行安全审计与拦截控制的用户。
安裝
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:kxdyh/dsh-agent-governor說明文件
閱讀完整 README ↗使用
| 元素 | 含义 |
|---|---|
| 标题栏右侧的盾牌 | 收纳两个开关。旁边的小圆点:灰=全关,橙=只开一层,绿=两层都开;出现拦截时短暂脉冲 |
| 盾牌右侧的数字 | 自本次启动以来的拦截总数(Sentinel 拦截 + DOL 标记) |
| 点击盾牌 | 面板以 180–200ms 的 scale(0.96) → 1 + 淡入 + 上浮展开,两行分层卡片错峰入场;点击面板外或按 Esc 收起 |
| 每层的开关 | 独立开关该层(role="switch",带 aria-checked) |
| 影子模式 | 该层只记录、不拦截,用来在正式启用前校准规则(对应截图里的 Shadow Mode) |
| 统计行 | 该层真实计数:Sentinel = 检查/拦截/证据条数;DOL = 审计/标记/纠正 |
| 清零统计 | 只清计数,不动开关和证据缓存 |
| 盾牌右边的账本图标 | 拦截记录:公共记录浮层,回答"哪一步被拦、为什么" |
| Sentinel 层详情里的删除防护 | 删除拦截的子控件:右侧是开关,下面三档强度 —— 关注 / 拦截 / 严格。关闭不是强度,是那个开关;关掉后完全不检查删除操作 |
删除防护的三档强度(默认 拦截):
| 强度 | 行为 |
|---|---|
| 关注 | 只记录,不拦任何删除(适合先观察一段时间再收紧)。命中的记录带"影子"标记,只进记录不计入拦截 |
| 拦截 | 拦下"未被你点名、也不是本会话自己创建"的递归强制删除(rm -rf、Remove-Item -Recurse -Force、del /s、rmdir /s)。单文件删除不受限 |
| 严格 | 连单文件删除也要先有点名/属于自己创建(Remove-Item a.txt、rm a.txt 都会拦)。仍保留"自己创建的产物可删"与 tmp/cache 等豁免 |
面板默认视图保持精简:只有把该档位改成非默认时,Sentinel 那一行才会出现一个小标签(删除:关注 / 删除:严格 / 删除:关),点开 ? 才能改。
拦截记录每行 = 时间 · 层标签 · 规则名 · 第几步,下一行是理由;点某一行展开对象、
来源会话与轮次、规则 id。顶部三个筛选(全部/工具拦截/输出标记)+ 清空。最多保留 80 条,
落盘在 /storages/agent-governor-log.json,重启后继续累积。
记录示例(真实 payload):
{ "layer": "sentinel", "rule": "sentinel.evidence-gap", "deontic": "obligation",
"title": { "zh": "数值证据缺失", "en": "Ungrounded numeric argument" },
"detail": "参数中的数值 4213 未出现在本会话的已验证证据中(用户的输入或任何工具的真实返回)",
"target": "process_refund {\"orderId\":\"A-1\",\"amount\":4213}",
"turn": 6, "step": 12, "session": "session-2f1c", "shadow": false }
开关状态写在 /storages/agent-governor.json,重启后保持;两个半部分通过一个
仅限本机回环的 HTTP 路由(/dsh-agent-governor/state、/config、/reset)交换状态,
所以面板里的每个数字都来自宿主实时数据,没有估算。
入口一定存在。 选中会话时盾牌在标题栏右侧工具区;没有选中会话时(Hero 页)先在右上角浮层出现。
每次挂载后客户端会自检"我到底画出来了没有"(rect、计算样式、是否有带 transform 的祖先、
elementFromPoint 是否命中自己)并把结果上报给宿主;如果浮层里其实显示不出来,会自动改用标题栏
里的兜底席位,不让你找不到入口。自检结果和渲染异常都能从 GET /dsh-agent-governor/state 的
diag 字段读到。
配置
在 profile 的补丁层里给该条目加 config 即可(config.ruleOverrides 可按规则 id 开关,
dispensations 用于豁免,repeatLimit 用于循环门):
- 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'] # 豁免强推检查