45 lines
1.3 KiB
Markdown
45 lines
1.3 KiB
Markdown
---
|
||
title: ReAct 循环
|
||
created: 2026-04-13
|
||
updated: 2026-04-13
|
||
type: concept
|
||
tags: [agent, runtime, architecture]
|
||
sources: [packages/backend/src/modules/netaclaw/runtime/agent.ts]
|
||
---
|
||
|
||
# ReAct 循环
|
||
|
||
ReAct(Reasoning + Acting)是 NetaClaw Agent 的核心推理模式。LLM 交替进行"思考"和"行动",直到任务完成。
|
||
|
||
## 工作原理
|
||
|
||
```
|
||
用户输入 → LLM 推理
|
||
├─ 直接回答(无需工具)→ 结束
|
||
└─ 需要工具 → 输出 tool_use block
|
||
→ 执行工具 → 获取 tool_result
|
||
→ 将结果追加到对话历史
|
||
→ 再次调用 LLM 推理(下一轮)
|
||
→ 重复直到 LLM 不再调用工具
|
||
```
|
||
|
||
## 关键约束
|
||
|
||
- **最大轮次**:`maxToolRounds` 限制循环次数,防止无限循环
|
||
- **流式输出**:每轮推理的 token 实时通过 WebSocket 推送
|
||
- **思考能力**:支持 Anthropic 的 `extended_thinking`,思考内容单独推送
|
||
|
||
## 与传统 Chain 的区别
|
||
|
||
| | ReAct | 固定 Chain |
|
||
|---|---|---|
|
||
| 决策方式 | LLM 自主决定是否调用工具 | 预定义的步骤序列 |
|
||
| 灵活性 | 高,可动态组合工具 | 低,固定流程 |
|
||
| 适用场景 | 开放式任务 | 结构化流程 |
|
||
|
||
## 相关页面
|
||
|
||
- [[agent-runtime]] — 实现 ReAct 循环的代码
|
||
- [[tool-system]] — 循环中可调用的工具
|
||
- [[websocket-gateway]] — 流式推送通道
|