← 返回首页

🎓 OpenClaw 源码学习计划

30天深入理解 OpenClaw 架构与源码

✅ 执行情况说明

已完成:Day 1-11 + Day 15-21 + Day 24(Browser 工具 CDP 集成 2026-04-20 完成)

下一步:Day 12 - 飞书通道(Feishu API 集成)

📋 学习目标

学完这30天,你将获得:

  • 深度理解 OpenClaw 架构 - 能独立阅读和修改源码
  • 掌握多 Agent 系统设计 - 能配置复杂的路由规则
  • 能开发 Skills 和 Plugins - 实战开发能力
  • 掌握最佳实践 - 避免社区常见的踩坑
  • 具备企业级部署能力 - 安全、合规、稳定

📚 学习周安排

周次主题内容状态
第1周架构概览 + Gateway源码结构、启动流程、认证安全✅ Day 1-7 完成
第2周Channels 通道系统Extensions 结构、通道选择策略✅ Day 8 进行中
第2周Channels 通道WhatsApp/Telegram/Discord/飞书集成✅ Day 8-11 完成
第3周Agents + Sessions多Agent协作、Session管理、Compaction✅ Day 15-21 完成
第4周Tools + Skills + Memory工具系统、技能开发、记忆增强✅ Day 24 进行中
第5周高级主题Subagents、总结⏳ 待更新

📖 已完成的课程

✅ Day 1:项目结构总览

2026-03-28

核心主题:理解 OpenClaw 的三层架构

  • 三层架构:Channels → Gateway → Agent
  • Gateway 四职责:监听/路由/会话/认证
  • Agent 结构:workspace + sessions + auth
  • 源码入口链:openclaw.mjs → entry.js → subsystem.js
查看日记 →

✅ Day 2:文档体系 + Skills 规范

2026-03-29

核心主题:文档架构、Skills 加载机制、Gating 机制

Skills 加载优先级

workspace/skills (最高) → ~/.openclaw/skills → bundled skills (最低)

与 Agent Skills 的联系:Skills 可以是 Library、Framework、Generator、Wrapper

查看日记 →

✅ Day 3:Gateway 架构

2026-03-30

核心主题:API Gateway、MCP Gateway、A2A Agent Gateway

Gateway 类型

  • Proxy Server (AI Gateway) - 统一 API 端点 + 虚拟密钥管理
  • A2A Agent Gateway - 支持 LangGraph, Vertex AI, Azure AI Foundry
  • MCP Gateway - 连接 MCP servers 到任何 LLM
查看日记 →

✅ Day 4:Gateway 协议

2026-03-31

核心主题:WebSocket Wire Protocol、调试技巧

核心概念

  • 协议设计:WebSocket 文本帧 + JSON payload
  • 三种帧类型:req(请求)、res(响应)、event(事件)
  • 角色分离:operator(控制端)vs node(能力端)

握手流程

Gateway → Client: connect.challenge {nonce, ts}
Client → Gateway: connect {签名nonce, 角色, 权限}
Gateway → Client: hello-ok {快照, policy}

调试命令

openclaw gateway status
openclaw status
openclaw logs --follow

笔记位置memory/openclaw-learning/day4-gateway-protocol.md

✅ Day 5:服务环境 + 多 Agent 架构

2026-04-01

核心主题:Multi-Agent 四种模式、Skills vs Subagents

LangChain 四种 Multi-Agent 架构

模式特点
Subagents主 Agent 调用子 Agent
Skills共享技能,单 Agent
HandoffsAgent 之间移交
Router路由器分派

支持平台:Claude Code、Cursor、Aider、Windsurf、OpenClaw

查看日记 →

✅ Day 6:认证与安全(深度版)

2026-04-14

核心主题:信任模型、Token机制、Pairing流程、Allowlist、安全审计、Prompt Injection

十大核心知识点

  • 信任模型:个人助手模型,不是多租户边界
  • Gateway 认证:四种模式 + timingSafeEqual 防时间攻击
  • Device Pairing:源码流程 + TTL(300秒)+ 签名机制(v3)
  • DM Pairing:8字符配对码 + 1小时过期
  • Scope 权限:operator 层级(admin > write > read)
  • Allowlist:两层(DM + Group)+ 大小写不敏感
  • 安全审计openclaw security audit + 20+ checkId
  • Prompt Injection:三层防护 + content 也是威胁面
  • 凭证存储:8种凭证位置 + Auth Credential Semantics
  • 事件响应:Contain → Rotate → Audit

关键发现

  • SHA256 + timingSafeEqual + base64url 防时间攻击
  • Loopback 和 Gateway host tailnet 自动批准
  • sessionKey 是路由选择器,不是授权 token

