Agent 大脑层:从思维链到蒙特卡洛树搜索的推理进化之路

系统性拆解 Agent 架构大脑层的六大推理模式——CoT、ReAct、Plan-and-Execute、ToT、LATS、Reasoning Tokens,深入蒙特卡洛树搜索机制,并以 LogicAI2 为实例展示类比迁移与工程落地路径。


引言:Agent 的大脑在想什么?

在 Agent 架构的五层共识中,大脑与推理计划层(Brain & Planning) 是最核心的一层——它决定了 Agent “怎么想”和”怎么决定下一步做什么”。

从 2022 年 CoT(思维链)的提出到 2026 年 Reasoning Tokens 的普及,大脑层的推理模式经历了一场清晰的进化:

CoT(线性推理)
  → ReAct(推理+工具循环)
    → Plan-and-Execute(规划执行分离)
      → ToT(树形分支搜索)
        → LATS(蒙特卡洛树搜索 + 自我反思)
          → Reasoning Tokens(推理时算力动态控制)

这篇文章将沿着这条进化路线,逐站拆解每种模式的核心机制、性能数据和适用场景。在深入 ToT 和 LATS 的分支搜索机制后,我会以我正在构建的 LogicAI2 系统为实例,展示这些学术概念如何映射为工程实践。


第一站:CoT —— 线性思维链,一切推理的基石

Chain-of-Thought(Wei et al., NeurIPS 2022)是所有后续推理模式的底层基础设施。核心思想极其简单:让模型”写出解题步骤”而不是直接给答案

加入中间推理步骤后,模型的逻辑跳跃被拉成可追踪的链条,幻觉率显著下降。

验证方式:向任意 LLM 发送:

请一步步思考:小明有 5 个苹果,吃了 2 个,又买了 3 个,给小红 1 个。他还有几个?

检查输出中是否出现显式的中间推理链(第一步、第二步……),而非直接蹦出数字。如果出现了,CoT 已生效。

CoT 在简单任务上表现出色,但它的上限很明显——在 Game of 24(用四个数字通过加减乘除得到 24)基准测试中,CoT 的成功率仅 4%。线性推理只走一条路,走错了就没有回头的机会。


第二站:ReAct —— 推理 + 行动循环,2026 年的绝对主流

ReAct(Yao et al., ICLR 2023, arXiv: 2210.03629)在 CoT 基础上增加了与外部世界交互的能力。它将 Agent 的每一步结构化为三拍循环:

Thought → Action → Observation → Thought → Action → Observation → ...
  • Thought:用 CoT 思考该做什么
  • Action:调用一个外部工具(搜索、计算器、API)
  • Observation:观察工具返回结果,据此决定下一步

这是 2026 年生产级 Agent 的绝对主流模式。Claude Code、OpenAI Codex、Cursor 的底层推理引擎都是 ReAct 变体。它的优势在于简单可靠,缺点是每一步都需要调用一次 LLM——N 个工具调用意味着 N+1 次 LLM 调用,成本和延迟线性增长。


第三站:Plan-and-Execute —— 规划与执行分离

为了解决 ReAct 的成本问题,Plan-and-Execute 模式将推理拆为两个独立阶段:先由一个强模型生成完整计划,再由一个廉价模型(甚至无需 LLM)逐步执行。

ReWOO(Xu et al., 2023, arXiv: 2305.18323)是这一思路的极致版本。它在规划时使用变量占位符:

Plan:
#E1 = Search["TypeScript 斐波那契实现"]
#E2 = Search["#E1 中提到的性能优化方法"]
#E3 = LLM["根据 #E1 和 #E2 写出最优实现"]

工具执行时自动替换变量,最终由一次 LLM 调用整合所有结果。三种模式的核心差异:

维度ReActPlan-and-ExecuteReWOO
规划方式每步实时规划一次性生成完整计划一次性生成含占位符的计划
执行方式每步调 LLM + 工具廉价模型逐步执行直接执行工具,0 次额外 LLM 调用
总 LLM 调用N+12–32(规划+整合)
成本低(节省 30%–82%)

第四站:Tree of Thoughts —— 从线性到树形的跃迁

前三种模式都是线性推理——沿一条路走到底。当问题存在多种可能方案、需要”往前想几步再选最优路线”时,线性模式就力不从心了。

Tree of Thoughts (ToT)(Yao et al., NeurIPS 2023, arXiv: 2305.10601)在每个决策点同时展开多个候选方案分支,用 LLM 自评估每个分支的前景,剪枝保留最优路线。

