10 - 思维原子(AoT):结构化规划

难度:高级 时长:~30 分钟 关键概念:AoT、依赖解析、计划验证

核心思想

类比 原子思维 = "推理的 SQL"

正如 SQL 将复杂的数据操作拆分为原子的、可组合的语句一样,AoT 将推理拆分为最小的、可执行的步骤。

什么是原子?

原子(atom)是最小的推理单元,它:

  1. 表达一个想法
  2. 可以独立验证
  3. 可以确定性执行
  4. 无法隐藏错误

示例

非原子(复合语句):

"Search for rooms in Graz and filter by capacity"

原子(独立步骤):

1. Search for rooms in Graz
2. Filter rooms by minimum capacity of 30

三层架构

为什么分离很重要

传统 LLM 方法(ReAct)

原子思维方法

心智模型

烹饪编程
食谱(AoT 计划)算法
"烧开水"boilWater()
"加入意面"addPasta()
"煮 8 分钟"cook(8)

对比:

即兴发挥自然语言
"做顿晚餐""自己想办法"
(自己琢磨)(产生幻觉)

原子结构

{
  "id": 2,
  "kind": "tool",           // tool | decision | final
  "name": "multiply",       // operation name
  "input": {                // explicit inputs
    "a": "<result_of_1>",   // reference to previous result
    "b": 3
  },
  "dependsOn": [1]          // must wait for atom 1
}
  • id:确定执行顺序
  • kind:分类操作类型
  • name:引用可执行函数
  • input:使数据流显式化
  • dependsOn:声明依赖关系

依赖图

原子构成一个有向无环图(DAG)

  • 可以按拓扑顺序执行
  • 可以并行化独立分支
  • 失败时停止在失败的节点
  • 易于可视化和调试

状态管理

const state = {};

// 原子 1 执行后
state[1] = 22;  // add(15, 7) 的结果

// 原子 2 执行后
state[2] = 66;  // multiply(22, 3) 的结果

// 原子 3 执行后
state[3] = 56;  // subtract(66, 10) 的结果
  • 显式(键值映射)
  • 每个原子不可变(不覆盖)
  • 可追溯(完整历史)
  • 可检查(用于调试)

对比:AoT 与 ReAct

问题:"(15 + 7) * 3 - 10 等于多少?"

ReAct 输出(文本):

Thought: I need to add 15 and 7 first
Action: add(15, 7)
Observation: 22
Thought: Now multiply by 3
Action: multiply(22, 3)
Observation: 66
Thought: Finally subtract 10
Action: subtract(66, 10)
Observation: 56
Answer: 56

AoT 输出(JSON):

{
  "atoms": [
    {"id": 1, "kind": "tool", "name": "add", "input": {"a": 15, "b": 7}},
    {"id": 2, "kind": "tool", "name": "multiply", "input": {"a": "<result_of_1>", "b": 3}, "dependsOn": [1]},
    {"id": 3, "kind": "tool", "name": "subtract", "input": {"a": "<result_of_2>", "b": 10}, "dependsOn": [2]},
    {"id": 4, "kind": "final", "name": "report", "dependsOn": [3]}
  ]
}

关键区别

方面ReActAoT
格式自然语言结构化数据
验证不可能执行前验证
测试模拟整个 LLM独立测试执行器
调试阅读文本检查第 N 个原子
重放重新运行整个对话从任意原子重新运行
审计轨迹对话历史数据结构

AoT 的适用场景

非常适合

多步骤工作流、API 编排、金融交易、合规敏感系统、生产环境智能体

不太适合

创意写作、开放式探索、头脑风暴、单步查询

隐藏优势:可调试性

ReAct 调试

"模型在第 7 次迭代中说了些奇怪的话"
→ 重新阅读整个对话
→ 猜测哪里出了问题
→ 希望不会再发生

AoT 调试

"原子 3 失败,错误:'Division by zero'"
→ 查看原子 3 的输入
→ 检查这些输入来自哪里(原子 1、2)
→ 修复工具或添加验证
→ 从原子 3 重新运行

总结

ReAct 的问题是:"一个智能体接下来会说什么?"

AoT 的问题是:"最小的、可执行的计划是什么?"

对于生产系统,你需要的是第二个问题。