主题
2.6 记忆管理与 Agent Skills:短期遗忘、长期记忆与技能包扩展
会议结束后,把结论写进纪要,下次就不必从头讨论;经常重复的工作,则可以整理成操作手册。智能体的记忆管理与技能文件分别承担类似职责:前者保存和取回信息,后者组织可复用的任务方法。
人类心理学三大记忆 与 AI Agent 记忆映射
可以借用人类记忆的分类来理解智能体保存的信息,但具体系统未必按同一方式实现:
上图按内容区分情景、语义与程序性信息;下面按保存与加载方式继续讨论。这里的“中期记忆”是一种教学划分,不是所有框架通用的标准。
记多久?短期、中期、长期记忆(时间尺度大比较)
| 记忆层级 | 生活比喻 | 工程实现机制 | 特点 |
|---|---|---|---|
| 短期记忆 | 随手记的便利贴 | 上下文窗口 + 滑动窗口 | 容量有限、响应最快、聊完即忘 |
| 中期记忆 | 项目会议纪要本 | 对话智能摘要压缩 | 跨会话保留关键结论,减少上下文占用,可能丢失细节 |
| 长期记忆 | 个人档案柜 / 户口本 | 持久化数据库 + RAG 检索 | 按保留策略持久保存,通过检索加载 |
- 短期记忆(Short-term / 便利贴):就是当前这一轮对话的上下文窗口。它的容量有限(如 128K Token),写满后最早的内容会被“撕掉”,只留最近几轮的关键对话——快,但易失。
- 中期记忆(Mid-term / 会议纪要):当对话太长时,系统会把前面几十轮讨论浓缩成一段摘要存进上下文,相当于把便利贴整理成一份会议纪要——既省空间,又不会失忆。
- 长期记忆(Long-term / 档案柜):用户的偏好、项目的表结构、历史踩坑记录,按应用策略存入数据库,开启全新对话也能唤醒——能否正确取回仍取决于检索与更新策略。
🔀 三者的关系就像人类整理笔记:便利贴(短期)→ 整理成会议纪要(中期)→ 归档进档案柜(长期)。工程落地上,正好一一对应下面三个核心机制:
记忆管理的三大工程落地机制
1. 短期工作记忆与滑动窗口(便签本截断)
- 窗口大小有限(例如 128k Token)。随着对话不断进行,最早说的闲聊内容就像便签本写满了被撕掉一样,只保留最近几轮最新的关键对话。
2. 对话智能摘要压缩(Conversation Compaction)
- 当上下文接近容量限制时,可以把较早的讨论整理为摘要。摘要节省空间,但会丢失部分细节,应保留关键决定、原始资料位置和未完成事项。
3. 长期记忆持久化(个人档案袋)
- 将用户的个性化偏好(如“我不喜欢用驼峰命名”、“我的测试服务器 IP 是 xxx”)存入持久化数据库,并按需要设置加密、权限和保留期(如 Letta / 原 MemGPT),下次哪怕开启全新对话,也能唤醒。
🔧 记忆保存的是过去的信息;Agent Skills 保存的是完成某类任务的步骤、规范和资源。两者可以配合使用,但解决的问题并不相同。
什么是 Agent Skills(智能体技能包体系)?
Agent Skill(技能) 就是把某个特定专业任务的规章制度、执行脚本、模板和工具打包成一个可插拔的模块:
Skills 与 普通 Prompt:为什么不用一大段提示词硬怼?
| 对比维度 | 普通提示词(Prompt) | Agent Skill(技能包) |
|---|---|---|
| 生活比喻 | 现场口头交代一遍流程 | 给一本《岗位操作手册》+ 配套工具 |
| 复用性 | 每次都要重写 / 复制粘贴 | 一次写好,随时按需加载 |
| 规范性 | 全凭这次写得够不够细 | 保存明确步骤,执行效果仍需验证 |
| 扩展性 | 提示词越长越容易“迷失在中间” | 模块化加载,按需加载相关内容 |
| 可维护性 | 改一处要牵动一大段 | 独立更新,互不影响 |
一个真实的 SKILL.md 长什么样?(以“代码审查”技能为例)
markdown
---
name: code-review
description: 对本次代码改动进行系统性审查,输出分级问题清单
---
# 代码审查 操作流程
1. 读取 git diff,定位本次改动范围;
2. 逐文件检查:逻辑正确性、边界条件、安全隐患、性能问题;
3. 每个问题标注严重等级:🔴 阻断 / 🟡 建议 / 🟢 可选;
4. 输出 Markdown 审查报告,按严重程度排序。
# 审查清单
- [ ] 是否有未处理的 None / 空指针判断
- [ ] 是否硬编码了密钥或敏感信息
- [ ] 是否缺少异常捕获💡 这份文件就是"元数据(何时用)+ 操作流程(怎么干)+ 脚本/模板(用什么干)"三位一体的技能包,Agent 一读就能照章办事。
Skills 与 MCP:别搞混了。两者分工完全不同
| 对比项 | Agent Skills | MCP(2.7 章详解) |
|---|---|---|
| 本质 | 教 Agent “怎么做”(操作流程 + 脚本) | 给 Agent “能调什么”(外部工具接口) |
| 比喻 | 岗位操作手册 | 万能插座 / 外部设备接口 |
| 作用 | 提升“做事规范性” | 扩展“能力边界” |
| 典型内容 | SKILL.md + 脚本 + 模板 | 服务器、工具、资源、提示词 |
🧩 两者互补:Skills 决定“如何执行任务”,MCP 决定“能摸到哪些外部资源”。
如何编写自己的第一个 Skill(4 步走)
- 选任务:找一件你反复让 AI 做、且步骤固定的活(如“写周报”“跑测试”“发布部署”);
- 写 SKILL.md:按上面的模板写下“何时触发 + 怎么干 + 交付什么”;
- 配脚本与模板:把重复的执行脚本(Python / Bash)和输出模板一并放进去;
- 挂载并验证:放进 Agent 的技能目录(如 Claude Code 的
.claude/skills/),让 AI 调用,再根据效果迭代优化。
🎯 一句话总结:Prompt 是一次性交代,Skill 是沉淀下来的“岗位说明书”——技能包攒得越多,你的 Agent 就越像一位经验丰富的“老师傅”。
一条记忆要怎样保存才有用
“用户喜欢简洁”太宽泛。更有用的记录是:“项目说明默认使用中文,操作步骤可列清单;这一偏好来自用户在某次文档任务中的明确要求。”保存时注明适用范围、来源和更新时间,之后才能判断它是否仍然有效。
| 记录内容 | 需要补充的上下文 | 更新方式 |
|---|---|---|
| 用户偏好 | 适用于哪类任务,是否明确表达 | 用户改变要求后更新 |
| 项目决定 | 决定原因、相关文件与版本 | 代码或规格变化后复核 |
| 故障经验 | 现象、适用环境和验证过的修复 | 环境升级后重新确认 |
| 临时任务状态 | 已完成、未完成与阻塞项 | 随任务推进修改或清理 |
保存越多,不一定记得越好。过期信息会干扰新的判断;涉及个人信息时,还要有删除与保留规则。已经移除的内容不应继续残留在摘要和检索索引中。
摘要不应覆盖原始事实
例如一段讨论先尝试本地存储,后来决定改用服务端保存。如果摘要只留下“已讨论数据保存”,下一轮就无法知道最后采用了什么方案。
较好的摘要会区分:当前采用服务端接口;本地存储方案已放弃;接口修改完成但刷新测试未执行。重要证据保留文件路径或记录编号,需要时再读取原文。
技能文件不会直接训练模型
Agent Skills 规范描述的是指令与配套资源的组织方式。加载一个技能,通常是让应用把相关说明提供给模型,而不是修改模型权重。技能要求使用某个工具,也不代表当前环境已经安装或授权该工具。
技能应说明适用条件、输入要求、处理步骤、输出格式和停止条件。例如代码审查技能可以要求每个问题附文件位置与触发条件,但不应承诺发现所有漏洞。
怎样验证技能真的有帮助
准备两三份代表性输入,分别检查正常任务、缺少资料和不适用任务。一个审查技能遇到没有修改差异的项目,应说明缺少审查对象;而不是为了交付报告编出问题。
如果每次都需要临时补充同一个说明,把它整理进技能;如果某条规则只适用于一个项目,就放在项目规则中。这样可以避免通用技能夹带与其他项目不相容的约束。
相关权威技术与官方平台
- Letta (原 MemGPT) 官方开源仓库 —— 专为 LLM 打造的持久化内存与状态操作系统
- LangChain 官方 Memory 模块文档
- Anthropic 官方 Agent Skills 文档 —— 技能包规范与最佳实践
- Anthropic Building Effective Agents 研究报告