0%

Loop Agent 设计最佳实践:从 ReAct 到企业级可控自主智能体

Loop Agent 最近很火,本质原因很简单:大家已经不满足于“问一句、答一句”的 LLM 应用,而是希望 Agent 能持续观察环境、拆解任务、调用工具、根据结果调整策略,并在必要时把任务推进到完成。

但 Loop Agent 也是最容易被滥用的 Agent 形态。一个没有边界、没有预算、没有终止条件、没有权限控制的循环 Agent,很容易变成“无限思考、无限调用工具、无限烧 token”的黑箱系统。

这篇文章结合几类专业资料和工程实践,总结一套适合企业落地的 Loop Agent 设计方法:既保留 Agent 的自主性,又让它可控、可观测、可审计、可回滚。

1. 什么是 Loop Agent

最简单的 Loop Agent 可以抽象为:

1
Observe -> Think/Plan -> Act -> Observe -> Reflect -> Act -> ... -> Finish

也就是:

  1. 观察:读取用户目标、当前状态、工具结果、外部环境;
  2. 思考/规划:决定下一步要做什么;
  3. 行动:调用工具、修改文件、查询系统、生成输出;
  4. 再观察:读取行动结果;
  5. 反思:判断是否偏离目标,是否需要调整;
  6. 终止:满足完成条件、失败条件或预算上限时退出。

和普通工作流不同,Loop Agent 的关键在于:下一步不是完全由代码写死,而是由模型根据当前状态动态决定。

2. 先区分 Workflow 和 Agent

Anthropic 在《Building Effective AI Agents》里提出了一个很重要的区分:

  • Workflow:LLM 和工具按照预定义代码路径执行,流程稳定、可预测;
  • Agent:LLM 动态决定自己的执行过程和工具使用方式。

这个区分非常关键。很多任务并不需要 Agent Loop,用固定 Workflow 更稳定:

1
输入 -> 分类 -> 检索 -> 生成 -> 校验 -> 输出

只有当任务存在不确定路径、需要动态决策、需要根据工具结果调整策略时,Loop Agent 才真正有价值。

我的经验是:

  • 能用一次 LLM 调用解决,就不要上 Agent;
  • 能用固定 Workflow 解决,就不要上自由 Loop;
  • 只有任务路径不确定,才引入 Loop Agent。

3. Loop Agent 的经典模式

3.1 ReAct:Reason + Act

ReAct 是 Loop Agent 的经典思路:模型交替进行推理和行动。

简化流程:

1
2
3
4
5
6
7
8
Thought: 我需要知道当前仓库状态
Action: git_status
Observation: 有 3 个未提交文件
Thought: 需要查看 diff 判断是否可提交
Action: git_diff
Observation: diff 显示只改了文档
Thought: 可以创建提交
Action: git_commit

ReAct 的价值在于把“思考”和“工具调用”交织起来,让模型根据观察结果调整下一步,而不是一次性生成完整计划。

适合场景:

  • 故障排查;
  • 代码仓库分析;
  • 多工具查询;
  • 不确定步骤的任务执行;
  • 需要边查边判断的问题。

3.2 Reflexion:执行后反思

Reflexion 的核心是让 Agent 在失败或结果不理想时生成“语言化反馈”,并把反馈用于下一轮尝试。

1
2
3
执行结果:测试失败
反思:失败原因是没有处理空数组
下一轮策略:补充空数组分支和单元测试

这对 AI Coding、PR 审查、自动修复特别有用。它让 Agent 不只是“重试”,而是带着经验重试。

但企业落地时要注意:反思内容也要可记录、可审计,不能只存在模型上下文里。

3.3 Evaluator-Optimizer:评估器 + 优化器

Anthropic 也提到过 Evaluator-Optimizer 这类模式:一个模型生成结果,另一个模型或规则系统评估质量,然后进入下一轮优化。

1
2
3
4
Generator -> Draft
Evaluator -> 找问题
Optimizer -> 修改
Evaluator -> 通过/继续

