3.2 只用 Agent——自主审查方案
同一个任务,第二种:构建自主审查 Agent。
Agent 方案
🤖 Security Review Agent 配置
系统提示词
你是一个安全代码审查 Agent。你的目标是发现 PR 中的所有安全问题。你需要自主决定检查什么、用什么工具、如何判断风险等级。
工具
read_file · search_code · query_vulnerability_db · post_comment决策模式
ReAct —— 边想边干:思考→行动→观察循环
权限
读取代码 ✅ · 搜索代码 ✅ · 查询漏洞库 ✅ · 发布评论 ⚠️(需确认)
决策循环可视化
思考读取 PR 代码,识别技术栈(ORM + REST API)
行动调用
search_code 搜索所有数据库查询观察发现 ORM 查询 5 处,原始 SQL 2 处
反思ORM 也可能注入,需要检查 ORM 参数过滤
思考查询历史漏洞,看类似 ORM 是否有注入先例
行动调用
query_vulnerability_db 查询 ORM 注入历史观察发现 2 个历史 ORM 注入案例
↑ 循环继续,直到所有风险点检查完毕
体验过程
1Agent 自主读取 PR 代码,自动识别技术栈 ✅
2Agent 发现 ORM 查询,自行调整检查策略 ✅
3Agent 查询漏洞数据库,发现历史 ORM 注入案例 ✅
4Agent 在某个文件上反复分析,花了 6 轮循环 ⚠️ 走偏
5输出格式这次用表格,下次可能用列表 ⚠️ 不稳定
6Agent 发布了一条不准确的审查意见 ❌ 走偏
优势与风险
优势
✓ 能发现 Skill 没覆盖的漏洞模式(如 ORM 注入)
✓ 能查询历史漏洞数据库,参照先例
✓ 能自主调整检查策略
✓ 可持续运行,无需人工触发
✓ 能自动发布审查评论
风险
✗ 走偏 中风险 — 在某个文件上花太多时间
✗ 成本不可预测 高风险 — 决策循环消耗 token
✗ 输出格式不稳定 中风险 — 每次可能不同
✗ 误报 高风险 — 可能发布不准确的评论
✗ 无保证覆盖 低风险 — 不保证每项都检查
Token 成本分析
Agent 方案 Token 消耗(每天 10 个 PR)
系统提示词(输入)~3,000 token/天
工具描述(输入)~2,000 token/天
PR 代码(输入)~30,000 token/天
决策循环(混合)~20,000 token/天
历史数据查询(输入)~5,000 token/天
AI 输出(审查意见 + 修复建议)~15,000 token/天
每日总 token~75,000
每日费用($3/M in, $15/M out)~$0.53
走偏 1 次额外成本+50,000+ token
关键发现:Agent 的决策循环是额外成本——每步"思考→行动→观察"都消耗 token。走偏 1 次,可能浪费 50,000+ token(循环 10 步才发现方向错了)。
失控风险详解
走偏
Agent 在某个文件的 ORM 注入上反复分析,6 轮循环后才发现方向错了。偏离原始目标,被无关信息吸引。
防御:每步检查与目标的偏离度,限制最大循环次数
成本爆炸
Agent 走偏 1 次,可能浪费 50,000+ token。没有成本控制机制,token 消耗不可预测。
防御:设置 token 止损线、费用预警
误报
Agent 发布了一条不准确的审查意见——误报了一个不存在的漏洞。Agent 有自主行动能力,出错就有实际影响。
防御:关键操作设置 Human-in-the-Loop(HITL,人类在环)确认,发布评论前需人工审核
小王的评价
适合
• 需要发现未知漏洞模式
• 需要查询历史漏洞数据库
• 需要持续自动运行
• 审查频率高,需自动化
不适合
• 需要稳定一致的输出格式
• 需要可预测的成本
• 需要保证每项都检查
• 对合规性有严格要求
本节核心要点
- 只用 Agent:适应性强、能发现未知漏洞,但可能走偏、成本不可预测、输出不稳定
- 最大风险:失控——走偏、成本爆炸、误报,每一个都可能造成实际影响
- Token 成本比 Skill 高(输出 token 按输出价格计费),走偏时成本翻倍
- 适合需要适应性和自动化的场景,但需要护栏防止失控