openclaw 技术分析

433 阅读5分钟

openClaw 最近爆火。它实现了“无限上下文”,"能接任意工具",“自我迭代”通用智能体。

openClaw 实现以下功能:

  • Gateway 统一多渠道接入
  • Tools + Skills定义能力边界
  • Memory 实现持久化记忆和自我进化
  • 定时触发任务执行

github url :github.com/openclaw/op…

项目是纯前端写的,主要用typescript

主要概念:

目录结构:

openclaw/
├── src/                    # TypeScript source
│   ├── agents/            # Agent runtime, tools, sandbox
│   ├── gateway/           # Gateway server, protocol
│   ├── config/            # Configuration, sessions
│   ├── cli/               # CLI commands
│   ├── commands/          # Command implementations
│   ├── telegram/          # Telegram channel
│   ├── discord/           # Discord channel
│   ├── slack/             # Slack channel
│   ├── signal/            # Signal channel
│   ├── imessage/          # iMessage channel
│   ├── memory/            # Memory search
│   ├── web/               # Control UI backend
│   └── ...
├── extensions/            # Plugin workspace packages
│   ├── msteams/          # Microsoft Teams plugin
│   ├── matrix/           # Matrix plugin
│   ├── memory-core/      # Core memory plugin
│   └── ...
├── apps/                  # Companion apps
│   ├── macos/            # macOS menu bar app (Swift)
│   ├── ios/              # iOS node app (Swift)
│   └── android/          # Android node app (Kotlin)
├── ui/                    # Control UI frontend (Lit)
├── docs/                  # Documentation (Mintlify)
├── skills/                # Bundled skills
├── dist/                  # Build output
├── openclaw.mjs          # CLI entry point
├── package.json          # npm package manifest
├── tsconfig.json         # TypeScript config
└── fly.toml              # Fly.io deployment config

其中重要节点: GatewayAgents,  Tools,  Skills,MemoryChannelsNodes.

框架图:(简化)

image.png

流程图:

屏幕快照 2026-02-02 下午4.01.41.png

Gateway: The Control Plane

Gateway 是openClaw 系统的核心枢纽——负责长期运行的守护进程,负责管理所有消息通道并作为 WebSocket 控制平面。openClaw 支持多 Agent 创建和运行。一个 Gateway 可以托管多个独立的 Agent。

Gateway 主要做三件事:

  1. 接收消息:从各个渠道收集用户指令
  2. 路由分发:决定这条消息应该交给哪个 Agent 处理
  3. 回复投递:把 Agent 的回复发送回对应的渠道

Agents:AI 执行运行时

Agent是通过集成Pi Agent来支持 AI 助手实例。每个Agent都有自己的工作区、模型配置、工具策略和身份验证配置文件。

Agent在接收到消息与任务后,动用自己的脑袋(LLM/大模型)、手脚(Tools)、专业知识(Skills),尽可能的完成任务,其中可能会访问Web、运行命令、读写文件、编写代码,甚至调用其他Nodes能力(比如摄像头)。

openClaw 的核心运行的核心是Agent Loop。

agent的四个核心阶段

阶段 1:上下文组装

Agent 需要告诉 LLM “你是谁、你能做什么、你有什么工具,用户说了什么”。这包括:

  • 系统提示:Agent 的身份、规则、工具列表
  • 会话历史:之前的对话记录或者记忆
  • Bootstrap 文件:AGENTS.md、SOUL.md、TOOLS.md 等工作区文件

openClaw 会把这些文本内容拼接成一个完整的 Prompt,然后发送给 LLM。

阶段 2:模型推理

LLM 收到 Prompt 后,思考决定下一步行动。它可能:

  • 直接回复用户文字
  • 生成调用一个工具(Tool Call)的代码
  • 其他,如请求更多信息

阶段 3:工具执行

如果 LLM 决定调用工具,Agent 会:

  1. 解析 Tool Call 参数
  2. 执行对应的工具(exec、read、write、browser…)
  3. 把执行结果(状态、内容)返回给 LLM

阶段 4:回复分发

当 LLM 生成最终回复后,Agent 会:

  1. 格式化回复内容,变成用户语言
  2. 通过 Gateway 发送回对应的消息渠道
  3. 支持流式输出(边生成边发送)

Clawdbot支持多Agent模式,可以互不干扰,也可以相互协作。每个Agent有自己的工作区,放置专属配置与记忆,甚至自己的技能。

~/.openclaw/agents/<agentId>/ 
├── agent/ 
│ ├── auth-profiles.json # OAuth + API key credentials 
│ └── auth.json # Runtime cache (managed by Pi Core) 
├── sessions/ 
│ └── agent-<agentId>.json # Session transcripts 
└── workspace/ # Files accessible to the agent 
├── AGENTS.md # System prompt bootstrap 
├── SOUL.md # Identity/personality 
├── TOOLS.md # Tool guidance 
└── skills/

其内核Pi Agent 是一个精简高效的编程智能体,核心特点包括:

  • Agent Loop(智能体循环):处理用户消息、执行工具调用、将结果反馈给 LLM,循环直到模型生成无工具调用的响应
  • 事件驱动架构:循环过程发射生命周期事件,支持响应式 UI
  • 消息队列:支持两种模式(逐条处理或批量处理)
  • 工具流式传输:支持块流式传输和增量流式传输,实现实时输出

tools:外部函数

tools是agents在执行过程中可以调用的功能。OpenClaw 提供内置工具,用于文件操作、shell 执行、浏览器控制、消息传递和系统集成。

tools.png

agents通过执行工具createOpenClawCodingTools来完成组装,基础工具有:

  • 命令行操作工具
  • Python 代码解释器
  • Fetch 网络信息获取
  • 文件读取工具
  • RAG 检索工具

skills 技能

Skills 是 智能体执行任务或者使用工具的指引插件。

Skill 加载优先级(从高到低):

  1. 工作区 skills:/skills
  2. 托管/本地 skills:~/.clawdbot/skills
  3. 内置 skills:随安装包分发

内置 Skills(49+ 个)涵盖:

  • Apple 生态:Notes、Reminders、Things 3、Bear Notes
  • Google Workspace:Gmail、Calendar、Drive、Docs、Sheets(通过 gog CLI)
  • 通信工具:Slack、iMessage、Twitter/X、Discord
  • 智能家居:Philips Hue、Sonos、Eight Sleep
  • 开发工具:GitHub CLI、Claude Code 子进程、Whisper 转录

目录结构如下:

    ~/.openclaw/agents/<agentId>/workspace/skills/ 
    ├── github/ 
    │ ├── SKILL.md # Skill documentation (injected into prompt) 
    │ ├── package.json # Metadata (name, description, dependencies) 
    │ └── bin/ # Optional binaries/scripts 
    ├── slack/ 
    │ ├── SKILL.md 
    │ └── package.json 
    └── custom-skill/ 
    ├── SKILL.md 
    └── package.json

Memory 系统:持久化记忆

openClaw 采用 Short-term(工作记忆) + Long-term(向量/图谱记忆) + Archival(归档记忆) 三级存储架构。采用markdown + sqlite 的存储技术。

工作记忆采用了上下文压缩 生成摘要的方式。

文件存储 分为两个物理层级:

  • 每日流水账 (Daily Logs) 存储于 ~/clawd/memory/YYYY-MM-DD.md 。
  • 长期知识库 (Curated Knowledge) 存储于 ~/clawd/MEMORY.md ,Agent 会通过定期的“记忆刷盘(Flush)” 机制,将 Daily Logs 中的精华提炼并写入此文件。

其它的长期知识库如:

  1. SKILLS_SNAPSHOT.md 存储skill
  2. SOUL.md:人格、语气与边界
  3. IDENTITY.md:名称、风格与表情
  4. USER.md:用户画像与称呼方式
  5. AGENTS.md:操作指令、记忆使用规则与优先级
  6. MEMORY.md:跨线程的长期记忆

OpenClaw 用sqlite 做RAG, 采用加权混合搜索策略,采用 70% 向量语义搜索 + 30% BM25 关键词匹配 的加权策略,解决检索不准确的问题。

channels:消息平台集成

channels是连接 OpenClaw 和消息平台的适配器。每个通道负责处理特定于平台的身份验证、消息格式和传递。如:WhatsApp,telegram,discard,飞书,google chat

channels流程图.png

nodes:设备功能提供商

Nodes 就是在主机之外的其他“能力”节点,连接到 Gateway 的子设备(iOS、Android、macOS),提供设备本地功能:

旧手机、闲置电脑都可以作为 Node 加入网络,以提供更多的能力,比如摄像头、屏幕录制、系统控制、屏幕共享、显示可交互式的UI界面等。Nodes 需要在远程设备上运行相应的Node 客户端 App。