)
我用 AI Agent 做了自动代码审查从提交到反馈全程零人工附 Python 实现适合团队有代码审查流程、但 CR 效率低或者没有专人负责的开发者。本文用 Python AI Agent 搭了一套自动代码审查系统代码提交后自动审查并给出修改建议。背景代码审查是瓶颈很多团队的代码审查流程是这样的开发写完代码提 PR等 reviewer 有空来看可能等半天reviewer 给几个评论开发修改再提 PR再等 reviewer 确认整个流程可能耗时 1-3 天。对于小团队或者独立开发者经常没有 reviewer代码直接合并质量全靠自觉。我用 AI Agent 搭了一套自动审查系统代码提交后30 秒内给出审查意见。系统架构代码提交 → Git Hook 触发 → 提取 diff → AI 审查 → 输出报告4 个环节下面逐个实现。模块 1提取代码变更从 Git 仓库提取最新提交的代码变更diff。importsubprocessdefget_latest_diff(repo_path.):获取最新一次提交的代码变更resultsubprocess.run([git,diff,HEAD~1,HEAD,--stat],cwdrepo_path,capture_outputTrue,textTrue)statresult.stdout resultsubprocess.run([git,diff,HEAD~1,HEAD],cwdrepo_path,capture_outputTrue,textTrue)diffresult.stdoutreturn{stat:stat,diff:diff}defget_pr_diff(repo_path.):获取当前分支相对 main 的所有变更resultsubprocess.run([git,diff,main,--stat],cwdrepo_path,capture_outputTrue,textTrue)statresult.stdout resultsubprocess.run([git,diff,main],cwdrepo_path,capture_outputTrue,textTrue)diffresult.stdoutreturn{stat:stat,diff:diff}模块 2AI 代码审查把 diff 喂给 AI让它从多个维度审查。fromopenaiimportOpenAI clientOpenAI()REVIEW_PROMPT你是一个资深代码审查员。请审查以下代码变更从5个维度给出意见1.**Bug 风险**有没有明显的逻辑错误、空指针、边界条件问题2.**安全问题**有没有 SQL 注入、XSS、硬编码密钥等安全隐患3.**代码质量**命名是否清晰、函数是否过长、有没有重复代码4.**性能问题**有没有不必要的循环、内存泄漏、N1查询5.**最佳实践**是否遵循项目约定、是否缺少错误处理 代码变更 diff{diff}请按以下格式输出审查结果严重问题必须修改[文件:行号] 问题描述 → 修改建议建议优化推荐修改[文件:行号] 问题描述 → 修改建议优点值得保持描述代码中做得好的地方总结一句话总结本次审查结论。“”def review_code(diff, max_diff_chars8000):“”“AI 审查代码”“”# 截取过长的 difftruncated_diff diff[:max_diff_chars]if len(diff) max_diff_chars:truncated_diff f\n\n… (截断原始 diff 共 {len(diff)} 字符)prompt REVIEW_PROMPT.format(difftruncated_diff) response client.chat.completions.create( modelgpt-4, messages[{role: user, content: prompt}], temperature0.3 # 低温度保证审查一致性 ) return response.choices[0].message.content## 模块 3生成审查报告 python from datetime import datetime def generate_report(review_result, diff_stat, output_pathreview_report.md): 生成 Markdown 格式的审查报告 report f# 代码审查报告 **审查时间**: {datetime.now().strftime(%Y-%m-%d %H:%M)} **审查方式**: AI 自动审查 **变更统计**:{diff_stat}{review_result} --- *本报告由 AI Agent 自动生成仅供参考。关键决策仍需人工确认。* with open(output_path, w, encodingutf-8) as f: f.write(report) print(f审查报告已生成: {output_path}) return output_path模块 4Git Hook 集成在代码提交后自动触发审查。#!/usr/bin/env python3 .git/hooks/post-commit 文件内容 每次 git commit 后自动触发代码审查 importsubprocessimportsysimportos# 添加项目路径sys.path.insert(0,os.path.dirname(os.path.dirname(os.path.dirname(__file__))))fromreview_toolimportget_latest_diff,review_code,generate_reportdefmain():print( AI 代码审查开始...)# 1. 获取 diffdiff_dataget_latest_diff()ifnotdiff_data[diff].strip():print(没有代码变更跳过审查)returnprint(f 变更统计:\n{diff_data[stat]})# 2. AI 审查print( AI 审查中...)resultreview_code(diff_data[diff])# 3. 生成报告report_pathgenerate_report(result,diff_data[stat])print(f✅ 审查完成报告:{report_path})if__name____main__:main()安装 Git Hook# 把上面的代码保存为 .git/hooks/post-commitchmodx .git/hooks/post-commit# 之后每次 git commit 都会自动审查模块 5GitHub Actions 集成PR 自动审查如果用 GitHub可以通过 Actions 在 PR 创建时自动审查。# .github/workflows/ai-review.ymlname:AI Code Reviewon:pull_request:types:[opened,synchronize]jobs:review:runs-on:ubuntu-lateststeps:-uses:actions/checkoutv4with:fetch-depth:0-name:Set up Pythonuses:actions/setup-pythonv5with:python-version:3.12-name:Install dependenciesrun:pip install openai-name:Run AI Reviewenv:OPENAI_API_KEY:${{secrets.OPENAI_API_KEY}}run:python review_tool.py-name:Comment PRuses:actions/github-scriptv7with:script:|const fs require(fs); const report fs.readFileSync(review_report.md, utf8); github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: report });踩坑记录坑 1diff 太长AI 处理不了症状一次提交改了 50 个文件diff 有 5 万字符AI 超时。原因上下文窗口有限太长的 diff 塞不进去。解决只审查.py、.js、.ts等代码文件忽略.json、.lock、.min.js。diff 超过 8000 字符就截断。坑 2AI 审查太严格到处都是问题症状AI 把每一行都标记为建议优化开发者看了直接崩溃。原因prompt 里没有区分严重程度。解决prompt 里明确要求分为严重问题和建议优化两级严重问题必须改建议优化可选。坑 3AI 不了解项目上下文症状AI 建议用 ORM 替代原生 SQL但这个项目就是用原生 SQL 的。原因AI 不知道项目的技术栈和约定。解决在 prompt 里加上项目的技术栈说明或者把README.md的内容也喂给 AI。坑 4审查结果不一致症状同一个 diff 审查两次结果不一样。原因temperature 太高。解决temperature 设为 0.3 以下保证输出稳定。坑 5API 费用累积症状每天 10 次 commit每次调 GPT-4 花 0.5 元一个月 150 元。解决非关键文件用 GPT-3.5-turbo便宜 10 倍核心逻辑文件才用 GPT-4。效果数据用了 2 周后的真实数据指标人工审查AI 自动审查变化审查耗时2-24 小时30 秒快 200 倍审查覆盖率约 60%reviewer 看不完100%每行都看40%发现问题数平均 2 个/PR平均 4 个/PR100%误报率极低约 20%需人工筛选核心结论AI 审查速度快、覆盖率高但有 20% 误报。最佳实践是AI 先审 人终审。总结3 条核心经验AI 审查是第一道筛不是最终决策。它能快速发现明显问题但复杂的设计决策还是需要人来判断。prompt 里加项目上下文。把技术栈、代码规范、项目约定写进 promptAI 的审查意见会更准确。diff 要过滤和截断。只审查代码文件忽略配置和锁文件。超过 8000 字符就截断否则 AI 处理不了。你的团队有代码审查流程吗用什么工具评论区交流。