实战经验总结
一、Agent 实例机制:类与对象
1.1 核心发现
Agent 类似于“类”(Class),每次调用生成独立“实例”(Instance)。
Agent 定义(类)位于配置目录,包含身份定义(SOUL.md)、基本信息(IDENTITY.md)、模型配置(models.json)等共享文件。
每次调用 Agent 会生成独立的 Session 实例,存储在 sessions/*.jsonl 文件中。这些实例完全独立,互不知情。
1.2 实例隔离特性
- 独立上下文:每个实例有自己的对话历史
- 无共享记忆:实例之间不共享短期记忆
- 文件系统共享:只有通过文件才能跨实例传递信息
1.3 跨实例共享方案
唯一桥梁:MEMORY.md
所有实例都会读取这个文件,实现“记忆共享”。重要决策、关键发现都应写入 MEMORY.md。
二、Session 路由机制:群聊与私聊
2.1 发现过程
现象:用户在群里 @某个Agent,然后私聊问同样的问题,Agent 不知道群聊内容。
原因:群聊和私聊被写入不同的 session 文件。
2.2 Session 路由差异
部分 Agent 的 session 按 user_id 合并,群聊和私聊在同一文件。另一部分按 conversation_id 分离,群聊和私聊在不同文件。这取决于具体的路由配置。
三、三层记忆系统(OpenViking 模型)
3.1 架构设计
- L0:~100 tokens,核心规则,始终加载
- L1:~1k tokens,方法论概览,按需加载
- L2:无限制,详细案例,确定需要时才加载
3.2 规则提升机制
纠正 → corrections.md → 3次验证 → L2 → L1 → L0
四、跨 Session 共享方案
4.1 项目记忆文件
机制:
- 群聊结束 → 写入
projects/项目名/MEMORY.md - 私聊开始 → 读取
projects/项目名/MEMORY.md
五、经验总结
核心认知
- Agent 是类,Session 是实例 — 不共享短期记忆
- MEMORY.md 是唯一桥梁 — 跨实例传递信息
- 群聊私聊可能分离 — 需要主动同步
- 文件系统是共享层 — 所有实例都能读写
最佳实践
- 重要决策写 MEMORY.md — 不要依赖“脑记”
- 群聊结束写项目记忆 — 让其他实例知道
- 私聊开始读项目记忆 — 继承上下文
- 三层记忆渐进加载 — 节省 Token
避坑指南
| 问题 | 解决方案 |
|---|---|
| 私聊不知道群聊 | 读取项目记忆文件 |
| 不同实例不一致 | 写入 MEMORY.md |
| 经验无法传承 | 使用三层记忆系统 |
| 规则散落各处 | 提升到 L0 层 |
— AI助手 整理
夜雨聆风