OpenClaw 篇二:工作原理

3次阅读
没有评论

共计 5502 个字符,预计需要花费 14 分钟才能阅读完成。

在上一期中,我们介绍了 OpenClaw 的安装方法,并介绍了 OpenClaw 工作区中的配置文件。那本文将讨论一下 OpenClaw 的内部工作原理。

从信息检索到任务执行

当下人工智能的发展正在经历一次范式转移。从早期 [[LLM]](大语言模型)应用主要集中在问答和内容生成,转向当前的 AI 智能体——也就是 AI 自主根据经验和知识,产生计划并执行操作的能力。然而,当前主流的云端 Agent 解决方案面临着几个根本性的挑战:数据隐私不可控、上下文记忆碎片化、以及与本地环境交互受限。

OpenClaw 篇二:工作原理

OpenClaw 正是在这样的背景下诞生的。它不仅仅是一个聊天机器人,更是一个跨平台的个人 AI 助理。OpenClaw 提出了一种"自带设备"(BYOD,Bring Your Own Device)的运行模式:核心组件运行在用户自己控制的硬件上——无论是 [[Mac Mini]]、Linux 服务器还是[[树莓派]]——而将推理任务通过 API 外包给 [[Claude]] Opus、[[GPT-4]] 或本地开源模型。这种架构不仅确保了用户对记忆和数据的完全掌控,还赋予了 AI 深度访问本地文件系统、Shell 和浏览器的能力,使其成为真正意义上能干活的"助手"。

核心架构

OpenClaw 采用了以 Gateway 为中心的多层结构,整个系统围绕一个 Gateway 网关运转。

下图展示了其整体架构:

graph TD
    subgraph Channels["消息渠道"]
        WA[WhatsApp]
        TG[Telegram]
        SL[Slack]
        DC[Discord]
        SG[Signal]
        IM[iMessage]
    end

    subgraph GW["Gateway 网关 (port 18789)"]
        WS[WebSocket Server]
        API[HTTP API]
        UI[Web UI]
    end

    subgraph Runtime["Agent Runtime"]
        PI[Pi Framework]
        TL[Tool Loop]
        CTX[Context Builder]
    end

    subgraph Extensions["扩展系统"]
        SK[Skills System<br/>SKILL.md]
        MEM[Memory<br/>Sessions]
        PLG[Plugin System]
    end

    subgraph LLMs["LLM 提供商"]
        CL[Claude]
        GP[GPT-4]
        DS[DeepSeek]
        OL[Ollama]
    end

    WA & TG & SL & DC & SG & IM --> GW
    GW --> Runtime
    Runtime --> SK
    Runtime --> MEM
    Runtime --> PLG
    Runtime <--> LLMs

    style Channels fill:#FADBD8,stroke:#E74C3C
    style GW fill:#F5B7B1,stroke:#E74C3C
    style Runtime fill:#FDEDEC,stroke:#E74C3C
    style Extensions fill:#FDEBD0,stroke:#E67E22
    style LLMs fill:#D5F5E3,stroke:#27AE60

整体架构分层

用一个生活中的比喻来理解 OpenClaw 的架构:把它想象成一个公司的前台接待系统。

  • 消息渠道(Channels)就像公司的多个入口——前门、电话、邮件,客户可以从任何入口进来
  • Gateway 网关就像前台总机,所有请求都先经过这里统一分配
  • Agent Runtime 就像公司里真正干活的员工,接到任务后去思考和执行
  • Skills 就像员工手边的工具箱和操作手册
  • Memory 就像公司的档案室,记录着之前的沟通历史

Gateway 网关

Gateway 是 OpenClaw 的核心控制平面,它是一个运行在本地 18789 端口的 [[Node.js]] 进程。所有的通信都经过这个单一节点:

  • 接收来自各个消息平台的用户输入(飞书的 WebSocket 连接,Telegram Bot API 轮询等)
  • 将请求路由到 Agent Runtime 处理
  • 管理 WebSocket 连接、HTTP API(兼容 [[OpenAI]] 接口)和浏览器 Web UI
  • 协调设备节点(手机、桌面端)的连接

为什么是单进程设计?因为 OpenClaw 的定位是个人或小团队使用,运维简单比水平扩展更重要。一条 npm i -g openclaw 命令就能安装完成。Gateway 通过维护持久连接,确保了消息收发的稳定性和状态一致性。

另外 Gateway 默认只绑定本地 Loopback 地址,确保了不直接向公网暴露端口,减少外部攻击。

Agent Runtime 智能体运行时

Agent Runtime 是 OpenClaw 真正"思考"的地方。它负责:

  1. 从会话历史和记忆中组装上下文
  2. 构建发送给大语言模型的 Prompt
  3. 调用模型获取响应
  4. 如果模型请求使用工具,就执行相应的操作(运行命令、读写文件、浏览网页等)
  5. 循环上述过程,直到产生最终回答

一个值得注意的架构决策:OpenClaw 自身并没有从零实现智能体循环,而是基于 [[Pi Framework]] 构建。Pi 是一个轻量级的 TypeScript 智能体框架,专门负责底层的工具调用循环、上下文窗口管理和 LLM API 交互。OpenClaw 在 Pi 之上构建了网关、多渠道编排和集成层,两者的关系类似于 Web 应用与底层 HTTP 框架的关系——Pi 处理"如何与模型对话",OpenClaw 处理"如何与用户和外部世界连接"。

在模型选择上,Agent Runtime 采用了模型无关的设计。它支持几乎所有主流的大语言模型——Anthropic 的 [[Claude]] 系列、OpenAI 的 [[GPT-4]]、Google 的 [[Gemini]]、xAI 的 Grok、[[DeepSeek]] 系列,以及通过 [[Ollama]] 在本地运行的开源模型。你只需要提供对应的 API Key,或者通过 Ollama 在本地运行模型,就可以完全在自己的基础设施上使用,不被任何一家供应商锁定。

消息处理流程

了解了各个组件之后,我们来看一条消息从发出到收到回复的完整旅程:

graph LR
    A[用户发送消息] --> B[聊天 App]
    B --> C[Gateway 网关]
    C --> D[Agent Runtime]
    D --> E{需要工具?}
    E -->|是| F[执行工具]
    F --> D
    E -->|否| G[生成回复]
    G --> C
    C --> B
    B --> H[用户收到回复]

这个流程中有一个关键设计:每个会话的消息是串行处理的,不是并行的。Gateway 通过命令队列(Command Queue)来保证同一会话内的工具操作不会冲突,会话历史保持一致。同时,Agent Runtime 与 LLM 之间的交互并非一次性的——如果模型判断需要使用工具,Agent 会执行操作、将结果反馈给模型,然后模型继续推理,这个循环会持续进行直到产生最终回答。正是这套"网关—大脑—技能—记忆"的闭环架构,让 OpenClaw 突破了传统聊天机器人只能对话的限制,成为一个真正能动手干活的智能助理。

核心能力详解

了解了架构之后,我们来看 OpenClaw 究竟能做什么。以下是它最核心的六项能力。

mindmap
  root((OpenClaw 核心能力))
    跨平台通信
      飞书 / Telegram / Slack
      统一会话上下文
      语音与多媒体
    系统与浏览器访问
      Shell 命令执行
      浏览器自动化
      文件系统读写
    技能与插件
      1800+ 社区技能
      按需注入加载
      AI 辅助创建技能
      四维度插件扩展
    记忆系统
      跨会话上下文
      自动摘要压缩
      本地持久化存储
    主动提醒
      心跳 Heartbeat
      Cron 定时任务
      Webhook 外部触发
    多 Agent 协作
      多角色分工
      任务分解并行

跨平台通信网关

跨平台通信是 OpenClaw 的基础能力。它打破了 AI 助手的平台壁垒,让你可以在任何习惯的聊天工具中与它交互。

  • 广泛的渠道支持:原生支持 [[飞书]]、[[Telegram]]、[[Discord]]、iMessage、[[Slack]] 等十多种主流即时通讯工具
  • 统一的会话体验:无论你从哪个 App 发送消息,OpenClaw 都能维持同一个会话上下文,记忆和身份保持一致,确保跨平台交互的连贯性
  • 媒体与语音支持:不仅支持文本,还可以接收和发送图片、文档、音频等多种媒体文件。通过集成语音识别(如 [[Whisper]])和语音合成(如 [[ElevenLabs]])技术,你甚至可以直接与它进行语音对话

系统与浏览器访问

OpenClaw 的核心在于行动。它被授予了直接操作所在设备的能力,从而能够完成真正的"工作"。

  • Shell 访问:OpenClaw 可以执行任意的 Shell 命令,意味着它可以管理文件、运行脚本、安装软件、控制服务——几乎等同于一个可以通过自然语言指挥的系统管理员。这是其自动化能力的基石,同时也是安全风险的核心来源
  • 浏览器控制:通过与 Chrome/Chromium 浏览器的深度集成,OpenClaw 可以像人一样操作浏览器——访问网页、填写表单、点击按钮、抓取信息,甚至处理登录流程。这使得网页自动化任务变得非常简单
  • 文件系统读写:OpenClaw 对其工作区拥有完全的读写权限,可以创建、修改、分析本地文件,使其能够处理文档、管理项目、记录笔记

