OpenClaw 系统架构详解
第3部分:Agent Loop (代理循环)
Agent Loop 是 OpenClaw 的执行引擎,负责处理消息、调用 AI 模型、执行工具并生成回复。
🔄 Agent Loop (代理循环) - 执行引擎
职责
- 接收消息并组装上下文
- 调用 AI 模型进行推理
- 执行工具调用
- 流式输出回复
- 持久化会话状态
执行流程
Agent Loop 的完整执行流程包含以下步骤:
- agent RPC 验证参数
- 解析会话(sessionKey/sessionId)
- 持久化会话元数据
- 立即返回 { runId, acceptedAt }
- agentCommand 运行代理
- 解析模型和 thinking/verbose 默认值
- 加载 skills 快照
- 调用 runEmbeddedPiAgent
- runEmbeddedPiAgent
- 通过队列序列化运行
- 解析模型和认证配置
- 订阅 pi 事件和流
- 强制超时控制
- subscribeEmbeddedPiSession 桥接事件
- tool 事件 → stream: "tool"
- assistant 增量 → stream: "assistant"
- lifecycle 事件 → stream: "lifecycle"
- agent.wait 等待生命周期结束
- 等待 lifecycle end/error
- 返回 { status, startedAt, endedAt, error? }
队列和并发
- 会话通道:每个会话键序列化运行
- 全局通道:可选的全局序列化
- 防止竞争:避免工具/会话竞争
会话和工作空间准备
- 解析和创建工作空间
- 加载或重用 skills
- 解析引导/上下文文件
- 获取会话写锁
提示组装和系统提示
- 从 OpenClaw 基础提示构建
- 注入 skills 提示
- 添加引导上下文
- 应用每次运行的覆盖
超时控制
- agent.wait 默认:30秒
- Agent 运行时默认:172800秒(48小时)
- 支持超时参数覆盖