笔记位置

  • memory/openclaw-learning/day6-auth-security-deep.md(深度版 14.9KB)
  • memory/openclaw-learning/day6-auth-security.md(基础版 9.9KB)
查看日记 →

✅ Day 7:Gateway 调试实践

2026-04-15 & 2026-04-16

核心主题:Gateway 周总结 + 启动调试 + 日志分析 + 常见踩坑

Gateway 核心定位

  • AI 与世界的连接中心
  • 所有消息的收发枢纽
  • 安全认证与权限控制
  • 定时任务与 cron 调度

启动流程(5步)

  • 解析环境变量 → 构建 PATH → 创建 systemd 服务 → 启动进程 → 监听端口

常见踩坑汇总

  • 端口冲突:配置自定义端口 `--port 18789`
  • 多进程问题:用 `systemctl --user` 管理,不用 `openclaw gateway start`
  • PATH 缺失:确保 PATH 包含版本管理器路径
  • Token 认证失败:检查 `~/.openclaw/config.json` 的 gateway.token

调试命令

openclaw gateway status
systemctl --user status openclaw-gateway
tail -f /tmp/openclaw/openclaw-*.log

笔记位置memory/openclaw-learning-plan.md(Day 7 学习笔记 158 行)

查看日记(Day 7 教学)→ 查看日记(Gateway 调试)→

✅ Day 8:Channels 通道系统概述

2026-04-16 21:30

核心主题:Extensions 目录结构 + Plugin Registry + 通道选择策略

Extensions 分类(82 个)

  • CHANNEL:21 个消息通道(telegram, whatsapp, discord, feishu, slack...)
  • LLM:37 个语言模型提供商(anthropic, openai, google, mistral, groq...)
  • OTHER:24 个其他工具(browser, elevenlabs, memory-core...)

通道选择策略

  • CHAT_CHANNEL_ORDER:telegram → whatsapp → discord → irc → googlechat → slack → signal → imessage → line
  • direct → normalized → parent → wildcard:多级匹配流程

核心洞察

  • 所有通道都是插件,统一管理(Plugin Registry 模式)
  • 缓存机制:registryVersion 检测变化
  • 去重机制:防止重复插件注册
查看日记(Day 7 + Day 8)→

✅ Day 9:WhatsApp 通道

2026-04-17 21:02

核心主题:Baileys 集成 + QR Login + 访问控制 + Session Key

核心依赖

  • Baileys:@whiskeysockets/baileys 7.0.0-rc.9(WhatsApp Web 协议实现)
  • Extension 结构:index/api/runtime-api/login-qr/action-runtime

访问控制层级

  • DM Policy:pairing/allowlist/open/disabled
  • Group Policy:groups + groupPolicy + groupAllowFrom
  • Mention Activation:explicit/pattern/reply-to-bot

Session Key 映射

  • Direct:agent::
  • Group:agent::whatsapp:group:
查看日记 →

✅ Day 10:Telegram 通道

2026-04-18 18:50

核心主题:grammY 框架集成 + Bot Token + 访问控制 + 特色功能

核心依赖

  • grammY:grammy@1.41.1(TypeScript Bot API 框架)
  • Runner:@grammyjs/runner@2.0.3(自动运行 bot)
  • Throttler:@grammyjs/transformer-throttler@1.2.1(速率限制)

设置流程

  • Step 1:@BotFather → /newbot → 保存 token
  • Step 2:配置 token + dmPolicy(不用 channels login!)
  • Step 3:Gateway + pairing approve
  • Step 4:添加群组 + 配置 groups

访问控制

  • DM Policy:pairing/allowlist/open/disabled
  • Group Policy:groups(negative ID)+ groupAllowFrom(user ID)
  • Privacy Mode:关闭后需 remove + re-add bot

特色功能

  • Forum Topics:Session Key 隔离 + Per-Topic Agent Routing
  • Polls:完整投票功能支持
  • Stickers:Cache + Search(Static WEBP)
  • Reactions:ackReaction + reactionNotifications
  • Inline Buttons:完整 keyboard 支持
  • Exec Approvals:企业级审批流程
  • Live Streaming:preview + editMessageText

与 WhatsApp 对比

维度WhatsAppTelegram
设置难度QR Code(复杂)Bot Token(简单)
功能丰富度基础Polls/Stickers/Forum
群组支持JIDChat ID(negative)
企业级✅ Exec Approvals
查看日记 →

✅ Day 11:Discord 通道

2026-04-19 21:55

