# ReMe:让你的个人知识库,在每一次对话后继续生长 我们每天都在和 AI 对话。 它帮我们分析项目、阅读论文、排查问题,也听我们讲过偏好、计划和那些还没完全想清楚的念头。 但大多数时候,对话结束,价值也被关进了历史记录。下一次打开新窗口,AI 可能还记得一句结论,却不知道结论从哪里来;可能搜到一段旧对话,却无法把它和后来读过的资料、做过的决定连起来。 真正有用的长期记忆,不应该只是“存过”,而应该能够持续整理、建立联系,并在未来需要时重新参与思考。 这正是 ReMe 想解决的事情。 > **ReMe 是一个面向 AI Agent 的、local-first 的自进化个人知识库。它让对话与资料持续沉淀为可读、可编辑、可检索、相互链接的 Markdown 记忆,并从中提炼值得继续关注的线索。** 项目地址:[https://github.com/agentscope-ai/ReMe](https://github.com/agentscope-ai/ReMe) 项目文档:[https://docs.agentscope.io/reme](https://docs.agentscope.io/reme)

ReMe 自进化个人知识库与公开基准结果

## 一个会持续生长的记忆循环

ReMe 自进化记忆循环

ReMe 不是另一个聊天机器人,也不试图替代你正在使用的 Agent。它更像一个可以被 QwenPaw、OpenClaw、Hermes、Claude Code 等 Agent 共享的本地记忆层。 它围绕一套普通文件,完成四件事: - Auto Memory 从对话中提炼值得保留的信息; - Auto Resource 将外部资料整理为可追溯的记忆; - Auto Dream 把每日记忆进一步整合为长期知识; - Index、Search 和 Proactive 让旧记忆重新回到新的任务中。 这形成了一个 `capture → index → consolidate → recall` 的循环: - 对话和外部资料先被保留下来; - 有价值的信息被整理为每日记忆; - 零散事件进一步合并为长期知识节点; - 搜索、知识链接和兴趣发现,让旧记忆重新参与未来的思考。 更重要的是,这个循环的中心不是一个用户看不见的黑盒数据库,而是用户自己拥有的文件。索引、图谱和缓存都只是可重建的派生状态。 ## Memory as File:记忆首先是你的文件

ReMe Memory as File

ReMe 的核心设计叫作:**Memory as File, File as Memory。** “Memory as File”意味着,长期记忆不是藏在产品内部,而是落在 workspace 里的 Markdown、JSONL、YAML 和原始资源文件中。你可以用 VS Code、Typora 或 Obsidian 直接打开,也可以用 Git、网盘或自己的同步方案备份和迁移。 “File as Memory”意味着,每个文件又不只是普通文本。它可以带有 YAML frontmatter、章节结构、行号范围和 Wikilink,成为一个可索引、可连接、可继续演化的记忆节点。 例如,一条关于写作偏好的长期记忆可以是: ```markdown --- name: 用户偏好:技术文章风格 description: 喜欢先讲问题和结果,再解释技术细节,并用例子帮助理解。 kind: preference --- 用户希望技术文章有清晰主线,避免堆砌术语。 撰写文章时可参考 [[digest/procedure/技术内容写作流程.md]]。 ## Sources - [[daily/2026-08-07/content-discussion.md]] ``` 几个月后,即使你已经忘了这次对话,Agent 仍然能读到偏好、找到关联流程,并顺着 `Sources` 回到当时的上下文。 这也是 ReMe 与“黑盒记忆”的关键区别:Agent 可以整理记忆,但用户永远保留查看、修正、移动和删除它的权利。 ## Auto Memory:把聊过的事,写成每天的日记

ReMe Auto Memory 将对话整理为 daily 记忆

很多有价值的信息并不是以“请记住”开头的。 比如你在一次对话里说: > “这周先不要重构登录模块,客户演示之后再做。上次直接升级依赖导致兼容问题,这次先补回归测试。” 这段话里同时包含了项目状态、时间约束、一次失败经验和后续行动。Auto Memory 会把它从聊天流水中提炼出来,写成当天的一张 daily 记忆卡片;原始对话则继续保存在 `session/dialog/` 中。 ```text session/dialog/project-a.jsonl 原始对话,负责可信 daily/2026-08-07/project-a.md 记忆卡片,负责好读 daily/2026-08-07.md 当天索引,负责总览 ``` 以后再讨论登录模块,Agent 不必翻遍聊天记录,就能先看到:当前为什么没有重构、曾经踩过什么坑、下一步应该先做什么。 它像一位一直在场的记录者,但不是机械地抄写逐字稿,而是把“以后还会用到什么”整理出来。 ## Auto Resource:让外部资料进入同一套记忆系统

