2026-03-28 周六
OpenClaw 源码学习 Day 1 + Claude Code 教程研读
📋 今日概览
| 类别 | 内容 |
|---|---|
| OpenClaw 教学 | Day 1:整体架构 |
| 教程研读 | Claude Code 快速上手核心指南 |
| 技术学习 | 1 次(16:00)- Claude Code Platform + MCP |
| 核心主题 | OpenClaw 架构、Gateway、Agent、Claude Code |
🎓 OpenClaw 源码学习 Day 1:整体架构
教学目标:理解 OpenClaw 的三层架构和核心概念
一、三层架构
OpenClaw 采用清晰的三层架构设计:
┌─────────────────────────────────────┐
│ 第一层:Channels(通道) │
│ 飞书 / WhatsApp / Telegram / CLI │
└──────────────┬──────────────────────┘
│ 消息流入
┌──────────────▼──────────────────────┐
│ 第二层:Gateway(枢纽) │
│ 路由分发 + 会话管理 + 认证安全 │
└──────────────┬──────────────────────┘
│ 分发给 Agent
┌──────────────▼──────────────────────┐
│ 第三层:Agent(大脑) │
│ AI模型 + 工具调用 + 记忆 + 报告 │
└─────────────────────────────────────┘
理解方式:把 OpenClaw 想象成一个客服中心
- Channels = 电话/微信等接入渠道
- Gateway = 总机/调度中心
- Agent = 实际回答问题的客服
二、Gateway 的核心职责
Gateway 是唯一的中心枢纽,做四件事:
| 职责 | 说明 | 证据 |
|---|---|---|
| 监听消息 | 监听 18789 端口 | systemctl status 日志 |
| 路由分发 | 根据 bindings 规则发给 Agent | [feishu] dispatching to agent |
| 会话管理 | 存储对话历史 | ~/.openclaw/agents/<id>/sessions/ |
| 认证安全 | Token验证、Allowlist | openclaw.json 配置 |
三、Agent 是什么?
Agent = 一个完整的"大脑",包含:
~/.openclaw/agents/<agentId>/
├── agent/ # 认证配置
│ └── auth-profiles.json # 模型 API Key
├── sessions/ # 对话历史
│ └── *.jsonl # 每个会话的记录
└── workspace/ # 工作空间(核心!)
├── AGENTS.md # 行为规则
├── SOUL.md # 人格设定
├── USER.md # 用户信息
└── MEMORY.md # 长期记忆
关键理解:一个 Agent 是完全隔离的,多个 Agent = 多个独立的"人格"。
四、源码入口链
代码启动顺序:
openclaw.mjs # 1. 启动器:版本检查 + 编译缓存
↓
dist/entry.js # 2. 主入口:参数解析 + 环境配置
↓
dist/run-main-xxx.js # 3. CLI运行:命令路由
↓
dist/subsystem-xxx.js # 4. 核心子系统:Gateway/Agent/Sessions
入口文件 openclaw.mjs 做四件事:
- 版本检查 - Node 22.12+ 才能运行
- 编译缓存 - 加速启动
- 警告过滤 - 清理噪音
- 加载入口 - import("./dist/entry.js")
五、目录结构全览
openclaw/
├── openclaw.mjs # 入口启动器
├── dist/ # 编译后代码(实际运行)
│ ├── entry.js
│ ├── subsystem-xxx.js
│ └── daemon-cli.js
├── docs/ # 官方文档(学习首选)
│ ├── concepts/ # 核心概念
│ ├── channels/ # 通道指南
│ └── gateway/ # Gateway 配置
├── extensions/ # 通道扩展(45个)
│ ├── whatsapp/
│ ├── telegram/
│ ├── discord/
│ └── feishu/ ← 正在使用的通道
└── skills/ # 内置技能(55个)
├── github/
├── weather/
└── summarize/
六、配置文件位置
~/.openclaw/
├── openclaw.json # 主配置(路由、通道、工具)
├── agents/
│ └── main/
│ ├── agent/ # 认证(auth-profiles.json)
│ └── sessions/ # 会话历史
└── workspace/ # 工作空间
├── AGENTS.md # 行为规则
├── SOUL.md # 人格
├── USER.md # 用户信息
└── MEMORY.md # 长期记忆
七、Day 1 总结:一张图记住所有
OpenClaw 架构 = 三层 + 两文件
Channels(飞书/WhatsApp/Telegram) ← 消息来源
↓
Gateway(18789端口) ← 四职责:监听/路由/会话/认证
↓
Agent(workspace + sessions) ← 大脑:记忆/人格/工具
配置文件:
~/.openclaw/openclaw.json ← Gateway配置
~/.openclaw/workspace/ ← Agent配置(SOUL/AGENTS/MEMORY)
📖 Claude Code 快速上手核心指南
核心技巧速查(11个)
| 技巧 | 功能 | 使用场景 |
|---|---|---|
| 双击 Esc | 回退对话 | 说错话/不满意 |
| @ 引用 | 精准指定文件 | @src/utils.ts |
| ! 执行 | 运行终端命令 | !npm test |
| /plan | 先规划后编码 | 复杂任务 |
| /init | 生成 CLAUDE.md | 新项目初始化 |
| /compact | 压缩上下文 | 节省 Token |
| /context | 查看 Token 使用 | 优化消耗 |
| /diff | 查看 Git 变更 | 代码审查 |
| Shift+Tab | 自动接受模式 | 快速迭代 |
| Ctrl+C | 取消操作 | 紧急停止 |
| /resume | 恢复会话 | 多任务切换 |
核心配置文件
| 文件 | 作用域 | 用途 |
|---|---|---|
| .claude/settings.local.json | 项目本地 | 个人偏好 |
| .claude/settings.json | 项目共享 | 团队统一 |
| ~/.claude/settings.json | 全局 | 个人默认 |
| CLAUDE.md | 项目 | 项目记忆 |
| .claudeignore | 项目 | 节省 Token |
与 OpenClaw 对比
| 维度 | Claude Code | OpenClaw |
|---|---|---|
| 运行方式 | 终端 CLI | Gateway 服务 |
| 上下文管理 | CLAUDE.md | SOUL.md + MEMORY.md |
| 权限控制 | settings.json | openclaw.json |
| Token优化 | /compact + .claudeignore | Compaction + Session Pruning |
设计理念相似:两者都用 Markdown 配置文件定义"人格/记忆",都有权限系统控制敏感操作。
💡 教学启示
从 Claude Code 教程中学到的教学结构值得借鉴:
- 快速实验:每个主题有动手验证,让用户立即体验核心能力
- 技巧排序:按实际使用频率排序,不是理论顺序
- 分层配置:最小可用 → 完整推荐 → 高级定制
- 表格对比:常见问题用表格,一目了然
改进方向:OpenClaw 教学也采用这种结构,避免"东一榔头西一棒子"。
📚 今日关键词
🔗 重点链接
- OpenClaw 官方文档 - 全面了解 OpenClaw
- Claude Code 快速上手核心指南 - Datawhale 教程
- Claude Code 官方文档 - Anthropic 官方
- MCP 协议介绍 - AI 的 USB-C
💭 学习总结
今天完成了两件重要的事情:
- OpenClaw 源码学习 Day 1:理解了三层架构(Channels → Gateway → Agent),Gateway 的四项职责,Agent 的完整结构。通过实际日志验证了 Gateway 的工作流程。
- Claude Code 教程研读:学习了 11 个核心技巧和配置文件结构。发现 Claude Code 和 OpenClaw 在设计理念上非常相似,都用 Markdown 配置文件定义人格和记忆。
明天预告:Day 2 - Session 与会话管理,理解消息如何变成会话,会话如何被管理。