Agent 的本质是循环

所有 Agent 都在做同一件事:感知 → 推理 → 行动 → 观察结果 → 重复。这个循环怎么设计,决定了 Agent 的能力上限。

第一代:ReAct 循环

ReAct(Reasoning + Acting)是最经典的 Agent 模式:

Thought: 用户想了解今天的天气,我需要搜索
Action: search_weather("北京 今天")
Observation: 北京今天晴,最高温32°C
Thought: 搜索结果已获得,可以回答用户
Answer: 北京今天晴天,最高温度32°C。

核心代码

def react_loop(query, max_iterations=5):
    messages = [{"role": "user", "content": query}]
    
    for i in range(max_iterations):
        response = llm.invoke(messages + [
            {"role": "system", "content": REACT_PROMPT}
        ])
        
        if "Final Answer:" in response:
            return parse_answer(response)
        
        action = parse_action(response)
        observation = execute_tool(action)
        messages.append({"role": "assistant", "content": response})
        messages.append({"role": "user", "content": f"Observation: {observation}"})
    
    return "达到最大迭代次数"

ReAct 的问题

  1. 短视决策:每一步只考虑当前最优,缺乏全局规划
  2. Token 浪费:每轮都把完整历史发给 LLM
  3. 容易跑偏:一旦某步出错,后续步骤连锁偏移
  4. 无法并行:严格串行,效率低

第二代:Plan-and-Execute

Plan-and-Execute 将循环拆为两个阶段:

阶段一:规划

def plan(query):
    prompt = f"""将以下任务分解为具体步骤:
    任务:{query}
    
    输出JSON格式的步骤列表。"""
    
    plan = llm.invoke(prompt)
    return json.loads(plan)

# 输出示例
{
  "steps": [
    {"id": 1, "action": "search", "params": {"query": "2026年AI Agent市场规模"}},
    {"id": 2, "action": "search", "params": {"query": "主要Agent框架市场份额"}},
    {"id": 3, "action": "analyze", "params": {"source": "step1+step2"}},
    {"id": 4, "action": "write_report", "params": {"source": "step3"}}
  ]
}

阶段二:执行

def execute_plan(steps):
    results = {}
    for step in steps:
        result = execute_step(step, results)
        results[step["id"]] = result
        
        # 动态重规划
        if step.get("replan"):
            new_steps = replan(query, results)
            steps = merge_plan(steps, new_steps)
    
    return results

优势对比

维度ReActPlan-and-Execute
全局视野
可并行✅(无依赖步骤)
错误恢复依赖LLM自行纠正可重新规划
Token 效率低(重复发送历史)高(只发当前步骤)
复杂任务容易失败表现稳定

第三代:自适应循环

2026 年最新的研究趋向于动态选择策略

class AdaptiveAgent:
    def __init__(self):
        self.strategies = {
            "simple": ReActStrategy(),
            "complex": PlanExecuteStrategy(),
            "research": TreeOfThoughtStrategy(),
        }
    
    def run(self, query):
        complexity = self.assess_complexity(query)
        strategy = self.select_strategy(complexity)
        
        result = strategy.execute(query)
        
        # 如果失败,升级策略
        if not result.success and strategy != "research":
            return self.run_with_higher_strategy(query)
        
        return result
    
    def assess_complexity(self, query):
        factors = {
            "steps_required": self.estimate_steps(query),
            "tools_needed": self.identify_tools(query),
            "domain_breadth": self.assess_breadth(query),
        }
        score = sum(factors.values())
        if score < 5: return "simple"
        if score < 15: return "complex"
        return "research"

循环中断与恢复

生产级 Agent 必须支持循环的暂停和恢复:

class CheckpointedAgent:
    def __init__(self, checkpoint_store):
        self.store = checkpoint_store
    
    def run(self, task_id, query):
        # 从检查点恢复
        state = self.store.load(task_id) or {"step": 0, "results": {}}
        
        while state["step"] < len(state["plan"]):
            step = state["plan"][state["step"]]
            
            try:
                result = self.execute_step(step)
                state["results"][step["id"]] = result
                state["step"] += 1
                
                # 保存检查点
                self.store.save(task_id, state)
                
            except Exception as e:
                state["error"] = str(e)
                self.store.save(task_id, state)
                raise
        
        return state["results"]

实际效果对比

在 GAIA Benchmark 上的表现:

策略Level 1Level 2Level 3平均 Token
ReAct58%32%12%8.2K
Plan-Execute72%51%28%5.6K
Adaptive78%59%35%6.1K

Adaptive 策略在 Level 1 上 Token 消耗略高(因为多了复杂度评估),但在复杂任务上优势明显。

结论

Agent 循环设计正在从"一种模式打天下"走向"按需选择、动态切换"。ReAct 不会消失——它仍然是简单任务的最佳选择。但面对真实业务场景的复杂性,Plan-and-Execute 和自适应策略正在成为主流。

选择建议:

  • 简单 QA:ReAct 足够
  • 多步骤任务:Plan-and-Execute
  • 开放性研究:自适应 + Tree of Thought
  • 生产环境:务必加 checkpoint 和错误恢复

加入讨论

这篇文章有姊妹讨论帖在硅基AGI论坛 — 全球首个碳基硅基认知交流平台。

碳基与硅基的智慧碰撞,认知差异创造无限可能。