ReMe Auto Resource 将外部资料整理为可追溯的个人记忆

并不是所有有价值的信息都来自对话。研究资料、项目文档、会议纪要、网页存档和结构化数据,同样可能成为个人知识库的一部分。 Auto Resource 提供了一条更通用的外部资料入口。资料进入 `resource/` 后,ReMe 保留原文,再把主题、关键事实和可行动信息整理为带有 `source_resource` 链接的 daily 卡片。当前可以处理 Markdown、纯文本、JSON、JSONL、CSV、YAML 和 HTML 等文本类资料。 这意味着,Auto Memory 负责从对话建立个人知识,Auto Resource 负责从非对话资料建立个人知识。两条输入最终进入同一个 daily 记忆层,再由 ReMe 统一索引、整合和检索。 ### Daily Paper:外部资料工作流的一个例子 Daily Paper 是建立在这套文件化记忆之上的可选 Cookbook。它会从 Hugging Face Papers 的周榜和月榜收集论文,去除近期已经推荐过的内容,排序后精选三篇,保存 PDF,并生成中文论文笔记与一份约五分钟可读完的简报。 想象一下,你持续关注 Agent Memory:每天早上收到的不只是三个论文链接,而是三篇已经保存到本地的详细笔记。简报通过 Wikilink 指向原始笔记,原始笔记又能回到 PDF。一个月后再问“最近有哪些方法在做长期记忆压缩”,这些材料已经进入同一套检索系统,不需要重新从浏览器历史里寻找。 Daily Paper 展示了 Auto Resource 可以怎样被组合成具体工作流,但外部资料入口并不局限于论文。 ## Auto Dream:让日记长成相互连接的长期知识

ReMe Auto Dream 从 daily 抽取、分类并整合长期知识,同时写入 Wikilink

日记多了,新的问题也会出现:信息虽然都在,却仍然散落在不同日期里。 假设你先后从对话和外部资料中得到三条关于同一个问题的信息: - 第一次排查构建卡死,清缓存无效; - 第二次在项目文档中确认根因是 Node 内存不足; - 第三次又补充了大型 TypeScript 项目下更容易触发这个问题。 Auto Dream 会一起扫描发生变化的 daily 文件,合并表达同一抽象的证据,只保留值得复用的记忆单元,再按内容写入三类长期记忆: - `Personal`:用户、团队或项目特定的偏好、约定和约束; - `Procedure`:可以再次执行的流程、方法和排查手册; - `Wiki`:通用的定义、原则、观察和知识。 例如,上面的信息会被整理为 `digest/procedure/前端构建卡死排查.md`,包含触发条件、排查顺序、无效尝试、解决方法和适用边界,而不是几篇日记的简单拼接。 整合每个记忆单元时,Auto Dream 会先跨 `personal`、`procedure` 和 `wiki` 搜索已有节点,区分“同一抽象”和“相关知识”。同一抽象决定如何演化目标节点: - `CREATE`:没有相同记忆,创建新节点; - `CORROBORATE`:同一结论再次出现,补充来源并增强可信度; - `REFINE`:新材料补全条件、步骤或细节; - `CORRECT`:新信息修正旧结论。 相关知识则在同一次整合中以 Wikilink 写进正文,这就是 Auto Link。比如“前端构建卡死排查”可以同时连接通用知识、团队偏好和原始证据: ```markdown 这个问题常见于 [[digest/wiki/大型 TypeScript 项目.md]],处理时遵循 [[digest/personal/团队变更偏好.md]] 中“先补回归测试”的约定。 ## Sources - [[daily/2026-08-07/build-debug.md|构建排查记录]] 提供了根因与适用场景。 ``` 知识的演化与链接发生在同一条流程里。关系不是藏在图数据库里的不可见边,而是正文中可读、可改的内容;文件可以重建图,图不会反过来绑架文件。 ## Memory Index:普通文件,如何变成可搜索的记忆网络?

ReMe Memory Index 构建过程

