OpenClaw改造WorkBuddy:AI Agent长期记忆实战记录
时间:2026-06-01 22:39
摘要:本文记录了如何将WorkBuddy(一款AI编程助手)接入OpenClaw开源Agent框架,并为其搭建长期记忆系统的完整过程。内容包括:为何需要记忆、踩过的坑、具体实现方案以及最终效果。如果你正在从事Agent框架的二次开发,这份实战记录将帮助你避开多个常见问题。 **为什么需要为Agent
摘要:本文记录了如何将WorkBuddy(一款AI编程助手)接入OpenClaw开源Agent框架,并为其搭建长期记忆系统的完整过程。内容包括:为何需要记忆、踩过的坑、具体实现方案以及最终效果。如果你正在从事Agent框架的二次开发,这份实战记录将帮助你避开多个常见问题。
**为什么需要为Agent构建长期记忆?**
本次改造的AI助手名为WorkBuddy,其日常任务包括编写代码、修复Bug、整理文档。使用一段时间后,发现一个核心痛点:每次开启新对话,它都像失忆一般,完全忘记之前的交流内容。
举个例子:上周花了整整一个下午,帮它梳理了一个Python项目中数据处理模块的重构方案,详细解释了业务逻辑、依赖关系以及设计约束。然而本周再次打开同一项目的新对话时,它又变得一无所知,需要重新交代项目背景和之前的设计决策。
坦率地说,这种体验非常低效。助手本身能力是够用的,但每次都要从头“灌输”上下文,就好像一个技术很棒但从不做笔记的同事,合作起来十分疲惫。当时唯一的念头就是:必须找到一种机制让它记住信息,否则每次对话都在重复劳动。
目前主流的记忆方案主要有两种:
1. **RAG(检索增强生成)**:将历史对话存入向量数据库,对话时通过检索召回。但问题在于检索精度不够稳定,经常返回一堆不相关的碎片。
2. **长上下文模型**:直接将整个历史塞入上下文窗口。不仅成本较高,且窗口长度终有上限。
本次希望尝试的是第三种路径:基于OpenClaw框架,为WorkBuddy构建一套结构化记忆系统。目标并非让它“记住所有事情”,而是使其能够在跨会话场景下明确“我是谁、当前任务是什么、之前做过什么决策”。

---
**OpenClaw是什么,为什么选择它?**
OpenClaw是腾讯云开源的一款AI Agent框架,其核心设计理念是“可插拔”。Agent的能力并非固定写死,而是通过Skill(技能包)动态加载,想增加什么功能就添加对应的Skill,无需修改框架本身。
选择OpenClaw主要基于以下几点实际对比:
| 对比维度 | LangChain | AutoGPT | OpenClaw |
|---|---|---|---|
| 上手难度 | 中等 | 高 | 低(拥有完整中文文档) |
| 技能扩展方式 | Chain拼接 | 插件系统 | Skill包(即插即用) |
| 腾讯云集成 | 需自行对接 | 需自行对接 | 原生支持 |
| 本地部署 | 支持 | 支持 | 支持,且足够轻量 |
最关键的一点在于,OpenClaw的Skill机制天然适合构建记忆模块。可以编写一个`memory-skill`,将所有记忆读写逻辑封装进去,并让Agent在每次对话开始时自动加载这份记忆。

