Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Code Review Agent

CI

基于 LangGraph 的智能代码审查 Agent。它把代码分析、语法检查、多维度审查、修复生成和报告输出组织成显式状态图,用确定性工具处理语法与常见安全风险,再由 LLM 补充可读性、性能和最佳实践建议。

A resilient code-review workflow that combines deterministic AST/security tools with LLM-assisted review, explicit routing, graceful degradation, and automated tests.

工作流

flowchart LR
    A["Source code"] --> B["Analyze"]
    B --> C["Syntax check"]
    C --> D{"Syntax error and fix enabled?"}
    D -- Yes --> F["Generate fix"]
    D -- No --> S["Security scan"]
    S --> E["LLM review"]
    E --> G{"Need fix?"}
    G -- Yes --> F
    G -- No --> H["Format report"]
    F --> H
    H --> I["Review result"]
Loading

核心能力

  • 显式 Agent 编排:LangGraph 状态图展示每一步输入、输出和路由条件。
  • 确定性语法检查:使用 Python AST 检测语法错误和提取代码结构。
  • 安全扫描:识别硬编码密钥、SQL 动态拼接、命令注入和不安全配置。
  • LLM 代码审查:从安全性、可读性、性能和最佳实践维度输出结构化问题。
  • 按需修复:根据问题严重度进入修复节点,也可通过 --no-fix 只生成报告。
  • 上下文记忆:保存最近的对话和审查摘要,支持连续追问。
  • 失败降级:模型初始化、审查或修复不可用时,仍返回本地语法检查与安全扫描报告。
  • 自动化测试:18 项测试覆盖工具、路由、模型配置、失败降级、记忆和完整工作流。

为什么使用 LangGraph

早期的隐式 Agent 循环难以确认工具执行顺序,也不方便复现失败路径。状态图让语法检查、模型审查和修复生成成为独立节点,路由条件可以单独测试;新增工具时只需扩展节点和状态契约,不必重写整条流程。

技术栈

Python · LangGraph · LangChain · OpenAI-compatible API · AST · Pytest

快速开始

git clone https://github.com/AikingChoice/code-review-agent.git
cd code-review-agent
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env

.env 中填写 DEEPSEEK_API_KEYOPENAI_API_KEY,然后运行:

# 审查文件
python -m src.main path/to/example.py

# 审查代码片段
python -m src.main --code "def add(a, b): return a + b"

# 仅审查,不生成修复代码
python -m src.main path/to/example.py --no-fix

无需 API Key 也可以运行本地安全扫描示例和自动化测试:

python -m pytest -q

当前结果:18 passed。GitHub Actions 会在每次提交和 Pull Request 时自动执行测试。

状态设计

AgentState 保存源代码、语言、问题列表、修复代码、历史上下文和最终报告。节点只更新自己负责的字段:

Node Responsibility
analyze 检测语言,统计代码并提取函数、类和导入信息
syntax_check 运行确定性语法检查,决定是否直接修复
security_check 执行敏感信息、SQL 与命令注入规则扫描
review 调用 LLM 生成结构化审查问题
fix 根据错误与警告生成修复版本
format 汇总问题和修复代码,生成 Markdown 报告

安全扫描策略

安全扫描不完全依赖模型:

  • 敏感信息与危险配置使用规则扫描。
  • Python SQL f-string 和字符串拼接使用 AST 识别。
  • 参数化 SQL 查询不会被标记为风险。
  • 高危或严重问题会使报告的 safe 字段变为 false

项目结构

code-review-agent/
├── src/agent/             # LangGraph 状态、节点和路由
├── src/tools/             # 语法检查与安全扫描工具
├── src/memory/            # 会话上下文
├── examples/              # 示例代码与演示
└── tests/                 # 工具和端到端工作流测试

后续计划

  • 增加工具超时、重试和结构化输出校验。
  • 支持 JavaScript/TypeScript 的 AST 分析。
  • 接入 GitHub Pull Request,自动发布行级审查意见。
  • 建立误报率、召回率、响应时间和修复采纳率评测集。

About

Resilient LangGraph code-review agent with AST security checks, LLM fallback and automated tests

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages