OpenClaw 原理深度解析

开源自托管的个人 AI 助手网关

本地优先 (Local-First) 多渠道接入 智能体原生 MIT 开源 TypeScript

OpenClaw 是一个运行在你自有设备上的 AI 网关,连接聊天应用与 AI 智能体, 实现隐私可控的本地化 AI 助手体验。

什么是 OpenClaw?

OpenClaw 是一个基于 TypeScript 开发的开源自托管 AI 助手平台,主打"本地优先、隐私可控"的设计理念

🚪

统一网关

作为单一控制平面,处理所有渠道的消息路由、会话管理和智能体调用

🔗

多渠道接入

支持 Telegram、Discord、Slack、WhatsApp、iMessage 等 20+ 平台

🤖

智能体原生

专为具备工具使用、记忆和多智能体路由能力的 AI 智能体设计

🔒

隐私优先

数据存储在本地,支持跨设备同步,完全掌控自己的数据

🛠️

工具生态

内置丰富的工具集,支持文件系统、浏览器、Shell 命令执行

📡

移动节点

iOS/Android 设备可作为移动节点,支持相机、语音等移动端能力

核心架构图

OpenClaw 采用以 Gateway 为核心的星型架构,所有消息通过统一网关路由

📱 渠道层 (Channels) Telegram Discord Slack WhatsApp +20 平台 Gateway 核心控制平面 📡 消息路由 💬 会话管理 🛠️ 工具调用 🔐 认证鉴权 📊 状态推送 🤖 LLM 大语言模型 Claude / GPT / Ollama Agentic Loop 推理循环 1. run.ts 主循环 2. attempt.ts 尝试层 3. subscribe.ts 事件 🛠️ 工具系统 文件 Shell 浏览器 记忆 💾 记忆系统 双重记忆系统 会话记录 (.jsonl) + 记忆文件 (.md) 📱 移动节点 iOS Android 用户消息 模型推理 工具执行 持久化

消息处理流程

从用户发送消息到获得 AI 响应的完整生命周期

📱 用户消息
🔌 通道适配器
🚪 网关鉴权
📬 会话路由
🧠 Agentic Loop
🤖 LLM 推理
🛠️ 工具执行
📝 结果返回
💾 记忆存储

📱 消息接收阶段

当用户通过任意渠道发送消息时,OpenClaw 的通道适配器负责接收和标准化处理:

  • 消息标准化:统一不同平台的消息格式
  • 附件提取:处理图片、文件、语音等多媒体内容
  • 来源识别:记录发送者身份和渠道信息
  • 初步验证:检查消息格式和基本合法性
// 消息标准化示例 const normalizeMessage = (msg) => ({ content: msg.text || msg.caption, sender: msg.from, channel: msg.source, attachments: msg.media || [], timestamp: msg.date });

🚪 会话路由机制

Gateway 作为单一事实来源,负责将消息路由到正确的会话:

路由维度 说明
按智能体 不同智能体处理不同类型的请求
按工作区 每个工作区有独立的会话上下文
按发送者 同一发送者的消息共享会话历史
按线程 群组中支持线程级别的对话隔离
// 任务通道队列 - 默认串行执行 export const enum CommandLane { Main = "main", // 主会话 Cron = "cron", // 定时任务 Subagent = "subagent", // 子智能体 Nested = "nested" // 嵌套调用 }

🧠 Agentic Loop 架构

Agentic Loop 是 OpenClaw 的核心推理引擎,采用事件驱动架构:

// 主循环架构 (run.ts) runEmbeddedPiAgent() └── while (true) { ├── 检查重试次数 (MAX_RUN_LOOP_ITERATIONS) ├── 调用 runEmbeddedAttempt() ├── 处理 context overflow → 自动压缩 ├── 处理 auth failure → profile 轮换 └── return payloads }

三层架构:主循环(run.ts) → 尝试层(attempt.ts) → 事件订阅(subscribe.ts)

🛠️ 工具执行管道

当 LLM 返回工具调用指令时,通过策略管道执行:

Profile Policy
Provider Policy
Global Policy
Sandbox Policy
内置工具功能
文件系统read / write / edit / bash
浏览器语义快照 + 页面交互
记忆搜索、创建、更新记忆
子智能体spawnSubagent 并行处理

📊 上下文管理策略

OpenClaw 通过多重机制管理上下文窗口:

机制触发条件处理方式
软修剪 上下文 > 30% 保留头部+尾部各 1500 字符
硬清除 上下文 > 50% LLM 总结并持久化到记忆
阻断运行 上下文 < 16K tokens 暂停并提示用户
// 压缩流程 旧消息LLM 总结紧凑摘要持久化到 JSONL

核心组件详解

深入理解 OpenClaw 的六大核心模块

🚪

Gateway 网关

整个系统的单一控制平面,处理所有消息路由、会话管理、工具调用和状态推送。采用 WebSocket 协议实现双向通信。

🧠

Agentic Loop

核心推理引擎,包含主循环、尝试层和事件订阅三层架构。支持流式响应、错误重试和上下文自动压缩。

📬

Lane 任务队列

任务通道系统,支持 Main/Cron/Subagent/Nested 四种通道类型,实现并发控制和任务隔离。

💾

双重记忆系统

会话记录(.jsonl) + 记忆文件(.md),支持向量检索和关键词搜索,记忆永久保存无衰减。

🛠️

工具系统

策略管道驱动的工具执行框架,支持文件系统、Shell、浏览器、记忆等多种工具类型。

👥

SubAgent 子智能体

支持嵌套派生的子智能体机制,每个子智能体拥有独立会话,可并行处理复杂任务。

技术对比与总结

特性 OpenClaw 传统 API 调用
数据存储 本地优先 + 可选同步 云端托管
多渠道 20+ 平台统一接入 单平台
会话管理 自动管理 + 持久化 需自行实现
工具生态 内置 + 可扩展 需自行开发
并发控制 Lane 队列自动管理 需自行实现
上下文 自动压缩 + 摘要 需自行管理
子智能体 内置支持 不支持

🏗️ OpenClaw 技术栈

TypeScript
Node.js
WebSocket
SQLite
Docker