ToT 的四个核心组件

                    ToT 框架

        ┌──────────────┼──────────────┐──────────────┐
        │              │              │              │
   ① 思维分解      ② 思维生成      ③ 状态评估      ④ 搜索算法
  Decomposition    Generation     Evaluation      Search

① 思维分解:将问题拆成若干步骤,每步称为一个”思维单元”。关键是粒度——太粗则失去搜索意义,太细则组合爆炸。

② 思维生成:两种策略:

  • 独立采样(Sample):用 temperature > 0 采样 k 次,生成 k 个独立候选。适合思维空间丰富的场景
  • 提议式生成(Propose):一个 Prompt 一次性提出 k 个不同方案。适合有约束的场景

③ 状态评估:两种方式:

  • 投票(Vote):给出 k 个候选,LLM 投票选最优
  • 打分(Value):LLM 对每个状态打分(sure / likely / impossible),用于剪枝

④ 搜索算法

  • BFS(广度优先):逐层展开,每层保留 top-b 个最佳节点
  • DFS(深度优先):沿一条路走到底,遇到 “impossible” 回溯

Game of 24 搜索实例

输入:数字 [1, 5, 6, 7],目标得到 24

第 1 层(生成 5 个候选):
├── T1.1: 7 - 1 = 6  → 剩 [5, 6, 6]    评估: sure ✅
├── T1.2: 5 + 1 = 6  → 剩 [6, 6, 7]    评估: sure ✅
├── T1.3: 7 * 1 = 7  → 剩 [5, 6, 7]    评估: likely ⚠️
├── T1.4: 6 - 1 = 5  → 剩 [5, 5, 7]    评估: likely ⚠️
└── T1.5: 5 * 1 = 5  → 剩 [5, 6, 7]    评估: likely ⚠️

BFS 保留 top-3:T1.1, T1.2, T1.3

第 2 层(从 T1.2 展开):
├── T2.1: 6 * 6 = 36 → 剩 [7, 36]      评估: impossible ❌
├── T2.2: 6 + 6 = 12 → 剩 [7, 12]      评估: likely ⚠️
├── T2.3: 7 - 6 = 1  → 剩 [1, 6]       评估: impossible ❌
└── ...

继续搜索直到找到可行解路径...

性能数据

任务IO PromptingCoTCoT-SC (k=100)ToT
Game of 247.3%4.0%9.0%74%
Creative Writing6.196.937.567.56
Mini Crossword15.6%15.6%20%60%

数据来源:Yao et al., NeurIPS 2023

Game of 24 从 CoT 的 4% 跃升至 ToT 的 74%——这就是”从线性到树形”的威力。


第五站:LATS —— 蒙特卡洛树搜索 + 自我反思

LATS(Language Agent Tree Search)(Zhou et al., ICML 2024, arXiv: 2310.04406)是 ToT 的重大升级。它引入了 MCTS(蒙特卡洛树搜索)——与 AlphaGo 同源的搜索算法,并融合了 Reflexion 的自我反思机制。

MCTS 的四步循环

理解 LATS 必须先理解经典 MCTS。这套算法最初在围棋中大放异彩,其核心是用统计采样替代穷举搜索

┌─────────┐   ┌─────────┐   ┌──────────┐   ┌────────────────┐
│ Selection│──→│Expansion│──→│Simulation│──→│Backpropagation │
│ (选择)   │   │ (扩展)  │   │ (模拟)   │   │(反向传播)      │
└─────────┘   └─────────┘   └──────────┘   └────────────────┘
     ↑                                             │
     └─────────────── 重复 N 次迭代 ───────────────┘

Step 1 — Selection(选择):从根节点出发,用 UCB 公式选择子节点,一直走到叶节点:

UCB(node) = Q(node)/N(node) + c × √(ln(N_parent) / N(node))
             ───────────────   ────────────────────────────────
              exploitation               exploration
           (利用:选价值高的)       (探索:选访问少的)
  • Q(node): 该节点累计奖励值
  • N(node): 该节点被访问次数
  • N_parent: 父节点被访问次数
  • c: 探索常数,通常取 1.4(√2 ≈ 1.414)

c 值越大,越倾向于探索未知路径;c 值越小,越倾向于深挖已知好路径。

Step 2 — Expansion(扩展):在选中的叶节点上,生成 N 个可能的子节点。

Step 3 — Simulation(模拟):从新扩展的节点出发,进行一次完整的”快速走棋”直到终态,获得奖励值。在 AlphaGo 中是随机走棋到终局;在 LATS 中是让 LLM 完整回答问题。

Step 4 — Backpropagation(反向传播):将模拟结果沿路径回传,更新所有祖先节点的 Q 值和访问次数 N。

LLM 的三重角色

