睡眠学习与离线整合
“睡眠学习”指什么?
- 定义: 对离线整合的认知类比;
- 澄清: 并不要求任务真的在夜间运行;
- 在线职责: 在线 Agent 的首要职责是完成当前任务并追加不可变证据;
- 后台职责: 后台学习进程在空闲期或满足门控条件时读取一批新经历,比较新旧结论、合并重复项、解决冲突、提出更新提案并运行回归;
为什么采集与整理必须分开?
- 好处一: 防止一次偶发成功、网络故障或恶意输入立刻改写长期能力;
- 好处二: 允许系统使用更大的批量和更便宜的模型完成整理;
- 与知识提炼的关系: 这与“先保存证据、再离线生成知识”的两阶段设计同源(见将经验沉淀为知识);
一个睡眠学习周期包含哪五步?
| 步 | 名称 | 内容 |
|---|---|---|
| 1 | 触发 | 达到时间间隔、新增轨迹数量、存储容量或错误频率门槛,并确认当前没有高优先级在线任务 |
| 2 | 定向 | 读取正式知识、Prompt、Skill 目录及其版本,了解已有能力和不可修改边界 |
| 3 | 采集与整合 | 从近期已评价轨迹中寻找新信号,合并重复内容,标记冲突与适用条件,优先生成局部补丁 |
| 4 | 验证与审批 | 在迁移集、保留集和安全集上评估待验证版本,高风险写入等待人工批准 |
| 5 | 修剪与索引 | 更新检索索引,把长期不用或被新证据推翻的能力标记为过期,或归档、删除,同时保留来源和回滚版本 |
睡眠学习会处理哪些载体?
- 用户记忆: 最直观的例子,但要与行动经验区分——记忆沉淀“用户与世界是什么样的”,经验学习沉淀“在什么条件下应该怎样行动”;
- 知识、Prompt 与 Skill: 都可以成为整合对象;
- 程序与参数: 更新同样先进入待验证区,再经审批发布;
Claude Code 的自动记忆说明了什么?
- 结构: 为每个项目维护
MEMORY.md索引和按主题拆分的详细文件; - 加载: 会话启动只加载索引的有界前缀,其余内容按需读取;
- 容量约束: 当索引接近上限时,系统要求 Agent 合并或移走细节;
- 结论: 纯文本记忆也需要容量约束、分层加载和主动整理;
- 边界: 当前公开机制主要是在会话中持续写入,并不能简单等同于一个固定的夜间后台任务;
Hermes 的后台记忆进化有哪些组成部分?
| 组成 | 说明 |
|---|---|
| 有界长期信息 | MEMORY.md 与 USER.md |
| 历史会话检索 | 基于 SQLite / FTS5 |
| Skill | 按需加载 |
| 外部记忆 | Honcho 等可选提供者 |
- 关键设计: 历史检索返回原始消息而非先由 LLM 摘要,避免把检索和生成混成一个不可审计步骤;
后台复盘在什么条件下创建或修订 Skill?
- 触发条件: 一次任务包含较多工具调用、从错误或死路中恢复、收到用户纠正,或发现非显而易见的工作流;
- 产物: 后台复盘可以创建或局部修订 Skill;
- 门控: 记忆和 Skill 写入还可以经过审批门控;
- 清理: 独立的 Curator 跟踪 Skill 的使用、陈旧和归档状态,在空闲期执行确定性修剪,并可选择运行 LLM 合并;
- 可回滚: 变更前保存快照,错误整理可以回滚;
持续进化为什么会遇到上下文腐化?
- 机制: 上下文腐化会在更长时间尺度上重现;
- 表现一: 经验文档相互冲突;
- 表现二: Prompt 被边界规则淹没;
- 表现三: Skill 库出现重复能力;
- 表现四: 多次微调造成灾难性遗忘;
周期性离线整理包含哪些动作?
- 合并重复经验,保留来源和版本;
- 把局部规则从全局 Prompt 移动到领域 Skill,保持全局 Prompt 整洁;
- Prompt 和 Skill 保持结构清晰;
- 重新验证长期未使用的工具;
- 删除被新证据推翻的知识;
- 从原始基座模型重新训练 LoRA;
- 目标: 持续进化不是让知识、Prompt 和工具无限增长;