
本地AI Agent如何记住你Atomic Agent记忆系统与Memory Fabric设计完整指南【免费下载链接】atomic-agentAtomic Agent is a local-first AI agent. Runs open-weight models on your own machine via llama.cpp.项目地址: https://gitcode.com/gh_mirrors/at/atomic-agentAtomic Agent 是一个运行在本地机器上的开源 AI Agent本地AI Agent通过 llama.cpp 驱动开放权重模型无需依赖云端 API。它最值得关注的亮点之一是内置的记忆系统Memory System——基于 Memory Fabric 架构让 AI Agent 在跨会话、跨重启后依然记得你的偏好、踩过的坑和沉淀下来的经验。本文将用通俗的方式带你看懂它的核心设计三种记忆通道、自动反思写入、以及记忆永不膨胀的防呆机制。为什么本地 AI Agent 需要记忆普通聊天机器人每次对话都是失忆的你上周告诉它我们只用make ship部署这周它又忘了。Atomic Agent 的解决方案是把记忆做成一个本地、有界、可检查的存储而不是简单地把聊天记录塞进提示词。根据官方设计文档 MEMORY_GUIDE.md 的概括记忆系统要做到五件事跨会话存活进程重启后记忆仍在零工具调用即可召回热数据自动注入提示词模型不用翻找写记忆不破坏 KV-cache稳定提示词前缀永不因记忆写入而失效自动形成用户无需手工维护画像规模有界SQLite 文件和提示词尾部都不会无限膨胀记忆布Memory Fabric总览5 种记忆 2 个自动写入者整个记忆系统只落在一个本地 SQLite 文件里默认~/.atomic-agent/memory.sqlite共包含 5 种记忆类型类型是什么谁来写如何回到对话Profile facts关于你的短键值事实姓名、语言、部署命令memory.profile.set工具 反思每次提示词自动注入### profile区块Notes自由文本笔记支持关键词全文检索memory.notes.store工具 反思top-3### recalled命中 ### memory-index指针Links笔记之间的类型化关联边如由…导致反思后的自动 LLM 子调用召回时沿图扩展邻居笔记Lessons从一批相关笔记中蒸馏出的可复用原则后台整合器Consolidator### lessons指针行Procedures建议式操作手册模板只读不会自动执行后台整合器### procedures指针行两个自动写入者承担了大部分工作反思Reflection每轮对话结束后的一次小 LLM 调用从上一轮问答中提取值得长期记住的事实和笔记整合器Consolidator每 6 小时跑一次的后台任务把反复出现的相关笔记蒸馏成教训和操作步骤。你完全可以不做任何手工维护——当然直接说记住这个也始终有效。核心三通道Profile、Notes 与 Reflection早期设计v1是三个共享同一个 SQLite 文件的独立通道架构总览见 MEMORY.md① ProfileStore —— 你的身份档案每条事实是一个(key, value, pinned, keywords)结构例如languagede、deploy_commandmake ship。关键设计是pinned 与 contextual 两种模式pinned置顶事实身份级信息数量少每次提示词都会注入contextual上下文事实话题级的只有当你的消息命中它配置的关键词时才出现。举个例子deploy_command配置了关键词deploy, ship, release——你聊天气时它不会占用提示词空间而你一说该部署了它立刻出现在提示词里。这大幅节省了 Token 预算。② MemoryStore —— 自由笔记 FTS5 全文检索笔记是自由段落单条上限 4000 字符带标签基于 SQLite 的 FTS5/BM25 做关键词检索刻意不用向量嵌入保持本地轻量。它通过两条读路径回到对话### recalled对当前消息做 BM25 检索自动注入 top-3 笔记默认 160 字符预览### memory-index最近更新的 20 条笔记以#id [tags] 预览的指针形式列出模型需要全文时再用memory.notes.recall { id }按需拉取。这种指针优先、正文按需的设计是本地小模型也能用得起长记忆的关键。③ Reflection —— 每轮自动反思每轮runTurn结束后运行时会发起一次发后即忘的小 LLM 调用你的回复从不等待它让模型从刚才的对话里输出SET nameLena SET deploy_commandmake ship [pinnedfalse; keywordsdeploy,ship] NOTE staging 部署需要先设置 FLYWAY_BASELINE1 [tagsstaging,flyway] NONESET行写入 ProfileStore每轮最多 3 条NOTE行写入 MemoryStore每轮最多 2 条NONE表示没什么值得记的实现见 src/memory/reflection/reflection-runner.ts。一个精妙细节反思运行在独立的 llama-server 槽位上绝不动主对话的 KV-cache所以本地推理的性能不受影响。输出还受 GBNF 文法约束见 src/memory/reflection/reflection-grammar.ts保证小模型也能产出结构化结果。一个真实场景记忆如何救场官方文档 MEMORY_GUIDE.md 里有个很好的例子第 1 周你和 Agent 一起排查 staging 环境部署失败最后发现是手动基线化过数据库迁移必须带FLYWAY_BASELINE1。这条笔记被存为#17 [staging, flyway]。第 2 周你只说了一句staging 又红了好像是 flyway 校验和的问题。在模型回答之前运行时已经用这句话做了全文检索笔记#17高分命中并被注入提示词——第一条回复就能直接给出答案而不是重新调试一遍。后台蒸馏从笔记到教训反复出现的经验不该一直散落在笔记里。整合器Consolidator每 6 小时醒来一次找那些超过 24 小时没动、且尚未归档的笔记通过 Link 关系图和共享标签聚类小于 3 条的簇跳过每个簇一次 LLM 调用蒸馏出一条Lesson一句话触发条件 更长原则和可选的Procedure有序步骤模板源笔记被归档——不再出现在提示词索引里但保留可溯源的父笔记 ID。比如三条关于 Playwright 选择器抖动的笔记会被蒸馏成当 Playwright 点击不稳定时优先使用基于 role 的定位器。从此只要对话涉及这个话题一行指针就会出现在提示词中。实现位于 src/memory/consolidator/设计文档见 MEMORY_FABRIC_V2.md。五层防膨胀机制记忆为什么不会撑爆每轮都自动写入记忆库岂不是会无限变大设计上有五道防线见 MEMORY.md 第 9 节单次写入上限反思每轮最多写 3 条事实 2 条笔记硬容量 淘汰笔记上限 1000 条溢出时淘汰最旧v2 已升级为按效用加权淘汰提示词尾部 Token 上限### profile≤ 512、### recalled≤ 400、### memory-index≤ 300 tokens上下文门控非置顶事实只在关键词命中时才注入LLM 自律反思提示词明确要求跳过琐事没什么可记就输出NONE。最坏情况下整个记忆库约 80 KB提示词尾部最多增加约 1200 tokens——无论你存了多少条记忆。检查与管理一切都在本地TUI 记忆面板聊天框输入/memory即可打开只读浏览器六个通道profile / notes / lessons / procedures / votes / links随便翻j/k移动、Enter看详情、g展开笔记的链接邻域直接问问一句你都记得关于我的什么即可触发画像列举和笔记搜索sqlite3 直查memory.sqlite是普通 SQLite 文件想看什么查什么选择性遗忘在配置 src/config/config-schema.ts 里每个memory.*开关都能单独关掉某一层删除整个memory.sqlite则一次性清空记忆聊天记录不受影响。值得一提的是这套记忆系统是 Atomic Agent 整体能力的一部分——如图中的 GAIA Level 1 基准测试结果所示本地推理 记忆沉淀的组合让它在真实任务上表现强劲评测脚本见 eval-agents/。v2.5 进阶更聪明的检索与更省事的反思在 v2 基础上v2.5 增加了三个可选能力设计文档 MEMORY_FABRIC_V2.5.md源码集中在 src/memory/retrieve/ 与反思路径能力解决的问题开关查询重写Phase A那那边呢这类短句指代词导致 BM25 检索失效——启用历史轮次把短追问扩写成完整查询memory.retrieve.rewriter.enabled默认开滑动窗口反思分段Phase B每轮都反思太贵——改为每 N 轮打包最近 M 轮对话统一反思反思调用量可降 60% 以上memory.reflection.segmentation.enabled类型化笔记Phase C无类型标签让聚类变噪——NOTE行可带[typeevent/behavior/knowledge/skill]按类型过滤召回memory.reflection.typedNotes.enabled此外v2 还引入了Vote 投票机制memory.voting.*每轮后的小调用会对被召回的记忆投有用/没用票被大量贬票的事实即使置顶也会停止渲染——记忆系统具备了自我清洁能力。小结这套设计给本地 Agent 记忆带来了什么Atomic Agent 的 Memory Fabric 给出了一套工程化而非堆模型的本地记忆方案单一 SQLite 文件承载 5 种记忆透明、可查、可删数据不出本机指针优先 按需拉取 上下文门控让提示词尾部 Token 恒定有界KV-cache 永不被记忆写入破坏反思 整合器双写入者实现聊着聊着就学会了且教训可溯源、可被投票淘汰五层防膨胀 投票清洁记忆库规模严格有界小模型也跑得动。如果你想动手体验阅读顺序推荐MEMORY_GUIDE.md使用向→ MEMORY.mdv1 架构→ MEMORY_FABRIC_V2.md设计动因→ 源码目录 src/memory/实现细节。【免费下载链接】atomic-agentAtomic Agent is a local-first AI agent. Runs open-weight models on your own machine via llama.cpp.项目地址: https://gitcode.com/gh_mirrors/at/atomic-agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考