LATS 的革命性在于:一个 LLM 同时扮演三个角色

角色经典 MCTS(AlphaGo)LATS(LLM Agent)
行动者 (Actor)棋步生成器LLM 生成 N 个候选动作
评估者 (Value Function)神经网络评分LLM 对当前状态打分(0–1)
反思者 (Critic)❌ 不存在LLM 生成自然语言自我反思

第三个角色”反思者”来自 Reflexion(Shinn et al., NeurIPS 2023, arXiv: 2303.11366)。传统强化学习在失败后只用数值梯度更新权重;Reflexion 让 LLM 用自然语言总结失败原因,存入记忆,下次重试时参考:

反思示例:
"上次递归方案失败是因为没处理大数溢出,
且 O(2^n) 复杂度在 n>30 时超时。
下次应该用迭代方案,并考虑 BigInt。"

LATS 在每次模拟失败后生成类似的反思文本,附加到后续迭代的上下文中。这让搜索过程具备了跨迭代学习能力,避免重复犯同样的错误。

完整执行流程示例

以编程任务”实现 TypeScript 斐波那契函数”为例:

迭代 1:
├── [Selection] 根节点 → UCB 选择(首次都是 ∞,随机选)
├── [Expansion] LLM 生成 5 个候选方案:
│   ├── A: 递归实现
│   ├── B: 动态规划(数组)
│   ├── C: 动态规划(两变量优化)
│   ├── D: 矩阵快速幂
│   └── E: 记忆化递归
├── [Simulation] 方案 A → 完整代码 → 运行测试
│   结果:通过 3/5 测试(大数溢出)
│   → LLM 评分:0.6
│   → LLM 反思:"递归没处理大数,性能也差"
├── [Backpropagation] A: Q=0.6, N=1

迭代 2:
├── [Selection] UCB 计算:
│   ├── A: 0.6 + 1.4×√(ln1/1) = 0.6(已访问)
│   ├── B: ∞(未访问)← 选这个
├── [Simulation] 方案 B → 通过 5/5 测试
│   → LLM 评分:0.95
│   → 反思:"DP 方案高效,O(n) 时间"
├── [Backpropagation] B: Q=0.95, N=1

迭代 3:
├── [Selection] UCB:B 得分最高 → 从 B 深入
├── [Expansion] B 的子方案:
│   ├── B.1: 改用两变量滚动(空间优化)
│   ├── B.2: 加 BigInt 支持
│   └── B.3: 加输入验证
├── [Simulation] B.1 → 5/5 通过 + 性能更优
│   → LLM 评分:0.98
├── [Backpropagation] 更新整条路径

最终输出:沿最高 Q 值路径回溯 → 方案 B.1

基准性能对比

方法HotpotQA (EM)HumanEval (pass@1)WebShop (score)
CoT0.3446.9%
ReAct0.3256.9%53.8
ToT0.5554.4%
Reflexion0.5168.1%64.2
LATS0.7183.8%75.9

以上数据均使用 GPT-3.5。LATS 在 GPT-4 上达到 HumanEval pass@1 = 92.7%

数据来源:Zhou et al., ICML 2024

补充:Graph of Thoughts —— 超越树的图搜索

GoT(Besta et al., AAAI 2024, arXiv: 2308.09687)进一步放开拓扑约束,允许节点之间的合并、循环与聚合:

CoT:  ●→●→●→●         (链)
ToT:  ●→●→●            (树)
         ↘●→●
GoT:  ●→●→●            (有向图)
         ↗↘
      ●→● →●            支持合并、循环、聚合

GoT 的核心操作包括生成(展开子节点)、聚合(合并多个独立结果)、精炼(迭代改进)和蒸馏(压缩为关键路径)。排序任务上 GoT 比 ToT 质量提升 62%,成本降低 31%。但其实现复杂度远高于 ToT/LATS,目前工程采用率较低。


第六站:Reasoning Tokens —— 推理时算力的动态控制

2024 年底 OpenAI o1 的发布标志着一个根本性的范式转换:推理质量不再只取决于训练时的参数量,还取决于推理时(test-time)投入的算力

模型在输出最终答案前,先生成大量”隐藏的思考 token”(Reasoning Tokens),这些 token 不展示给用户,但会被计费为输出 token。到 2026 年,三大厂商都提供了推理预算控制 API:

厂商控制方式参数
OpenAI (o3/GPT-5)reasoning_effortlow / medium / high
Anthropic (Claude)budget_tokens最小 1024,上不封顶
Google (Gemini 2.5)thinkingBudget0(关闭)到 -1(自动)