适合场景:

  • 文档精修;
  • 代码生成;
  • Prompt 优化;
  • 测试用例生成;
  • PR 审查报告去重和仲裁。

PR 审查官产品里就可以用这个思路:架构 Agent、代码质量 Agent、安全 Agent 并行审查,再由仲裁 Agent 做去重和最终报告。

3.4 State Graph:状态图驱动的循环

LangGraph 的思路可以理解为:把 Agent Loop 显式建模为状态图。

1
2
3
4
5
6
Start
-> Plan
-> ToolCall
-> Evaluate
-> NeedMoreWork? yes -> Plan
-> NeedMoreWork? no -> Finish

相比纯 while loop,状态图的好处是:

  • 每个节点职责清晰;
  • 状态可持久化;
  • 容易插入人工确认;
  • 容易做恢复和重试;
  • 容易观测每一步。

企业级 Agent 不建议只写一个无限 while。更好的方式是显式状态机或状态图。

4. 一个企业级 Loop Agent 架构

推荐架构:

1
2
3
4
5
6
7
8
9
10
11
User Goal
-> Task Router
-> Planner
-> Loop Controller
-> State Store
-> Memory Store
-> Tool Gateway
-> Policy Guard
-> Evaluator
-> Human Approval
-> Final Report

4.1 Task Router

先判断任务类型:

  • 是否需要工具;
  • 是否需要长周期执行;
  • 是否适合固定 workflow;
  • 是否需要人工审批;
  • 是否属于禁止任务。

很多任务在入口就应该被分流,不要全部丢进 Loop Agent。

4.2 Planner

Planner 负责生成初始计划,但计划必须是可修改的。

一个好的计划包含:

  • 目标;
  • 子任务;
  • 依赖关系;
  • 所需工具;
  • 风险点;
  • 完成条件;
  • 回滚策略。

4.3 Loop Controller

Loop Controller 是核心,负责控制每轮循环:

1
2
3
4
5
6
7
while not done:
state = observe()
decision = llm_decide(state)
checked = policy_check(decision)
result = execute(checked)
state = update_state(result)
done = evaluate(state)

但生产系统里,这个 loop 必须有:

  • 最大轮数;
  • 最大 token;
  • 最大耗时;
  • 最大工具调用次数;
  • 最大失败次数;
  • 人工暂停点。

4.4 Tool Gateway

工具不能直接暴露给模型。必须经过 Tool Gateway:

1
Agent Decision -> Tool Gateway -> Policy Guard -> Tool Execution -> Audit Log

Tool Gateway 要负责:

  • 参数校验;
  • 权限判断;
  • 路径白名单;
  • 风险分级;
  • 执行日志;
  • 敏感信息脱敏。

这也是 MCP 和 OpenClaw 技能系统的价值所在:把工具能力标准化、边界化。

4.5 Evaluator

Evaluator 判断任务是否完成:

  • 输出是否满足格式;
  • 测试是否通过;
  • 页面是否 200;
  • MR 是否可合并;
  • Jenkins 是否成功;
  • 用户目标是否达成。

不要让 Agent 自己一句“我觉得完成了”就结束。完成条件应该尽量可验证。

4.6 企业级 Loop Agent 架构图

下面这张图把前面提到的 Task Router、Planner、Loop Controller、Tool Gateway、Policy Guard、Evaluator 和 Human Approval 放到一张图里,便于理解整体协作关系。

企业级 Loop Agent 架构图 展示用户目标进入 Loop Agent 后,经过任务路由、规划、循环控制、工具网关、策略护栏、评估器和人工审批的整体架构。

企业级 Loop Agent 架构

User Goal目标/约束
Task Router任务分流
Planner计划/完成条件

Loop Runtime

Loop Controller循环控制
State Store状态持久化
Memory Store长期记忆
Tool Gateway工具网关
Policy Guard权限护栏
Evaluator质量评估

