乐于分享
好东西不私藏

OpenClaw 核心技术深度解析(二):Agentic Loop 自主循环

OpenClaw 核心技术深度解析(二):Agentic Loop 自主循环

在上一篇文章中,我们深入分析了 Pi 极简内核的设计哲学。今天,我们聚焦 OpenClaw 的第二个核心技术——Agentic Loop 自主循环

这是 OpenClaw 与普通聊天机器人的根本分界线。传统聊天机器人的模式是"你问我答",而 Agentic Loop 让 AI 从被动的应答者变成了主动的执行者。


什么是 Agentic Loop?

传统聊天机器人的工作模式:

用户提问 → LLM 生成回答 → 返回文本 → 结束

OpenClaw 的 Agentic Loop:

消息到达 → LLM 生成计划 → 是否需要工具?
    ├── 是 → 执行工具 → 结果反馈 LLM → 重新规划 → 继续循环
    └── 否 → 输出最终回复

关键区别在于:这个循环可以无限次迭代,直到任务完成。一个简单的"帮我整理项目文档"指令,可能触发 10-20 次工具调用——读取文件、分析结构、创建目录、编写内容、检查格式——全部自动完成,无需用户在每一步介入。

正如 iamulya 在其分析中所说:OpenClaw 不使用简单的"调用 LLM → 获取文本"架构,它采用递归式 Agentic Loop。当消息到达时,系统不只是请求一个回复——它请求一个计划。它授予模型权限去观察、使用工具、思考——反复进行,直到任务完成。


核心实现:Pi 嵌入式运行器

Agentic Loop 的核心实现位于 src/agents/pi-embedded-runner/,它是 OpenClaw 包装 Pi Agent 循环的方式。整个执行过程分为四个阶段:

Phase 1:设置阶段

解析工作区 + 沙箱配置
    → 构建 OpenClaw 工具集(Pi 的 4 个 + 20+ 额外工具)
    → 打开 SessionManager
    → 加载 SettingsManager
    → 调用 createAgentSession()

这个阶段的关键决策是工具集的组装。根据当前会话的类型(主会话 / 群组会话 / 子 Agent 会话),系统会通过 8 层工具策略过滤出可用的工具子集。

Phase 2:上下文组装

构建系统提示词
    = 基础提示 + 工具描述 + 技能定义
    + SOUL.md + USER.md + AGENTS.md + HEARTBEAT.md
    → 解析模型 + 认证信息
    → 加载完整会话历史
    → 清理历史(Anthropic/Gemini 轮次排序修正)
    → 自动注入图片
    → 上下文裁剪扩展介入

上下文组装是 Agentic Loop 中最精密的部分。系统需要在有限的 token 窗口内,塞入尽可能多的有用信息。这里有两个关键扩展在工作:

  • 上下文裁剪扩展:在 Anthropic 缓存 TTL 过期后(默认 5 分钟),对旧的工具调用结果进行软裁剪(保留头尾)或硬清除(替换为占位符)
  • 压缩保护扩展:防止压缩操作本身消耗过多上下文

Phase 3:执行循环

调用 session.prompt()(Pi 的实际 Agent 循环)
    → subscribeEmbeddedPiSession() 包装 Pi 的流
    → 每次工具调用前通过 8 层工具策略检查
    → 工具执行结果反馈给 LLM
    → LLM 决定下一步:继续调用工具 or 输出最终回复

这是 Agentic Loop 的核心。Pi 的 session.prompt() 方法启动一个循环:LLM 生成响应,如果响应中包含工具调用请求,系统执行工具并将结果反馈给 LLM,然后 LLM 再次生成响应。这个过程一直持续到 LLM 输出纯文本(不包含工具调用)为止。

Phase 4:完成清理

触发压缩(如果需要)
    → 持久化会话到 JSONL
    → 格式化并发送回复
    → 释放会话锁

实际执行示例

假设你对 OpenClaw 说:"帮我检查项目中所有的 TODO 注释,整理成一个清单,并为每个 TODO 创建一个 GitHub Issue。"

Agentic Loop 的执行过程:

迭代
LLM 决策
工具调用
结果
1
需要先了解项目结构
Bash: find . -name "*.py"
返回文件列表
2
搜索 TODO 注释
Bash: grep -rn "TODO" --include="*.py"
返回 15 个 TODO
3
读取上下文
Read: src/main.py
获取第一个 TODO 的上下文
4
继续读取
Read: src/utils.py
获取更多 TODO 上下文
5
整理清单
Write: TODO_LIST.md
写入整理后的清单
6
创建 Issue
Bash: gh issue create --title "..."
创建第 1 个 Issue
7-20
继续创建
Bash: gh issue create ...
创建剩余 Issue
21
任务完成
无(纯文本输出)
"已整理 15 个 TODO 并创建了对应的 GitHub Issue"