核心洞察:2026 年生产级 Agent 最大的成本错误,是让所有请求都走推理模型。正确做法是按任务难度路由——简单查询走快速模型,复杂推理才走深度思考模型。


成本与适用场景速查

Token 成本现实

模式单任务 LLM 调用次数大致 Token 消耗估算成本(GPT-4 级)
CoT1~2K~$0.01
ReAct(5 步)6~10K~$0.05
ToT(3 层, b=5)~20~50K~$0.25
LATS(10 迭代, n=5)~60~150K~$0.75
LATS(50 迭代, n=5)~300~750K~$3.75

适用场景判断

场景推荐模式原因
简单问答/检索CoT线性足够,成本最低
需要工具调用的任务ReAct标准 Agent 循环
有明确正确答案的复杂推理ToT需要分支但不需外部反馈
代码生成 + 测试LATS有外部反馈(测试结果),MCTS 优势最大
多步架构设计LATS高价值决策,值得高成本
实时对话ReAct / CoTLATS 延迟太高,不适合交互

从学术到工程:LogicAI2 的类比迁移与落地实践

以上六种推理模式并非只存在于论文中。我正在构建的 LogicAI2 系统——一个多角色协作的 AI Agent 平台——恰好是这些理论概念的工程映射。这一章将展示两件事:哪些概念已经在 LogicAI2 中自然落地了,哪些还没有,以及我计划如何渐进式地引入分支搜索能力。

已有的对应关系

LogicAI2 的多角色架构与大脑层推理模式之间存在清晰的映射:

大脑层概念LogicAI2 对应说明
CoT刘邦 handleChat<think> 推理块单轮对话中的线性推理,模型输出中间思考过程
ReAct韩信 chatWithTools 循环Thought→调用工具→读取结果→继续,标准的 Agent 执行引擎
Plan-and-Execute张良规划蓝图 → 韩信逐步执行张良先输出完整 plan.md,韩信按计划步骤执行,规划与执行天然分离
多模型路由Router 角色分发根据用户意图分发给刘邦/韩信/张良/萧何/InfoScout,本质是按任务类型路由到不同”推理策略”
Reasoning Tokens 预算handleChat vs chatWithTools刘邦走轻量单轮(低推理预算),韩信/张良走重量级 Agent 循环(高推理预算)——虽然尚未显式使用 reasoning_effort API 参数,但架构上已经做了分层

尚未覆盖的差距

三个关键能力在当前架构中完全缺失

1. 分支搜索:所有角色都是线性推理。张良规划时只产出一个方案,不会同时提出三个方案再比选。韩信调试时猜一个原因就直接改,不会系统性排除多种可能。

2. 动态推理预算:所有角色使用相同的模型参数,没有根据任务复杂度动态调节 reasoning_effortbudget_tokens。简单问答和复杂架构设计消耗相同的推理资源。

3. 跨迭代学习:当韩信执行失败后,不会像 Reflexion 那样生成结构化的反思文本供下一次尝试参考。失败经验没有被系统性积累。

为什么存在这些差距

这不是疏忽,而是有意识的工程权衡

  • LogicAI2 是工程实践系统,追求可控性和确定性。用硬编码角色分工替代模型自主规划,降低了不确定性和调试难度。
  • ToT/LATS 的 10–100 倍 token 开销在个人项目中性价比不高——一次 LATS 搜索可能花掉 0.750.75–3.75。
  • 推理预算控制是纯 API 层的能力,改动量小但需要配合效果评估体系才能真正发挥价值。

渐进式集成路线

我设计了三阶段渐进方案,从零代码到完整引擎:

Phase 1:Prompt 级 ToT(零代码改动,立即可用)

不改系统架构,仅在特定场景的 System Prompt 中加入 ToT 式指令。例如修改张良的规划 Prompt:

## 规划策略

在制定架构方案时,你必须:
1. 先提出 3 个不同的方案方向(分支探索)
2. 对每个方案从以下维度评估:
   - 实现复杂度 (1-5)
   - 可维护性 (1-5)
   - 性能影响 (1-5)
   - 与现有架构的兼容性 (1-5)
3. 选择综合评分最高的方案
4. 解释为什么放弃了其他方案
5. 仅对选中方案输出详细实施计划

预期收益:规划质量提升(避免”第一个想到的就是最终方案”的偏差),决策过程透明可审计,零成本零风险。

Phase 2:ToT 执行引擎(中等改动,~200 行代码)

chatWithTools 循环内部,为特定步骤插入”分支展开 → 评估 → 选择”子流程:

// src/ai/strategies/treeSearch.ts

