nanobot 记忆系统与 Dream

上级索引:00-概览与索引 | 上一篇:01-工具系统 | 下一篇:03-MCP集成

🧠 双层记忆架构

nanobot 采用两层记忆设计,解决 LLM 上下文窗口有限的问题:

层次存储位置生命周期特点
短期(Session)sessions/*.jsonl按 session 隔离完整对话记录,JSONL 格式,支持压缩
长期(Memory)memory/MEMORY.md跨 session 持久蒸馏后的结构化知识,Markdown 格式

每日记忆日志存放在 memory/YYYY-MM-DD.md,作为原始记录;MEMORY.md 是经过整合的精华版本。

💤 Dream 机制

Dream 是 nanobot 的周期性记忆整合任务,类比人类睡眠中大脑对白天记忆的巩固过程。

工作流程

近期 Session 历史
  ↓ Dream 任务触发
提取关键信息(决策、知识、偏好、事件)
  ↓
去重、整合、结构化
  ↓
写入 MEMORY.md(长期记忆)
  ↓
可选:清理/压缩旧 Session 文件

触发方式

Dream 作为后台任务在 Gateway 模式下自动运行,也可手动触发:

bash
# 在对话中直接触发
"请帮我整理最近的对话,更新长期记忆"

📁 文件结构

workspace/
├── MEMORY.md              # 长期记忆(手动维护 + Dream 自动更新)
├── memory/
│   ├── YYYY-MM-DD.md      # 每日原始记忆日志
│   ├── history.jsonl      # 历史整合源数据
│   └── heartbeat-state.json  # 心跳检查状态追踪
└── sessions/
    ├── <session-key>.jsonl   # 各 session 的完整对话历史
    └── ...

✍️ MEMORY.md 结构建议

markdown
# MEMORY.md - 长期记忆
 
## 用户关键信息
- 姓名、时区、偏好...
 
## 正在进行的项目
- 项目A:...
 
## 重要决策记录
- 2026-07-28:决定使用 nanobot 替换 xxx
 
## 学到的知识
- ...

🔍 记忆检索

nanobot 在构建 context 时会自动从 MEMORY.md 检索相关内容注入到提示词中。也支持通过 memory_search 工具主动检索历史信息。

⚠️ 注意事项

  • MEMORY.md 会随每次 Dream 自动更新,建议定期备份
  • Session 文件较大时会触发自动压缩,保留摘要
  • 多实例运行时,每个实例有独立的 workspace,记忆互不干扰

📝 实践记录

{{待填:Dream 触发的实际效果、记忆质量观察}}


🔗 延伸阅读