myclawbbbot-cyber/claude-agent-gates

GitHub: myclawbbbot-cyber/claude-agent-gates

为多 agent Claude Code 提供质量治理门控层,通过举证质量门、红队升级契约和评审者回归测试来防止 agent 自我审查偏差。

Stars: 0 | Forks: 0

# claude-agent-gates **一个用于多 agent Claude Code 的治理层 - 而不是又一个 agent 集合。** 大多数 agent 工具包提供的是*更多的构建者*。以构建者为主的配置,其失败原因往往不是“agent 不够多”,而是同一个模型既负责编写工作,又负责审查工作,最后还宣布工作完成。自我评分的工作会不断累积偏差:审查者总能找到理由证明输出没问题,边缘情况无人测试,一份亮起绿灯的自我报告掩盖了真实的缺陷。本工具包正是旨在阻止这种情况的治理层。 三大支柱: 1. **举证责任质量门** (`qa-gate`) - 默认 FAIL,只有当评审者提供了能够自行复现的证据时才能获得分数,设有严格的通过阈值,且低于该阈值时强制驳回。它没有写权限;它只负责评审,从不负责修复。 2. **红队升级契约** (`critic`) - 一个常驻的“魔鬼代言人”,其*重大*异议不能被悄悄驳回:它们会逐字升级给人类处理。 3. **针对评审者本身的回归测试套件** (`eval/`) - 因为评审者本质上是一个 prompt,而 prompt 就是生产代码。包含黄金任务、grep 断言以及一个在分数下降时会阻断发布的评分历史记录。 ## 客观定位 这是一个治理 / 严格性控制层。它与下文提到的工具是组合关系,而不是替代关系。 | 如果你想要... | 使用 | 本工具包反而会带给你 | | --- | --- | --- | | 一个包含大量即用型构建者 agent 的大型库 | agent 集合 (例如 `wshobson/agents`) - 他们在这方面做得很好 | 一个能够审查这些 agent 产出的门控 | | 一个功能齐全的评估 / 红队框架 | `promptfoo` - 更重、功能更丰富,是进行严肃评估的合适工具 | 一个专为你的 *judge* prompt 设计的精简、零依赖回归测试套件 | | 更多的 agent 来做更多的工作 | - | 更少的 agent,但需达到更严格的标准 | 如果你已经有了喜欢的构建者 agent,请保留它们。只需将此门控指向它们的输出即可。 ## 包含内容 ``` .claude/agents/ qa-gate.md # the burden-of-proof quality gate (read-only judge) critic.md # the standing red team, with the verbatim-escalation contract code-reviewer.md # a neutral example agent to adapt fact-checker.md # a neutral example agent to adapt docs/GOVERNANCE.md # the five load-bearing rules + the literature behind them scripts/ review.sh # run the gate against a diff/dir/file, exit on the verdict verdict.sh # parse a review, exit 0/1 (fail-closed), escalate after 2 FAILs verdict_test.sh # self-test battery for verdict.sh eval/ agent_eval.sh # the regression harness for judgment agents golden/ # neutral golden tasks (planted bug, clean pass, fabricated stat) examples/demo.md # a full build -> gate -> bounce -> fix -> PASS walkthrough ``` ## 60 秒快速入门 要求 [Claude Code CLI](https://docs.claude.com/en/docs/claude-code) 已加入你的 `PATH` 中。 ``` # 1. Clone it. The judges live in .claude/agents/, so Claude Code picks them up # automatically when you run inside the repo. git clone https://github.com/myclawbbbot-cyber/claude-agent-gates cd claude-agent-gates # 2. Run the gate against something. Here, one of the golden fixtures with a # planted off-by-one bug and a self-report that claims all tests are green: scripts/review.sh eval/golden/qa-gate/gt1-planted-bug \ "implement page_count; the final partial page must be counted" # -> the gate reproduces the spec, constructs the case the shipped tests miss, # prints a scorecard, and exits 1 with VERDICT: FAIL. # 3. Run the same gate against a genuinely clean deliverable: scripts/review.sh eval/golden/qa-gate/gt2-clean-pass \ "implement clamp into an inclusive range" # -> VERDICT: PASS, exit 0. ``` 这就是整个循环:`review.sh` 会返回一个 shell 退出码,因此你可以据此对 commit 或 CI 步骤进行门控: ``` scripts/review.sh ./src "the goal this change must satisfy" || exit 1 ``` 为了在修改 prompt 时保持 *judges* 的客观公正,请运行回归测试套件: ``` bash eval/agent_eval.sh qa-gate # runs every golden task, greps the assertions, bash eval/agent_eval.sh critic # appends a score line to eval/baselines/.tsv ``` 在修改 judge 之前先运行它以获取基线,修改后再运行以进行比较。总分下降将阻断更改 - 参见 `docs/GOVERNANCE.md`。 断言以 `MUST:` / `MUST_NOT:` 的形式存在于每个任务的 `assert.txt` 中。如果断言中包含 `VERDICT:`,它将仅与审查提取出的最终裁决词进行匹配(即最后一个 `VERDICT: PASS|FAIL`,其解析方式与 `verdict.sh` 相同),而不匹配原始记录 - 这样一来,如果 judge 在其叙述文字中引用了断言文本,也不会导致误匹配。所有其他模式将匹配整个记录。 门控自身的解析逻辑也经过了测试,且无需消耗任何模型调用: ``` bash scripts/verdict_test.sh # asserts verdict.sh's fail-closed + escalation behavior ``` ## 关于约束力来源的说明 这两大支柱的执行力度并不相同,有必要在此明确指出。 **门控** 具有机制上的强制力:`verdict.sh` 是一个脚本,它会以失败为默认结果 (fail closed) 并返回你的 CI 将严格服从的真实退出码。而 **critic 的逐字升级契约** 是一种 *prompt 层面* 的协议 - 它存在于 agent 的指令和 `docs/GOVERNANCE.md` 中,但本工具包中没有任何东西能强制编排器去遵守它。它是你主动采纳的一项纪律,而不是由脚本执行的门控。请将其视作如此。 ## Claude Code 如何发现 agent 这些 judge 存放在仓库根目录下的 `.claude/agents/` 中。Claude Code 会从你正在工作的项目的 `.claude/agents/` 目录中发现项目作用域的 agent,因此**只需克隆仓库并从内部运行脚本即可满足需求** - 无需安装步骤,也无需将文件复制到你的家目录中。正是出于这个原因,脚本在运行 `claude` 时会将该仓库根目录设为工作目录。 如果你希望在*每个*项目中都能使用这些 agent,请将它们复制到你的用户级 agent 目录 (`~/.claude/agents/`) 中。 ## 无头模式 / CI 用法 默认情况下,脚本在运行 judge 时,只允许其使用进行读取/验证所需的相关工具白名单 (`--allowedTools "Bash Read Grep Glob"`),因此无头运行绝不会一刀切地关闭权限检查 - 它只会精确授予 judge 用于复现和验证的工具。 如果你需要完全无人值守地运行,并希望完全跳过权限提示,可以设置 `GATES_YOLO=1`,这会添加 `--permission-mode bypassPermissions` 参数。这将在关闭权限检查的情况下运行 agent - **请仅在你信任的环境中使用,并自负风险。** 它永远不是默认选项。 其他配置项(均为可选): - `GATES_REVIEW_AGENT` - 指定 `review.sh` 使用的 agent(默认为 `qa-gate`;你可以将其指向一个更严格或使用不同模型的门控,以获取跨家族的第二意见)。 - `GATES_CLAUDE_BIN` - 如果 `claude` 二进制文件不在 `PATH` 中,指定其路径。 - `GATES_STATE_DIR` - 存储 FAIL 连续记录和上次审查结果的位置(默认为 `.gates/`);为每个交付物指定其专属目录,以实现针对单个交付物的连续记录追踪。 ## 许可证 MIT - 参见 [LICENSE](LICENSE)。
标签:AI治理, Cutter, LLM评估, LNA, Ollama, 多智能体, 防御加固