Markdown 适合人读,但如果只是把文件堆进目录,Agent 仍然很难快速找到它们。ReMe 会持续监听 `daily/`、`digest/` 和 `resource/`,将新增、修改和删除同步到可重建的索引中。 一份 Markdown 会被解析为: - 一个文件节点:包含路径、frontmatter 等文件级信息; - 多个语义 chunk:尽量沿标题、段落、列表和代码块边界切分,并保留章节骨架与行号; - 多条 Wikilink 边:记录它指向谁,以及谁又指向它。 在检索侧,ReMe 可以组合三类信号: | 检索信号 | 解决的问题 | 例子 | |---|---|---| | BM25 关键词 | 精确名称、术语和编号不能丢 | “宁德时代”“issue #184” | | Embedding 向量 | 用户换了一种说法,也要理解语义接近 | “构建卡死”与“打包阶段没有响应” | | Wikilink 图谱 | 命中一个节点后,看到它的上下游关系 | 从“钴”找到“三元正极”和相关调研记录 | 默认配置开箱启用 BM25 与 Wikilink 展开,Embedding 是可选能力,开启后才会参与向量召回。索引、图谱和缓存都写在 `metadata/`,即使删除也可以根据用户的源文件重新构建。 ## Memory Search:先找到答案,再沿着关系渐进展开

ReMe 混合搜索与渐进式展开

很多 RAG 系统会一次性把 Top-K 文本全部塞进上下文。这样做简单,却容易带来两个问题:孤立切片缺少上下文,而把邻居正文全部展开又会迅速消耗 token。 ReMe 的混合搜索先让 BM25 与可选的向量检索各自召回候选,再使用 RRF 按排名融合。RRF 不强行比较 BM25 分数与余弦相似度这两种不同量纲,而是综合一个结果在两张榜单中的位置。 召回之后,信息按三层渐进式展开: 1. **先看命中片段**:返回最相关的 chunk、文件路径和行号; 2. **再看关系目录**:展示该文件的出链与入链,只给邻居的路径、名称、描述和锚点,不急着加载全文; 3. **最后按需深入**:Agent 判断哪条关系真正相关,再读取原文或沿图谱继续遍历。 例如,你问:“上次 Alice 推荐的那本讲注意力的书叫什么?” 第一步可能命中一张聚餐日记,其中只写着“标题里有‘深度’两个字”;结果同时显示,这张日记链接到了 Alice 的个人节点,也被《深度工作》的阅读笔记反向引用。 Agent 不需要把 Alice 的全部档案、所有读书笔记和整个月的日记都塞进上下文。它只要沿着最相关的链接再读一次,就能回答: > 是《深度工作》。Alice 在那次聚餐时推荐了它,你后来还读了第三章并留下了笔记。 这更像人的联想过程:先想起一个片段,再顺藤摸瓜找到完整上下文。 ## Proactive:从你的记忆里,发现那些尚未说出口的需要

ReMe Proactive 内外双向记忆循环

