用 LangGraph 搭一套企业级 Coding Workflow,聊聊我的思路

公司前一阵子在折腾 LangGraph,想把团队里从需求到上线的整个编码流程串起来。传统的 CI/CD 管道大家都熟,但如果把 LLM 能力嵌进去,让每个环节都带上"智能判断",体验完全不一样。这里分享下我的方案和踩坑记录。

为什么选 LangGraph

LangChain 的 Chain 模式是线性的,而真实的开发流程充满分支——代码写完可能要打回重写,合规审查不过要回到开发阶段。LangGraph 天然支持有向图 + 条件路由,节点之间可以灵活跳转,非常适合这种有状态、有循环的工作流。

整体架构

我把流程拆成五个核心节点:

需求分析 → 代码开发 → Code Review → 合规审查 → 部署运维
              ↑            |              |
              └── 打回 ────┘              |
              ↑                           |
              └────── 合规不通过 ─────────┘

关键在于两个回路:Review 不通过回开发,合规不通过也回开发。这就是 LangGraph 比纯 Chain 强的地方。

核心代码

from langgraph.graph import StateGraph, END
from typing import TypedDict

class WorkflowState(TypedDict):
    requirement: str
    code: str
    review_passed: bool
    compliance_passed: bool
    deploy_status: str
    retry_count: int

def develop(state: WorkflowState) -> WorkflowState:
    """代码开发节点,基于需求生成/修改代码"""
    # 实际项目里这里调 LLM 生成代码
    state["code"] = f"generated code for: {state['requirement']}"
    return state

def code_review(state: WorkflowState) -> WorkflowState:
    """Code Review 节点,检查代码质量、规范、安全漏洞"""
    # LLM 做静态分析 + 规则引擎兜底
    state["review_passed"] = True  # 简化示意
    return state

def compliance_check(state: WorkflowState) -> WorkflowState:
    """合规审查,检查许可证、数据隐私、行业法规"""
    state["compliance_passed"] = True
    return state

def deploy(state: WorkflowState) -> WorkflowState:
    """部署上线"""
    state["deploy_status"] = "deployed"
    return state

def monitor(state: WorkflowState) -> WorkflowState:
    """运维监控,异常时可触发回滚"""
    state["deploy_status"] = "running_stable"
    return state

# 条件路由
def after_review(state: WorkflowState):
    return "compliance_check" if state["review_passed"] else "develop"

def after_compliance(state: WorkflowState):
    return "deploy" if state["compliance_passed"] else "develop"

# 构建图
graph = StateGraph(WorkflowState)
graph.add_node("develop", develop)
graph.add_node("code_review", code_review)
graph.add_node("compliance_check", compliance_check)
graph.add_node("deploy", deploy)
graph.add_node("monitor", monitor)

graph.set_entry_point("develop")
graph.add_edge("develop", "code_review")
graph.add_conditional_edges("code_review", after_review)
graph.add_conditional_edges("compliance_check", after_compliance)
graph.add_edge("deploy", "monitor")
graph.add_edge("monitor", END)

workflow = graph.compile()

# 执行
result = workflow.invoke({
    "requirement": "实现用户数据导出接口",
    "code": "", "review_passed": False,
    "compliance_passed": False, "deploy_status": "",
    "retry_count": 0
})

几个实践要点

1. 一定要加重试上限。 回路如果不设 retry_count 上限,Review 和合规反复打回会死循环。我一般设 3 次,超过直接走人工审批分支。

2. Review 节点别只靠 LLM。 纯 LLM 做 Code Review 会漏掉很多边界问题。我的做法是 LLM 负责逻辑和设计层面的审查,再叠一层 SonarQube 或 Semgrep 做规则扫描,两者结果合并判断。

3. 合规审查要结构化。 不同行业的合规要求差异很大,把检查项拆成 checklist 传给 LLM,让它逐项判断并给出理由,比丢一段代码让它"看看有没有问题"靠谱得多。

4. State 持久化。 企业场景下流程可能跨天执行,LangGraph 支持 checkpoint 机制,搭配 Redis 或 PostgreSQL 做状态持久化,中断后可以从断点恢复。

5. 部署运维节点考虑接真实工具链。 deploy 节点可以通过 Tool Calling 对接 Kubernetes API 或 Terraform,monitor 节点接 Prometheus 告警,形成闭环。

小结

LangGraph 的核心价值在于把"判断"和"流转"解耦了。每个节点专注做一件事,路由逻辑集中管理,扩展新节点几乎零成本。在企业场景里,配合状态持久化和重试机制,稳定性完全够用。

#AI求职实录#
全部评论
LangGraph可以结合Claude Code或者cursor来实现Coding Workflow吗?
点赞 回复 分享
发布于 03-29 04:30 陕西
确实实用,蹲一个细节!
点赞 回复 分享
发布于 03-01 11:20 四川

相关推荐

自从我室友在计算机导论课上听说了“刷 LeetCode 是进入大厂的敲门砖”,整个人就跟走火入魔了一样。他在宿舍门口贴了一张A4纸,上面写着:“正在 DP,请勿打扰,否则 Time Limit Exceeded。”日记本的扉页被他用黑色水笔加粗描了三遍:“Talk is cheap. Show me the code。”连宿舍聚餐,他都要给我们讲解:“今天的座位安排可以用回溯算法解决,但为了避免栈溢出,我建议用动态规划。来,这是状态转移方程:dp[i][j] 代表第 i 个人坐在第 j 个位置的最优解。”我让他去楼下取个快递,他不直接去,非要在门口踱步,嘴里念念有词:“这是一个图的遍历问题。从宿舍楼(root)到驿站(target node),我应该用 BFS 还是 DFS?嗯,求最短路径,还是广度优先好。”和同学约好出去开黑,他会提前发消息:“集合点 (x, y),我们俩的路径有 k 个交点,为了最小化时间复杂度,应该在 (x/2, y/2) 处汇合。”有一次另一个室友低血糖犯了,让他帮忙找颗糖,他居然冷静地分析道:“别急,这是一个查找问题。零食箱是无序数组,暴力查找是 O(n)。如果按甜度排序,我就可以用二分查找,时间复杂度降到 O(log n)。”他做卫生也要讲究算法效率:“拖地是典型的岛屿问题,要先把连通的污渍区块都清理掉。倒垃圾可以用双指针法,一个指针从左往右,一个从右往左,能最快匹配垃圾分类。”现在我们宿舍的画风已经完全变了,大家不聊游戏和妹子,对话都是这样的:“你 Two Sum 刷了几遍了?”“别提了,昨天遇到一道 Hard 题,我连暴力解都想不出来,最后只能看题解。你呢?”“我动态规划还不行,总是找不到最优子结构。今天那道接雨水给我整麻了。”……LeetCode 真的害了我室友!!!
老六f:编程嘉豪来了
AI时代还有必要刷lee...
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务