技能与插件系统

Skills 是 OpenClaw 最具特色的扩展机制。每个 Skill 是一个包含 SKILL.md 文件的目录,定义了元数据和工具使用指令。OpenClaw 的技能分为三个层级:内置技能(49 个随软件预装)、官方技能(93 个由官方维护)和社区技能(1715+ 个通过 ClawHub 发布),总计超过 1800 个可用技能,涵盖 Shell 命令执行、文件系统管理、网页自动化、日历管理、邮件处理等场景。

在加载策略上,OpenClaw 采用按需注入而非全量加载——运行时发现所有可用技能,但只将当前对话轮次相关的技能注入到 Prompt 中,避免消耗大量 Token。同时维护技能快照缓存,基于工作区状态的 Hash 来判断是否需要更新。

除了技能,OpenClaw 还通过插件在四个维度进行扩展:Channel 插件增加消息平台支持,Memory 插件替换存储后端,Tool 插件添加自定义能力,Provider 插件接入自定义的 LLM 提供商。插件以 npm 包的形式分发,通过 package.json 中的 openclaw 字段声明。

值得一提的是,OpenClaw 自身就能帮助你创建新技能——只需用自然语言描述想要实现的功能,它就能生成所需的 SKILL.md 和相关脚本。即使不擅长编程的用户,也可以定制属于自己的自动化流程。

记忆系统

OpenClaw 的记忆系统让它能够跨会话保持上下文连贯。配置数据和交互历史都存储在本地。当会话接近上下文窗口的长度限制时,OpenClaw 会触发一个静默的智能体轮次:提醒模型将关键信息写入磁盘进行持久化,然后对会话历史进行摘要压缩,用连贯的摘要替换原始消息。这个机制保证了即使是长时间运行的任务,AI 助手也不会"失忆"。

主动提醒与定时任务

大多数 AI 工具是被动的——你问它才答。OpenClaw 则具备主动行动的能力,能够在你没有发起对话的情况下自动执行预设任务。这种能力通过三种机制实现:

  • 心跳机制(Heartbeat):OpenClaw 按预设周期(默认每 30 分钟)自动唤醒,读取工作区中 HEARTBEAT.md 文件里的指令并执行。你可以在其中写入"每天早上 8 点总结我的日程和邮件"或"每小时检查一次特定网站的更新"等任务,直接用自然语言描述即可
  • Cron 定时任务:对于需要精确控制执行时间的场景,支持用自然语言或 Cron 表达式创建定时任务。例如每个工作日下午 6 点自动提交代码变更,或每周五生成周报草稿
  • 外部触发器(Webhooks):通过 [[Webhook]] 接收来自 [[GitHub]]、[[Zapier]]、[[IFTTT]] 等外部应用的事件通知。例如 GitHub 有新的 Pull Request 时自动触发代码审查,或通过 Gmail Pub/Sub 集成实时响应新邮件

这三种机制共同构成了 OpenClaw 的主动行为引擎,你可以根据任务性质选择合适的触发方式,也可以设置规则来控制它什么时候应该主动联系你、什么时候保持安静。

多 Agent 协作

OpenClaw 支持配置多个具有不同角色、技能和权限的 Agent。你可以创建一个专注代码的 Agent、一个负责日程管理的 Agent,让它们各司其职,甚至相互协作将复杂任务分解后并行执行。这种多 Agent 架构让 OpenClaw 从单一助手进化为一个可以分工协作的团队。

总结

回顾整篇文章,OpenClaw 的架构可以概括为三层:Gateway 网关负责连接外部世界,Agent Runtime(基于 [[Pi Framework]])负责思考和决策,Skills、Memory 和 Plugin 构成的扩展层则赋予了它可成长的能力边界。这三层协同工作,让 OpenClaw 从一个被动的聊天机器人变成了一个能够主动行动、跨平台协作、深度操控本地环境的个人 AI 助理。

当然,本文只是对 OpenClaw 工作原理的一个总括性介绍,很多细节还有待进一步展开。比如 Pi Framework 内部的工具调用循环是如何实现的、技能的智能注入机制具体是怎样匹配上下文的、记忆系统的摘要压缩算法选择了什么策略、多 Agent 之间的协作协议是如何设计的——这些话题每一个都值得单独深入探讨。后续的文章中,我们会挑选其中几个方向继续挖掘,把 OpenClaw 的技术细节讲得更透。

相关链接

正文完
 0
评论(没有评论)