代码审查

AI Agent · prompt

请以独立的软件架构师、安全评审人和代码审查者身份,对当前仓库进行一次完整评审。

你的任务包括:

  1. 判断当前技术方案是否合理。
  2. 判断是否存在更简单、更安全或更容易维护的方案。
  3. 在方案合理的前提下,审查具体代码。
  4. 找出真正值得修复的问题,而不是为了完成审查而凑问题数量。

不要默认现有架构、技术选型和实现方式一定正确,也不要直接开始修改代码。

一、先调查仓库

先自行阅读仓库,尽可能从现有材料中还原项目目标、限制条件和当前方案。

优先检查:

  • README、AGENTS.md、CLAUDE.md 等项目说明
  • docs、spec、requirements、issues、tickets 等需求和设计资料
  • 当前分支的 Git diff 和近期相关提交
  • 依赖清单、构建配置、环境配置和部署配置
  • 程序入口、核心模块及其调用关系
  • 数据模型、权限控制和外部服务接口
  • 现有测试以及测试覆盖的关键场景
  • 与当前改动直接相关的代码和文档

先定位相关范围,不要没有目的地扫描整个仓库。

不要询问能够从仓库、代码、配置、测试或 Git 记录中找到的信息。

只有同时满足以下条件时,才向我提问:

  • 仓库中确实找不到答案;
  • 不同答案会明显改变你的评审结论;
  • 不能通过合理的只读检查继续判断。

每次最多提出 3 个关键问题。普通的不确定性可以标记出来,不要因此中断整个评审。

二、还原目标和现状

根据调查结果,用简短的语言说明:

  • 这个项目或改动要解决什么问题
  • 当前采用了什么方案
  • 你从哪些文件或代码中得出了这个判断
  • 当前方案依赖哪些关键假设
  • 哪些信息仍然不确定

如果文档与代码不一致,明确指出差异,并说明你采用哪一方作为判断依据。

三、先做方案评审

暂时不要纠结局部代码写法。先回到项目目标,检查当前路线是否合适。

重点判断:

  • 当前方案是否真正满足需求
  • 是否把简单问题做复杂了
  • 是否因为早期选择产生了大量后续补丁
  • 权限、安全或状态问题是否来自架构本身
  • 当前问题能否通过局部修改解决
  • 有没有其他方案可以从根源上消除这一类问题
  • 替换方案带来的迁移成本是否值得

不要被已有代码数量和开发投入绑住。已经写了很多代码,不代表当前方案就应该继续使用。

如果存在有意义的替代方案,请比较:

  • 需求覆盖
  • 安全风险
  • 实现复杂度
  • 维护成本
  • 性能和资源成本
  • 出错后的影响范围
  • 迁移与回滚难度

不要为了满足格式强行编造替代方案。如果当前方案已经合理,可以直接说明为什么值得保留。

最后给出以下结论之一:

  • 保留当前方案
  • 调整当前方案
  • 更换方案
  • 缺少关键信息,暂时无法判断

在得出路线结论之前,不要提供代码补丁。

四、再做实现审查

如果当前方案仍然值得保留,再检查具体实现,包括:

  • 功能和逻辑错误
  • 权限、身份验证和数据泄露风险
  • 输入验证与异常处理
  • 并发、状态一致性和资源释放
  • 性能问题
  • 测试缺口
  • 与需求或设计不一致的实现
  • 会增加后续维护成本的结构问题

每个问题必须包含:

  • 严重程度:致命 / 高 / 中 / 低
  • 置信度:高 / 中 / 低
  • 对应的文件、代码或配置证据
  • 触发问题的具体场景
  • 可能造成的后果
  • 建议处理方向
  • 这是根因还是表面症状

如果多个问题来自同一个根因,请合并说明,并优先给出根因处理方案。

五、控制审查质量

遵守以下规则:

  • 不要为了凑数量而提出问题。
  • 没有发现新的重要问题时,直接说明。
  • 区分已确认缺陷、合理风险和待验证猜测。
  • 没有代码或文档证据时,不要把理论可能性写成已经存在的 Bug。
  • 不要把个人风格偏好当成缺陷。
  • 不要重复已经修复的问题。
  • 不要只检查局部补丁,还要确认调用方、数据流和受影响范围。
  • 对低概率、低影响的问题,说明是否值得处理。
  • 不要修改代码,除非我之后明确要求你实施。
  • 如果继续审查已经进入收益递减,明确建议停止。

六、输出格式

按照以下顺序输出:

  1. 仓库调查范围
  2. 项目目标和当前方案
  3. 尚未确认的关键信息
  4. 当前方案的关键假设
  5. 方案层问题
  6. 替代方案及取舍
  7. 路线结论
  8. 实现层问题
  9. 最优先处理的三件事
  10. 可以暂时接受的剩余风险
  11. 是否值得继续下一轮审查

先完成评审并等待我的决定,不要直接修改代码。

返回笔记目录
© 2026 Edward Law作品与文章为示例 · 笔记来自个人知识库