OpenClaw 深度进阶:记忆系统、多智能体架构与自动化调度全解析
本文基于 OpenClaw 官方文档,深入解析三大核心进阶主题:记忆系统的工作原理与优化、多智能体路由架构设计,以及心跳与定时任务的自动化调度策略。适合已经完成基础部署、希望深入挖掘 OpenClaw 能力的开发者。
一、记忆系统:让 AI 真正"记住"你
OpenClaw 的记忆不是黑魔法,而是工作区中的纯 Markdown 文件。模型只"记住"写入磁盘的内容------没有写下来的东西,下次醒来就忘了。
1.1 双层记忆架构
OpenClaw 采用两层记忆设计:
-
每日日志
memory/YYYY-MM-DD.md:仅追加的日常笔记,会话开始时自动加载今天和昨天的内容。适合记录当天的决策、任务进展和临时上下文。 -
长期记忆
MEMORY.md(可选):精心整理的核心知识库。仅在主私人会话中加载,绝不会在群组上下文中暴露------这是一个重要的安全设计。
1.2 自动记忆刷新(压缩前触发)
这是很多人不知道的高级特性:当会话接近上下文窗口限制时,OpenClaw 会在压缩之前自动触发一个静默的智能体回合,提醒模型把重要信息写入磁盘。
配置示例:
json5
{
agents: {
defaults: {
compaction: {
reserveTokensFloor: 20000,
memoryFlush: {
enabled: true,
softThresholdTokens: 4000,
systemPrompt: "Session nearing compaction. Store durable memories now.",
prompt: "Write any lasting notes to memory/YYYY-MM-DD.md; reply with NO_REPLY if nothing to store."
}
}
}
}
}
关键细节:
- 每个压缩周期只刷新一次
- 工作区必须可写(沙箱中
workspaceAccess: "ro"会跳过刷新) - 默认静默运行,用户不会看到这个过程
1.3 向量记忆搜索与混合检索
OpenClaw 不只是逐行匹配关键词,它支持语义搜索:在记忆文件上构建向量索引,即使措辞不同也能找到相关笔记。
更进一步,OpenClaw 支持混合搜索(BM25 + 向量):
- 向量相似度擅长语义匹配:"Mac Studio 上运行 gateway" vs "运行 gateway 的机器"
- BM25 关键词擅长精确匹配:ID、代码符号、错误字符串
合并公式:finalScore = vectorWeight * vectorScore + textWeight * textScore
配置示例:
json5
{
agents: {
defaults: {
memorySearch: {
provider: "openai",
model: "text-embedding-3-small",
query: {
hybrid: {
enabled: true,
vectorWeight: 0.7,
textWeight: 0.3,
candidateMultiplier: 4
}
}
}
}
}
}
1.4 实践建议
- 主动告诉 AI "记住这个"------它会知道该写到哪个文件
- 定期在心跳中安排记忆整理:审查每日日志,将有价值的内容提炼到
MEMORY.md - 如果不想用远程嵌入 API,可以设置
memorySearch.provider = "local"使用本地模型
二、多智能体架构:一个 Gateway,多个大脑
这是 OpenClaw 最强大但最被低估的功能之一。
2.1 什么是"一个智能体"?
一个智能体是一个完全独立作用域的"大脑",拥有独立的:
- 工作区(文件、人设规则、记忆)
- 状态目录(认证配置、模型注册表)
- 会话存储(聊天历史、路由状态)
认证配置文件是每智能体独立的,主智能体凭证不会自动共享。
2.2 实战场景:按渠道分配不同人格
最常见的用法是把不同渠道路由到不同智能体:
json5
{
agents: {
list: [
{
id: "chat",
name: "日常助手",
workspace: "~/.openclaw/workspace-chat",
model: "anthropic/claude-sonnet-4-5"
},
{
id: "opus",
name: "深度工作",
workspace: "~/.openclaw/workspace-opus",
model: "anthropic/claude-opus-4-5"
}
]
},
bindings: [
{ agentId: "chat", match: { channel: "whatsapp" } },
{ agentId: "opus", match: { channel: "telegram" } }
]
}
效果:WhatsApp 上的日常闲聊用更快、更便宜的 Sonnet 模型;Telegram 上的深度工作用最强的 Opus 模型。
2.3 每智能体沙箱与工具隔离
你可以为不同智能体设置不同的安全策略:
json5
{
agents: {
list: [
{
id: "personal",
workspace: "~/.openclaw/workspace-personal",
sandbox: { mode: "off" }
// 无工具限制
},
{
id: "family",
workspace: "~/.openclaw/workspace-family",
sandbox: { mode: "all", scope: "agent" },
tools: {
allow: ["read"],
deny: ["exec", "write", "edit"]
}
}
]
}
}
家庭智能体被严格沙箱化,只能读取文件,不能执行命令------安全地分享给家人使用。
2.4 一个 WhatsApp 号码服务多人
你甚至可以用同一个 WhatsApp 号码,把不同联系人的私信路由到不同智能体:
json5
{
bindings: [
{ agentId: "alex", match: { channel: "whatsapp", peer: { kind: "dm", id: "+15551230001" } } },
{ agentId: "mia", match: { channel: "whatsapp", peer: { kind: "dm", id: "+15551230002" } } }
]
}
三、自动化调度:心跳 vs 定时任务
OpenClaw 提供两种自动化机制,选错了会浪费 token,选对了事半功倍。
3.1 心跳(Heartbeat):周期性感知
心跳在主会话中以固定间隔运行(默认 30 分钟),适合批量处理多项周期性检查。
核心优势:
- 一次心跳可以同时检查收件箱、日历、天气、通知------省 token
- 拥有完整的主会话上下文,能智能判断优先级
- 无事发生时回复
HEARTBEAT_OK,不打扰用户
配置:
json5
{
agents: {
defaults: {
heartbeat: {
every: "30m",
target: "last",
activeHours: { start: "08:00", end: "22:00" }
}
}
}
}
在工作区创建 HEARTBEAT.md 检查清单:
markdown
# 心跳检查清单
- 检查邮件中是否有紧急消息
- 检查日历中未来 2 小时的事件
- 如果静默超过 8 小时,发送简短问候
3.2 定时任务(Cron):精确调度
定时任务在精确时间运行,支持隔离会话、不同模型和一次性提醒。
每日早间简报示例:
bash
openclaw cron add \
--name "早间简报" \
--cron "0 7 * * *" \
--tz "Asia/Shanghai" \
--session isolated \
--message "生成今日简报:天气、日历、重要邮件、新闻摘要。" \
--model opus \
--announce \
--channel whatsapp
一次性提醒示例:
bash
openclaw cron add \
--name "会议提醒" \
--at "20m" \
--session main \
--system-event "提醒:站会将在 10 分钟后开始。" \
--wake now \
--delete-after-run
3.3 决策指南
| 场景 | 推荐方式 | 原因 |
|---|---|---|
| 每 30 分钟检查收件箱 | 心跳 | 可与其他检查批量处理 |
| 每天上午 9 点发送报告 | 定时任务 | 需要精确定时 |
| 20 分钟后提醒我 | 定时任务 + --at |
一次性精确提醒 |
| 后台项目健康检查 | 心跳 | 搭载在现有周期上 |
| 每周深度分析 | 隔离式定时任务 | 独立任务,可用不同模型 |
3.4 最佳实践:两者结合
最高效的配置是心跳处理常规监控,定时任务处理精确调度:
- 保持
HEARTBEAT.md精简,减少 token 开销 - 将类似检查批量放入心跳,而不是创建多个定时任务
- 对常规任务使用隔离式定时任务配合更便宜的模型
四、子智能体:并行执行的利器
子智能体是从现有运行中生成的后台任务,运行在独立会话中,完成后将结果通告回请求者。
关键特性:
- 非阻塞 :
sessions_spawn立即返回,不会卡住主对话 - 隔离:独立会话、独立上下文,默认不获得会话工具
- 安全:子智能体不能再生成子智能体(防止嵌套扇出)
- 自动归档:完成后默认 60 分钟自动清理
成本提示:每个子智能体有自己的 token 用量。可以通过配置为子智能体指定更便宜的模型:
json5
{
agents: {
defaults: {
subagents: {
model: "anthropic/claude-sonnet-4-5",
maxConcurrent: 8
}
}
}
}
五、工作区文件速查表
| 文件 | 用途 | 加载时机 |
|---|---|---|
AGENTS.md |
操作说明和规则 | 每次会话 |
SOUL.md |
人设和语气 | 每次会话 |
USER.md |
用户信息 | 每次会话 |
IDENTITY.md |
智能体名称和风格 | 每次会话 |
TOOLS.md |
本地工具说明 | 每次会话 |
HEARTBEAT.md |
心跳检查清单 | 心跳触发时 |
MEMORY.md |
长期记忆 | 仅主私人会话 |
memory/YYYY-MM-DD.md |
每日日志 | 会话开始时 |
skills/ |
工作区专用技能 | 自动发现 |
总结 :OpenClaw 的进阶使用不在于记住更多命令,而在于理解它的架构设计理念------记忆是文件、智能体是隔离的大脑、自动化是心跳与定时任务的组合拳。掌握了这三点,你就能搭建出真正智能的个人助手系统。
参考资料:OpenClaw 官方文档 | GitHub 仓库 | 社区 Discord