从 ReAct 范式到 Goose · CountBot 工程实现,全面解读 AI Agent 循环的架构设计与最佳实践
Agent Loop(智能体循环)是 AI Agent 系统的核心引擎,它使大语言模型(LLM)不再是一次性"输入-输出"的问答机器,而是变成一个能够感知环境、推理决策、执行行动、接收反馈并持续迭代的自主系统。
核心定义:Agent Loop 是一个反馈驱动的循环,持续执行「感知 → 推理 → 行动 → 反馈」直至任务完成或停止条件触发。它本质上是一个带有状态和动态函数调用的 while 循环。[Deep Research]
Agent Loop 的理论根基来自 Google Research 与普林斯顿大学在 2022 年发表的 ReAct(Reasoning + Acting) 论文。该论文首次系统性地提出:让 LLM 交替生成"推理轨迹"和"行动指令",并从环境获取"观察结果",形成一个闭环。
到 2025-2026 年,Anthropic、OpenAI、Google Cloud 等主流厂商发布的 Agent SDK 和架构指南,均将 Agent Loop 作为核心设计概念。如今,几乎每一个生产级 AI Agent 框架——LangChain、LangGraph、AutoGPT、CrewAI、Goose、CountBot、OpenManus——底层都运行着某种形式的 Agent Loop。[Agent Patterns Catalog]
ReAct 是 Agent Loop 最经典、应用最广泛的实现范式。它让模型交替进行"推理(Reasoning)"和"行动(Acting)",每次行动后观察结果,再基于新信息进行下一步推理。[JetBrains AI Agent Guide]
Agent 分析当前状态:我已知什么?还需要什么?下一步该做什么?从最新上下文出发,而非固守初始计划。
通过函数调用执行工具:API 查询、代码运行、文件读写、数据库检索。每次迭代仅选择一个工具调用。
接收工具返回结果——文件内容、测试输出、API 响应或错误信息。结果注入上下文,驱动下一轮推理。
关键洞察:ReAct 架构刻意保持极简——一个模型、一个循环、上下文随每次观察增长。这种设计使 Agent 能够在遇到意外时"纠偏",而非死守一个因现实变化而失效的计划。[JetBrains]
| 特性 | 传统 Prompt | ReAct Agent |
|---|---|---|
| 工作流行为 | 单次、无状态 | 迭代、有状态 |
| 反馈循环 | 无(开环) | 闭环、观察驱动 |
| 适应性 | 固定于 prompt 时 | 基于观察动态调整 |
| 工具使用 | 无(或分离集成) | 原生多步工具调用 |
| 状态管理 | 无 | 跨迭代维护 |
| 运维复杂度 | 低 | 高 |
适用场景:调试排错、代码生成+测试+修复循环、多源数据聚合、仓库分析——任何需要"读取→决策→执行→验证"多步迭代的任务。
不适用:单次分类、模板生成、格式化——这些任务没有需要观察来改变结果的信息,引入 ReAct 只会增加延迟和成本。
Manus 是 2025 年最受关注的通用 AI Agent 产品,其提示词泄露后揭示了清晰的 Agent Loop 设计:
# Manus Agent Loop 核心步骤
<agent_loop>
1. Analyze Events: 通过事件流了解用户需求和当前状态
2. Select Tools: 基于状态、任务规划、知识库选择工具
3. Wait for Execution: 沙盒环境执行工具,观察结果追加到事件流
4. Iterate: 每次迭代仅选一个工具,耐心重复至任务完成
5. Submit Results: 通过消息工具交付成果
6. Enter Standby: 进入空闲状态等待新任务
</agent_loop>
Manus 的设计特点:
Goose 是 AAIF 主导的开源 AI Agent,使用 Rust 编写,被 Agent Patterns Catalog 列为 ReAct 范式的一等实现。[goose-docs.ai]
// Goose Agent reply() 简化流程
pub async fn reply(session, messages) -> Stream {
let mut conversation = session.conversation.clone();
let tools = extension_manager.get_tools().await;
loop { // ← Agent Loop 核心
// 1. 模型推理
let stream = provider.complete(system_prompt, messages, tools).await;
// 2. 流式处理响应
while let Some(chunk) = stream.next().await {
match chunk {
Text(text) => yield text, // 流式输出
ToolUse(tool) => {
let result = execute_tool(tool).await; // 执行工具
conversation.add_tool_result(result); // 注入结果
// → 继续循环,模型基于新结果再推理
}
Done => break,
}
}
if no_more_tool_calls { break; }
}
}
支持并行子代理:多个 Subagent 并发执行,上下文隔离,不同任务可用不同模型(复杂任务用 Sonnet,简单任务用 GPT-4o-mini)
Token 使用达 75% 阈值时自动压缩历史消息,保留系统提示词 + 近期消息 + 重要上下文,避免窗口溢出
指数退避重试网络超时、429 限流、5xx 服务端错误;区分可重试与不可重试错误
Allow(自动放行)/ Deny(拒绝)/ Confirm(需用户确认),高风险操作(文件写入、部署、删除)必须审批
CountBot 是一个约 21K 行代码的生产级 Python AI Agent 框架,其 AgentLoop 类展示了 ReAct 范式在 Python 生态中的工程化落地。[CSDN CountBot 系列]
class AgentLoop:
def __init__(self,
provider, # LLM Provider 实例
workspace: Path, # 工作空间路径
tools, # ToolRegistry 实例
context_builder=None, # 上下文构建器
session_manager=None, # 会话管理器
subagent_manager=None, # 子代理管理器
max_iterations=25, # 🔒 安全阀:最大循环次数
max_retries=3, # LLM 调用重试次数
retry_delay=1.0, # 重试延迟(秒)
)
自动重试 + 指数退避,处理 API 瞬时故障
捕获异常并将错误信息格式化后返回给 LLM,让 LLM 自行决定如何处理
max_iterations=25 硬限制,防止无限循环
try:
result = await tool.execute(**arguments)
except Exception as e:
result = f"工具执行失败: {str(e)}"
# 无论成功失败,都将结果反馈给 LLM,让其自行决策
messages.append({"role": "tool", "content": result})
_session_cancel_tokens 字典管理,用户可随时中断长时间运行的任务现代 Agentic AI 的工作流程由三个有机集成的子循环构成:[Coursera AI Agents Course]
核心方法:链式思维(Chain-of-Thought)——"先推理,后回答"。在每个循环开始时,Agent 盘点已知信息、缺口和下一步计划。
局限性:LLM 在很大程度上无法仅通过朴素反馈实现自我修正推理。研究表明,Critique-GRPO 方法通过将自然语言反馈与标量奖励结合,在 AIME 2024 测试集上实现了 16.7% 的 pass@1 提升。过程级反馈能保持推理多样性,而单纯的结果奖励则会失效。[arXiv 2607.07663]
行动循环是 Agent 与外部世界交互的执行器。通过函数调用(Function Calling)和 MCP 协议,Agent 可以操作文件系统、调用 API、执行代码、查询数据库、控制浏览器等。
每次行动类型有不同风险等级:读文件低风险、运行 shell 命令中等风险、提交代码或部署高风险。因此生产环境中高风险行动需要审批门禁。
反馈循环将行动结果作为新输入,建立因果关系。核心机制包括:
Agent 分析自身输出质量,识别错误并调整策略。AFLC 框架可实时评估行动后果并在异常时自主停止。
在关键节点设置人工检控点。Goose 的三级权限(Allow / Deny / Confirm)即此模式的工程实现。
专门的反馈服务器为每个项目维护独立的反馈记忆和审计跟踪,适用于金融、医疗等高合规性场景。
根据 Agent Patterns Catalog 的分类,Agent Loop 作为 Planning & Control Flow 类别中的成熟模式(★★ Mature),与多种模式形成组合关系:
| 关系 | 模式 | 说明 |
|---|---|---|
| 使用 ReAct | Agentic RAG ★★ | 替代静态检索-生成,Agent 自主规划、选择数据源、迭代检索、反思、重新查询 |
| 使用 ReAct | Computer Use ★ | 通过截图+虚拟键鼠操作驱动桌面,代替逐应用 API |
| 特化 ReAct | Self-Ask ★★ | 模型生成显式子问题,逐一回答(可选搜索),最后合成答案 |
| 替代方案 | Plan-and-Execute ★★ | 先用强模型规划全步骤,再用便宜模型逐步执行 |
| 替代方案 | Planner-Executor-Observer ★ | 在 Planner 和 Executor 间添加 Observer,检查进度是否偏离计划 |
| 组合 | Code Execution ★★ | 模型生成代码、沙盒运行、以运行结果代替模型自身推理 |
| 替代方案 | Agentic Behavior Tree | 借鉴行为树:叶子节点是 LLM 调用或工具,选择器和序列节点编排控制流 |
任务需要迭代推理、工具协调和观察驱动决策。完成它需要"读→决策→做→检查"。
完整计划可预先制定,步骤间依赖关系明确,不需要运行时动态调整。
任务窄、确定性强、不需要工具或中间决策。单次 prompt 就能正确处理。
| 维度 | Vibe Coding | Agentic Engineering |
|---|---|---|
| 适用场景 | 副项目、原型、一次性工具 | 生产系统、受监管工作、多用户环境 |
| 质量标准 | "能跑就行" | 可复现、可测试、可解释 |
| 代码健康 | 接受漂移 | 强制执行 TDD、模块重构 |
| 审查 | 最小化 | 自动化 + 人工分层审查 |
| 反馈循环 | 弱或无 | 强反馈:类型、测试、lints、CI |
始终设置 max_iterations(建议 25-100),防止失控循环。配合超时机制双重保障。
定义三种退出路径:目标达成 / 停止条件触发 / 不可恢复错误。不要依赖 LLM 自行停止。
文件写入、部署、删除等操作需要人工审批或自动化验证后才能执行。Goose 的三级权限是标准实践。
LLM 调用层自动重试,工具执行层优雅降级(错误信息反馈给 LLM),循环层硬限制。CountBot 的分层策略值得借鉴。
结构化的 Thought-Action-Observation 日志。使用 LangSmith、Arize、Helicone 等工具进行 trace 分析。
75% token 阈值触发压缩,保留系统提示词 + 近期消息 + 重要上下文。Goose 的 compaction 机制是典范。
Agent 读取的不可信内容(网页、issue、代码注释)可能包含恶意指令。输入验证 + 权限收束是第一道防线。
通过类型检查、测试、lint、CI 构建"嘈杂的环境"。在写代码前先通过测试(TDD),防止 Agent"盲写"。
简单任务用便宜模型(GPT-4o-mini),复杂决策用强模型(Claude Sonnet)。Goose Subagent 支持 per-task 模型选择。
Agent 的推理轨迹应可读可审。当 15 步工作流产出错误结果时,能追溯每步的 thought-action-observation。
理论落地才见真章。以下精选 6 个 TKMind MindSpace 中真实运行的项目案例,展示 Agent Loop 模式在不同业务场景中的实际应用方式与工程价值。
Loop 模式:ReAct × Agentic RAG 组合。Agent 接收"医疗联盟国际化"主题后,自主执行 20+ 轮迭代:搜索全球医疗联盟政策 → 检索学术文献 → 对比各国模式 → 提取关键数据 → 生成结构化 HTML 报告 + 长图。每轮搜索的观察结果驱动下一轮深度方向选择。
🔑 Thought → Action → Observation 循环贯穿整个研究流程,每个工具返回结果都是下一轮推理的输入。展示了 Agentic RAG 模式如何替代传统"检索→生成"的静态流程。
Loop 模式:Plan-and-Execute + ReAct 混合。Agent 首先规划页面结构(国际新闻 / 国内新闻 / 天气预报 / 知识卡片),然后对每个板块独立开展 ReAct 子循环:搜索热点 → 逐条验证引用来源 → 聚合为结构化数据 → 注入 HTML 模板。天气预报板块额外调用地理 API + 天气 API。
🔑 四板块并行执行各自的 ReAct 子循环,最后汇总到统一 HTML 模板中。证明了 Plan-Execute 与 ReAct 可以优雅混合使用。
Loop 模式:ReAct + Human-in-the-Loop。Agent 执行多轮迭代:理解问卷需求 → 设计表结构 → 通过 Page Data API 创建 dataset → 生成前端 HTML 表单页 → 生成管理后台页 → 绑定数据策略 + 权限白名单 → 验证端到端流程。每步工具调用后的观察结果决定下一步是否需要调整 schema 或权限策略。
🔑 核心 Feedback Loop:Schema 设计 → 建表执行 → 验证结果 → 调整 Schema → 重新建表。展示了数据层 ReAct 循环的完整实践。
Loop 模式:ReAct + Computer Use 混合。Agent 接收商品链接后,多轮迭代:抓取商品信息 → 提取卖点 → 调用 generate_image 生成 hero 主图 → 设计页面布局 → 生成 HTML 购买页 → 绑定发布链接。图片生成步骤有独立的 Feedback Loop:如果生成结果不符合预期,自动调整 prompt 重试。
🔑 图片生成内置自检机制:生成 → 校验质量 → 不满足则调整 prompt 重试 → 直至符合要求。体现了 Inner Feedback Loop 嵌套在 Outer ReAct Loop 中的双层设计。
Loop 模式:Deep Research Loop + ReAct 多轮分析。Agent 启动深度研究任务(异步长任务),同时并行执行多个子循环:数据采集(财经 API、新闻源)→ 趋势分析 → 相关性计算 → 可视化图表生成 → 报告组装。深度研究作为后台任务异步执行,Agent Loop 定期轮询状态并整合结果。
🔑 异步 Loop + 前台 Loop 双轨协同:后台深度研究不阻塞前台分析编排,体现了 Subagent 并行模式的关键价值。
Loop 模式:ReAct + Multi-Agent 编排。Agent 同时调用多个 skill 并行工作:品牌分析 skill → 竞品调研 skill → 数据可视化 skill → 页面发布 skill。每个 skill 内部是独立的 ReAct 循环。主 Agent Loop 负责聚合各 skill 产出,形成统一的品牌战略 HTML 报告。
🔑 Goose Subagent 并行模式的标准实践:多个子代理各自运行独立 ReAct,主 Loop 等待所有结果后聚合输出。
| 案例 | 业务领域 | Loop 模式 | 核心策略 | 关键产出 |
|---|---|---|---|---|
| 医疗联盟报告 | 深度研究 | ReAct + Agentic RAG | 每轮搜索观察驱动下一轮方向 | HTML 报告 + 长图 |
| 每日新闻页面 | 信息聚合 | Plan-Execute + ReAct | 四板块并行规划,各板块独立循环 | 每日新闻 HTML |
| 儿童饮食问卷 | 数据采集 | ReAct + HITL | Schema 设计 → 验证 → 调整循环 | 问卷页 + 管理后台 |
| 商品宣传 H5 | 营销推广 | ReAct + Feedback Loop | 图片生成自检重试双层循环 | 品牌宣传 H5 页 |
| A 股危机报告 | 金融分析 | Deep Research + ReAct | 异步深度研究 + 前台并行编排 | 报告 + 交互图表 |
| TKMind 品牌报告 | 战略咨询 | Multi-Agent ReAct | 多 skill 并行 + 主 Loop 聚合 | 品牌战略报告 |
核心规律:以上 6 个案例的共同特征是——没有一个是单轮 prompt 能完成的。每个案例都需要「感知环境 → 执行工具 → 观察结果 → 调整策略」的多轮迭代。这正是 Agent Loop 区别于传统问答的核心价值:不是"一次性回答",而是"持续执行直到目标达成"。
| 框架 | 语言 | 循环控制 | 工具调用 | 流式支持 | 子代理 | 安全机制 |
|---|---|---|---|---|---|---|
| Goose | Rust | max_turns 可配置 | MCP 原生 | 全链路 | ✅ 并行 | 三级权限 |
| CountBot | Python | max_iterations=25 | 原生 FC | 全链路 | ✅ | 取消令牌 |
| Manus | Python | 事件流驱动 | 预定义空间 | 部分 | ✅ 多代理 | 沙盒隔离 |
| LangChain | Python/JS | 可配置 | Tool/Agent 抽象 | 部分 | 通过 LangGraph | 中间件 |
| AutoGPT | Python | 无硬限制 | 自定义协议 | 不支持 | ❌ | 弱 |
Language Agent Tree Search 将 Agent Loop 提升为搜索树,引入学习价值函数和回溯能力,从线性循环走向分支探索。
多个 ReAct 循环被编排在一起:Planner Agent 分解任务 → 专职 Agent 各自 Loop → 结果聚合。LangGraph、CrewAI 正推动此方向。
从"提示词工程"到"循环工程"的跃迁:开发者不再逐轮编写提示词,而是设计能自主调度、验证和迭代的 AI 系统。
结合 Critique-GRPO 等过程级反馈机制,Agent 能从自身经验中持续学习和改进推理策略。