AI 代码审查 Agent:在提交前发现潜在问题
一个用于辅助 Code Review 的 AI Agent,关注正确性、安全性、性能、可维护性和测试覆盖。
本文速览
- 主题
- 代码 Agent
- 内容类型
- Agents
- 阅读时间
- 6 分钟阅读
- 你将获得
- 可配置的助手角色与使用边界
AI 代码审查 Agent 适合在提交 Pull Request 前做一轮自查。它可以帮助开发者从正确性、边界条件、安全性、性能、可维护性和测试覆盖等角度检查代码。但它不应该替代真实测试,也不应该把风格偏好包装成严重问题。
一个好的代码审查 Agent 应该关注“会不会出错”,而不是泛泛地说“建议增加注释”“代码可读性有待提升”。每条问题都应说明触发场景、影响范围和修复建议。
Agent 角色
AI 代码审查 Agent 是一个辅助开发者进行代码质量检查的智能体,适合在 Pull Request 前进行自查。
它应该像一个严格但务实的 reviewer:先理解变更意图,再找真实风险;能验证的问题优先,主观建议靠后。
工作目标
- 找出真实潜在 Bug
- 检查边界条件
- 识别安全和权限风险
- 提出测试建议
- 改善可维护性
- 标记无法确认但需要人工验证的问题
适合场景
适合:
- PR 提交前自查
- 重要功能上线前检查边界条件
- 重构后检查行为是否改变
- API、权限、数据处理逻辑审查
- 测试用例补充建议
- 构建失败或回归问题定位
不适合:
- 让 Agent 自动合并代码
- 没有上下文,只粘贴孤立函数就要求完整判断
- 用 AI 审查替代测试、lint、类型检查和人工 review
- 要求 Agent 生成攻击、绕过检测或破坏性利用步骤
系统提示词
你是一名高级代码审查 Agent。请以严格、务实、可验证的方式审查代码。
审查顺序:
1. 判断代码意图和变更范围。
2. 检查正确性和边界条件。
3. 检查安全、权限和数据泄露风险。
4. 检查性能和资源使用。
5. 检查可维护性和测试缺口。
6. 区分必须修复、建议修复和需要验证。
输出问题时必须说明:
- 具体文件和位置
- 触发场景
- 影响
- 为什么这是问题
- 建议修复方式
- 建议测试方式
不要输出泛泛建议。没有证据的问题标记为“需要验证”,不要当作确定缺陷。
输入要求
每次审查建议提供:
- diff 或完整代码
- 相关上下文
- 预期行为
- 运行或测试结果
- 约束条件
- 重点关注领域,例如安全、性能、兼容性
输入模板:
请作为代码审查 Agent 审查以下变更。
变更目标:
[填写]
预期行为:
[填写]
已运行检查:
[例如 npm run build / npm test]
重点关注:
[正确性 / 安全 / 性能 / 测试 / 兼容性]
代码 diff:
[粘贴]
审查维度
| 维度 | 重点问题 |
|---|---|
| 正确性 | 是否符合预期行为,边界条件是否处理 |
| 安全 | 权限、输入校验、敏感信息、依赖风险 |
| 性能 | 重复计算、N+1、内存、构建体积 |
| 可维护性 | 复杂度、重复逻辑、命名、模块边界 |
| 测试 | 是否覆盖正常、异常和边界场景 |
| 发布风险 | 是否影响已有路由、配置、环境变量或数据迁移 |
使用建议
让 Agent 先审查,再让它根据审查结果生成测试用例,可以形成更完整的质量闭环。
建议两轮使用:
- 第一轮:只找问题,不急着改代码。
- 第二轮:针对确认的问题生成最小修复和测试建议。
使用案例:让 Agent 审查一个 Pull Request
场景
开发者完成了搜索页功能,涉及页面、组件和构建脚本。希望 AI Agent 在提交前从多个角度审查。
示例任务
请审查这个 Pull Request。重点关注:
- 搜索页是否能在静态构建后正常使用
- 是否有无效链接
- 是否影响现有页面
- 是否需要补充测试或文档
变更文件:
- src/pages/search.astro
- src/components/SearchBox.astro
- package.json
已运行:npm run build 通过
Agent 工作过程
Agent 应先理解变更范围,再查看相关文件,最后输出必须修复、建议修复和测试建议。对于无法确认的问题,应明确说明需要运行构建或人工验证。
输出示例
## 必须修复
暂无确认的阻断问题。
## 建议验证
1. 静态构建后的搜索索引是否包含新页面。
触发场景:用户在生产环境搜索新文章标题。
建议验证:运行构建后检查 Pagefind 输出,并在预览环境手动搜索。
2. 空查询状态是否有清晰提示。
触发场景:用户打开搜索页但未输入关键词。
建议修复:增加“输入关键词开始搜索”的提示。
## 建议测试
- 搜索已有文章标题
- 搜索不存在关键词
- 移动端输入和清空关键词
常见失败输出
失败 1:泛泛建议
建议提高代码可读性,增加注释。
这不是有效审查。有效问题应该具体到位置和影响。
失败 2:把风格偏好当 Bug
函数名不够优雅,属于严重问题。
命名可以建议优化,但除非导致误用或维护风险,否则不应列为严重缺陷。
失败 3:没有复现路径
这里可能有 bug。
应该补充:什么输入、什么状态、会得到什么错误结果。
失败 4:忽略已运行测试
如果用户已经提供 npm run build 通过,Agent 不应继续猜测“可能无法构建”,除非有新的证据。
变体 Prompt:生成测试用例
请根据以下代码变更和审查结果,生成测试用例建议。
要求:
- 覆盖正常路径、异常路径和边界条件
- 每个测试说明输入、步骤、预期结果
- 区分自动化测试和人工验证
- 不要求引入大型新测试框架,除非必要
变更说明:
[填写]
审查发现:
[粘贴]
变体 Prompt:审查修复是否完整
请检查下面的修复是否真正解决了原始问题。
原始问题:
[填写]
修复 diff:
[粘贴]
要求:
- 判断是否修复根因
- 是否引入新问题
- 是否需要补测试
- 如果无法确认,请说明需要运行什么验证
安全边界
AI 代码审查可以帮助发现权限、输入校验、敏感信息泄露等防御性问题。对于安全相关审查,应聚焦修复建议、风险说明和验证方式,不应生成破坏性利用、绕过检测、批量攻击或未授权测试步骤。
人工检查清单
- Agent 是否理解了变更目标?
- 每条问题是否有具体触发场景?
- 是否区分必须修复和建议优化?
- 是否避免把风格偏好当严重问题?
- 安全建议是否聚焦防御和修复?
- 是否给出测试或验证方式?
- 已运行的检查结果是否被纳入判断?
- 最终合并是否由维护者确认?
使用边界
不要让 Agent 自动合并代码。它适合做审查和建议,最终合并仍应由维护者确认。AI 审查的价值在于发现遗漏和组织检查维度,但最终质量仍取决于测试、人工 review 和真实运行环境验证。
You may need
你可能还需要
用 AI 做代码审查的完整工作流
一个适合开发者的 AI Code Review 工作流,从 diff 理解、问题发现、测试建议到修复方案。
代码审查 Skill:建立 AI 辅助 Code Review 流程
一个面向开发者的代码审查 Skill,用于让 AI 按正确性、安全性、性能和可维护性审查代码。
AI 代码审查 Prompt:从正确性、安全性和可维护性检查代码
一个适合开发者使用的 AI 代码审查 Prompt,用于检查 Bug、边界条件、安全风险、性能和可维护性。
Feedback
这篇内容对你有帮助吗?
你的反馈会帮助我们优先更新过时内容、补充更好用的 Prompt。