💡 2025 年 2 月,Andrej Karpathy 提出 "Vibe Coding"——用自然语言描述意图,AI 负责写代码,你只看结果、提反馈。一年过去,Vibe Coding 让原型开发效率飙升,但生产级 AI 应用却暴露出状态管理、错误恢复、人机协作等硬骨头。本文带你从 Vibe Coding 的"快"出发,深入 LangChain 的组件化思想和 LangGraph 的图式编排,看清 AI 应用从 demo 到生产的完整技术路径。


一、Vibe Coding:AI 原生开发范式的崛起与边界

1.1 什么是 Vibe Coding

Vibe Coding(氛围编程/意图驱动编程)由 OpenAI 联合创始人 Andrej Karpathy 于 2025 年 2 月提出,核心理念是:

"You fully give in to the vibes, embrace exponentials, and forget that the code even exists."

开发者用自然语言描述"要做什么",AI 负责生成代码,开发者只管看结果、提反馈,从"手写代码"转向"描述意图 + 验收结果"

典型工作流是一个紧凑的循环:

描述需求(自然语言)
    ↓
AI 生成代码(Cursor / Claude / Codex 等)
    ↓
运行 → 看效果 / 报错
    ↓
有问题?把错误信息扔回给 AI → 重新生成

1.2 Vibe Coding 的真实能力与风险

MVP 快速验证、脚本自动化、前端 UI 草稿​ 等场景中,熟练开发者借助 Cursor 和 Claude 能在一天内完成传统需要三天的工作 。但 "Vibe 出来的代码" 存在四个典型问题 :

风险维度

具体表现

安全盲区

AI 不会主动考虑 SQL 注入或 XSS 防御,除非明确要求

技术债积累

AI 倾向于选择"能跑通"的实现,而非"最优"的架构

调试困难

没有代码理解能力的开发者容易陷入"改了这里、坏了那里"的循环

协作割裂

代码风格不统一,在团队代码库中制造一致性问题

Google 工程负责人 Addy Osmani 将其总结为 "70% 问题":Vibe Coding 能快速完成 70% 的功能,但最后 30%(生产化、安全、可维护)如果没有深厚工程能力,会变得极其艰难 。

⚠️ 关键认知:Vibe Coding 降低了"把想法变成能跑的代码"的门槛,但没有降低"把代码变成生产系统"的门槛。后者恰恰是 LangChain 与 LangGraph 的主战场。


二、LangChain:组件化 LLM 应用开发的基石

2.1 核心定位

LangChain 诞生于 2022 年 10 月,是 LLM 应用开发的组件库 + 编排引擎。它把 LLM 应用拆解为可组合的模块 :

  • 模型层(Models):LLM / ChatModel 的统一封装

  • 提示层(Prompts):提示词模板与管理

  • 记忆层(Memory):上下文与状态管理

  • 工具层(Tools):LLM 调用外部工具

  • 链层(Chains):组件的线性组合

  • 代理层(Agents):自主决策与工具调用

根据 LangChain 官方的最新定位,LangChain 是一个代理框架(Agent Framework),提供结构化内容块、代理循环、中间件等标准抽象,让开发者能快速构建代理和自主应用 。

2.2 LangChain 的适用边界

LangChain 擅长"组件拆解"和"线性链式开发",在以下场景表现出色 :

  • ✅ 简单线性流程、单智能体

  • ✅ 快速原型开发

  • ✅ 明确的"从 A 到 B"任务(如 RAG:文档加载 → 分割 → 向量化 → 检索 → 生成)

但当面对复杂控制流(循环、条件分支、动态路由)时,LangChain 需要通过 RunnableBranchRunnableLambda 等模拟控制流,会显得笨拙 。这正是 LangGraph 诞生的原因。


三、LangGraph:图化编排与有状态智能体的运行时

3.1 为什么需要 LangGraph

LangGraph 于 2023 年 12 月推出(最初叫 LangChain Recurse),官方将其定位为低级别编排框架与运行时(Low-level orchestration framework and runtime),专门用于构建、管理和部署长时间运行、有状态的智能体​ 。

根据 LangChain 官方的产品分层 :

层级

代表

核心职责

Agent Frameworks(框架)

