前言
如果你观察近两年的 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 最重要的底层设计思想之一。
X记录空间