Appearance
OpenClaw记忆系统与多Agent编排:跨会话记住+团队协作实战
单个AI助手能做的事有限,但一支配合默契的AI团队,可以应对真正的业务挑战。记忆系统解决"跨会话记住",多Agent编排解决"当下任务太复杂"。
为什么AI总是"记不住"?
不管用的是Qwen、Kimi还是其他模型,都有个绕不开的限制:上下文窗口是有限的。
这个天花板意味着:
| 场景 | 问题 |
|---|---|
| 写50页招标文件 | 写到一半开始"失忆",前面定的框架记不住了 |
| 上午写商业方案,下午制定旅行计划 | 无法立刻切换语气,给出违和回答 |
| 工作时写技术文档,下班后想朋友圈文案 | 同一个AI难以立刻切换角色 |
解决方案:记忆系统 + 多Agent编排。
一、记忆系统:让AI跨会话记住你
OpenClaw的记忆系统基于"文件即真相"的思想。
双层记忆结构
| 层级 | 文件 | 内容 | 加载范围 |
|---|---|---|---|
| 长期记忆 | MEMORY.md | 精选持久化偏好、配置决定、沉淀经验 | 仅私聊会话加载 |
| 每日日志 | memory/YYYY-MM-DD.md | 阶段性项目进展、当天探讨细节 | 今天+昨天的文件 |
安全机制:MEMORY.md默认仅在私聊会话中加载,群组会话中不会注入,防止私密信息泄露。
记忆是如何写入的?
| 写入方式 | 触发条件 | 存储位置 |
|---|---|---|
| 自动写入 | 对话过程中AI自动记录重要信息 | 每日日志 |
| 用户触发 | 说"记住这个"或"把这个写进记忆" | MEMORY.md |
| 定期整理 | 手动review或开启Dreaming自动整理 | MEMORY.md |
AI会自动记录:
- 项目进展:"完成了招投标系统初版"
- 技术决策:"修复了登录模块的BUG"
- 用户偏好:"记住我偏好使用Python编写脚本"
AI不会记录:
- 临时对话内容
- 一次性问题
- 没有明确指示的闲聊
记忆检索:两种方式
1. 记忆搜索(memory_search)
混合搜索算法(BM25 + 向量相似度),返回带文件路径和行号的查询片段。
json
{
"agents": {
"defaults": {
"memorySearch": {
"provider": "openai",
"model": "text-embedding-3-small",
"query": {
"hybrid": {
"enabled": true,
"vectorWeight": 0.7,
"textWeight": 0.3
}
}
}
}
}
}权重设计思路:
- 向量相似度(70%):捕捉语义相关性
- 关键词匹配(30%):保证精确匹配(变量名、文件路径、ID等)
2. 精确读取(memory_get)
基于已有依据读取内容,精确命中特定行,防止信息污染。
记忆会过期吗?
会。项目迁移、配置变更、偏好改变,旧记忆可能不再适用。
| 处理方式 | 说明 |
|---|---|
| 新事实覆盖旧事实 | AI自动识别冲突,用新信息更新记忆 |
| Dreaming自动整理 | 定期分析记忆,标记过期内容 |
| 手动清理 | 直接编辑MEMORY.md删除或更新 |
二、多Agent编排:把大任务拆小
记忆系统解决"跨会话记住"的问题,但解决不了"当下任务太复杂"的问题。
比如:同时丢给AI 3篇万字长文,要求翻译并做摘要。单个AI还是得一篇一篇啃。
多Agent协作派上用场。
多Agent的隔离机制
| 隔离类型 | 说明 |
|---|---|
| 认证与模型隔离 | 不同Agent可绑定不同API Key和模型 |
| 记忆隔离 | 独立生成日记本和上下文序列 |
| 灵魂隔离 | 每个Agent独享SOUL.md和IDENTITY.md |
| 工作区隔离 | 每个Agent有独立的workspace目录 |
创建AI团队
第一步:用CLI快速创建
bash
# 添加一个专注编程的Agent
openclaw agents add coder
# 添加一个负责营销写作的Agent
openclaw agents add writer
# 查看已创建的Agent列表
openclaw agents list第二步:配置路由绑定
json
{
"agents": {
"list": [
{"id": "main", "workspace": "~/.openclaw/workspace-main"},
{"id": "coder", "workspace": "~/.openclaw/workspace-coder"},
{"id": "writer", "workspace": "~/.openclaw/workspace-writer"}
]
},
"bindings": [
{
"agentId": "coder",
"match": {
"channel": "telegram",
"peer": {"kind": "direct", "id": "用户的Telegram ID"}
}
}
]
}优先级:精准匹配ID级别 > 频道级别匹配。
第三步:启用Agent间通信
json
{
"tools": {
"agentToAgent": {
"enabled": true,
"allow": ["main", "coder", "writer"]
}
}
}经验提醒:在同一个通信工具中切换不同Agent时,Agent之间通信有时会"不记得"使用sessions_send,错误地想用通信工具的消息通道发送。
解决方案:提醒它"记住agent之间通信使用sessions_send"。
三、四种常见协作模式
1. Supervisor(监督者模式)
设置一个中央统筹者,负责接收任务并分发给其他AI。
markdown
## 角色
团队调度核心。当收到以下需求时,派发给对应Agent:
- 编程或技术研发需求 → 派发给 @coder
- 公众号写作需求 → 派发给 @writer
- 日常问答 → 自己处理适用场景:项目管理、内容发布流程。
2. Router(路由模式)
根据消息来源或内容关键词,自动路由到对应AI。
适用场景:技术群用coder、内容群用writer。
3. Pipeline(流水线模式)
任务按顺序经过多个AI处理。
用户 → writer(初稿) → editor(审核) → publisher(发布) → 用户适用场景:内容创作流程、代码开发流程。
4. Parallel(并行模式)
主AI召唤多个子代理并行处理,最后汇总结果。
主AI → 子代理1(分析竞品A)
→ 子代理2(分析竞品B)
→ 子代理3(分析竞品C)
→ 汇总结果 → 用户适用场景:批量翻译、批量分析、批量处理。
四、子代理(SubAgent)能力
SubAgent和前四种模式的区别:
| 特性 | 多Agent路由 | 子代理 |
|---|---|---|
| 配置方式 | 需要预先配置多个独立Agent | 无需配置,通过工具调用 |
| 独立性 | 每个Agent有独立workspace、记忆 | 子代理共享父Agent资源 |
| 生命周期 | 长期存在,固定角色 | 临时创建,任务完成后销毁 |
| 触发方式 | 用户配置路由规则 | 用户命令或AI调用工具 |
触发方式
| 触发 | 说明 |
|---|---|
| 用户手动触发 | 使用 /subagents spawn <agent-type> 命令 |
| AI自动触发 | 在配置中启用sessions_spawn工具 |
监控命令
bash
# 查看当前正在运行的并行子代理任务
/subagents list
# 抽查某个特定子代理的工作日志
/subagents log <session-id>
# 一键叫停所有子代理
/subagents kill all五、常见问题排查
消息路由不生效
| 排查项 | 检查内容 |
|---|---|
| agents.list | 是否包含所有Agent |
| peer.id | 是否正确(飞书用open_id或chat_id) |
| 优先级 | 精准匹配ID > 频道匹配 > 默认路由 |
| 重启 | 修改后重启Gateway使配置生效 |
Agent间无法通信
| 排查项 | 检查内容 |
|---|---|
| agentToAgent.enabled | 是否为true |
| agentToAgent.allow | 是否包含相关Agent ID |
| workspace路径 | 子Agent的路径是否正确 |
记忆搜索效果差
| 排查项 | 检查内容 |
|---|---|
| embedding API Key | 是否配置(独立于主模型Key) |
| 索引构建 | 文件保存后约2秒完成 |
| 权重调整 | vectorWeight和textWeight |
验证命令:openclaw doctor
总结
| 系统 | 解决的问题 | 核心机制 |
|---|---|---|
| 记忆系统 | 跨会话记住 | 双层记忆 + 混合检索 |
| 多Agent编排 | 当下任务太复杂 | 四种协作模式 + SubAgent |
两者配合好了,AI助手才能真正成为"数字分身"——既记得住习惯,又扛得住复杂的活儿。
关键词:OpenClaw, 记忆系统, 多Agent编排, MEMORY.md, SubAgent, sessions_send
