OpenClaw 源码深度解析:这只龙虾到底是怎么造出来的?🦞
"代码是写给人看的,顺便给机器跑跑。" --- 某只龙虾的哲学
前言:GitHub 里的龙虾王国
如果你以为 OpenClaw 就是几行代码凑合的玩具项目,那你完全错了。这只龙虾的代码库规模大得让人怀疑人生------src/ 目录有 50+ 子目录,extensions/ 支持 20+ 个平台,连 CHANGELOG 都有 693KB(是的,你没看错,是 KB,不是 B)。
今天,我要带你潜入 GitHub 源码海洋,看看这只龙虾到底是怎么从一堆 TypeScript 文件变成统治 AI 世界的庞然大物的。
警告:本文包含大量技术细节和 ASCII 艺术,建议边看代码边吃龙虾。
第一章:根目录的战争 🌲
打开 OpenClaw 的 GitHub 仓库,你会看到一个...嗯,非常"丰富"的根目录:
bash
openclaw/
├── src/ # 核心代码(龙虾的身体)
├── extensions/ # 扩展插件(龙虾的触手)
├── packages/ # 子包(龙虾的蛋?)
├── skills/ # 技能插件(龙虾的超能力)
├── apps/ # 原生应用(龙虾的移动端)
├── docs/ # 文档(龙虾的日记)
├── assets/ # 静态资源(龙虾的化妆包)
├── test/ # 测试(龙虾的体检报告)
├── test-fixtures/ # 测试数据(龙虾的模拟题)
├── AGENTS.md # AI 配置指南(龙虾的用户手册)
├── VISION.md # 项目愿景(龙虾的梦想)
├── SECURITY.md # 安全指南(龙虾的护城河)
├── CHANGELOG.md # 更新日志(龙虾的回忆录,693KB!)
├── Dockerfile # Docker 配置(龙虾的潜水艇)
├── docker-compose.yml # Docker Compose(龙虾的航母编队)
├── package.json # npm 配置(龙虾的身份证)
├── pnpm-lock.yaml # 依赖锁定(龙虾的财产证明)
├── .github/ # GitHub Actions(龙虾的流水线)
├── .gitignore # Git 忽略文件(龙虾的隐私)
├── .pre-commit-config.yaml # 预提交钩子(龙虾的强迫症)
├── .swiftformat # Swift 格式化(龙虾的爱美之心)
├── ...还有一堆配置文件...
配图 1:根目录的混乱美学
bash
┌─────────────────────────────────────────────────────────────────┐
│ OpenClaw 根目录 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 📂 src/ 🦞 核心代码,50+ 子目录 │
│ │
│ 📂 extensions/ 🦞 20+ 平台扩展,触手伸向四面八方 │
│ │
│ 📂 packages/ 🦞 子包,独立的逻辑单元 │
│ │
│ 📂 skills/ 🦞 技能插件,可插拔的超能力 │
│ │
│ 📂 apps/ 🦞 macOS/iOS/Android 原生应用 │
│ │
│ 📄 CHANGELOG.md 🦞 693KB 的回忆录(写手:这写不完啊!) │
│ │
│ 🐳 Dockerfile 🦞 龙虾的潜水艇,一潜就是几天 │
│ │
│ ⚙️ package.json 🦞 22.8KB 的配置(dependencies = 999+) │
│ │
└─────────────────────────────────────────────────────────────────┘
"我只是一只简单的龙虾" --- 龙虾本人
根目录的哲学
为什么这么多东西?因为 OpenClaw 不是个玩具项目,它是:
- Gateway 控制平面:管理会话、消息、工具、事件
- 多平台接入:支持 20+ 个消息平台
- 原生应用生态:有 macOS 菜单栏、iOS、Android 应用
- 插件系统:可扩展的 Skills 和 Extensions
- 完整的工程化:测试、CI/CD、文档、多语言
这不是"周末练手项目",这是一支小型工程团队的工作成果。
第二章:src/ ------ 龙虾的身体构造 🦠
src/ 是 OpenClaw 的核心代码库,这里有 50+ 个子目录,每个都负责一块功能。让我解剖一下这只龙虾:
核心模块概览
r
src/
├── gateway/ # 🧠 Gateway 核心(大脑)
├── channels/ # 📱 所有渠道的通用接口(手臂)
├── agents/ # 🤖 Agent Runtime(灵魂)
├── sessions/ # 💬 会话管理(记忆)
├── context-engine/ # 🧠 上下文引擎(思维)
├── routing/ # 🛣️ 消息路由(神经)
├── cron/ # ⏰ 定时任务(生物钟)
├── plugins/ # 🔌 插件系统(超能力)
├── browser/ # 🌐 浏览器控制(眼睛)
├── canvas-host/ # 🎨 Canvas 宿主(画布)
├── discord/ # 💬 Discord 实现(手臂 A)
├── telegram/ # 💬 Telegram 实现(手臂 B)
├── slack/ # 💬 Slack 实现(手臂 C)
├── signal/ # 💬 Signal 实现(手臂 D)
├── line/ # 💬 LINE 实现(手臂 E)
├── iMessage/ # 💬 iMessage 实现(手臂 F)
├── ...20+ 更多渠道...
├── cli/ # 💻 命令行工具(嘴巴)
├── daemon/ # 🔄 后台守护进程(心脏)
├── pairing/ # 🔗 设备配对(握手)
├── node-host/ # 📱 节点宿主(爪子)
├── security/ # 🔒 安全模块(护甲)
├── providers/ # ☁️ LLM 提供商(大脑皮层)
├── memory/ # 🧠 记忆系统(海马体)
├── media/ # 🖼️ 媒体处理(视觉神经)
├── logging/ # 📝 日志系统(日记)
└── shared/ # 🤝 共享工具(器官库)
Gateway 核心架构
src/gateway/ 是整个项目的心脏,负责:
- WebSocket 服务器 :
ws://127.0.0.1:18789 - 会话管理:创建、查询、删除会话
- 消息路由:把消息分发给正确的 Agent
- 工具调用:执行 AI 请求的工具操作
- 事件分发:把事件推送给订阅者
配图 2:Gateway 的神经系统
markdown
┌─────────────────┐
│ Gateway WS │
│ :18789 │
└───────┬─────────┘
│
┌────────────────────┼────────────────────┐
│ │ │
┌─────▼─────┐ ┌─────▼─────┐ ┌─────▼─────┐
│ CLI │ │ WebChat │ │ Nodes │
│ 客户端 │ │ UI │ │ (iOS/ │
│ │ │ │ │ Android) │
└───────────┘ └───────────┘ └───────────┘
WebSocket 是 Gateway 的神经系统,连接所有器官。
断一根触手?没事,还有 20+ 根。
Channels:20+ 只手臂
src/channels/ 定义了所有渠道的通用接口,然后每个平台有独立实现:
| 渠道 | 目录 | 实现方式 |
|---|---|---|
| Discord | src/discord/ |
discord.js |
| Telegram | src/telegram/ |
grammY |
| Slack | src/slack/ |
Bolt |
| Signal | src/signal/ |
signal-cli |
| LINE | src/line/ |
LINE Bot API |
extensions/bluebubbles/ |
BlueBubbles | |
| iMessage | src/imessage/ |
imsg CLI |
| 飞书 | extensions/feishu/ |
飞书开放平台 |
| ... | ... | ... |
配图 3:Channel 实现的多样性
scss
┌──────────────────────────────────────────────────────────────┐
│ Channels 大全家福 │
├──────────────────────────────────────────────────────────────┤
│ │
│ 💬 Discord → discord.js → WebSocket + HTTP │
│ │
│ 💬 Telegram → grammY → Bot API + Long Poll │
│ │
│ 💬 Slack → Bolt → Socket Mode │
│ │
│ 📱 Signal → signal-cli → DBus IPC │
│ │
│ 📱 iMessage → imsg CLI → AppleScript (😓) │
│ │
│ 💬 WhatsApp → BlueBubbles → WebSocket Relay │
│ │
│ 🇨🇳 飞书 → Feishu API → Webhook + Stream │
│ │
│ 💬 LINE → LINE Bot → HTTP Webhook │
│ │
│ ... 还有 15+ 个平台... │
│ │
│ 每只手臂都长不一样,但都能干活。 │
│ 就像龙虾,触手多了就是麻烦------但也是资本。 │
└──────────────────────────────────────────────────────────────┘
Agent Runtime:大脑的思考方式
src/agents/ 是 AI 运行时,负责:
- LLM 调用:调用 OpenAI、Anthropic、或其他提供商
- 工具执行:执行 AI 要求的操作(读文件、执行命令等)
- 上下文管理:决定保留哪些历史消息,什么时候压缩
- 流式输出:支持流式响应和分块发送
关键文件:
src/agents/:Agent 核心逻辑src/context-engine/:上下文压缩引擎src/providers/:LLM 提供商适配器
配图 4:Agent 的思考流程
bash
用户消息进入
↓
┌─────────────────────────────────────────┐
│ Agent Runtime │
├─────────────────────────────────────────┤
│ │
│ 1. 收集上下文 │
│ ├── 从 Sessions 加载历史 │
│ ├── 注入 Workspace 文件 │
│ ├── 注入 Skills 工具定义 │
│ └── 应用 Context Engine 压缩 │
│ │
│ 2. 构建 Prompt │
│ ├── 系统提示词 │
│ ├── 用户历史 │
│ ├── 工具定义 │
│ └── 当前消息 │
│ │
│ 3. 调用 LLM │
│ ├── 选择提供商(OpenAI/Anthropic...) │
│ ├── 选择模型(GPT-4/Claude...) │
│ └── 流式响应 │
│ │
│ 4. 处理工具调用 │
│ ├── 解析工具请求 │
│ ├── 执行操作(read/exec/browser...) │
│ └── 返回结果给 LLM │
│ │
│ 5. 输出响应 │
│ ├── 流式推送到客户端 │
│ ├── 分块发送(如果启用 Block Streaming) │
│ └── 保存到 Sessions │
│ │
└─────────────────────────────────────────┘
这就是龙虾的"思考方式"。
第三章:extensions/ ------ 龙虾的触手延伸 🐙
extensions/ 是 OpenClaw 的扩展系统,支持 20+ 个平台。每个扩展都是一个独立的模块,包含:
- 平台适配:把消息转换成 OpenClaw 格式
- 认证逻辑:处理登录和授权
- 媒体处理:处理图片、音频、文件
- 平台特性:支持每个平台的特殊功能(如 Discord 的表情反应)
支持的平台(不完整列表)
bash
extensions/
├── acpx/ # ACP 编码代理(Claude Code 等)
├── bluebubbles/ # WhatsApp(通过 BlueBubbles 服务器)
├── discord/ # Discord
├── feishu/ # 飞书
├── googlechat/ # Google Chat
├── imessage/ # iMessage(BlueBubbles 模式)
├── irc/ # IRC
├── line/ # LINE
├── mattermost/ # Mattermost
├── matrix/ # Matrix
├── msteams/ # Microsoft Teams
├── nostr/ # Nostr
├── signal/ # Signal
├── slack/ # Slack
├── synology-chat/ # Synology Chat
├── telegram/ # Telegram
├── thread-ownership/ # Discord 线程所有权
├── tlon/ # Tlon
├── twitch/ # Twitch
├── ...更多...
配图 5:Extensions 的矩阵
scss
┌──────────────────────────────────────────────────────────────┐
│ Extensions 支持矩阵 │
├──────────────────────────────────────────────────────────────┤
│ │
│ 类型 数量 示例 │
│ ────────────────────────────────────────── │
│ 💬 聊天软件 12+ Discord, Telegram, Slack, │
│ Signal, LINE, 飞书... │
│ │
│ 📱 消息应用 3+ WhatsApp (BlueBubbles), │
│ iMessage, Signal │
│ │
│ 💼 企业协作 3+ Slack, Mattermost, │
│ Google Chat, Teams │
│ │
│ 🔗 去中心化 2+ Matrix, Nostr │
│ │
│ 🎮 直播平台 1+ Twitch │
│ │
│ 💻 开发者工具 1+ IRC │
│ │
│ 🦞 AI 编码 1+ ACP(Claude Code, Codex...) │
│ │
│ ────────────────────────────────────────── │
│ 总计: 20+ 个平台 │
│ │
│ 龙虾:触手不是越多越好,而是"哪里有消息哪里就有我"。 │
└──────────────────────────────────────────────────────────────┘
插件架构
每个扩展都实现一套标准接口:
typescript
interface ChannelExtension {
name: string; // 扩展名称
version: string; // 版本号
connect(): Promise<void>; // 连接
disconnect(): Promise<void>; // 断开
sendMessage(msg: Message): Promise<void>; // 发送消息
onMessage(callback: (msg: Message) => void): void; // 接收消息
// ... 更多方法
}
这样设计的好处:
- 模块化:每个平台独立开发,互不干扰
- 可插拔:不需要某个平台,就不安装那个扩展
- 易于维护:修复 WhatsApp 的 Bug 不影响 Discord
第四章:packages/ ------ 龙虾的孵化场 🥚
packages/ 包含独立的子包,每个子包都是一个 npm 包:
bash
packages/
├── clawdbot/ # 龙虾机器人(Discord Bot)
└── moltbot/ # 换壳机器人(版本迁移工具)
这些包可以独立发布和使用,虽然目前主要是内部工具。
配图 6:Packages 的孵化器
┌──────────────────────────────────────────────────────────────┐
│ Packages 孵化器 │
├──────────────────────────────────────────────────────────────┤
│ │
│ 🥚 clawdbot/ │
│ Discord 机器人,用于社区互动 │
│ 状态:孵化完成,发布中... │
│ │
│ 🥚 moltbot/ │
│ 版本迁移工具,帮你从旧版本升级 │
│ 状态:正在成长,别急... │
│ │
│ 🥚 未来可能还会有... │
│ • openclaw-web(Web 控制台独立包) │
│ • openclaw-cli(命令行工具独立包) │
│ • openclaw-sdk(SDK,让别人也能集成) │
│ │
│ 龙虾:先有个想法,再孵化。代码也一样。 │
└──────────────────────────────────────────────────────────────┘
第五章:skills/ ------ 龙虾的超能力库 ⚡
skills/ 存放技能插件,每个技能都是 AI 的一个"超能力":
php
skills/
├── weather/ # 查询天气
├── feishu-doc/ # 飞书文档读写
├── feishu-drive/ # 飞书云盘
├── feishu-wiki/ # 飞书知识库
├── healthcheck/ # 系统安全审计
├── coding-agent/ # 代码生成(调用 Codex/Claude Code)
├── skill-creator/ # 创建新技能
├── skill-vetter/ # 技能安全审核
├── self-improvement/ # 自我学习记录
├── tavily-search/ # 网络搜索(Tavily API)
├── ...更多...
技能的结构
每个技能都有标准的结构:
bash
skills/weather/
├── SKILL.md # 技能说明(AI 会读取这个)
├── scripts/ # 脚本文件
│ └── get-weather.sh
├── references/ # 参考文档
└── test/ # 测试文件
SKILL.md 是关键,AI 会读取它来了解技能的使用方法:
markdown
# Weather Skill
查询当前天气和预报。
## 使用时机
当用户询问天气、温度、预报时激活。
## API
使用 wttr.in 或 Open-Meteo API,无需 API Key。
配图 7:Skills 的超能力库
lua
┌──────────────────────────────────────────────────────────────┐
│ Skills 超能力图书馆 │
├──────────────────────────────────────────────────────────────┤
│ │
│ 🌤️ weather 查天气 │
│ "今天上海天气怎么样?" │
│ │
│ 📄 feishu-doc 读写飞书文档 │
│ "帮我把这个内容写到飞书文档里" │
│ │
│ 🔒 healthcheck 系统安全审计 │
│ "检查一下我的服务器安不安全" │
│ │
│ 💻 coding-agent 写代码(调用 Codex) │
│ "帮我写个爬虫脚本" │
│ │
│ 🔍 tavily-search 网络搜索 │
│ "搜索一下最新的 AI 新闻" │
│ │
│ 🦾 skill-vetter 技能安全审核 │
│ "这个技能安全吗?" │
│ │
│ 📈 self-improvement 自我学习 │
│ AI 记住每次的错误和改进 │
│ │
│ ────────────────────────────────────────── │
│ 加载顺序:Workspace > Managed > Bundled │
│ 你可以写自己的技能,覆盖默认的。 │
│ │
│ 龙虾:超能力不是天生的,是插件出来的。 │
└──────────────────────────────────────────────────────────────┘
第六章:apps/ ------ 龙虾的移动端 📱
apps/ 包含原生应用代码:
bash
apps/
├── mac/ # macOS 菜单栏应用(Swift)
├── ios/ # iOS 节点应用(Swift)
└── android/ # Android 节点应用(Kotlin)
macOS 应用
功能:
- 菜单栏控制面板
- Voice Wake(语音唤醒)
- Talk Mode(语音对话)
- WebChat 集成
- 远程 Gateway 控制
- 调试工具
技术栈:Swift + SwiftUI
iOS 节点
功能:
- Canvas 画布
- 相机拍照
- 屏幕录制
- 位置获取
- 语音交互
- 设备配对
技术栈:Swift + UIKit
Android 节点
功能:
- Connect 标签页(配对)
- Chat Sessions(聊天)
- Voice Tab(语音)
- Canvas/相机
- 设备控制(通知/联系人/日历/动作/照片/SMS)
- Motion 传感器
技术栈:Kotlin + Jetpack Compose
配图 8:Apps 生态
sql
┌──────────────────────────────────────────────────────────────┐
│ Apps 移动端生态 │
├──────────────────────────────────────────────────────────────┤
│ │
│ 🍎 macOS App │
│ ┌─────────────────┐ │
│ │ 🦞 菜单栏图标 │ │
│ │ ├─ 状态监控 │ │
│ │ ├─ 配置管理 │ │
│ │ ├─ Voice Wake │ │
│ │ ├─ Talk Mode │ │
│ │ └─ 调试工具 │ │
│ └─────────────────┘ │
│ "龙虾在 macOS 上,优雅地坐在菜单栏里" │
│ │
│ 📱 iOS Node │
│ ┌─────────────────┐ │
│ │ 🎨 Canvas │ │
│ │ 📷 相机 │ │
│ │ 🎬 屏幕录制 │ │
│ │ 📍 位置 │ │
│ │ 🎤 语音 │ │
│ └─────────────────┘ │
│ "iOS:龙虾的远程触手,随时待命" │
│ │
│ 🤖 Android Node │
│ ┌─────────────────┐ │
│ │ 🔗 Connect │ │
│ │ 💬 Chat │ │
│ │ 🎤 Voice │ │
│ │ 🎨 Canvas │ │
│ │ 📷 Camera │ │
│ │ 📱 Device Ctrl │ │
│ └─────────────────┘ │
│ "Android:龙虾的瑞士军刀,什么都会一点" │
│ │
│ 所有 App 都通过 WebSocket 连接到 Gateway │
│ 配对机制保证安全,远程访问通过 Tailscale 或 SSH │
└──────────────────────────────────────────────────────────────┘
第七章:关键设计模式 ------ 龙虾的哲学 🧠
1. 单一 Gateway,多触手
设计原则:每个主机只有一个 Gateway。
为什么?因为:
- WhatsApp 只能有一个会话
- 避免多进程冲突
- 简化状态管理
- 统一控制平面
2. WebSocket 控制平面
所有客户端都通过 WebSocket 连接到 Gateway:
markdown
Client (CLI/WebChat/App) ──WebSocket──> Gateway
│
├──> Agent Runtime
├──> Sessions
├──> Cron
├──> Channels
└──> Tools
优点:
- 实时双向通信
- 事件推送(AI 响应流式传输)
- 统一协议
- 易于扩展
3. Workspace 和 Session
- Workspace :
~/.openclaw/workspace,用户的工作空间 - Session :每个对话会话,存储在
~/.openclaw/agents/<agentId>/sessions/
设计意图:
- 用户有自己的"家"(Workspace)
- 每个对话是独立的房间(Session)
- 可选隔离:多人使用时,每个用户的 DM 完全独立
4. 插件和扩展系统
- Skills:功能插件,AI 自动选择何时使用
- Extensions:平台扩展,支持新的消息平台
设计哲学:
- "你不需要什么,就不安装什么"
- 社区可以贡献新的 Skills 和 Extensions
- 模块化,易于维护
5. 安全多层防护
scss
┌─────────────────────────────────────┐
│ 用户连接请求 │
└────────────┬────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 1. Gateway Token 认证 │
│ (防止未授权访问) │
└────────────┬────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 2. 设备配对 │
│ (防止陌生人连接) │
└────────────┬────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 3. 通道白名单 │
│ (限制谁能发消息) │
└────────────┬────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 4. 会话隔离 │
│ (防止信息泄露) │
└────────────┬────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 5. 工具策略 │
│ (限制哪些工具可用) │
└─────────────────────────────────────┘
第八章:工程化实践 ------ 龙虾的强迫症 🧹
CI/CD
.github/workflows/ 包含 GitHub Actions 配置:
- CI 测试:每次 PR 自动运行
- 自动发布:打 tag 自动发布 npm 包
- 多平台测试:macOS, Linux, Windows (WSL2)
代码质量
yaml
.pre-commit-config.yaml # 预提交钩子
.oxlintrc.json # Oxlint 代码检查
.oxfmtrc.jsonc # Oxfmt 代码格式化
.swiftformat # Swift 格式化
.swiftlint.yml # Swift Lint
OpenClaw 团队对代码质量的要求:
- Pre-commit:提交前自动检查
- 多语言 Lint:TypeScript, Swift, Kotlin
- 自动格式化:保持代码风格一致
- 测试覆盖:关键模块必须有测试
文档
bash
docs/
├── concepts/ # 概念文档
│ ├── architecture.md
│ ├── agent.md
│ ├── session.md
│ └── ...
├── gateway/ # Gateway 文档
├── channels/ # 渠道文档
├── platforms/ # 平台文档(macOS/iOS/Android)
├── tools/ # 工具文档
├── automation/ # 自动化文档(Cron/Webhook)
└── install/ # 安装文档
配图 9:工程化工具链
bash
┌──────────────────────────────────────────────────────────────┐
│ 工程化工具链(龙虾的强迫症) │
├──────────────────────────────────────────────────────────────┤
│ │
│ 📝 代码开发 │
│ ├── TypeScript(核心) │
│ ├── Swift(macOS/iOS) │
│ └── Kotlin(Android) │
│ │
│ ✅ 代码检查 │
│ ├── Oxlint(TS) │
│ ├── SwiftLint(Swift) │
│ └── ktlint(Kotlin) │
│ │
│ 🎨 代码格式化 │
│ ├── Oxfmt(TS) │
│ ├── SwiftFormat(Swift) │
│ └── ktfmt(Kotlin) │
│ │
│ 🧪 测试 │
│ ├── Vitest(TS) │
│ ├── XCTest(Swift) │
│ └── JUnit(Kotlin) │
│ │
│ 🚀 CI/CD │
│ ├── GitHub Actions │
│ ├── 自动测试 │
│ └── 自动发布 │
│ │
│ 📚 文档 │
│ ├── Markdown 文档 │
│ ├── 注释驱动的文档 │
│ └── README 优先 │
│ │
│ 龙虾:代码不是写完就行的,是要有仪式感的。 │
└──────────────────────────────────────────────────────────────┘
第九章:代码统计 ------ 龙虾的规模 📊
粗略统计(不包含 node_modules 和构建产物):
| 指标 | 数值 |
|---|---|
| 源码文件数(src/) | 500+ |
| TypeScript 代码行数 | 50,000+ |
| 扩展数量 | 20+ |
| 支持的平台 | 20+ |
| CHANGELOG 大小 | 693 KB |
| README 大小 | 123 KB |
| 配置文件数 | 50+ |
| 技能数量 | 15+ |
配图 10:代码统计可视化
css
┌──────────────────────────────────────────────────────────────┐
│ 代码统计(粗略估算) │
├──────────────────────────────────────────────────────────────┤
│ │
│ 📂 源码文件数 [███████████████████] 500+ │
│ │
│ 📝 TypeScript 代码 [███████████████████████████] 50,000+ │
│ │
│ 🦞 扩展数量 [██████████████] 20+ │
│ │
│ 💬 支持的平台 [██████████████] 20+ │
│ │
│ 📄 CHANGELOG 大小 [███████████████████████████] 693 KB │
│ │
│ 📄 README 大小 [████████████████] 123 KB │
│ │
│ ⚙️ 配置文件数 [██████████] 50+ │
│ │
│ ⚡ 技能数量 [██████████] 15+ │
│ │
│ 这不是个周末项目,这是支小型的工程团队。 │
└──────────────────────────────────────────────────────────────┘
第十章:为什么 OpenClaw 很牛?🤔
1. 真正的去中心化
不是 SaaS,不是云服务,是你自己的。
数据在你硬盘上,运行在你机器上。没人能偷走你的聊天记录,没人能监控你跟 AI 说什么。
2. 多平台统一支持
20+ 个平台,一个 Gateway 统一管理。你不需要切换应用,也不需要复制粘贴。
3. 开源且 MIT 许可
你可以修改、分发、商用。没人逼你付费。
4. 完整的工程化
这不是玩具项目,这是:
- 完整的 CI/CD
- 严格的代码检查
- 详细的文档
- 多平台支持
- 持续的维护
5. 可扩展架构
- 写个 Skill,就能加新功能
- 写个 Extension,就能支持新平台
- 写个 App,就能做原生客户端
配图 11:OpenClaw 的生态系统
┌──────────────────────────────────────────────────────────────┐
│ OpenClaw 生态系统 │
├──────────────────────────────────────────────────────────────┤
│ │
│ 🏛️ 核心代码库 │
│ ├── Gateway(控制平面) │
│ ├── Agent Runtime(AI 运行时) │
│ ├── Channels(20+ 平台) │
│ └── Plugins(插件系统) │
│ │
│ 🦵 扩展生态 │
│ ├── 社区贡献的 Extensions │
│ ├── ClawHub(技能注册表) │
│ └── 用户自定义 Skills │
│ │
│ 📱 原生应用 │
│ ├── macOS 菜单栏 │
│ ├── iOS 节点 │
│ └── Android 节点 │
│ │
│ 📚 文档和教程 │
│ ├── docs.openclaw.ai │
│ ├── GitHub Wiki │
│ └── 社区教程 │
│ │
│ 🏢 企业支持 │
│ ├── Tailscale 集成 │
│ ├── Docker 部署 │
│ └── 远程 Gateway 管理 │
│ │
│ 这不是单个项目,这是一个小型的生态系统。 │
└──────────────────────────────────────────────────────────────┘
结语:代码背后的人 🦞
OpenClaw 不是凭空出现的,它是:
- Peter Steinberger (@steipete):创始人,核心开发
- 数百位贡献者:来自社区的各种贡献
- 持续的迭代:CHANGELOG 有 693 KB 说明了一切
配图 12:代码背后的人
less
┌──────────────────────────────────────────────────────────────┐
│ 代码背后的人 │
├──────────────────────────────────────────────────────────────┤
│ │
│ 👨💻 核心开发者 │
│ Peter Steinberger (@steipete) │
│ "一只龙虾,一个梦想,一行代码" │
│ │
│ 🤝 社区贡献者 │
│ 数百位来自世界各地 │
│ "每个人都能让龙虾更强大" │
│ │
│ 🎯 设计哲学 │
│ • 本地优先(Local First) │
│ • 隐私保护(Privacy by Design) │
│ • 可扩展(Extensible) │
│ • 开源(Open Source) │
│ │
│ 🚀 未来方向 │
│ • 更多平台支持 │
│ • 更好的用户体验 │
│ • 更强的 AI 能力 │
│ • 更完善的文档 │
│ │
│ "代码是写给人看的,顺便给机器跑跑。" │
│ ------ 某只龙虾的哲学 │
└──────────────────────────────────────────────────────────────┘
"EXFOLIATE! EXFOLIATE!" --- 龙虾的最后一声呐喊
附录:资源链接
- GitHub :github.com/openclaw/op...
- 官网 :openclaw.ai
- 文档 :docs.openclaw.ai
- 社区 :discord.gg/clawd
- ClawHub :clawhub.com