Human Approval人工确认
External ToolsGit/Jenkins/MCP
Final Report结果/审计

未完成则回环
图 1:企业级 Loop Agent 不只是一个 while 循环,而是由状态、工具、安全、评估和人工确认共同组成的运行时。

5. Loop Agent 的状态设计

Loop Agent 必须有状态。推荐状态结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"goal": "精修 4 篇 AI Agent 文章并创建 MR",
"phase": "editing",
"plan": ["拉 main", "创建分支", "修改文章", "运行检查", "提交 MR"],
"current_step": "运行检查",
"observations": [],
"tool_calls": [],
"failures": [],
"budget": {
"max_steps": 20,
"max_minutes": 30,
"max_tool_calls": 50
},
"done_conditions": ["check-content 通过", "git diff --check 通过", "MR 创建成功"]
}

状态要能持久化,不能只存在 prompt 里。OpenClaw 这类系统可以把状态写入 workspace 文件、daily memory 或任务流系统。

6. 终止条件比循环更重要

Loop Agent 最常见的问题是停不下来。

必须定义三类终止条件:

6.1 成功终止

1
2
3
4
所有检查通过
MR 创建成功
线上验证 200
报告生成完成

6.2 失败终止

1
2
3
4
连续 3 次同类错误
关键工具不可用
权限不足
依赖用户决策

6.3 预算终止

1
2
3
4
超过最大轮数
超过最大耗时
超过 token 成本
超过工具调用次数

一个没有终止条件的 Agent Loop,不是智能,是事故隐患。

6.4 Loop Agent 执行状态图

终止条件最好显式进入状态图,而不是藏在 prompt 里。下面是一个生产环境更推荐的状态流。

Loop Agent 执行状态图 展示 Loop Agent 从开始、观察、规划、行动、评估到成功、失败或等待人工确认的状态转换。 Loop Agent 执行状态图

Start
Observe读取状态
Plan下一步
Act工具调用
Evaluate是否完成
Approval高风险
Finish成功输出
Stop失败/超预算

未完成:继续观察 完成 失败/超预算
图 2:显式状态图能避免 Loop Agent 无限循环,也便于插入人工审批、失败终止和预算终止。

7. 安全设计:Loop 越强,护栏越重要

Loop Agent 能持续行动,所以风险比单次调用更高。

建议按工具风险分级:

风险等级 示例 策略
L0 只读 read、grep、status、web fetch 可自动执行
L1 低风险写 写草稿、生成报告、创建分支 限定目录
L2 中风险写 commit、push、创建 MR 需要验证和日志
L3 高风险 部署、删除、权限变更、外部发送 人工确认
L4 禁止 导出密钥、破坏系统、绕过审计 直接拒绝

OpenClaw 的执行策略、技能边界、记忆文件和工具权限,都是企业 Loop Agent 的基础设施。

7.1 工具安全网关图

Loop Agent 一旦能调用工具,就必须让所有动作经过网关和护栏。尤其是写文件、提交代码、部署、发消息这类动作,不能让模型直接执行。

Loop Agent 工具安全网关图 展示 Agent 决策如何经过工具网关、参数校验、策略护栏、人工确认和审计日志后再调用外部工具。 Loop Agent 工具安全网关

Agent动作决策
Tool Gateway统一入口
Validation参数校验
Policy Guard权限/风险
Human GateL3 确认
Audit Log审计记录

Gitcommit/MR
Jenkinsbuild/deploy
MCP外部工具
Messages外部发送

通过校验和策略后才执行
图 3:工具安全网关把 Agent 的“想做什么”变成“允许做什么、如何审计、何时需要人类确认”。

8. Loop Agent 在博客运营中的实践

这次博客整改就是一个典型 Loop Agent 场景:

1
2
3
4
5
6
7
目标:提高博客内容质量和 SEO
观察:扫描文章质量、MR 状态、线上页面
规划:按 P0/P1/P2 分批处理
行动:修改文章、提交 MR、更新 site 子模块
验证:CI 检查、Jenkins 发布、线上 200
反思:记录冲突、修复流程、更新第二阶段清单
继续:进入下一批文章

