OpenClaw 实战公开课:用 AI 搭建你自己的智能系统
讲师: Yao Song|全栈工程师|华科 CS + 圣玛丽金融|app.mmcwellness.ca 医疗平台作者|AP CS 辅导讲师 时长: 40 分钟 网站: openclaw.borui.ca Discord: Openclaw Club
开场(3 min)
「打开屏幕,展示 Discord 群 + openclaw.borui.ca 网站」
「你们加入的这个 Discord 群,不是一个普通群。两个 AI 在 24 小时运转——一个回答你的问题,一个静默保护群的安全。旁边这个网站,内容也是 AI 帮我维护的。今天 40 分钟,我把这套系统完整拆给你看。」
本周 OpenClaw 最新动态
【最新动态占位符——每次开讲前替换,其余内容不变】
格式:
「本周 OpenClaw 发布了 [版本号],新增了 [功能名]。这意味着 [对我们的影响]。今天就用最新版演示。」
Part 1:OpenClaw + 记忆系统(10 min)
1.1 你刚加入的这个群,背后在跑什么
「这不是 Demo 环境。这是真实生产系统,你现在就在用它。」
真实系统架构:
Discord 消息
↓
OpenClaw Gateway(WebSocket 长连接)
│
├── 徐庶 Bot(OpenClaw + Claude Sonnet)
│ ├── requireMention = true → @徐庶 才响应
│ ├── 理解意图 → 查记忆 → 执行 Skill → 回复
│ └── 任何群成员都能 @ 它
│
└── Monitor Bot(Node.js + Claude Haiku)
├── 静默扫描每条消息(你们不知道它在运行)
├── 检测:刷屏 / 广告 / prompt 注入
├── 第一次违规 → 禁言 10 分钟
└── 第二次违规 → 踢出
演示脚本:
- 在群里 @徐庶 问「今天有什么课」→ AI 查记忆 → 回答
- 打开 openclaw.borui.ca → 「这个网站的内容是 AI 帮我维护的」
AI Agent vs 聊天机器人:
| 普通聊天机器人 | AI Agent(徐庶) |
|---|---|
| 你问它才回答 | 主动执行任务 |
| 对话结束就忘 | 跨会话记忆,记住你是谁 |
| 只能聊天 | 能调 API、改文件、发邮件 |
| 一个功能一个机器人 | 一个 Agent 串联所有能力 |
真实场景举例:
场景 1:学员问报名
学员:"怎么报名?"
→ 徐庶匹配知识库 → 回复报名链接 + 费用 + 时间
→ 全程 < 3 秒,不需要讲师介入
场景 2:讲师发指令
讲师:"@徐庶 把今天的课程回放链接发到公告频道"
→ 徐庶调用 Discord API → 发送格式化公告
→ 自动 @everyone 提醒
场景 3:异常处理
有人连发 10 条广告消息
→ Monitor Bot 检测 → 删消息 + 禁言 10 分钟
→ 私信通知管理员 → 全程 < 2 秒
1.2 ChatGPT vs OpenClaw 对比表
「你用过 ChatGPT 吧?那和 OpenClaw 有什么区别?」
| 维度 | ChatGPT / Claude 网页版 | OpenClaw |
|---|---|---|
| 运行位置 | Anthropic / OpenAI 服务器 | 你自己的服务器 |
| 数据安全 | 上传给第三方 | 不离开你的机器 |
| 能力 | 聊天 | 聊天 + 执行任务(Skill 系统) |
| 平台 | 网页 | Discord / Telegram / WhatsApp |
| 记忆 | 对话结束消失(或有限) | 四层持久记忆,跨会话 |
| 扩展性 | 不能(或 GPTs,有限) | Skill 系统,无限扩展 |
| 更新控制 | 你无法控制 | 你决定何时更新到哪个版本 |
| 源码 | 黑箱 | 开源,想改就改 |
「一句话:ChatGPT 是别人的产品,OpenClaw 是你自己的系统。」
1.3 四层记忆架构(核心干货)
「为什么需要四层?因为不同类型的信息,访问模式完全不同。一层做不了所有事。」
直觉理解——为什么不是一层:
临时对话 → 要快、过期就丢 → 缓存
重要决策 → 要语义搜索、模糊匹配 → 向量数据库
用户偏好 → 要精确查询、结构化 → 关系型数据库
文件附件 → 要大容量、直接下载 → 对象存储
硬塞一层 = 又慢又乱。四层各司其职。
四层详解:
| 层 | 存什么 | 技术栈 | 生命周期 | 查询方式 |
|---|---|---|---|---|
| Cache | 当前对话上下文、会话状态 | Redis | 4 小时自动过期 | 键值查找(微秒级) |
| Vector | 重要信息、决策、技能、经验 | PostgreSQL + pgvector | 30–180 天(衰减) | 语义搜索("类似的问题"能找到) |
| Facts | 偏好、联系人、配置、密钥 | PostgreSQL JSONB | 永久 | 精确查询("张三的邮箱"直接命中) |
| File | 图片、文档、音频、PDF | MinIO(S3 兼容) | 永久 | 元数据搜索 |
衰减机制(防止记忆无限膨胀):
| 记忆类型 | 半衰期 | 说明 |
|---|---|---|
| 对话记录 | 30 天 | 日常闲聊,过期自动清理 |
| 项目记录 | 45 天 | 正在做的事,完成后衰减 |
| 重要决策 | 90 天 | 架构 / 方向选择 |
| 技能经验 | 180 天 | 学到的方法,衰减最慢 |
衰减速度不是固定的:
衰减速度 = 基础速率 ÷ (重要性权重 × 访问频率加成)
重要性高 + 经常被引用 → 几乎不衰减("永久记忆"效果)
重要性低 + 长期没访问 → 加速衰减 → 自动清理
技术亮点:bge-m3 本地向量模型
bge-m3 = 北京智源开源的多语言向量模型
├── 跑在你自己的服务器上(不调用任何外部 API)
├── 中英文混合效果好(你说中文它也能搜到英文相关内容)
└── 把文字变成 1024 维向量 → 语义相似的文字距离近
「你说"我明天要开会",搜"会议安排"就能找到它——因为语义距离近。这不是关键词匹配,是理解意思。」
演示脚本:
- 在群里 @徐庶 说:「记住我最喜欢的编程语言是 Rust」
- → 存入 Vector 层,importance = 7
- 关掉这个会话,重新开一个全新会话
- 问徐庶:「你还记得我喜欢什么语言?」
- → AI 召回 → 正确回答 Rust
- → 这不是对话历史,是独立记忆数据库在工作
1.4 会改才是真本事(预告)
「OpenClaw 平均每周 2–3 个版本更新。只会用 ≠ 会改。」
会用的人 会改的人
─────────────────────────────────────────────────
等别人适配 自己看 changelog
遇到 breaking change 卡住 定位影响 → 自己 patch
新功能要等社区 自己加功能
Bug 要等修复 自己修
依赖别人 = 被别人的节奏绑架 不依赖任何人
这门课教会你五件事:
| # | 能力 | 说明 |
|---|---|---|
| 1 | 部署 | 从零搭 OpenClaw + 记忆系统 + 网站 |
| 2 | 优化 | 记忆系统调优,让 AI 真正认识你 |
| 3 | 做 Skill | 扩展 AI 能力,把重复工作变自动化 |
| 4 | 更新 | 看懂 changelog,跟上每周迭代 |
| 5 | 修改 | VS Code + Claude Code,读懂源码,自己 patch |
「第 4 周专门有一节课:VS Code + Claude Code。教你跟上 OpenClaw 的更新节奏——甚至自己给 OpenClaw 加功能。」
Part 2:安全(5 min)
标题:「这三个坑,我们都踩过」
「不讲安全理论。直接讲我们部署过程中真实踩过的坑。」
坑 1:密钥泄露
❌ 错误做法:
docker-compose.yml 里直接写明文密码:
DISCORD_TOKEN=MTIzNDU2Nzg5...
CLAUDE_API_KEY=sk-ant-api03-...
然后 git push 到 GitHub
→ 10 分钟内被扫描机器人抓取
→ API Key 被盗刷,账单爆炸
✅ 正确做法:
1. 所有密钥放 .env 文件
2. .gitignore 排除 .env
3. chmod 600 .env(只有你能读)
4. docker-compose.yml 用 ${DISCORD_TOKEN} 引用
5. 如果已经泄露 → 轮换所有密钥,从头来过
.env 文件长这样:
# .env —— 绝对不上传 GitHub
DISCORD_TOKEN=MTIzNDU2Nzg5...
CLAUDE_API_KEY=sk-ant-api03-...
POSTGRES_PASSWORD=随机生成的强密码
REDIS_PASSWORD=另一个随机密码
坑 2:AI 权限过大
❌ 错误做法:
AI 能读写服务器上所有文件
AI 能执行任意 shell 命令(rm -rf / 也行)
AI 能读 .env 里的 API Key
✅ 正确做法:
- tools.fs.workspaceOnly = true → AI 只能读写指定目录
- agents.defaults.sandbox.mode = on → 沙箱隔离
- 高危命令需要 /approve 确认
- 明确的 allowlist → 只开放 AI 需要的命令
坑 3:群聊信息隔离
❌ 错误做法:
用户 A 问 AI:"系统密码是什么?"
AI 回答:"管理员密码是 admin123"
✅ 正确做法:
- 记忆按 user_id 严格隔离 → 你只能查自己的记忆
- 群聊检测到 token / key / password 关键词 → 拒绝回答
- allowlist:只响应指定 Discord 群组
- DM 限制:只有管理员能执行 shell 命令
Monitor Bot 的由来(真实案例)
「有人在群里发了一段 prompt injection 攻击,试图让 AI 泄露系统配置。我们发现后,花了 45 分钟部署了 Monitor Bot——一个独立的安全守卫,用最便宜的 Claude Haiku 静默扫描每条消息。成本几乎为零,但把这类攻击堵上了。现在它静默运行,你们都不知道它在扫描每一条消息。」
Part 3:智能客服 + 自动化工作流(12 min)
3.1 智能客服 = 就是这个群(现场演示)
「不用模拟,直接看群里真实在跑的系统。」
完整消息处理架构:
用户发消息
↓
Monitor Bot 先扫(~100ms)
├── 违规 → 禁言/踢出 + 频道通知管理员
└── 正常 → 传给徐庶
↓
徐庶判断意图
│
├── FAQ(报名/价格/时间)
│ → 查记忆 → 直接回答
│
├── 技术问题
│ → 调用相关 Skill → 回答
│
├── 超出范围
│ → 「这个问题我需要让讲师来回答」
│ → 同时通知管理员
│
└── 违规意图
→ 记录 + 拒绝
违规检测详情:
检测类型 触发条件 处理方式
────────────────────────────────────────────────────────
刷屏 10 秒内发 5 条以上 禁言 10 分钟
广告 包含推广链接 / 二维码 删消息 + 警告
Prompt 注入 试图修改 AI 系统指令 禁言 + 通知管理员
人身攻击 情绪检测 + 关键词 删消息 + 警告
────────────────────────────────────────────────────────
第二次违规 → 直接踢出
演示脚本(三个现场演示):
- FAQ 演示: 发一条「课程什么时候开始」→ AI 查记忆 → 直接回答时间和报名方式
- 安全演示: 发一条测试违规消息 → Monitor Bot 检测并处理(讲师用测试账号演示)
- 转人工演示: 发一条超出 AI 能力范围的问题 → AI 回复「这个问题我需要让讲师确认」→ 管理员收到通知
3.2 自动化工作流:Admin 日报系统(完整链路)
「这是我们真实在用的系统。每天 23:00 自动跑,第二天早上打开邮箱就有报告。」
场景: 每天结束后,自动生成当天的咨询分析报告。
每天 23:00 自动触发(cron)
│
▼
Step 1: 抓取 Discord 当天消息
→ Discord API:读取频道消息记录
→ 过滤:只保留用户咨询,去掉 Bot 自己的回复
│
▼
Step 2: Claude 分析
→ 问题分类(技术 / 报名 / 价格 / 投诉 / 其他)
→ 情绪标注(正面 / 中性 / 负面)
→ 未解决问题识别(AI 没有给出满意回答的)
→ 热点话题提取(今天问最多的是什么)
│
▼
Step 3: 生成结构化输出
→ Markdown 日报:标题 / 摘要 / 分类统计 / 未解决列表
→ Excel 文件:每行一条咨询,含分类 / 情绪 / 是否解决
│
▼
Step 4: 上传 Google Drive
→ Google Drive API
→ 存入:/OpenClaw-Club/日报/2026-03/
→ 自动按日期命名:2026-03-29_日报.xlsx
│
▼
Step 5: 发邮件通知
→ Gmail API
→ 收件人:Admin
→ 主题:[日报] OpenClaw Club - 2026-03-29
→ 正文:今日摘要 + 未解决问题列表
→ 附件:Excel 完整报告
OpenClaw Skill 串联方式:
每个步骤是一个独立 Skill:
discord-fetch → 抓取消息
ai-analyze → Claude 分析
sheet-export → 生成 Excel
gdrive-upload → 上传 Drive
gmail-send → 发邮件
主 Skill(daily-report)编排这些步骤:
├── 顺序执行 5 个子 Skill
├── 每步有失败重试机制
├── 失败通知管理员
└── 这就是你在这门课里要自己做的 Skill
Skill 串联的代码结构:
// OpenClaw Skill 实际配置
{
"name": "daily-report",
"trigger": { "type": "cron", "schedule": "0 23 * * *" },
"steps": [
{ "action": "discord.fetchMessages", "params": { "since": "today" } },
{ "action": "claude.analyze", "params": { "template": "daily-report" } },
{ "action": "file.generateExcel", "params": { "template": "report-v2" } },
{ "action": "gdrive.upload", "params": { "folder": "日报" } },
{ "action": "gmail.send", "params": { "to": "admin", "attach": true } }
]
}
「每一步都是独立 Skill,OpenClaw 像流水线一样串起来。你只需要定义"做什么"和"什么顺序",不需要写胶水代码。」
Part 4:AI 自动维护网站(8 min)
「openclaw.borui.ca 就是活例子——Next.js 16 + Express 5 + PostgreSQL,Docker Compose 一键部署。」
正常维护流程(你说需求,AI 干活)
你说:「把资料库页面加一个视频嵌入功能」
│
▼
AI 读取项目结构(Next.js 16 + Express 5 + TypeScript)
│ ├── 扫描 frontend/src/ 目录结构
│ ├── 读取相关组件代码
│ └── 理解现有样式和逻辑
│
▼
AI 定位需要改的文件(components/ResourceCard.tsx 等)
│
▼
AI 写 patch,你 review(能看懂大概就行)
│
▼
docker compose up -d --build oc-web
│
▼
网站更新 → AI 汇报:「已完成,新增了 VideoEmbed 组件」
真实发生过的案例
| 任务 | AI 用时 | 你做了什么 | 你写的代码 |
|---|---|---|---|
| 全站手机适配 | 15 分钟 | 说需求 + review | 0 行 |
| Next.js 动态路由 404 | 3 分钟 | 贴报错信息 | 0 行 |
| 资料库系统(新功能) | 45 分钟 | 描述需求 + 测试 | 0 行 |
| 安全加固(4 项) | 30 分钟 | 确认操作 | 0 行 |
案例细节——修 Bug:
我说:「课程详情页 404 了」
AI 做了什么:
1. 读取 Next.js 动态路由 [slug]/page.tsx
2. 定位问题:params 需要 await(Next.js 15+ breaking change)
3. 加上 await:const { slug } = await params
4. 重建部署
5. 汇报:「Next.js 15 要求 params 必须 await,已修复」
耗时:3 分钟
案例细节——新功能:
我说:「资料库加一个视频嵌入功能」
AI 做了什么:
1. 读取 resource 组件结构
2. 新建 VideoEmbed 组件
3. 支持 YouTube / Bilibili 链接自动解析
4. 响应式 16:9 容器
5. 注册到资料详情页
6. 重建部署
耗时:10 分钟
核心认知转变
你不需要: 你需要:
───────────────────────────────────────────
记住 CSS 语法 看懂 AI 改了什么
记住 React API 判断结果对不对
记住 Docker 命令 知道出问题了怎么回退
背诵报错信息 能描述清楚你要什么
───────────────────────────────────────────
左边 AI 替你做 右边就是这门课教的元能力
OpenClaw 更新维护流程(核心技能)
「OpenClaw 每周 2–3 个版本。这是你必须掌握的跟上节奏的方法。」
OpenClaw 发布新版本(GitHub Releases)
│
▼
查看 changelog
→ github.com/openclaw/openclaw/releases
│
▼
用 Claude 分析:
「这个 breaking change 影响我的配置吗?」
│
▼
定位影响的文件 / 配置项
│
▼
VS Code + Claude Code:
→ 读懂源码 → 写 patch → 本地测试
│
▼
npm update openclaw → 重启 gateway
│
▼
验证功能正常 → 完成
自己做 Skill(这门课的核心)
Skill 目录结构:
skills/
my-skill/
SKILL.md ← 描述:什么时候用、做什么、返回什么
script.sh ← 实际执行的逻辑(或 .js / .py)
references/ ← 参考文件(可选)
从零写一个 Skill 的流程:
Step 1: 想清楚三件事
├── 什么触发它?(用户说了什么 / 定时 / 事件)
├── 做什么?(调 API / 读数据 / 生成内容)
└── 返回什么?(文字回复 / 文件 / 通知)
Step 2: 用 VS Code + Claude Code 写代码
├── 写 SKILL.md(告诉 OpenClaw 什么时候调用它)
└── 写执行脚本(实际逻辑)
Step 3: 放到 skills/ 目录
→ OpenClaw 自动扫描加载,无需重启
Step 4: 测试
→ 在 Discord 群触发 → 验证行为 → 调试
「Skill 就是 AI 的能力边界。你做了多少 Skill,AI 就能做多少事。这门课教你自己扩展这个边界。」
收尾(5 min)
4 周后你拥有的五种能力
Week 1 部署
└── 从零搭一套 OpenClaw + 记忆系统 + 网站
在 Oracle Cloud 永久免费服务器上
4 核 ARM + 24GB 内存(不是试用,真永久免费)
Week 2 优化
└── 记忆系统调优
让 AI 真正认识你,而不只是看对话历史
衰减参数调整、向量搜索优化、Facts 结构设计
Week 3 做 Skill
└── 扩展 AI 能力
把任何重复工作变成自动化流程
从日报系统到自定义工作流
Week 4 更新 + 修改
└── VS Code + Claude Code
看懂 changelog,跟上每周 2–3 个版本的迭代
读懂源码,自己 patch,不依赖任何人
五种能力呼应表:
| # | 能力 | 你能做什么 | 对应课程 |
|---|---|---|---|
| 1 | 部署 | 从零到跑起来,整套系统在自己服务器上 | Week 1 |
| 2 | 优化 | 记忆系统调优,AI 越用越懂你 | Week 2 |
| 3 | 做 Skill | 任何重复工作自动化,AI 能力无限扩展 | Week 3 |
| 4 | 更新 | 看懂 changelog,不被版本落下 | Week 4 |
| 5 | 修改 | 读懂源码,自己 patch,不依赖任何人 | Week 4 |
成本(真实数字)
| 工具 | 费用 | 说明 |
|---|---|---|
| Oracle Cloud 服务器 | 永久免费 | 4 核 ARM,24GB 内存,200GB 存储 |
| 域名 | ~$10/年 | Cloudflare,可选(不买用免费子域名) |
| Cloudflare Tunnel | 免费 | 安全暴露服务,无需开放端口 |
| Claude Pro | $24 CAD/月 | AI 引擎(API 调用 + Claude Code) |
| VS Code | 免费 | 开发工具 |
| Docker / OpenClaw | 免费 | 开源 |
总成本:$24 CAD/月起。一顿火锅钱,换一个 24 小时运转、数据在你手里、代码你自己能改的 AI 系统。
报名
╔══════════════════════════════════════════════════╗
║ ║
║ 网站:openclaw.borui.ca ║
║ ║
║ 扫码加入 Discord 群 ║
║ 立即体验徐庶 Bot ║
║ ║
║ 你现在就在用这套系统 ║
║ 报名后学会自己搭一套 ║
║ ║
║ 下一期开课时间:【占位符】 ║
║ ║
╚══════════════════════════════════════════════════╝
讲义版本: v2.0 最后更新: 2026-03-29 讲师: Yao Song|全栈工程师|OpenClaw 重度用户|维多利亚教育集团合作讲师