如何利用 LangGraph 构建具有自我修正能力的自动化代码 Review Agent
把 LangGraph 的状态机机制引入 Code Review,最核心的突破点在于将「检查-反馈-修复」这个循环从简单的 Prompt 串联变成了可定义的图拓扑结构。传统的单次 LLM Review 经常出现“指出问题但修复后引入新 Bug”的死循环,用 LangGraph 搭建一个带有
Conditional Edge(条件边)的闭环,可以让 Agent 在代码真正通过静态检查或测试用例前,绝不退出循环。我的实现逻辑是构建三个节点:Reviewer(审查员)、Coder(修复员)和 Verifier(验证员)。
关键配置:状态定义
首先定义一个 AgentState,用来追踪当前代码版本、错误列表以及循环次数,防止死循环。
from typing import Annotated, TypedDict, List
from langgraph.graph import StateGraph, END
class AgentState(TypedDict):
code: str
critiques: List[str]
iteration_count: int
is_fixed: bool避坑指南:如何写好 Reviewer 的 Prompt
很多人的 Review Agent 说话太客气,导致 Coder 节点产生幻觉。我发现强制要求 Reviewer 输出「结构化错误列表」效果最好。
# Prompt 技巧
你是一个极其苛刻的代码审计专家。
请仅输出以下格式,不要任何废话:
- ERROR: [行号] [错误类型] -> [具体原因]
- SUGGESTION: [行号] [优化点] -> [改进方案]
如果代码完美,请仅输出 "PASS"。核心逻辑:条件跳转
最关键的操作是在 Verifier 节点后设置条件边。我在这里接入了 pytest 或 pylint 的命令行输出,而不是让 LLM 自行判断是否修复。
def should_continue(state: AgentState):
# 如果验证通过,或者循环超过 3 次,则强制结束
if state["is_fixed"] or state["iteration_count"] >= 3:
return "end"
return "continue"
# 构建图
workflow = StateGraph(AgentState)
workflow.add_node("reviewer", review_node)
workflow.add_node("coder", fix_node)
workflow.add_node("verifier", verify_node)
workflow.set_entry_point("reviewer")
workflow.add_edge("reviewer", "coder")
workflow.add_edge("coder", "verifier")
workflow.add_conditional_edges("verifier", should_continue, {
"continue": "reviewer",
"end": END
})效率提升点:上下文压缩
在多次迭代后,Token 消耗会剧增。我踩过的一个坑是把所有历史对话都传给 Coder,导致它在第三次修复时忘记了第一次的原始需求。现在的技巧是:在 coder 节点只接收 current_code 和 latest_critique,把历史记录在 state 中通过 reduce 函数进行精简,只保留未解决的 Bug 列表。
这样构建出来的 Agent 能够独立完成「发现 Bug -> 尝试修复 -> 运行测试 -> 再次审计」的全过程,比单纯在 Cursor 里来回对话要稳定得多,因为逻辑流是确定性的。
免费 AI 工具箱 · 全部完全免费
同类方向的延伸案例可以参考AI大模型变现案例库,有不少直接可参考的案例。
全部回复 (0)
还没有回复,来发第一条吧!
