OpenClaw 技术栈分析报告
分析时间: 2026-03-02 仓库地址: https://github.com/openclaw/openclaw版本: 2026.3.1 分析来源: 源代码分析
📊 项目概览
OpenClaw 是一个多通道 AI 网关和智能体编排框架,设计理念是"极简核心、弹性扩展"。它不是一个单一的软件,而是一套完整的基础设施系统。
核心定位
- 个人 AI 助手:本地运行,多平台接入
- 控制平面:Gateway 是单一事实源
- 执行引擎:Pi 智能体通过 RPC 通信
🏗️ 技术架构
1. 核心运行时
| 组件 | 技术选型 | 版本要求 | 分析 |
|---|---|---|---|
| 运行时 | Node.js | ≥22.12.0 | I/O 密集型任务的优势,庞大生态系统 |
| 语言 | TypeScript | 5.9.3 | 严格类型检查,避免 any |
| 构建工具 | tsdown | - | 高效的 TypeScript 构建工具 |
| 包管理 | pnpm | 10.23.0 | monorepo 支持,高效的依赖管理 |
| 替代运行时 | Bun | 可选 | 支持 Bun 直接运行 TypeScript |
2. 核心架构组件
Gateway(网关)
- 位置:
src/gateway/ - 职责:
- 单进程服务,作为系统的"大脑"
- 消息路由、会话管理、状态维护
- 单一事实源(Single Source of Truth)
- 技术特点:
- WebSocket 控制平面(默认端口 18789)
- 支持 loopback/lan 绑定
- Express HTTP 服务(5.2.1)
Pi 智能体
- 位置:
src/agents/ - 职责:
- 执行核心逻辑的引擎
- 通过 RPC 与 Gateway 通信
- 控制与执行分离
- 依赖:
@mariozechner/pi-agent-core(0.55.1)@mariozechner/pi-ai(0.55.1)@mariozechner/pi-coding-agent(0.55.1)@mariozechner/pi-tui(0.55.1)
3. 通信与集成
内部通信
| 协议 | 用途 | 库 |
|---|---|---|
| WebSocket | 控制平面、流式传输 | ws (8.19.0) |
| RPC | 智能体与 Gateway 通信 | @agentclientprotocol/sdk (0.14.1) |
消息通道适配
核心通道(src/channels/):
src/telegram- Telegram(grammy 1.40.1)src/discord- Discord(@discordjs/voice 0.19.0)src/slack- Slack(@slack/bolt 4.6.0)src/signal- Signalsrc/imessage- iMessagesrc/web- WhatsApp Web
扩展通道(extensions/):
extensions/bluebubbles- BlueBubblesextensions/feishu- 飞书(@larksuiteoapi/node-sdk 1.59.0)extensions/matrix- Matrixextensions/googlechat- Google Chatextensions/line- LINE(@line/bot-sdk 10.6.0)extensions/msteams- Microsoft Teamsextensions/zalo- Zaloextensions/zalouser- Zalo Personalextensions/voice-call- 语音通话
协议适配器模式
- WhatsApp:
@whiskeysockets/baileys(7.0.0-rc.9) - Telegram:
grammy+@grammyjs/runner+@grammyjs/transformer-throttler - Discord:
@discordjs/voice+discord-api-types
4. 数据与记忆系统
持久化内存
| 技术 | 版本 | 用途 |
|---|---|---|
| SQLite | - | 本地优先的记忆数据库 |
| sqlite-vec | 0.1.7-alpha.2 | 向量相似度搜索(快速路径) |
| FTS5 | - | 全文搜索 + BM25 算法 |
混合检索
- 快速路径:
sqlite-vec扩展进行向量搜索 - 安全路径: JavaScript 暴力计算余弦相似度
- 关键词搜索: FTS5 BM25 算法
- 混合排序: 关键词 + 语义组合
亮点: 摒弃复杂的专用向量数据库,实现"零运维" RAG 系统
5. 工具执行与扩展
安全沙箱
| 技术 | 用途 |
|---|---|
| Docker | 容器化隔离 |
| Linux Namespace | 命名空间隔离 |
| Capabilities | 细粒度权限控制 |
扩展机制
- SPI 模式: 服务提供者接口
- 配置方式: YAML 配置文件
- Plugin SDK: 动态注入、清除、热加载
- 脚本热重载:
chokidar(5.0.0)
浏览器自动化
- Playwright Core: 1.58.2
- 可选 Chromium: Docker 层可选安装(节省启动时间)
6. 部署与安全
容器化
- 基础镜像:
node:22-bookworm - 包管理器:
corepack enable+ pnpm - 安全强化:
- 非 root 用户运行(uid 1000)
cap_drop: [NET_RAW, NET_ADMIN]security_opt: [no-new-privileges:true]
服务编排
- Docker Compose: Gateway + CLI 双服务
- 网络模式:
- Gateway:标准桥接(需 --bind lan)或 host 网络
- CLI:service:openclaw-gateway 网络模式
可观测性
- 日志:
tslog(4.10.2) - 追踪:
extensions/diagnostics-otel - 审计:
@buape/carbon(防篡改哈希链)
安全强化
- 外部密钥: 支持对接 AWS Secrets Manager、HashiCorp Vault
- 环境隔离: Docker 沙箱执行
- 凭证轮换: 最小权限访问原则
🔧 开发工具链
构建与测试
| 工具 | 用途 |
|---|---|
| TypeScript | 5.9.3 + @typescript/native-preview |
| Vitest | 4.0.18(单元测试、E2E 测试、覆盖率) |
| Oxlint | 1.50.0(代码检查) |
| Oxfmt | 0.35.0(代码格式化) |
| Pre-commit Hooks | Git hooks 自动化 |
质量保证
bash
# 完整检查
pnpm check # format + tsgo + lint + 专项 lint + Swift 检查
# 测试套件
pnpm test:all # lint + build + test + e2e + live + docker
pnpm test:coverage # 覆盖率报告死代码检测
knip- 检测未使用的导出ts-prune- TypeScript 死代码ts-unused-exports- 未使用导出
📁 项目结构
openclaw/
├── src/ # 核心源码
│ ├── agents/ # Pi 智能体
│ ├── channels/ # 通道适配器
│ ├── cli/ # CLI 命令
│ ├── commands/ # 交互命令
│ ├── gateway/ # Gateway 服务
│ ├── infra/ # 基础设施
│ ├── media/ # 媒体处理
│ └── browser/ # 浏览器自动化
├── extensions/ # 扩展(通道、技能)
│ ├── feishu/ # 飞书
│ ├── matrix/ # Matrix
│ └── ... # 40+ 扩展
├── apps/ # 移动应用
│ ├── android/ # Android(Kotlin)
│ ├── ios/ # iOS(Swift)
│ └── macos/ # macOS
├── docs/ # 文档
├── skills/ # 技能
└── ui/ # Web UI(Lit)🚀 核心设计哲学
1. "心跳"优先的降级逻辑
- 先执行低成本检查(规则判断、本地缓存)
- 仅在必要时调用昂贵的 LLM
- 极大优化性能和成本
2. 本地优先与渐进式扩展
- 从本地 SQLite 文件存储
- 可演进到分布式 TiDB
- 避免过度设计
3. 安全内建于设计
- 容器隔离工具执行
- 外部密钥管理敏感信息
- ACIP(高级认知免疫提示)防御注入
4. 严格类型安全
- 禁用
@ts-nocheck - 禁用
no-explicit-any - 避免原型突变(prototype mutation)
- 显式继承/组合
📊 性能优化
延迟优化
- SDK 深度嵌入: 1000QPS 下从 15ms 降至 2ms
- WebSocket 优先: 降低传输开销,支持流式传输
缓存策略
- 会话状态:Gateway 单一事实源
- 本地缓存:内存检索优先级
- CDN 静态资源:docs.openclaw.ai
🔐 安全架构
多层防护
- 网络层: loopback 绑定默认
- 进程层: 非 root 用户 + Namespace 隔离
- 容器层: Docker 沙箱 + Capabilities
- 应用层: 提示注入防御(ACIP)
- 数据层: 外部密钥管理 + 凭据轮换
权限最小化
cap_drop: [NET_RAW, NET_ADMIN]no-new-privileges:true- 细粒度文件权限(插件目录)
🎯 技术亮点
1. 零运维 RAG 系统
- SQLite + sqlite-vec 混合检索
- 无需专用向量数据库
- 本地优先,开箱即用
2. 跨平台能力
- Web(Node.js)、Mobile(iOS/Android)、Desktop(macOS)
- 统一 Gateway 控制平面
- 通道扩展机制
3. 开发体验
- TypeScript 严格类型
- 自动化代码质量检查
- Monorepo 扩展管理
4. 生产就绪
- Docker/Kubernetes 支持
- 可观测性(日志、追踪、审计)
- 安全加固(沙箱、密钥、权限)
📈 版本管理
发布通道
- stable:标签发布(
vYYYY.M.D) - beta:预发布(
vYYYY.M.D-beta.N) - dev:main 分支头部
升级策略
openclaw update --channel stable|beta|dev- 自动检查 GitHub releases
- 支持从源构建
🔗 外部依赖生态
AI 模型集成
- OpenAI: ChatGPT/Codex
- Anthropic: Claude(推荐 100/200 + Opus 4.6)
- 本地模型:
node-llama-cpp(peer dependency)
云服务
- AWS Bedrock:
@aws-sdk/client-bedrock - Google Auth:
google-auth-library - OpenTelemetry: 分布式追踪
💡 技术栈总结
| 层级 | 核心技术 | 设计理念 |
|---|---|---|
| 运行时 | Node.js 22 + TypeScript | 严格类型 + I/O 优势 |
| 架构 | Gateway + Pi RPC | 控制与执行分离 |
| 通信 | WebSocket + 适配器模式 | 多平台统一接入 |
| 内存 | SQLite + sqlite-vec + FTS5 | 零运维 RAG 系统 |
| 安全 | Docker + Namespace + 外部密钥 | 多层防护 |
| 部署 | Docker Compose + Kubernetes | 云原生 + 容器化 |
分析结论: OpenClaw 展示了如何通过务实的技术选择(SQLite、WebSocket)和清晰的架构分层(Gateway/Pi/工具层),构建一个既强大又相对易于个人开发者掌控的 AI 代理系统。