整个过程中,用户只发送了一条消息,Agent 自主完成了 20+ 次工具调用。


上下文窗口管理:长对话的生命线

Agentic Loop 面临的最大挑战是上下文窗口管理。每次迭代都会增加上下文长度(工具调用 + 结果),长任务很容易撑爆模型的 token 上限。

OpenClaw 通过两个 Pi 扩展来解决这个问题:

上下文裁剪扩展

位于 src/agents/pi-extensions/context-pruning/,采用渐进式策略:

策略
触发条件
操作
软裁剪
工具结果超过阈值
截断中间部分,保留头部 + 尾部 + "...已截断..." 标记
硬清除
上下文接近 token 上限
用占位符替换旧的工具结果:"[此工具结果已被清除以节省上下文空间]"
保护规则
始终生效
永远不裁剪第一条用户消息之前的内容(系统提示词、身份文件等)

触发时机也很讲究:仅在 Anthropic 缓存 TTL 过期时激活(默认 5 分钟)。这是因为 Anthropic 的 API 有提示词缓存机制,如果在缓存有效期内修改上下文,会导致缓存失效,反而增加成本。

压缩保护扩展

位于 src/agents/pi-extensions/compaction-safeguard.ts

  • 防止压缩操作本身消耗过多上下文(压缩生成的摘要也占 token)
  • 单独总结被丢弃的消息,而不是简单删除
  • 跟踪文件操作(读/写/编辑)并包含在摘要中,确保 Agent 不会"忘记"自己做过什么

成本控制:Agentic Loop 的经济学

Agentic Loop 的一个重要特性是:它没有内置的成本控制器。每次迭代都消耗 token,一个复杂任务可能消耗数万甚至数十万 token。

社区的解决方案:

策略
实现方式
效果
模型路由
通过 OpenRouter 连接,日常任务用 Gemini Flash,复杂推理用 Claude Sonnet
降低 60-80% 日常成本
Token 预算
设置每日/每小时 token 上限
防止失控消耗
任务分级
简单任务限制最大迭代次数
避免简单任务过度消耗
缓存优化
利用 Anthropic 提示词缓存,避免重复发送相同上下文
减少 50%+ 输入 token

有用户报告,使用混合模型路由策略,一整天的 Agent 使用仅花费 使75。差异在于刻意的模型路由,而非降低能力。


与其他 Agent 框架的对比

特性
OpenClaw Agentic Loop
AutoGPT
LangChain Agent
CrewAI
循环类型
递归式,无限迭代
递归式,有步数限制
单步或链式
任务分配式
工具调用
每次迭代可调用多个工具
每次迭代一个工具
取决于 Agent 类型
按角色分配
上下文管理
裁剪 + 压缩双扩展
简单截断
依赖外部记忆
共享记忆池
成本控制
社区方案(模型路由)
内置步数限制
无内置方案
无内置方案
流式输出
支持,实时显示思考过程
不支持
部分支持
不支持

OpenClaw 的 Agentic Loop 最大的优势是灵活性——它不预设任务的复杂度,让 LLM 自己决定何时停止。代价是需要更精细的成本管理。


策略感知的 Agent Loop

值得一提的是,BYU 的 Pico Labs 团队提出了一个有趣的扩展:策略感知的 Agent Loop。他们使用 Cedar 策略语言修改了 OpenClaw 的 Agent Loop,使得每次工具调用都在运行时由策略授权。

关键创新在于:策略拒绝不会终止执行,而是变成反馈,引导 Agent 下一步做什么。 例如,如果 Agent 尝试删除一个受保护的文件,策略引擎会拒绝并返回原因,Agent 可以据此调整策略(比如先请求权限提升)。

这种设计将安全从"硬性限制"变成了"软性引导",让 Agent 在安全边界内保持自主性。


总结

Agentic Loop 是 OpenClaw 从"聊天工具"进化为"自主 Agent"的核心机制。它通过递归式决策循环、精密的上下文管理、和灵活的工具调用,让 AI 能够自主完成复杂的多步骤任务。

理解 Agentic Loop,就理解了 AI Agent 与传统聊天机器人的本质区别:不是"更聪明的回答",而是"自主的行动"。


参考链接

  • iamulya - OpenClaw Agent Loop, Context, and Models
  • CHATTERgo - OpenClaw Deep Dive: Architecture, Agent Loop
  • RoboRhythms - How OpenClaw AI Agent Works
  • Pico Labs - A Policy-Aware Agent Loop with Cedar and OpenClaw
  • Ken Huang - OpenClaw and Recursive Self-Improvement
  • Breydan - The Engineering Foundations of Autonomous Personal Intelligence