Zing 论坛

正文

LaraGraph:为Laravel打造的LangGraph风格状态化工作流引擎

受LangGraph启发的PHP工作流引擎,将循环图结构适配到Laravel的无状态架构中,支持多智能体流水线、人机协作流程和并行任务处理。

LaraGraphLaravelLangGraph工作流引擎PHP多智能体人机协作队列状态管理
发布时间 2026/04/12 07:15最近活动 2026/04/12 07:23预计阅读 3 分钟
LaraGraph:为Laravel打造的LangGraph风格状态化工作流引擎
1

章节 01

导读 / 主楼:LaraGraph:为Laravel打造的LangGraph风格状态化工作流引擎

受LangGraph启发的PHP工作流引擎,将循环图结构适配到Laravel的无状态架构中,支持多智能体流水线、人机协作流程和并行任务处理。

2

章节 02

项目背景与定位

在Python生态中,LangGraph已经成为构建复杂LLM工作流的事实标准。它通过有向图模型支持循环、分支、并行等复杂执行模式,为AI代理工作流提供了强大的编排能力。然而,PHP/Laravel生态长期缺乏同等级别的工作流解决方案。

LaraGraph的诞生填补了这一空白。它明确以LangGraph为灵感来源,将循环图工作流的概念引入PHP世界,同时充分考虑了Laravel的架构特点——特别是其无状态请求模型和队列系统。这种"移植而非照搬"的思路,使得LaraGraph既保留了LangGraph的核心能力,又完美融入了Laravel的技术生态。

3

章节 03

核心概念与术语

LaraGraph采用了一套清晰的术语体系来描述工作流:

  • Node(节点):工作单元,接收当前状态并返回状态变更
  • Edge(边):节点之间的有向连接,支持条件判断
  • State(状态):普通PHP数组,在节点执行过程中累积变更
  • Pointer(指针):跟踪当前运行中节点的位置
  • WorkflowRun(工作流运行):单次工作流执行的持久化记录

这种建模方式与LangGraph高度一致,降低了Python开发者迁移到PHP的学习成本。

4

章节 04

架构设计:适配PHP的无状态特性

PHP的传统执行模型是无状态的——每个HTTP请求都是独立的进程,请求结束后状态即被销毁。这与Python常驻内存的服务模型有着本质区别。LaraGraph的设计巧妙地解决了这一矛盾:

5

章节 05

数据库持久化

每个WorkflowRun都是数据库中的一条记录,包含当前状态、活跃节点指针和执行状态。这使得工作流可以在任意请求边界处暂停,并在后续请求中恢复。

6

章节 06

队列驱动执行

节点执行完全由队列驱动。每个节点作为一个独立的ExecuteNode作业分发到队列,这意味着:

  • 并行分支可以真正并发执行,利用整个工作池的计算能力
  • 长时间运行的节点不会阻塞Web请求
  • 失败节点可以自动重试,具备天然的容错能力
7

章节 07

归约器模式

状态合并采用归约器(Reducer)模式,提供了三种策略:

  1. SmartReducer(默认):列表数组追加,标量和关联数组覆盖
  2. MergeReducer:所有键的深层递归合并
  3. OverwriteReducer:浅层array_merge,总是覆盖

SmartReducer是大多数代理工作流的合理默认选择——消息历史自然累积,而状态、分数等标量值简单覆盖。

8

章节 08

工作流构建API

LaraGraph提供了流畅的Builder API来定义工作流:

$workflow = Workflow::create()
    ->addNode('fetch', FetchNode::class)
    ->addNode('transform', TransformNode::class)
    ->addNode('store', StoreNode::class)
    ->transition(Workflow::START, 'fetch')
    ->transition('fetch', 'transform')
    ->transition('transform', 'store')
    ->transition('store', Workflow::END);

这种链式调用风格符合Laravel开发者的习惯,代码可读性极佳。