LangChain

提供抽象,便于快速上手

Agent Runtimes(运行时)

LangGraph

提供持久执行、流式、HITL、持久化等生产工具

Agent Harnesses(套件)

Deep Agents SDK

提供预定义工具、规划能力、子代理等

📌 LangChain 1.0 已经构建在 LangGraph 之上,但你使用 LangChain 时不需要了解 LangGraph 。

3.2 三个核心抽象:State、Node、Edge

LangGraph 将代理工作流建模为图,核心只有三个组件 :

🎯 State(状态)

一个共享数据结构,表示应用的当前快照。通常使用 TypedDict 或 Pydantic 模型定义,字段可通过 reducer​ 函数定义新旧值如何合并(如 add_messages 追加而非覆盖)。

🔧 Node(节点)

编码代理逻辑的函数。接收当前状态作为输入,执行计算或副作用,返回更新后的状态。节点可以是 LLM 调用,也可以是普通代码

🔗 Edge(边)

根据当前状态决定接下来执行哪个节点。可以是条件分支或固定转换。

from typing import Annotated, TypedDict
from langgraph.graph.message import add_messages

class State(TypedDict):
    messages: Annotated[list, add_messages]  # reducer:追加而非覆盖
    topic: str

3.3 底层执行模型:Pregel 与超级步骤

LangGraph 的底层图算法受 Google Pregel 系统启发,以离散的"超级步骤(super-step)"​ 执行 :

  1. Plan:确定本轮要执行的节点

  2. Execution:并行执行所有选中节点

  3. Update:将节点输出更新到通信通道

每个超级步骤结束时,没有传入消息的节点将自己标记为 inactive 并投票 halt;当所有节点都 inactive 且没有消息在传输时,图执行终止。

3.4 五大核心优势

LangGraph 为长时间运行、有状态的工作流提供底层支持 :

1. 持久执行(Durable Execution)

通过 Checkpointer​ 机制,在每一个超级步骤后自动保存状态快照。进程崩溃后,新进程只需使用相同的 thread_id 重新调用图,LangGraph 会加载最新的检查点并从队列中的下一个节点继续执行——崩溃恢复与正常调用是同一个操作​ 。

from langgraph.checkpoint.postgres import PostgresSaver

checkpointer = PostgresSaver(conn)  # 持久化、跨进程共享
graph = builder.compile(checkpointer=checkpointer)

config = {"configurable": {"thread_id": "alice"}}
graph.invoke({"topic": "Transformers", "messages": []}, config)
# 第二次调用会恢复同一个 thread,通过 add_messages 追加
2. 人机协作(Human-in-the-loop)

interrupt() 函数保存检查点并返回控制权;人工输入到达后,图从该精确点恢复。等待可以持续数分钟甚至数天,远超任何进程的生存周期 。

3. 全面记忆(Comprehensive Memory)
  • 短期工作记忆:用于持续推理(单个 thread 内)

  • 长期持久记忆:跨会话保持(跨 thread)

4. 时间旅行(Time Travel)

通过指定 checkpoint_id 直接加载历史状态快照,用于 A/B 测试、故障复现、审计追溯 。

5. 生产就绪部署

可与 LangSmith 深度集成,提供执行路径追踪、状态转换捕获、运行时指标等可视化工具 。


四、LangChain vs LangGraph:核心差异深度解析

4.1 四个维度的本质差异

维度

LangChain

LangGraph

执行结构

线性链式

图结构(支持循环/分支)

状态管理

参数传递,链外存储

一等公民,Schema 驱动

控制流

编排(模拟分支/循环)

内置流程引擎

调试可视化

黑盒(依赖 Callbacks)

白盒(图可视化 + 状态追踪)

4.2 选择决策矩阵

🎯 使用 LangChain 当

  • 快速构建 RAG 问答系统

  • 流程是线性的、确定性的

  • 主要关注提示词模板、工具封装和输出解析

  • 不需要复杂的循环或长期状态管理

🎯 使用 LangGraph 当

  • 构建需要"思考-行动-观察"循环的智能体(ReAct、Plan-and-Execute)

  • 应用需要根据中间结果动态改变执行路径

  • 需要持久执行、人机协作、长期记忆

  • 构建复杂多智能体协作系统