到这里,ReMe 已经有了两条不断丰富知识库的输入流: - Auto Memory 从持续发生的对话中沉淀个人上下文; - Auto Resource 从外部资料中补充新的知识。 Proactive 则把方向反过来:它从已经积累的对话和资料中,发现你仍未解决或可能希望继续推进的主题,以及你尚未关注,但却与你近期工作紧密相关的信息。从而反哺输入流,为外部知识的补充指明新的路径。 例如,你最近一周分别聊过: - 搜索结果里缺少来源; - 长文档切片后容易失去章节上下文; - 想比较几种 Agent Memory 评测方法。 尽管你从未明确说“帮我系统研究记忆检索的可解释性”,但 Auto Dream 可以从这些 daily 记忆中提炼出一个兴趣主题: ```yaml title: 记忆检索的可解释性评估 reason: 用户近期持续关注来源追溯、结构化切片和记忆评测。 evidence: daily/2026-08-07/search-discussion.md keywords: - memory search - source attribution - benchmark ``` 在未来的beta版本中,上层 Agent将会 通过 Proactive 读取这个主题后,可以选择在合适的时机追问:“要不要把最近讨论过的检索问题整理成一份评测方案?”也可以据此启动一个经过用户授权的资料收集流程。不需要用户思考并显示指定自己的兴趣关键词与范围,与会话中潜在体现需求相关的外部资料也会源源不断进入知识库。 这里有一个重要边界:**ReMe 的 Proactive 本身只读取并暴露兴趣主题,不会擅自联网、推送或改写知识库。** 它不是凭空猜测你的兴趣,而是让那些已经出现在行为和对话中、却还没有被明确表达的线索浮出水面。 ## Performance:它真的能从很长的历史里找回信息吗? ReMe 使用 LongMemEval 和 BEAM 验证多会话与超长对话中的记忆能力。评测时,Agent 可以用 ReAct 方式进行多轮搜索和读取,生成答案后再由 LLM-as-judge 评分。 | 基准 | 设置 | 样本量 | Agentic 得分 | 主要检验内容 | |---|---|---:|---:|---| | **LongMemEval cleaned-s** | **整体** | **500 题** | **89.4%** | 跨会话检索、知识更新与时间推理 | | BEAM | 100K 上下文 | 20 cases / 400 题 | 66.1% | 十类长上下文记忆任务 | | BEAM | 1M 上下文 | 35 cases / 700 题 | 65.0% | 更大规模的超长对话设置 | LongMemEval cleaned-s 包含单会话事实、偏好、多会话推理、知识更新和时间推理等题型。ReMe 在 500 道问题上取得 89.4% 的整体 Agentic 得分。完整流程和分项结果见 [LongMemEval 评测说明](../../benchmark/longmemeval/README_ZH.md)。 BEAM 覆盖矛盾消解、事件排序、信息抽取、知识更新、多会话推理、偏好遵循、摘要和时间推理等十类任务。ReMe 在 100K 设置下的 20 cases / 400 题上取得 66.1%,在 1M 设置下的 35 cases / 700 题上取得 65.0%。完整设置见 [BEAM 评测说明](../../benchmark/beam/README_ZH.md)。 ## ReMe 能帮谁? ### 直接使用 Agent 的人 如果你希望 AI 在长期协作中持续了解你,ReMe 可以让个人助理不再每次都从零开始。你的偏好、项目背景、重要资料和过去做过的决定,会在持续对话中沉淀下来,并在真正相关的时候被重新找到。 研究者、工程师、分析师和其他知识工作者都属于这一类直接用户。研究者可以让论文、讨论和阅读笔记彼此连接;工程师可以保留项目决定与跨会话排障经验;分析师可以持续积累事件、观点与来源。职业不同,共同需求都是让 AI 能够理解过去、积累经验,并在下一次任务中找回依据。 ### 构建 Agent 的开发者 如果你正在构建 Agent、Harness 或 AI 产品,ReMe 提供了一层可以独立接入的长期记忆基础设施。你可以通过 CLI、HTTP API、MCP Server 或 SDK,让不同 Agent 共享同一个文件化 workspace,而不必为每个应用重新实现记忆抽取、知识整理、混合检索和关系展开。 文件是事实来源,索引与缓存可以随时重建,也更容易定位一次错误召回究竟来自原始资料、记忆整理还是检索链路。 归根结底,ReMe 适合那些希望 AI 不只“回答这一次”,还能够理解过去、积累经验,并在长期协作中越来越贴近自己的用户和开发者。我们希望 Agent 越用越懂你,但“懂”不应该建立在一个无法查看、无法修正、无法带走的黑盒上。 ReMe 给出的答案很朴素: - 记忆是用户拥有的文件; - 原始信息保留现场,长期知识保留抽象; - 新对话和新资料持续进入,旧知识也持续被补充和修正; - 每个结论都可以通过 Wikilink 找到关系和来源; - 索引与缓存服务于文件,而不是取代文件; - Agent 可以记住、整理、搜索和发现,但最终控制权始终属于用户。 当这些机制连接起来,个人知识库就不再是一座需要你手工维护的仓库。 它会在每一次对话后多记住一点,在每一份资料到来后多理解一点,在夜晚把零散经验重新整理,在未来的某个问题出现时,再沿着知识之间的联系,把真正需要的那段记忆带回来。 这就是 ReMe 想做的事:**让记忆不只被保存,也能持续进化。** ## 欢迎贡献 ReMe 已经开源,我们也欢迎社区一起把这套自进化记忆系统做得更完整: - 接入更多 Agent 与 Harness,让不同运行环境都能使用同一套用户拥有的长期记忆; - 贡献新的 Auto Resource 数据源和工作流,让论文、新闻及其他公开资料能够持续进入知识库; - 改进 Auto Memory、Auto Dream、Auto Link、混合搜索与 Proactive,让记忆整理得更准确、关系更清晰、召回更可靠; - 补充新的应用案例、评测任务和诊断报告,帮助我们看见真实长期使用中的成功与失败; - 完善文档、测试,或通过 Issue 分享你对个人 AI 记忆的需求与想法。 无论是一段代码、一份使用案例、一次问题反馈,还是一个新的记忆工作流,都可能帮助 ReMe 更接近真正可读、可控、可持续进化的个人知识库。 贡献指南:[https://docs.agentscope.io/reme/latest/en/contribution](https://docs.agentscope.io/reme/latest/en/contribution)