---
**改造过程:从零搭建记忆系统**
**第一步:分析WorkBuddy的现有架构**
WorkBuddy本身是基于Claude Code的AI编程助手。记忆相关文件集中在项目的`.workbuddy/`目录下,结构大致如下:
```
.workbuddy/
├── memory/
│ ├── MEMORY.md ← 长期记忆(手动维护)
│ └── YYYY-MM-DD.md ← 每日记忆(自动追加)
├── SOUL.md ← 人格定义
└── IDENTITY.md ← 身份信息
```
问题在于:记忆文件确实存在,但Agent不会主动、系统性地使用它们——它依赖用户在提示词中硬编码读取规则,而非真正“记住”信息。
**第二步:设计记忆系统的三层结构**
参考OpenClaw的Skill设计模式,我们搭建了一个三层记忆结构:
```
记忆系统架构
├── 短期记忆(会话内) → 直接存在于上下文,会话结束即丢弃
├── 工作记忆(近期) → 每日记忆文件(YYYY-MM-DD.md),自动追加
└── 长期记忆(跨项目) → MEMORY.md + 向量检索(可选增强)
```
核心思路非常清晰:不是让Agent记住所有事,而是让它知道在需要信息时,该去哪里查找。
**第三步:用OpenClaw Skill机制实现**
编写了一个`workbuddy-memory` Skill,核心逻辑分为两个阶段:
**加载阶段(每次对话开始时执行):**
1. 读取MEMORY.md,提取用户偏好、项目约定、技术决策
2. 读取今日记忆文件,了解当天已处理的任务
3. 如果今日文件不存在,自动创建它
**写入阶段(每次有实质性工作时执行):**
1. 用LLM判断当前工作是否值得记录(并非所有对话都值得写入)
2. 追加写入今日记忆文件
3. 如果发现跨项目的通用经验,提示用户是否要更新MEMORY.md
(代码部分省略,详见完整版文档)
这套逻辑封装成一个OpenClaw Skill,然后在WorkBuddy的系统提示词里添加一条指令:
> “每次开始对话时,先调用workbuddy-memory Skill加载记忆,并在回复中隐性使用这些信息。”

---
**实际效果:到底有没有用?**
坦率地说,改造完成后的第一感受是:能用便是进步。它不会让你觉得“Agent忽然变聪明了”,但至少不用每次都从头“喂”上下文。
**效果明显的部分**
**场景一:项目约定能被记住了**
- 之前:每次新对话都要重新告诉Agent“这个项目用Python 3.11,依赖管理用poetry”
- 之后:Agent从MEMORY.md里读到这条,主动使用poetry而非pip
**场景二:设计决策具有延续性**
- 之前:上周决定“用Redis做缓存层”,这周Agent可能建议改用Memcached
- 之后:MEMORY.md记录了技术决策及其原因,新的建议会基于已有决策
**目前还不够好的部分**
**问题一:记忆文件需要手动维护质量**
MEMORY.md并非“写了就完事”。随着使用,里面会积累过期信息、重复内容以及不再适用的决策。定期整理是必要的,但目前尚无自动化工具。
**问题二:Agent有时会“过度引用”记忆**
例如MEMORY.md记录了“用户偏好简洁回复”,结果Agent连本应详细解释的技术概念也一言带过——记忆反而形成了束缚。
**问题三:多项目场景下的记忆隔离**
目前所有项目共享同一套记忆文件结构,但不同项目的上下文本应隔离。这个问题尚未找到理想的解决方案。

---
**踩过的坑**
最令人头疼的一个:记忆注入方式最初搞错了。
最开始的做法非常天真——直接把记忆文件内容拼接到系统提示词里。听起来没问题,但一运行就发现问题:记忆内容一多,上下文窗口被大量占用,Agent的回复质量反而下降。本想让它“变得更聪明”,结果它变得更笨。
折腾了两三天,最终改成了“索引式注入”。系统提示词里只保留记忆的索引和摘要,具体内容按需读取。这基本就是操作系统的虚拟内存管理思路——不是把硬盘全部塞入内存,而是按需换页。
还有两个小坑顺便提一下:
- Agent每次有实质性工作就追加记忆,导致同一件事在每日文件中反复出现。后来加上了写入前的去重判断,虽然多花一次LLM调用,但效果值得。
- OpenClaw Skill中Python代码出错时,错误信息被框架吞掉,只显示一个干巴巴的“Skill execution failed”。排查起来非常困难,最后自己在Skill里增加了日志输出到固定文件。
---
**下一步计划**
目前这个记忆系统还处于“能用”阶段,距离“好用”有相当距离。接下来计划着手以下几件事:
1. **自动记忆整理**:定期使用LLM对MEMORY.md进行去重和结构化整理,类似“记忆压缩”机制
2. **多项目记忆隔离**:为每个项目创建独立的记忆空间,同时在更高层级维护跨项目的通用记忆
3. **记忆质量评分**:为每条记忆打上“新鲜度”和“重要性”标签,对话时优先加载高分记忆
如果你也在做Agent记忆相关的改造,或者想用OpenClaw进行二次开发,欢迎在评论区交流。新事物不断涌现,我们仍在探索的路上。
---
**参考资料**
- OpenClaw官网
- OpenClaw GitHub仓库
- WorkBuddy项目
- 腾讯云开发者社区 - AI Agent相关专题
来源:https://cloud.tencent.com.cn/developer/article/2679876
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。