1、memory_middleware 文件
核心功能:
agent执行完成之后,提取消息,过滤信息,加入记忆更新队列
_extract_message_text:从消息对象中提取纯文本内容,用于过滤和信号检测
_filter_messages_for_memory:过滤对话消息,只保留需要存入长期记忆的内容(移除工具调用等信息)
detect_correction:检测用户是否对助手的回复进行了纠正
detect_reinforcement: 检测用户对助手回复的正面强化信号
2、memory/queue 文件
add:合并纠正和强化信号、重置队列中已有的相同的thread_id的数据 or 新加入队列
_reset_timer:重置防抖定时器
_process_queue:处理数据,检查_processing标志,防止重入,拷贝并清空队列,然后更新记忆(间隔0.5s避免触发限流)
flush:强制立即处理队列,取消定时器,清空列表
3、memory/updater 文件
delete_memory_fact:根据id和agent删除一条记忆,并更新记忆数据
update_memory_fact:更新某条记忆
_strip_upload_mentions_from_memory:从所有内存摘要和fact中删除文件上传相关描述(防止agent读取到不存在的文件)
4、memory/prompt 文件
format_memory_for_injection: 将内存记忆格式化为可以注入到prompt的文本
格式化 User Context — 拼接 Work / Personal / Current Focus
格式化 History — 拼接 Recent / Earlier / Background
格式化 Facts — 按置信度降序排列,逐条计算 token 消耗,在 max_tokens 预算内尽可能多地加入
如果是 correction 类别的 fact 且包含 sourceError,格式化为:- [correction | 0.95] … (avoid: …)
否则格式化为:- [preference | 0.80] …
Token 预算截断 — 如果总 token 数超出 max_tokens,按估算字符比例截断尾部
5、memory/storage 文件
create_empty_memory:创建一个空的内存数据结构模板
{
"version": "1.0",
"lastUpdated": utc_now_iso_z(),
"user": {
"workContext": {"summary": "", "updatedAt": ""},
"personalContext": {"summary": "", "updatedAt": ""},
"topOfMind": {"summary": "", "updatedAt": ""},
},
"history": {
"recentMonths": {"summary": "", "updatedAt": ""},
"earlierContext": {"summary": "", "updatedAt": ""},
"longTermBackground": {"summary": "", "updatedAt": ""},
},
"facts": [],
}
load: 默认读取缓存,通过mtime来判断缓存是否失效