"凌晨1点08分,我看着日志里Agent的推理轨迹。它先是想了一下,然后去做了一件事,接着又想了想。我忽然理解了'ReAct'这个名字——它不是在思考,也不是在行动,而是在'思考-行动-思考-行动'的循环中,一点一点逼近真相。就像人类一样。"
ReAct(Reasoning + Acting,思考-行动模式)是 Google Research 在 2022 年提出的一种 LLM Agent 推理架构。它通过让模型交替进行思考(Reasoning)和行动(Acting),并结合观察(Observation),来实现复杂任务的逐步解决。
ReAct 的核心思想是:智能不仅是思考,也不仅是行动,而是两者的有机结合。就像人类解决问题时会先思考,然后行动,观察结果,再思考下一步。
LLM 分析当前状态,形成推理过程。这是"内心独白",决定了下一步做什么。
示例:"我需要查找2024年AI Agent市场规模的数据,让我先搜索一下。"
基于思考结果,执行具体的操作,通常是调用工具。
示例:执行 web_search("2024 AI Agent market size")
获取行动的结果,作为下一步思考的输入。
示例:"搜索结果显示2024年全球AI Agent市场规模约为50亿美元..."
用户问题:"谁是美国历史上第一位女国务卿?"
┌────────────────────────────────────────────────────────────┐
│ Thought 1: 我需要搜索关于美国首位女国务卿的信息。 │
│ Action 1: web_search("first female Secretary of State US") │
│ Observation 1: [搜索结果] Madeleine Albright 于1997年... │
├────────────────────────────────────────────────────────────┤
│ Thought 2: 搜索结果提到Madeleine Albright是首位女国务卿。 │
│ Action 2: 我需要验证她是否真的是第一位。 │
│ Observation 2: [无需行动,思考完成] │
├────────────────────────────────────────────────────────────┤
│ Thought 3: 我已经找到了答案,可以回复用户了。 │
│ Action 3: 输出最终答案 │
│ Final Answer: 美国历史上第一位女国务卿是Madeleine │
│ Albright(玛德琳·奥尔布赖特),于1997年上任。 │
└────────────────────────────────────────────────────────────┘
| 模式 | 特点 | 适用场景 |
|---|---|---|
| Standard Prompting | 直接问答,无推理过程 | 简单事实问答 |
| Chain-of-Thought (CoT) | 仅推理,不与外部交互 | 数学、逻辑题 |
| Action Only | 仅行动,无显式推理 | 简单工具调用 |
| ReAct | 推理+行动结合,可交互 | 复杂信息检索任务 |
┌─────────────────────────────────────────────────────────────────┐ │ ReAct Loop │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ Thought │────→│ Action │────→│Observation│ │ │ │ (思考) │ │ (行动) │ │ (观察) │ │ │ └────┬─────┘ └──────────┘ └────┬─────┘ │ │ │ │ │ │ └────────←←←←←←←←←←←←←←←←←←←←←───┘ │ │ │ │ 循环终止条件: │ │ • 找到答案 → 输出最终答案 │ │ • 达到最大步数 → 返回失败 │ │ • 无法继续 → 返回错误 │ └─────────────────────────────────────────────────────────────────┘
系统提示词:
你是一个智能助手。请按照以下格式解决问题:
思考(Thought):分析问题,决定下一步行动
行动(Action):调用工具,格式为 {"tool": "tool_name", "args": {...}}
观察(Observation):获取工具的返回结果
你可以使用以下工具:
- web_search: 搜索网络信息
- calculator: 进行数学计算
- read_file: 读取文件内容
现在请解决问题:
用户问题:{{question}}
之前的思考-行动轨迹:
{{trajectory}}
思考:
OpenClaw 原生支持 ReAct 模式,Agent 会自动进行思考-行动的循环迭代。
# OpenClaw Agent 自动执行的 ReAct 轨迹
用户: "OpenClaw和LangChain相比有什么优势?"
┌──────────────────────────────────────────────────────────────┐
│ Thought 1: 用户想了解OpenClaw和LangChain的对比。我需要 │
│ 先搜索OpenClaw的最新特性,然后搜索LangChain的特性,再进行 │
│ 对比分析。 │
├──────────────────────────────────────────────────────────────┤
│ Action 1: web_search("OpenClaw features advantages 2026") │
├──────────────────────────────────────────────────────────────┤
│ Observation 1: [搜索结果摘要] OpenClaw 特性包括: │
│ - 内置丰富工具集 │
│ - 原生 MCP 支持 │
│ - 子 Agent 管理 │
│ - 定时任务系统 │
│ - Gateway 配置管理 │
├──────────────────────────────────────────────────────────────┤
│ Thought 2: 好的,我获取了OpenClaw的主要特性。现在我需要 │
│ 搜索LangChain的特性进行对比。 │
├──────────────────────────────────────────────────────────────┤
│ Action 2: web_search("LangChain features architecture") │
├──────────────────────────────────────────────────────────────┤
│ Observation 2: [搜索结果摘要] LangChain 特点: │
│ - 模块化设计 │
│ - 多模型支持 │
│ - 丰富的集成 │
│ - 更依赖代码开发 │
├──────────────────────────────────────────────────────────────┤
│ Thought 3: 现在我可以进行对比分析了。OpenClaw的优势在于: │
│ 开箱即用、内置工具丰富、原生支持MCP标准等。 │
├──────────────────────────────────────────────────────────────┤
│ Final Answer: │
│ OpenClaw相比LangChain的主要优势: │
│ 1. 开箱即用:内置大量工具,无需额外配置 │
│ 2. MCP原生支持:无缝对接标准工具协议 │
│ 3. 子Agent管理:内置多Agent协调机制 │
│ 4. 运维友好:内置定时任务和Gateway管理 │
│ ... │
└──────────────────────────────────────────────────────────────┘
# agent_config.yaml
agent:
name: "research_assistant"
reasoning_mode: "react" # 启用 ReAct 模式
# ReAct 配置
react_config:
max_iterations: 10 # 最大迭代次数
max_tool_calls: 5 # 单次对话最大工具调用次数
# 是否让模型显式输出思考过程
show_thoughts: true
# 工具调用后是否自动继续推理
auto_continue: true
# 思考模板
thought_template: |
请分析当前情况,决定下一步行动:
- 如果已经找到答案,输出 "Final Answer"
- 如果需要更多信息,调用合适的工具
- 注意避免重复调用相同的工具
tools:
- web_search
- web_fetch
- read
- write
model: anthropic/claude-3-sonnet
# 在 OpenClaw 中自定义 ReAct 行为
async function customReactAgent(userQuery) {
const context = {
query: userQuery,
thoughts: [],
actions: [],
observations: []
};
for (let i = 0; i < maxIterations; i++) {
// 1. Thought: 让 LLM 分析并决定下一步
const thought = await llm.generate({
prompt: buildReactPrompt(context),
tools: availableTools
});
context.thoughts.push(thought.content);
// 2. Action: 执行工具调用
if (thought.hasToolCall) {
const action = thought.toolCall;
context.actions.push(action);
// 执行工具
const observation = await executeTool(action);
context.observations.push(observation);
// 检查是否完成任务
if (await isTaskComplete(context)) {
break;
}
} else {
// 没有工具调用,直接返回答案
return thought.content;
}
}
// 生成最终答案
return await generateFinalAnswer(context);
}
问题:2023年诺贝尔文学奖获得者是谁?
思考:我需要搜索2023年诺贝尔文学奖的信息。
行动:{"tool": "web_search", "args": {"query": "2023年诺贝尔文学奖获得者"}}
观察:2023年诺贝尔文学奖授予了挪威剧作家约恩·福瑟(Jon Fosse)。
思考:我已经找到了答案,可以回复用户了。
行动:{"tool": "final_answer", "args": {"answer": "2023年诺贝尔文学奖获得者是挪威剧作家约恩·福瑟(Jon Fosse)。"}}
---
问题:3的平方加上4的平方等于多少?
思考:这是一个数学计算问题,我可以直接计算。
行动:{"tool": "calculator", "args": {"expression": "3^2 + 4^2"}}
观察:25
思考:计算结果是25,这是正确的(因为3-4-5直角三角形的斜边平方)。
行动:{"tool": "final_answer", "args": {"answer": "3的平方加上4的平方等于25。"}}
| 变体 | 特点 |
|---|---|
| Self-Ask | 分解复杂问题为子问题,逐一回答 |
| Plan-and-Solve | 先制定计划,再执行 |
| Tree-of-Thoughts | 探索多条推理路径,选择最优 |
| Reflexion | 失败后反思并修正策略 |
ReAct 模式是构建智能 Agent 的基石。它通过显式的思考-行动-观察循环,让 LLM 能够像人类一样逐步推理、动态决策、与外部世界交互。在 OpenClaw 中,你可以轻松配置和扩展 ReAct Agent,实现从简单问答到复杂任务自动化的各种应用场景。
© 2026 妙趣AI | miaoquai.com - 让AI变得妙趣横生