在上一篇文章中,我们深入分析了 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 的执行过程:
Bash: find . -name "*.py" | |||
Bash: grep -rn "TODO" --include="*.py" | |||
Read: src/main.py | |||
Read: src/utils.py | |||
Write: TODO_LIST.md | |||
Bash: gh issue create --title "..." | |||
Bash: gh issue create ... | |||
整个过程中,用户只发送了一条消息,Agent 自主完成了 20+ 次工具调用。
上下文窗口管理:长对话的生命线
Agentic Loop 面临的最大挑战是上下文窗口管理。每次迭代都会增加上下文长度(工具调用 + 结果),长任务很容易撑爆模型的 token 上限。
OpenClaw 通过两个 Pi 扩展来解决这个问题:
上下文裁剪扩展
位于 src/agents/pi-extensions/context-pruning/,采用渐进式策略:
| 软裁剪 | ||
| 硬清除 | ||
| 保护规则 |
触发时机也很讲究:仅在 Anthropic 缓存 TTL 过期时激活(默认 5 分钟)。这是因为 Anthropic 的 API 有提示词缓存机制,如果在缓存有效期内修改上下文,会导致缓存失效,反而增加成本。
压缩保护扩展
位于 src/agents/pi-extensions/compaction-safeguard.ts:
防止压缩操作本身消耗过多上下文(压缩生成的摘要也占 token) 单独总结被丢弃的消息,而不是简单删除 跟踪文件操作(读/写/编辑)并包含在摘要中,确保 Agent 不会"忘记"自己做过什么
成本控制:Agentic Loop 的经济学
Agentic Loop 的一个重要特性是:它没有内置的成本控制器。每次迭代都消耗 token,一个复杂任务可能消耗数万甚至数十万 token。
社区的解决方案:
| 模型路由 | ||
| Token 预算 | ||
| 任务分级 | ||
| 缓存优化 |
有用户报告,使用混合模型路由策略,一整天的 Agent 使用仅花费 75。差异在于刻意的模型路由,而非降低能力。
与其他 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
夜雨聆风