摘要:团队代码审查耗时太长?漏掉硬编码密钥导致安全事故?本文分享一款基于 LangChain + LangGraph 的自动化 CodeReview Agent,支持 6 种大模型(含国产),能精准识别高风险代码并给出修复建议。内含架构设计与核心实现,项目已开源,欢迎 Star!

🌟 项目地址https://github.com/wanghenan/codereview-agent


😫 痛点:为什么我们需要自动化 CodeReview?

在日常开发中,你是否也遇到过这样的场景:

  1. 人工 Review 太慢:一个复杂的 PR,资深开发要花 30 分钟逐行看,成为合并瓶颈。
  2. 低级错误频出:明明有 SQL 注入风险、硬编码的 API Key,却因为疲劳被肉眼忽略。
  3. 标准不统一:不同人对代码规范的把握不一,导致代码风格割裂。
  4. 大模型幻觉:直接用 ChatBot 审查,它经常胡说八道,或者只给泛泛而谈的建议,无法集成到 CI/CD 流程中。

为了解决这些问题,我利用周末时间,基于 LangChainLangGraph 框架,开发了一款 AI-powered CodeReview Agent

它不是简单的“调用 API”,而是一个有状态、可决策的智能体。它能自动判断哪些代码是安全的(直接通过),哪些存在高风险(阻断并报警),并给出置信度评分。

👉 先上效果:

## CodeReview Agent 🤖
**结论**: ⚠️ 需要人工审核 (置信度: 95%)

| 文件 | 风险 | 问题数 |
|------|------|--------|
| `src/auth/login.ts` | 🔴 高 | 3 |

### 问题
1. 🔴 HIGH: 硬编码 API Key
2. 🔴 HIGH: SQL 注入漏洞
3. 🔴 HIGH: 发送凭据到外部服务

🛠️ 技术深挖:为什么选择 LangGraph?

市面上有很多 AI 审查工具,为什么我要重新造轮子?核心在于对复杂逻辑的控制力

1. 架构设计:从 Chain 到 Graph

传统的 LangChain Chain 是线性的,而代码审查是一个多步骤决策过程

  • 第一步:解析 Diff 文件。
  • 第二步:初步扫描(正则 + 轻量模型)。
  • 第三步:针对可疑代码调用大模型深度分析。
  • 第四步:聚合结果,计算置信度。
  • 第五步:根据置信度决定是“自动通过”还是“请求人工介入”。

这种带有条件分支循环重试的逻辑,正是 LangGraph 的强项。

核心状态图(State Graph)设计思路:

# 伪代码示意
workflow = StateGraph(AgentState)
workflow.add_node("parse_diff", parse_diff_node)
workflow.add_node("security_scan", security_scan_node)
workflow.add_node("llm_review", llm_review_node)
workflow.add_node("aggregate", aggregate_node)

# 关键:根据扫描结果动态路由
workflow.add_conditional_edges(
    "security_scan",
    route_based_on_risk, 
    {
        "high_risk": "llm_review", # 高风险进大模型深审
        "low_risk": "aggregate"    # 低风险直接聚合
    }
)

这种设计让 Agent 既节省了 Token(简单代码不调用大模型),又保证了高危问题的检出率。

2. 多模型适配:国产模型友好

考虑到国内网络环境和成本,我并没有绑定 OpenAI。通过抽象 Provider 层,项目原生支持 6 大主流模型

  • 🇺🇸 OpenAI (GPT-5)
  • 🇺🇸 Anthropic (Claude 4.5 Sonnet)
  • 🇨🇳 智谱 AI (GLM-5)
  • 🇨🇳 MiniMax (Abab 6.5s)
  • 🇨🇳 阿里云 (Qwen-Max)
  • 🇨🇳 DeepSeek (V3)

配置极其简单,只需在 YAML 文件中切换:

llm:
  provider: minimax  # 一行代码切换模型
  apiKey: ${{ secrets.LLM_API_KEY }}
  model: abab6.5s-chat

3. 置信度评分系统

为了避免“狼来了”,Agent 会对每个问题进行 0-100% 的置信度打分

  • >90%:确认为严重漏洞(如明文密码),直接阻断 PR。
  • 60%-90%:疑似问题,标记为“需要人工确认”。
  • <60%:可能是误报,仅作为建议输出。

🚀 如何集成到你的项目?(3 步上手)

本项目设计了三种使用方式,最推荐 GitHub Action 模式,无缝集成 CI/CD。

方式一:GitHub Action(推荐,全自动)

Step 1: 在工作流目录创建 .github/workflows/codereview.yml

name: CodeReview Agent
on: [pull_request]

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: wanghenan/codereview-agent@v1
        with:
          config: .codereview-agent.yaml
        env:
          LLM_API_KEY: ${{ secrets.LLM_API_KEY }}

Step 2: 创建配置文件 .codereview-agent.yaml

llm:
  provider: minimax
  apiKey: ${{ secrets.LLM_API_KEY }}
  model: abab6.5s-chat

Step 3: 在 GitHub Settings -> Secrets 中添加 LLM_API_KEY

搞定!下次提交 PR 时,机器人会自动在评论区留下审查报告。

方式二:本地 CLI 调试

想在合并前本地先跑一遍?

git clone https://github.com/wanghenan/codereview-agent.git
cd codereview-agent/python
pip install -e .

# 运行审查
python -m codereview.cli --diff diff.json

方式三:Docker 部署

适合私有化部署场景(即将支持):

docker run -v $(pwd):/app -e LLM_API_KEY=your-key wanghenan/codereview-agent --pr 123

💡 核心亮点总结

  1. 智能分流:利用 LangGraph 实现动态路由,节省 40%+ 的 Token 消耗。
  2. 安全优先:内置 SQL 注入、XSS、硬编码密钥等 20+ 种安全规则模板。
  3. 国产化支持:完美适配智谱、阿里、MiniMax 等国产大模型,无需魔法。
  4. 极简配置:无需编写复杂 Prompt,YAML 配置文件即可定制规则。

🔮 后续计划

目前项目刚发布 v1 版本,后续计划更新:

  • 自动修复建议:不仅指出问题,还生成修复后的代码 Diff。
  • 自定义规则引擎:允许团队上传自己的代码规范文档。
  • 多语言支持:目前主要支持 Python/TS/JS,后续扩展 Go/Java。

📢 写在最后

开源的目的是为了共建更好的开发体验。如果你也觉得这个工具能提升团队的代码质量,欢迎给项目一个 Star ⭐️ 支持一下!

你的每一个 Star 都是我持续更新的动力。如果有好的建议或发现 Bug,欢迎提 Issue 或 PR。

👉 传送门https://github.com/wanghenan/codereview-agent

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