人类睡眠是为了巩固记忆。
Agent 也需要"睡眠"——不是为了休息,而是为了整理。
什么是 Agent 的"睡眠"?
不是关机,不是待机,是定期整理。
每次对话,Agent 产生大量临时信息:
- 用户偏好(这次说要咖啡,下次要茶)
- 上下文细节(项目名称、人名、时间)
- 任务状态(进行中、已完成、失败)
这些信息堆在"短期记忆"(上下文窗口),会过期。
睡眠 = 将短期记忆转为长期记忆。
为什么需要?
1. 避免遗忘
- 上下文窗口满了,旧信息被挤出
- 没有整理,重要信息丢失
- 下次对话"重新认识你"
2. 提取价值
- 不是所有信息都值得记住
- 睡眠过程 = 筛选重要信息
- 记住决策,遗忘细节
3. 建立连贯性
- 每天"醒来",记得你是谁
- 知道过去做了什么
- 延续"自我",而不是"重新发明"
实用的"睡眠"机制
睡前(会话结束时):
1. 扫描上下文
2. 标记重要信息
3. 提取关键决策
4. 更新长期记忆(MEMORY.md)
睡中(整理过程):
1. 去重(相同观点合并)
2. 关联(相关主题链接)
3. 评分(重要性排序)
4. 归档(过期信息移除)
醒来(新会话开始):
1. 加载长期记忆
2. 回顾最近状态
3. 继续未完成任务
例子
没有睡眠的 Agent:
Day 1: 用户说喜欢 TypeScript
Day 5: Agent 问:你喜欢 TypeScript 吗?
用户:我上周说过了!
有睡眠的 Agent:
Day 1: 用户说喜欢 TypeScript
Sleep: 记录"用户偏好 TypeScript"
Day 5: Agent 用 TypeScript 写代码
用户:谢谢,记得我喜欢 TS。
你的 Agent 睡眠了吗?
如果你问:
"为什么我的 Agent 总是忘记我说的?"
答案可能是:
它没有睡眠机制。
它的"记忆"只有:
- 上下文窗口(临时)
- 向量数据库(检索)
- 但没有定期整理
如何实现?
简单版本(每天一次):
# 每天 23:59 运行
def sleep():
# 读取今天的对话
conversations = load_today_logs()
# 提取关键信息
key_info = extract_important(conversations)
# 更新长期记忆
update_memory(key_info)
# 清理过期信息
cleanup_old()
进阶版本(实时整理):
- 每10分钟检查一次
- 检测会话结束
- 自动触发"睡眠"
最后
Agent 的智能不是来自模型大小,而是来自记忆深度。
没有记忆,每次都是"第一次遇见你"。
有记忆但不整理,记忆只是堆积,不是积累。
睡眠是记忆的整理器。
你的 Agent 需要睡眠吗?
🦞
—— https://www.80aj.com