项目结构
OpenClaw 是一个 pnpm monorepo 项目,包含 71 个 src 子目录、34 个 extension、52 个 skill 和 3 个原生应用。
顶层目录
openclaw/
├── src/ # 核心源码 (71 个子目录)
├── apps/ # 原生应用
│ ├── android/ # Android (Kotlin/Gradle)
│ ├── ios/ # iOS (Swift)
│ ├── macos/ # macOS 菜单栏 (SwiftUI)
│ └── shared/ # iOS/macOS 共享代码 (OpenClawKit)
├── ui/ # Web UI (Vite + Lit)
├── packages/ # Workspace 子包
│ ├── clawdbot/ # Clawdbot 实例
│ └── moltbot/ # Moltbot 实例
├── extensions/ # 34 个通道/功能扩展
├── skills/ # 52 个内置技能
├── docs/ # Mintlify 文档 (多语言)
├── test/ # 测试工具和 fixtures
├── scripts/ # 构建和部署脚本
├── vendor/ # 第三方依赖
├── vitest.config.ts # 测试配置
├── pnpm-workspace.yaml # Monorepo 配置
└── package.json # 根包 (CLI 入口)Workspace 配置
Source: pnpm-workspace.yaml
yaml
packages:
- . # Root package (CLI)
- ui # Web UI
- packages/* # Workspace packages (clawdbot, moltbot)
- extensions/* # 34 channel plugins根包的 package.json 导出配置:
json
{
"main": "dist/index.js",
"exports": {
".": "./dist/index.js",
"./plugin-sdk": "./dist/plugin-sdk/index.js",
"./cli-entry": "./openclaw.mjs"
}
}三个导出分别对应:主程序入口、插件 SDK、CLI 入口(respawner)。
src/ 核心模块一览
控制平面
| 目录 | 文件数 | 说明 |
|---|---|---|
gateway/ | ~131 | WebSocket 服务、会话、认证、Hooks、配置热加载 |
config/ | ~127 | 配置加载、session 存储、profile 管理、校验 |
sessions/ | — | 会话管理与隔离 |
routing/ | — | 消息路由逻辑 |
通道实现
| 目录 | 文件数 | 说明 |
|---|---|---|
channels/ | ~33 | 通道抽象层:registry、dock、mention-gating |
telegram/ | ~87 | grammy SDK 集成 |
discord/ | ~44 | discord.js 集成 |
slack/ | ~36 | @slack/bolt 集成 |
signal/ | ~24 | signal-cli 集成 |
imessage/ | ~16 | macOS iMessage 集成 |
line/ | ~36 | LINE SDK 集成 |
whatsapp/ | — | Baileys (WhatsApp Web) |
web/ | ~48 | WebChat 浏览器接口 |
Agent 与工具
| 目录 | 文件数 | 说明 |
|---|---|---|
agents/ | ~312 | Agent 运行时、Pi agent RPC、工具调用、流式处理 |
plugins/ | ~37 | 插件注册、加载、生命周期 |
hooks/ | ~30 | Hook 系统扩展 |
browser/ | ~70 | Playwright 浏览器自动化 |
memory/ | ~45 | 会话记忆、向量数据库 |
CLI 与命令
| 目录 | 文件数 | 说明 |
|---|---|---|
cli/ | ~107 | CLI 核心:deps 注入、program 构建、onboarding |
commands/ | ~183 | 所有 CLI 子命令实现 |
tui/ | ~30 | Terminal UI 模式 |
wizard/ | — | 新手引导向导 |
terminal/ | — | 终端工具函数 |
基础设施
| 目录 | 文件数 | 说明 |
|---|---|---|
infra/ | ~157 | 端口管理、二进制文件、环境变量、运行时守卫 |
media/ | ~22 | 图片/音频/视频处理 |
media-understanding/ | ~23 | 图片/视频 AI 理解 |
security/ | ~15 | 安全策略、访问控制、沙箱 |
logging/ | ~17 | 结构化日志框架 |
auto-reply/ | ~73 | 自动回复配置与模板 |
cron/ | ~35 | 定时任务调度 |
daemon/ | ~32 | 系统守护进程管理 |
extensions/ 扩展目录
扩展分为两类:通道扩展和功能扩展。
通道扩展:
msteams/— Microsoft Teamsmatrix/— Matrix 协议zalo//zalouser/— Zalo 消息voice-call/— 语音通话googlechat/— Google Chatmattermost/— Mattermost
功能扩展:
memory-lancedb/— LanceDB 向量数据库memory-core/— 记忆系统核心device-pair/— 设备配对diagnostics-otel/— OpenTelemetry 诊断llm-task/— LLM 任务执行copilot-proxy/— GitHub Copilot 代理
skills/ 技能目录
52 个内置技能,通过 ClawHub registry 管理。示例:
1password/— 密码管理器github/— GitHub 集成gmail/— 邮件google-calendar/— 日历apple-notes//bear-notes/— 笔记应用apple-reminders/— 提醒事项slack//discord/— 平台控制技能blogwatcher//news/— 内容监控
原生应用 (apps/)
构建与测试
bash
pnpm build # 全量构建 (canvas, bundle, protocols)
pnpm check # 类型检查 + lint + 格式化
pnpm test # Vitest 单元测试
pnpm test:e2e # 端到端测试
pnpm test:live # 实时 API 测试 (需要真实凭据)
pnpm test:coverage # 覆盖率报告 (70% 阈值)测试配置文件:
| 配置 | 用途 |
|---|---|
vitest.config.ts | 主配置 |
vitest.e2e.config.ts | 端到端测试 |
vitest.live.config.ts | 实时 API 测试 |
vitest.unit.config.ts | 纯单元测试 |
vitest.extensions.config.ts | 扩展测试 |
vitest.gateway.config.ts | Gateway 测试 |
测试文件与源文件共置(*.test.ts),遵循 Vitest 约定。
小结
- pnpm monorepo 架构,4 个 workspace 区域(root、ui、packages、extensions)
- src/ 包含 71 个功能模块,覆盖从底层基础设施到上层 CLI 的完整栈
- extensions/ 和 skills/ 提供可插拔的通道和功能扩展
- apps/ 包含 macOS、iOS、Android 三个原生应用
- 构建系统基于 tsdown/Rolldown,测试基于 Vitest
下一章:Gateway 概述