欢迎光临
我们一直在努力

为什么 Agent Framework 都在走状态机架构

前言

如果你观察近两年的 AI Agent 框架,会发现一个非常有趣的现象。

无论是:

  • LangGraph
  • OpenAI Agents SDK
  • AutoGen
  • CrewAI
  • Google ADK
  • Mastra
  • Semantic Kernel(部分场景)

它们都开始弱化「聊天机器人」的概念,而越来越强调:

状态(State)。

很多开发者第一次接触 Agent 时,会认为 Agent 只是:

用户
↓

LLM
↓

答案

这种结构对于简单问答已经足够。

但是,一旦任务稍微复杂一点,例如:

  • 修改一个项目
  • 自动完成一次代码 Review
  • 搜索多个数据源
  • 调用多个 API
  • 分析日志
  • 生成报告

这种简单结构就会迅速失效。

真正的问题不是模型能力,而是流程管理。

状态机正是为了解决这个问题而存在。


什么是状态?

可以把一次 Agent 执行理解成:

一个不断变化的状态集合。

例如:

当前任务:

分析 Docker 项目

↓

已读取 package.json

↓

已读取 Dockerfile

↓

已分析目录结构

↓

准备调用 Git

↓

等待工具返回

↓

开始生成报告

这些都属于当前 Agent 的状态。

如果没有状态保存。

模型每一步都必须重新推理。

不仅成本高。

而且容易遗漏之前已经完成的工作。


为什么聊天模式无法完成复杂任务?

很多 Demo 都采用:

Question

↓

LLM

↓

Tool

↓

LLM

↓

Answer

如果任务只有一步。

没有问题。

但是:

假设:

用户:

帮我分析这个项目。

找出安全问题。

修改代码。

重新运行测试。

最后生成报告。

实际上包含:

至少:

二十多个步骤。

如果全部交给一次 Prompt。

模型几乎不可能稳定完成。


Agent 更像工作流,而不是聊天

现代 Agent 更像:

开始

↓

规划

↓

读取文件

↓

分析

↓

调用工具

↓

更新状态

↓

继续规划

↓

结束

每一步:

都是一个节点。

节点之间:

通过状态传递信息。

这就是状态机。


为什么需要显式状态?

假设:

Agent:

读取:

package.json

如果没有状态。

下一步:

模型根本不知道:

package.json

已经读取过。

于是:

再次读取。

第三步:

又读取一次。

最终:

无限循环。

状态存在的意义:

就是告诉 Agent:

哪些事情已经完成。

哪些事情还没有完成。


状态通常包含哪些内容?

成熟系统一般都会维护:

messages

current_task

tool_results

memory

plan

artifacts

retry_count

step_count

这些信息共同组成:

Agent State。

以后无论切换模型。

还是恢复任务。

都可以继续执行。


为什么状态不能全部放 Prompt?

很多开发者:

直接:

Prompt += Everything

结果:

Prompt:

越来越长。

越来越乱。

真正成熟的系统:

状态和 Prompt 是两回事。

状态保存在:

内存。

Redis。

数据库。

Prompt 只是:

状态的一个投影。

也就是说:

Prompt 是状态生成出来的。

而不是状态本身。


节点之间如何通信?

推荐:

每个节点:

只负责:

输入。

输出。

不要直接操作其他节点。

例如:

Planner

↓

Task List

↓

Executor

↓

Tool Result

↓

Planner

所有通信:

都通过:

State。

这样:

耦合最低。


为什么状态机更容易恢复?

假设:

Agent:

执行:

第 18 步。

服务器:

突然重启。

如果没有状态。

只能:

重新开始。

如果:

状态持久化。

恢复后:

直接:

继续:

Step18。

这也是:

长任务 Agent

必须具备的能力。


Agent 为什么容易死循环?

最典型:

Search

↓

LLM

↓

Search

↓

LLM

↓

Search

一直循环。

状态机:

通常会增加:

max_steps

visited_nodes

retry_limit

避免:

无限执行。


状态机与工作流的区别

很多人认为:

状态机

=

工作流。

实际上:

工作流描述的是:

执行顺序。

状态机描述的是:

系统当前状态。

Agent:

需要:

两者结合。


为什么越来越多 Framework 都采用状态机?

因为:

复杂 Agent:

已经不是:

Prompt Engineering。

而是:

Workflow Engineering。

真正决定 Agent 能力的。

越来越不是:

模型。

而是:

流程。

状态。

工具。

Memory。

这些共同组成:

Agent Runtime。


推荐架构

User

↓

Planner

↓

State

↓

Executor

↓

Tool

↓

Update State

↓

Planner

↓

Finish

所有节点。

只操作:

State。

而不是:

Prompt。


总结

未来 Agent Framework 的竞争。

很可能不是:

谁接入更多模型。

而是谁拥有:

更稳定的 Runtime。

状态机让 Agent:

能够恢复。

能够暂停。

能够回滚。

能够调试。

能够扩展。

它正在成为现代 AI Agent 最重要的底层设计思想之一。

赞(0)
未经允许不得转载:X记录空间 » 为什么 Agent Framework 都在走状态机架构