interface ThoughtNode {
  id: string;
  parentId: string | null;
  thought: string;          // 推理内容
  score: number;            // LLM 评估分 (0-1)
  children: ThoughtNode[];
  depth: number;
}

interface TreeSearchConfig {
  maxDepth: number;         // 最大搜索深度(默认 3)
  branchFactor: number;     // 每层展开数(默认 3)
  searchAlgo: 'bfs' | 'dfs';
  evaluationPrompt: string;
}

async function treeOfThoughts(
  problem: string,
  config: TreeSearchConfig,
  llm: LLMClient
): Promise<ThoughtNode> {
  const root: ThoughtNode = {
    id: 'root', parentId: null,
    thought: problem, score: 0,
    children: [], depth: 0
  };

  for (let depth = 0; depth < config.maxDepth; depth++) {
    const leaves = getLeaves(root);
    for (const leaf of leaves) {
      // 生成 k 个候选
      const candidates = await generateThoughts(
        llm, leaf, config.branchFactor
      );
      // 评估并剪枝
      for (const c of candidates) {
        c.score = await evaluateThought(
          llm, c, config.evaluationPrompt
        );
      }
      leaf.children = candidates
        .sort((a, b) => b.score - a.score)
        .slice(0, config.branchFactor);
    }
  }
  return getBestPath(root);
}

触发条件:张良接到复杂架构设计请求、韩信遇到多种可能方案的 Bug、用户显式要求”帮我比较几种方案”。

Phase 3:完整 LATS 引擎(重大改动,~500 行代码)

实现完整的 MCTS 搜索循环,包含 UCB 选择、模拟、反向传播和 Reflexion:

// src/ai/strategies/lats.ts

class LATSEngine {
  private root: MCTSNode;
  private reflectionMemory: string[] = [];

  async search(
    problem: string,
    config: LATSConfig
  ): Promise<Solution> {
    this.root = new MCTSNode(problem);

    for (let i = 0; i < config.maxIterations; i++) {
      const selected = this.select(this.root);   // UCB
      const children = await this.expand(selected);
      for (const child of children) {
        const result = await this.simulate(child);
        this.backpropagate(child, result.score);
        // Reflexion: 失败时生成自我反思
        if (result.score < 0.5) {
          const reflection = await this.reflect(
            child, result
          );
          this.reflectionMemory.push(reflection);
        }
        if (result.score >= 0.95) {
          return this.extractSolution(child);
        }
      }
    }
    return this.extractBestSolution(this.root);
  }

  private ucbScore(node: MCTSNode): number {
    if (node.visits === 0) return Infinity;
    return node.totalReward / node.visits
      + 1.4 * Math.sqrt(
        Math.log(node.parent!.visits) / node.visits
      );
  }
}

Phase 3 需要配合外部反馈环境(如代码测试运行器、编译器)才能发挥 LATS 的全部威力——因为 MCTS 的模拟阶段需要真实的环境反馈来计算奖励值。

实施优先级

阶段改动量预期收益建议时间线
Phase 1仅改 Prompt 文本中(规划质量提升)立即可做
Phase 2~200 行新模块高(复杂任务质量跃升)1–2 周
Phase 3~500 行 + 测试环境很高(需配合反馈环境)1–2 月

我的判断:先做 Phase 1,在实际使用中验证”分支搜索”对规划质量的提升是否显著。然后根据体验决定是否投入 Phase 2。Phase 3 是长期目标,适合在 LogicAI2 接入代码执行沙箱后再启动。


全景速查

                      Brain & Planning 层

         ┌───────────────────┼───────────────────┐
         │                   │                   │
    推理模式              搜索策略            算力控制
         │                   │                   │
   ┌─────┴─────┐       ┌────┴────┐        ┌────┴────┐
   │           │       │         │        │         │
  CoT       ReAct    ToT      LATS    reasoning  budget
 (线性)  (工具循环) (树搜索)  (MCTS)   _effort   _tokens
   │           │       │         │
   └─────┬─────┘       └────┬────┘
         │                  │
   Plan-and-Execute       GoT
   (规划执行分离)        (图搜索)

       ReWOO
  (极致成本优化)

文献索引

论文作者发表arXiv
Chain-of-Thought PromptingWei et al.NeurIPS 2022
ReAct: Synergizing Reasoning and ActingYao et al.ICLR 20232210.03629
Tree of ThoughtsYao et al.NeurIPS 20232305.10601
Language Agent Tree Search (LATS)Zhou et al.ICML 20242310.04406
Graph of ThoughtsBesta et al.AAAI 20242308.09687
ReflexionShinn et al.NeurIPS 20232303.11366
ReWOOXu et al.20232305.18323

💬 评论

评论加载中...