用途
Agent Review 是一个代码审查技能,用于在任务收尾阶段引入第二个模型作为顾问式审查者,对代码变更进行有界、可收敛的审查。它的定位是“收尾门禁”,而不是扩大任务范围或持续审查直到模型给出干净标签的许可。
主要能力
该技能内置两个固定审查配置:
- codex:gpt-5.6-sol,高推理模式
- claude:claude-fable-5,最大努力模式
不支持静默替换其他模型。如果请求的审查者不可用,应报告失败并让用户选择。
审查采用有界循环,每轮使用相同的审查契约,轮次编号仅记录收敛情况,不切换审查视角:
- 冻结请求、审查目标/基线、预期行为、所有者边界、变更文件、非测试代码行数估算与聚焦证明。
- 第一轮:综合审查正确性、安全性、实质性不必要复杂度、模块化与复用。
- 第二轮:仅当已接受的发现修改了源码时运行。
- 第三轮:仅当第二轮又发现已接受的阻塞项且其修复改动了源码时运行。
- 第三轮后即使仍有发现也停止,报告未解决的阻塞项,并在继续修复/审查循环或扩大范围前询问用户。
审查标准优先关注:可利用的安全问题或泄露的凭据;行为破坏、数据丢失、授权错误、崩溃或不安全的生命周期行为;实质性增加未来变更风险的不必要复杂度或结构退化;重要行为缺少证明。
安全审查覆盖认证与授权、注入、路径遍历、SSRF、不安全反序列化与命令构造、代码/日志/错误/分析/制品中的敏感数据、边界验证与规范化、不安全默认值或弱化检查、部分写入、竞态、重放/幂等、回滚与清理,以及扩大信任的依赖/配置变更。仅报告具体攻击或暴露路径,不用推测性加固削弱合法行为。
代码质量与抽象审查在每轮都应用,但只报告由变更引入或实质性恶化的具体结构缺陷,不把普通可维护性观察变成落地阻塞项。审查问题包括:分支、标志、辅助函数、模式或层能否消失;逻辑是否位于规范所有者中;抽象是否减少概念与耦合;类型与 API 是否显式;编排是否与业务逻辑分离;相关状态能否原子更新;独立工作是否无正确性理由地被串行化;辅助函数是否位于拥有其不变量的模块中;是否重复了已有逻辑、辅助函数或策略;内聚文件是否变得过大。
仓库复用检查要求审查者与主代理搜索仓库中每个新引入或迁移的辅助函数以及每个非平凡重复块,先搜索精确符号,再搜索独特领域术语、常量、API 调用与行为。在分诊时核实引用的实现并比较语义、错误处理与所有权,再决定两个实现是否相同。优先使用真正拥有策略的现有规范辅助函数;仅当存在真实对齐的消费者或清晰领域所有者时才将代码移到共享模块;保持单次使用或领域特定行为本地化。
使用方式
设置运行器路径:
# 本源码仓库
export AGENT_REVIEW="agent-review/scripts/agent-review.ts"
# 项目本地 Codex 技能
export AGENT_REVIEW=".agents/skills/agent-review/scripts/agent-review.ts"
# 项目本地 Claude 技能
export AGENT_REVIEW=".claude/skills/agent-review/scripts/agent-review.ts"
审查目标:
脏工作区(包括已暂存、未暂存与未跟踪文件):
"$AGENT_REVIEW" --mode local --round 1 --engine codex
当前分支:
"$AGENT_REVIEW" --mode branch --base origin/main --round 1 --engine codex
分支审查要求被审查 HEAD 处工作区干净,以便仓库读取与冻结补丁一致。
单个提交:
"$AGENT_REVIEW" --mode commit --commit HEAD --round 1 --engine codex
提交审查要求被审查提交处检出干净。审查较旧提交前先检出该提交。
Claude Fable:
"$AGENT_REVIEW" --mode local --round 1 --engine claude
在已接受的第一轮修复与聚焦测试后,运行第一次收敛重试:
"$AGENT_REVIEW" --mode local --round 2 --engine codex
在另一个已接受阻塞项与源码修复后,运行最终重试:
"$AGENT_REVIEW" --mode local --round 3 --engine codex
--round 仅为收敛元数据;所有取值使用相同审查契约。
退出码:
- 0:验证报告干净
- 2:审查者返回可操作发现
- 1:范围收集、审查者调用或验证失败
退出码 2 是审查信号,不是工具崩溃。
审查者工作区:在仓库根目录运行审查者,使其能检查未变更的调用方、测试、同级实现、所有权边界与现有辅助函数。给审查者正常工具,并指示其执行只读审查,不修改文件或仓库状态。对 Codex,禁用项目指令并将仓库标记为不受信任;对 Claude,使用安全模式。禁用项目本地审查者配置、规则、钩子、插件与 MCP 服务器。
提供的补丁与变更文件快照定义审查目标。仓库访问提供支持证据,但不将发现扩展到无关代码。要求分支与提交检出干净且匹配冻结修订。每次审查者调用后重新收集范围,如果 HEAD、补丁、变更路径或冻结修订在审查期间发生变化,则拒绝该结论。
敏感输入边界:捆绑包包含补丁与变更文本文件的有界当前快照。真实 .env 文件、私钥、.netrc、云凭据目录及类似敏感变更路径会被拒绝。仓库访问不是秘密隔离边界。审查者提示禁止打开敏感路径,但运行器无法强制执行逐文件读取拒绝。如果仓库包含不得暴露给配置模型提供者的秘密,请审查经过净化的检出。第一轮仍要求审查者识别普通源码、配置、夹具、日志、错误或生成制品中暴露的凭据。如果凭据可能是真实的或共享的,停止审查,移除并轮换后再继续。
适用场景
适用于在代码变更收尾阶段引入第二个模型进行有界审查,覆盖正确性、安全性、结构简化、模块化与复用。适合需要收敛式审查门禁、避免无限审查循环的团队或个人。支持脏工作区、分支与单个提交三种审查目标。
限制
- 审查最多三轮,第三轮后即使仍有发现也停止。
- 仅当已接受的发现修改了源码时才进行下一轮。
- 不接受对已拒绝发现、推迟的 P2 或未改变源码的审查者建议进行重试。
- 每次重试审查完整当前变更,而非仅上一发现。
- 不得重启序列。
- P2 质量发现默认作为后续跟进;仅当用户明确要求深度代码质量、架构、抽象或结构审查时,才在修复小、具体且位于冻结任务边界内时接受 P2。
- 对抗性审查请求使用相同契约,不产生额外自动轮次。
- 范围治理:当第三轮仍报告发现、文件或非测试代码行数增长超过基线约两倍、最佳修复需要新的规范契约、或修复改变任务/PR 根本主题时,停止并报告,而不是开始另一轮修复/审查循环。
- 仓库访问不是秘密隔离边界,运行器无法强制执行逐文件读取拒绝。
- 如果仓库包含不得暴露给配置模型提供者的秘密,应审查经过净化的检出。
- 如果凭据可能是真实的或共享的,停止审查,移除并轮换后再继续。
- 分支与提交审查要求干净检出且匹配冻结修订。
- 最终报告需报告目标、引擎/模型、轮次、已接受修复、已拒绝/推迟发现、聚焦证明、最终完成轮次是否干净,以及审查预算耗尽后任何未解决阻塞项。审查或验证失败时不得声称干净。