这类任务有几个特点:

  • 持续多天;
  • 多仓库协作;
  • 需要人类合并 MR;
  • 需要线上验证;
  • 需要记忆上下文;
  • 需要避免重复和冲突。

所以它天然适合 Loop Agent,但必须由 Git、MR、Jenkins、memory、heartbeat 共同约束。

9. 企业落地场景

Loop Agent 适合这些企业场景:

  1. PR 自动审查:多 Agent 审查、仲裁、回写评论;
  2. 故障排查:读取告警、查日志、定位原因、生成报告;
  3. 知识库治理:扫描旧文档、补 SEO、修链接、生成 MR;
  4. CI/CD 运维:检查流水线、分析失败、建议修复;
  5. 安全审计:扫描配置、识别风险、生成整改清单;
  6. 客服工单处理:分类、检索知识库、生成回复、等待确认。

不适合的场景:

  • 强合规、不能自动行动的高风险流程;
  • 需求极其模糊但又要求结果完全正确;
  • 没有工具权限边界的生产环境;
  • 没有日志和审计要求的黑箱自动化。

10. 最佳实践清单

设计 Loop Agent 时,我建议至少检查 15 项:

  1. 是否真的需要 Loop,而不是简单 Workflow?
  2. 目标是否明确?
  3. 完成条件是否可验证?
  4. 最大轮数是否设置?
  5. 最大工具调用次数是否设置?
  6. 是否有失败终止条件?
  7. 工具是否经过权限网关?
  8. 高风险操作是否需要人工确认?
  9. 状态是否可持久化?
  10. 记忆是否分层?
  11. 每轮 Observation 是否记录?
  12. 是否能从中断处恢复?
  13. 是否有 Evaluator?
  14. 是否有审计日志?
  15. 是否有回滚方案?

少于这些约束的 Loop Agent,最好不要直接进生产。

11. 参考资料

本文参考和吸收了这些专业资料的设计思想:

  • Anthropic Engineering:《Building Effective AI Agents》:强调从简单模式开始,区分 workflow 和 agent,推荐组合式模式;
  • ReAct:把 reasoning 和 acting 交替结合,是工具型 Agent 的经典范式;
  • Reflexion:通过语言化反馈让 Agent 从失败中改进;
  • LangGraph:用状态图表达 Agent Loop,适合持久化、恢复和人工介入;
  • Model Context Protocol:为工具和上下文接入提供标准接口;
  • OpenClaw 实践:通过技能、记忆、heartbeat、工具策略和多仓库工作流支撑长周期任务。

12. 架构师点评

Loop Agent 不是一个 prompt 技巧,而是一套系统架构。它把 LLM、工具、记忆、状态机、权限、评估器和人工监督组合在一起。真正难的不是让 Agent 循环起来,而是让它知道什么时候停、什么不能做、失败了怎么恢复、做过什么如何审计。

企业落地 Loop Agent 时,我建议遵循一个原则:自主性可以逐步增加,但可控性必须从第一天就设计进去。

13. 企业落地建议

如果你正在设计企业级 Loop Agent,可以按下面路线推进:

  1. 先做固定 Workflow,验证业务价值;
  2. 再引入受限 Loop,用于低风险任务;
  3. 加入 Tool Gateway、Policy Guard 和 Audit Log;
  4. 加入 Evaluator 和明确终止条件;
  5. 支持人工确认和中断恢复;
  6. 最后再扩展到多 Agent 协作。

需要设计企业级 Loop Agent、PR 审查官、多 Agent 协作或 OpenClaw 私有化落地,可以查看 企业 AI Agent / AI Coding 落地咨询AI Agent 专题PR 审查官产品方案

14. 相关专题与产品入口

这篇 Loop Agent 文章可以和下面几条内容线一起阅读: