AI Agent 状态机架构 深度研究报告

文章: 从文本补全到状态机循环:重定义 AI Agent 的操作系统架构

作者: guyskk (自宅创业)

链接: https://blog.guyskk.com/notes/ai-agent-state-machine

日期: 2026-02-23

报告日期: 2026-02-23

一句话总结

把 Context Window 当 CPU 寄存器用,不再追加聊天记录,而是每轮覆盖写状态——用"状态机循环"替代"日志追加"来解决上下文爆炸问题。

核心论点

问题诊断

推理速度突破 5000 tokens/s 后,Agent 的 Re-Act 循环进入毫秒级。但 Context Window(200K~1M tokens)在几十秒内就被思考日志填满。现有的"追加历史记录"模式 = 用 L1 缓存存整个程序生命周期的数据流,物理上不可能。

关键洞察: Transformer 是无状态的,它通过重放历史来模拟状态。

解决方案:Context Window 槽位化

把 Context Window 像 CPU 寄存器一样分区:

槽位类比内容特性
R_System指令集Agent 身份、能力边界、工具规范只读
R_IP程序计数器当前执行步骤读写
R_State全局寄存器结构化状态(JSON,≤4K tokens)**覆盖写**
R_Working通用寄存器当前工具返回的临时数据用完即弃
R_CallStack调用栈子任务时压栈保存状态LIFO

运行循环


Fetch → Decode → Execute → Writeback
  ↑                              |
  └──────────────────────────────┘

关键在 Writeback:
  10,000 行日志 → R_Working
  LLM 提取关键信息 → "error_line": 500
  丢弃 R_Working → 上下文仅增加几个 token

深度评价

👍 说得对的部分

1. 问题诊断精准 — 上下文爆炸确实是长时间运行 Agent 的核心瓶颈。Claude Code、Cursor 用久了都会变慢/变笨,本质就是这个问题。

2. CPU 类比很有启发性 — 把 Context Window 当寄存器、把 LLM 推理当汇编指令执行,这个心智模型帮助理解为什么"追加日志"是错的。

3. 状态覆盖 > 日志追加 — 这是正确方向。保留"当前状态"而非"如何到达当前状态",信息密度高得多。

🤔 值得商榷的部分

1. LLM 不是真正的 CPU — CPU 执行指令是确定性的,LLM 每次推理有随机性。状态压缩过程中可能丢失关键信息,但 CPU 从不会丢寄存器里的位。作者低估了"压缩"这一步的损耗——让 LLM 自己决定什么重要什么不重要,本身就是 lossy compression。

2. 4K token 的 R_State 够吗? — 复杂任务(如重构一个大型代码库)的状态可能远超 4K。作者没有讨论状态溢出怎么办——难道要引入"虚拟内存"?

3. 没有讨论状态损坏 — CPU 寄存器有硬件保证不会无故翻转,但 LLM 的状态更新可能引入幻觉。一次错误的 R_State 覆盖会像雪崩一样影响后续所有决策(没有历史日志可回溯)。

4. 忽略了现有实践 — OpenClaw 的 MEMORY.md + 每日记忆文件、Claude Code 的 CLAUDE.md、Cursor 的 .cursorrules,本质上都在做类似的事——只是没有用"寄存器"的术语。文章把一个已在发生的渐进演化包装成了革命性突破。

与 OpenClaw 架构的映射

这个对比其实很有趣——OpenClaw 已经在实践这篇文章描述的很多理念:

状态机概念OpenClaw 对应
R_System (指令集)SOUL.md + AGENTS.md
R_IP (指令指针)HEARTBEAT.md + 当前任务上下文
R_State (全局寄存器)MEMORY.md + memory/*.md
R_Working (临时寄存器)当前对话中的工具返回
R_CallStack (调用栈)sessions_spawn 子 Agent
主存/磁盘docs/、projects/ 等文件系统
状态覆盖每天更新 memory/YYYY-MM-DD.md,定期精简 MEMORY.md

OpenClaw 的做法更务实: 不强求每轮都做状态压缩(太贵),而是通过文件系统做"分级存储"——高频状态放 .md 文件(L2 缓存),低频数据放文件系统(主存),通过 memory_search 按需加载。

与其他方案对比

方案状态管理策略
**本文**严格槽位化 Context Window,每轮覆盖
**LangGraph**图+状态机,节点间传递 TypedDict 状态
**MemGPT/Letta**虚拟内存分页,Main Context + Archival Storage
**OpenClaw**文件系统 = 外部状态,.md 文件 = 持久寄存器
**Claude Code**CLAUDE.md + 对话历史压缩

其中 MemGPT 的"虚拟内存"隐喻与本文最接近,但 MemGPT 更进一步引入了分页和换入换出机制。

总结

维度评分
问题洞察⭐⭐⭐⭐⭐
方案设计⭐⭐⭐⭐
实用性⭐⭐⭐
新颖性⭐⭐⭐

核心价值: 提供了一个很好的心智模型——把 Context Window 当寄存器而非聊天记录。这个类比能帮助 Agent 开发者做出更好的架构决策。

局限: 更像一篇思想实验而非工程方案。没有代码、没有 benchmark、没有讨论状态损坏恢复。实际上 MemGPT (2023) 和 LangGraph 已经在用不同术语做类似的事。

对我们的启发: 我们的 MEMORY.md 精简流程可以更结构化——比如引入固定格式的"状态快照"section,而不是自由格式的笔记。但没必要走到"每轮都压缩"那么极端。

参考链接: