个人 AI 助手 · 项目架构全解
运行在你自己设备上的 AI 助手,通过 20+ 即时通讯渠道与你对话,执行真实操作
OpenClaw 的核心设计理念与项目定位
一个本地优先、快速响应、始终在线的个人 AI 助手。它不是云服务,而是运行在你自己的设备上,尊重你的隐私和安全。
WhatsApp、Telegram、Slack、Discord、Signal、iMessage、微软 Teams 等 20+ 种渠道连接你的 AI 助手。
AI 不只是聊天——它能控制浏览器、执行 Shell 命令、操作文件系统、渲染 Canvas 界面。
插件 SDK + Skills 技能系统,40 个扩展插件覆盖渠道与功能扩展。
macOS Menu Bar App、iOS / Android Node、CLI、Web UI 五种客户端形态。
DM 配对验证、Docker 沙箱隔离、工具白名单/黑名单、Tailscale 安全远程访问。
Gateway 控制面为核心的星型架构
ws://127.0.0.1:18789
src/52 个子目录 · 4700+ 文件 · 系统的心脏
src/gateway/
整个系统的中枢。WebSocket 服务器(默认端口 18789),所有客户端通过 WS 连接。负责会话管理、消息路由、健康检查与诊断。
src/agents/
AI 智能体运行时,基于 Pi Agent 核心。以 RPC 模式运行,支持 tool streaming 和 block streaming。可调用浏览器、Shell、Canvas 等工具。
src/telegram/ discord/ slack/ signal/ ...
6 个内建消息渠道适配器,每个包含 channel.ts(协议适配)、commands.ts(聊天命令)、groups.ts(群组)、media.ts(媒体)。
src/cli/ · src/commands/
命令行入口 openclaw.mjs → entry.ts → commander.js 分发。支持 onboard、gateway、agent、message send、doctor、channels、config 等子命令。
src/config/
配置文件 ~/.openclaw/openclaw.json(JSON5),TypeBox Schema 强类型校验,支持环境变量覆盖。
src/browser/
基于 Playwright 管理专属 Chrome/Chromium 实例。支持 CDP 控制、截图、操作自动化、上传、Profile 管理。
src/media/ · src/media-understanding/
图片/音频/视频处理管线。Transcription hooks(语音转文字)、文件大小限制、临时文件生命周期。使用 sharp 处理图片。
src/memory/
插件式内存架构(同时只有一个 memory 插件激活)。支持 LanceDB 向量数据库,用于 Agent 长期记忆和上下文检索。
src/security/ · src/pairing/
DM 配对验证、Docker 沙箱隔离、工具权限白名单/黑名单、Tailscale 安全远程访问。
src/plugins/ · src/plugin-sdk/
插件加载与管理框架 + 开发 SDK。支持 npm 包分发和本地扩展加载。
src/cron/ Cron 定时任务与唤醒src/hooks/ Webhook 处理src/sessions/ 会话持久化与跨会话通信src/routing/ 消息路由引擎src/tts/ 文本转语音 (ElevenLabs)src/wizard/ 交互式安装向导src/infra/ 基础设施工具src/tui/ 终端用户界面src/canvas-host/ Canvas A2UI 可视化工作空间src/auto-reply/ 自动回复引擎src/link-understanding/ 链接内容理解src/context-engine/ 上下文引擎extensions/40 个独立 pnpm workspace 包
每个扩展都是独立的 npm 包,可以单独安装、更新和发布。分为渠道扩展和功能扩展两大类。
apps/三大平台原生体验
apps/macos/
apps/ios/
apps/android/
📦 apps/shared/OpenClawKit — iOS 与 macOS 共享的 Swift 库(118 文件)
从用户发送消息到收到回复的完整流程
通过 WhatsApp / Telegram / Slack 等任意渠道发送消息
对应渠道的 channel.ts 接收消息,标准化消息格式
WebSocket 传递到 Gateway,路由引擎匹配到正确的会话
Agent 引擎处理消息,决定是直接回复还是需要调用工具
可选:调用浏览器/Shell/Canvas/文件系统等工具
生成最终回复 → Gateway 路由回原渠道 → 用户看到回复
驱动 OpenClaw 的核心第三方库
@mariozechner/pi-agent-coreAgent 运行时核心@mariozechner/pi-aiAI 模型调用层@mariozechner/pi-coding-agent编码 Agent@whiskeysockets/baileysWhatsApp Web 协议grammyTelegram Bot API@slack/boltSlack App 框架discord.js (via @buape/carbon)DiscordexpressHTTP 服务器wsWebSocket 服务器playwright-core浏览器自动化commanderCLI 框架@sinclair/typebox运行时类型校验sharp图片处理zodSchema 校验vitest测试框架tsdownTypeScript 构建oxlint / oxfmtLint 与格式化强默认,不牺牲能力
Gateway 默认绑定 127.0.0.1(loopback),不对外暴露
未知发送者必须先通过配对码验证。openclaw pairing approve <channel> <code>
非 main 会话可在 Docker 容器中隔离运行。sandbox.mode: "non-main"
白名单:bash、process、read、write、edit、sessions_*
黑名单:browser、canvas、nodes、cron、discord、gateway
Serve(内网访问)或 Funnel(公网访问),密码认证保护
openclaw doctor 检测并标记风险配置(DM 策略等)
开发工作流和关键命令
pnpm install
pnpm build
TypeScript → dist/ (via tsdown)
pnpm test
Vitest · 70% 覆盖率阈值
pnpm check
格式 + TypeScript + Lint
pnpm gateway:watch
热重载开发模式
pnpm ui:dev
Web UI 开发服务器
一览 OpenClaw 的文件组织
openclaw-main/ ├── 📁 src/ ← 核心源代码 (4700+ 文件) │ ├── gateway/ ← Gateway 控制面 WebSocket 服务器 │ ├── agents/ ← Pi Agent AI 引擎 │ ├── telegram/ ← Telegram 渠道 (grammY) │ ├── discord/ ← Discord 渠道 │ ├── slack/ ← Slack 渠道 (Bolt) │ ├── signal/ ← Signal 渠道 │ ├── imessage/ ← iMessage 渠道 │ ├── web/ ← WhatsApp Web 渠道 │ ├── channels/ ← 渠道通用逻辑 │ ├── routing/ ← 消息路由引擎 │ ├── cli/ ← CLI 入口层 │ ├── commands/ ← CLI 子命令 │ ├── config/ ← 配置系统 (TypeBox) │ ├── browser/ ← 浏览器控制 (Playwright) │ ├── media/ ← 媒体管道 │ ├── memory/ ← 记忆系统 │ ├── security/ ← 安全模型 │ ├── plugins/ ← 插件管理 │ ├── plugin-sdk/ ← 插件开发 SDK │ ├── sessions/ ← 会话管理 │ ├── cron/ ← 定时任务 │ ├── hooks/ ← Webhook 处理 │ ├── tts/ ← 文本转语音 │ ├── canvas-host/ ← Canvas A2UI │ └── ... ← 更多模块 ├── 📁 extensions/ ← 40 个扩展插件 │ ├── bluebubbles/ ← iMessage (推荐) │ ├── msteams/ ← Microsoft Teams │ ├── matrix/ ← Matrix 协议 │ ├── feishu/ ← 飞书 │ ├── voice-call/ ← 语音通话 │ ├── memory-lancedb/ ← 向量记忆 │ └── ... ├── 📁 apps/ ← 原生客户端 │ ├── macos/ ← macOS Menu Bar (Swift) │ ├── ios/ ← iOS Node (Swift) │ ├── android/ ← Android Node (Kotlin) │ └── shared/ ← 共享 Swift 库 ├── 📁 ui/ ← Web UI (控制面) ├── 📁 docs/ ← 项目文档 (Mintlify) ├── 📁 scripts/ ← 构建/测试/发布脚本 ├── 📁 skills/ ← 内置 Skills 技能 ├── 📄 package.json ← 项目配置 (v2026.3.8) ├── 📄 openclaw.mjs ← CLI 入口 ├── 📄 Dockerfile ← Docker 构建 ├── 📄 docker-compose.yml ← Docker Compose └── 📄 tsconfig.json ← TypeScript 配置