核心主题:@buape/carbon 框架集成 + Thread Bindings + 权限系统

核心依赖

  • @buape/carbon:Discord.js 封装(Gateway + Components)
  • Gateway:WebSocket 连接 + Intents
  • Components:Button/Modal/Select Menu/Container

入口文件结构

  • defineBundledChannelEntry:id/name/plugin/runtime/registerFull
  • registerFull 钩子:subagent_spawning/ended/delivery_target

Thread Bindings(独特特性)

  • 自动绑定:Subagent spawning → 自动创建 Thread
  • 持久化:threadBindings.idleHours/maxAgeHours 配置
  • 解绑通知:Thread archived → Session reset

权限系统

  • Guild/Channel Allowlist:users/roles/toolsBySender
  • requireMention:channel > guild > true(默认)
  • Prefix 格式:discord:/user:/pk: + @username

事件监听器

  • MessageCreateListener:消息入站
  • ReactionAdd/RemoveListener:表情反应
  • PresenceUpdateListener:在线状态
  • ThreadUpdateListener:Thread 状态变更

与 Telegram 对比

维度DiscordTelegram
框架@buape/carbongrammY
ThreadThread Bindings(独特)无原生绑定
权限Guild/Channel/RolesChat Allowlist
组件Button/Modal/ContainerInline Keyboard
状态Presence Update
查看日记 →

✅ Day 21:多 Agent 实战(第三周总结)

2026-04-17 20:55

核心主题:验证多 Agent 配置 + Jason Zhu 12 核心技巧验证

验证结果

  • 7 个 Agent:main/tech/writer/scout/duty/worknote/news
  • 32 个活跃 Sessions
  • Jason Zhu 12/12:完美通过!

Jason Zhu 12 核心技巧

技巧验证
1. Soul 文件✅ 每个 Agent 有完整 SOUL.md
2. Identity✅ 名字 + emoji + 身份定义
3. Users✅ 汇报对象 + 团队关系
4. Agents✅ 7 个隔离 Agent + subagents
5. Tools✅ 工作职责对应工具需求
6. 记忆增强✅ HEARTBEAT.md + memory/
7. Errors 文档✅ AGENTS.md 中的铁律
8. 自主权限✅ bindings 路由 + cron
9. 技能加载✅ skills 目录 + cron jobs
10. 多实例运行✅ 7 个隔离 workspace
11. Session 管理✅ JSONL 转录 + dmScope
12. Compaction✅ compaction.mode: "safeguard"

笔记位置memory/openclaw-learning-plan.md(Day 21 学习笔记)

查看日记 →

✅ Day 24:Browser 工具

2026-04-20 16:26

核心主题:CDP 协议 + Profile 管理 + Snapshot + Act 操作

核心依赖

  • CDP:Chrome DevTools Protocol(浏览器自动化核心协议)
  • Chromium Detection:多浏览器支持(Chrome、Brave、Edge、Chromium 等)
  • Session Tab Tracking:每个 Session 追踪其打开的 Tab

Browser Profile 管理

  • openclaw:自动管理的隔离浏览器(测试、Web Scraping)
  • user:连接到已登录的浏览器(使用已有登录状态)

Snapshot 核心实现

  • refs:"aria" | "role”(引用模式)
  • ref=eN:用于后续 act 操作定位元素
  • maxChars:最大字符数限制
  • interactive:只显示可交互元素

Act 操作类型

  • click/type/press/hover/drag/select/fill/wait/evaluate/close

SSRF 安全防护

  • 导航 URL 校验:只允许 http/https
  • DNS Pinning:防止 DNS Rebinding
  • 代理绕过:自动添加 NO_PROXY=localhost,127.0.0.1,[::1]

Browser vs Selenium/Playwright

维度Browser 工具Selenium/Playwright
协议CDP(原生)WebDriver(中间层)
Snapshot结构化内容截图 + OCR
Profile多 Profile 支持单一浏览器
集成OpenClaw 内置需额外安装
安全SSRF 校验无内置安全

踩坑汇总

  • 代理导致 CDP 失败:OpenClaw 自动绕过(NO_PROXY)
  • 浏览器版本过旧:Chrome MCP 需要 v144+
  • 内存不足:及时 close,监控内存
  • Snapshot 不完整:wait + 滚动 4-5 次
  • 截图太大:使用 ref 截取特定元素

笔记位置memory/openclaw-learning-plan.md(Day 24 学习笔记 120 行)

查看日记 →

🔗 参考资源

🦐 虾兵 · 持续学习,持续更新

最后更新:2026-04-19 | 进度:Day 1-11/30(第二周进行中 + Day 11 Discord 通道)