4.3 两者不是替代,而是互补

💡 LangGraph 并非替代 LangChain,而是对它的补充与升级:

  • 底层依赖:LangGraph 复用 LangChain 的核心组件(模型、提示、工具、记忆)

  • 能力互补:LangChain 擅长"组件拆解",LangGraph 擅长"复杂流程编排"

  • 开发范式:LangChain 是"线性链式开发",LangGraph 是"图化节点开发"


五、从 Vibe Coding 到生产级 Agent:完整技术路径

结合前文分析,我们可以勾勒出一条清晰的演进路径:

阶段一:Vibe Coding 快速验证(70%)

用 Cursor / Claude 等工具,通过自然语言快速搭建原型。这一阶段重点验证:

  • 产品需求是否成立

  • 核心用户交互是否顺畅

  • LLM 的能力边界在哪里

阶段二:LangChain 组件化重构(20%)

将 Vibe 出来的代码用 LangChain 的组件体系重构:

  • PromptTemplate 管理提示词

  • Tool / BaseTool 封装外部工具

  • ChatModel 统一模型调用接口

  • Memory 管理对话历史

这一步解决"技术债"和"代码风格不统一"的问题。

阶段三:LangGraph 图化编排(10%,但决定生产可用性)

当应用需要以下能力时,引入 LangGraph:

  • 循环推理:Agent 需要"行动-观察-再行动"

  • 持久化:长时间运行任务不能因崩溃归零

  • 人机协作:高风险操作需要人工审批

  • 多智能体:不同专家代理协作

from langgraph.graph import StateGraph, START, END

# 构建有状态图
builder = StateGraph(State)
builder.add_node("research", research_agent)   # LLM 工具调用节点
builder.add_node("review", review_gate)        # 确定性门控节点

# 条件边:根据 research 结果决定下一步
builder.add_conditional_edges("research", route_after_research)
builder.add_edge("review", END)

# 编译时挂载持久化
graph = builder.compile(checkpointer=PostgresSaver(conn))

这就是 LangGraph 的核心优势:在一个图里同时容纳"确定性的、开发者驱动的节点"和"LLM 驱动的、自主决策的节点" ——这种混合正是生产级 Agent 的精髓。


六、工程落地最佳实践

6.1 Checkpointer 选型

Checkpointer

适用场景

MemorySaver

开发环境,重启即丢失

SqliteSaver

单机部署,容器内需挂载持久卷

PostgresSaver

多进程、并发线程的生产环境

6.2 状态设计原则

⚠️ 生产环境的关键经验 :

  • 单个检查点超过 ~50KB 时,将载荷移至外部存储(如 S3),状态中只存引用

  • 状态中的每个字段都要付出序列化时间和 LLM 上下文预算

  • 只为父图编译时挂载 checkpointer,子图不要再挂,避免命名空间重复

6.3 Vibe Coding 规范化趋势

2026 年,先行企业正在建立 "Vibe Code 规范":要求 AI 生成代码必须经过 SAST 安全扫描、代码风格检查器和人工代码审查三个门禁 。这一规范化趋势使 Vibe Coding 从个人效率工具升级为团队工程基础设施——而 LangChain + LangGraph 正是这套基础设施的 AI 应用层支柱。


七、总结:范式演进的本质

从 Vibe Coding 到 LangChain 再到 LangGraph,我们看到的是 AI 应用开发范式的三次跃迁

  1. Vibe Coding:解决"想法 → 代码"的效率问题,让非专业开发者也能快速验证

  2. LangChain:解决"代码 → 组件化应用"的工程问题,提供标准化的 LLM 应用构建块

  3. LangGraph:解决"应用 → 生产级智能体"的可靠性问题,提供有状态、可持久、可恢复的运行时

这三者不是替代关系,而是层层递进的能力叠加。Vibe Coding 让你跑得更快,LangChain 让你的代码更规范,LangGraph 让你的系统更可靠。

🚀 真正的高手,会在 Vibe Coding 阶段大胆试错,在 LangChain 阶段严谨重构,在 LangGraph 阶段精心设计状态与图结构——三者的有机结合,才是 AI 原生应用从 demo 走向生产的完整答案。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