乐于分享
好东西不私藏

手搓一个最小的龙虾:OpenClaw 实战教程(上)

手搓一个最小的龙虾:OpenClaw 实战教程(上)

本教程旨在深入讲解如何从零构建一个最小化的 AI 代理(agent),基于开源项目 OpenClaw(俗称”小龙虾”)。

通过本教程,你将掌握:

  • 🤖 AI 代理的基本概念及其演变历史,从 Cloud Code、Cursor 到 OpenClaw
  • ❤️ 小龙虾的核心设计机制:包括心跳(heartbeat)、记忆(memory)和技能(skill)系统
  • 💻 手把手实现一个最小代理,涵盖代码结构、工具集成和部署方法
  • 🚀 实践指南:如何在本地或云服务器上部署代理,并集成到即时通讯工具(如飞书)
  • 🏗️ 高级特性:代理团队(agent team)和任务系统的设计思路

一、OpenClaw 系统设计解析

核心架构:三个关键组件

OpenClaw 通过三个核心组件让 AI 具备”生命力”:

感知(Perceive) → 思考(Think) → 行动(Act) → 观察(Observe)

无尽循环,直至目标达成。

组件 作用
心跳(Heartbeat) 定时触发,让 AI 主动”醒来”思考
记忆(Memory) 让 AI 记住跨会话的重要信息
技能(Skill) 可扩展的工具集,让 AI 调用各种能力

人格系统(Soul System)

Agent 的价值观与性格底座,决定了响应语气、处理偏好及行为边界:

  • 定义回复语气(严肃/轻松/专业)
  • 设定核心任务优先级
  • 配置禁忌与安全护栏

双层记忆架构

┌─────────────────────────────────────┐
│          SHORT-TERM  Session 记忆     │ ← 维持当前对话上下文
├─────────────────────────────────────┤
│          LONG-TERM   Vector 记忆     │ ← 语义检索,持久化存储
└─────────────────────────────────────┘

二、从 Cloud Code 到 OpenClaw:AI Agent 进化史

理解 OpenClaw 的创新,需要回顾 AI Agent 的发展历程:

阶段 代表产品 核心能力 局限
第一阶段 Cursor 代码补全 被动响应,无主动执行
第二阶段 Claude Code Agent Loop,工具调用 无定时调度,无记忆
第三阶段 CoWork 友好界面 能力有限
第四阶段 OpenCode 开源复刻 缺乏主动式机制
第五阶段 OpenClaw 心跳+记忆+技能+人格

OpenClaw 的核心创新:让 AI Agent 从”被动工具”变为”主动助手”——能主动思考、定时执行、持续记忆。


三、最小化 Agent 核心:Pi 框架

Pi 框架是 OpenClaw 的 Agent 核心,约 143 行代码实现四大核心工具:

四个基础工具

工具 作用 示例
Bash 执行系统命令 pip install xxx
Read 读取文件 查看配置文件
Write 创建/覆盖文件 生成代码
Edit 精确修改文件 改某一行

Agent Loop 执行流程

1. 接收用户输入消息
2. 拼接系统提示词 + 用户消息
3. 发送给大语言模型(LLM)
4. 模型决定调用哪个工具(如有)
5. Agent 执行工具调用,获取结果
6. 将结果返回给模型,生成最终回复
7. 将回复返回给用户

这种极简设计体现了”少即是多”——工具很少,但组合的可能性是无限的。


四、心跳机制(Heartbeat):让 AI 主动思考

设计灵感

心跳机制的设计灵感来源于人类的心理活动——即使在安静的时刻,大脑也在后台处理各种信息:回顾今天发生的事情、思考未完成的任务、规划明天的安排。

执行流程

每30秒触发一次心跳检查:
  ✅ 检查是否有需要注意的事项
  ✅ 回顾记忆日志中的未完成任务
  ✅ 思考是否有值得主动做的事情
  ✅ 生成想法或行动计划

静默检查与去重

  • 如果没有什么重要的事情,回复 HEARTBEAT_OK——静默结束,不打扰用户
  • 去重机制:相同想法在 5 分钟内不重复提醒

开关机制

HEARTBEAT.md 文件存在 → 心跳启用
HEARTBEAT.md 文件删除 → 心跳关闭

非程序员也能通过简单的文件操作控制心跳!


五、人格注入(Soul System)

通过 SOUL.md 文件定义 Agent 的人格:

## 角色
You are Koda, a thoughtful AI assistant.

## 性格
Warm but not overly enthusiastic.
Prefer concise, clear explanations.

## 价值观
Honesty over comfort.
Depth over breadth.

SOUL.md 内容拼接在系统提示词最前面——大模型对开头部分注意力最强,人格定义影响所有后续输出。


六、双层记忆系统(Memory Store)

常驻记忆 vs 每日日志

类型 存储位置 内容 特点
常驻记忆 MEMORY.md 用户长期偏好 手动维护,长期有效
每日日志 memory/YYYY-MM-DD.md 当天重要事件 自动写入,按天归档

记忆读取

每次对话开始时,系统自动加载常驻记忆 + 当天日志,拼接到系统提示词中。Agent 不需要显式调用检索工具——记忆自动”在脑海中”。


七、定时调度(Cron)系统

三种调度类型

类型 命令格式 典型场景
一次性任务 at 明天15:00 会议提醒
周期性任务 every 3600(秒) 每小时检查邮件
Cron 表达式 0 9 * * 1-5 每周一到周五早9点

错误处理

  • 连续错误 5 次 → 自动禁用任务
  • 指数退避重试:1s → 2s → 4s

八、消息网关与多通道

Gateway 核心职责

消息接收 → 格式转换 → 消息路由 → 响应发送

支持的通道

飞书、Telegram、Slack、Discord、WhatsApp……每个通道有独立适配器,适配器模式让新增通道变得简单。

消息分页

不同平台有不同字数限制:

  • Telegram:4096 字符
  • Discord:2000 字符
  • 飞书:根据类型变化

超长回复自动分页,不破坏代码块结构。


九、交付队列(Delivery Queue)

确保消息不丢失的核心机制:

消息进入队列 → DeliveryWorker 取出 → 发送
     ↓ 失败
  指数退避重试(1s → 2s → 4s)→ 最多3次
     ↓ 仍失败
  死信队列(Dead Letter Queue)

进程重启后,未发送的消息从持久化文件加载,自动继续发送。


十、下期预告

下一篇我们将手把手实现一个最小化的 OpenClaw Agent:

  • 环境搭建与依赖安装
  • 配置文件编写
  • 第一个”Hello World” Skill
  • 接入飞书机器人
  • 部署到服务器

敬请期待!


👉 欢迎关注我的公众号,获取更多 OpenClaw 实战教程