PROJECTMEM:面向AI编码代理的本地优先、事件溯源记忆与判断层

arXiv cs.AI 论文

摘要

PROJECTMEM是一个开源的、本地优先的记忆与判断层,专为AI编码代理设计,可记录开发事件,并在重复失败操作前提供确定性警告,从而减少令牌浪费并提高可复现性。

arXiv:2606.12329v1 Announce Type: new 摘要:AI编程助手目前支持越来越多的软件工作,从快速脚本到生产应用。然而,这些代理在很大程度上仍然是无状态的:每个新会话都会重新读取项目文件,重新推导先前的决策,并且——最昂贵的是——可能会重复已经失败的调试尝试。重建这种上下文每个会话估计消耗5,000-20,000个令牌;瓶颈往往不是模型能力,而是缺乏项目记忆。我们提出projectmem,一个开源的、本地优先的记忆和判断层,用于AI编码代理。projectmem将开发记录为仅追加的纯文本事件日志,包含类型化事件——问题、尝试、修复、决策和笔记——并确定性地将该日志投影为紧凑的、AI可读的摘要,通过模型上下文协议(MCP)提供服务。除了存储之外,projectmem增加了确定性的预动作门,在代理重复之前失败的修复或编辑已知脆弱文件之前发出警告。我们将此框架定义为记忆即治理(Memory-as-Governance):记忆不仅回答代理,而且作用于其下一个动作。该系统完全离线运行,无遥测;其不可变的日志也作为可复现、可审计的AI辅助开发的可溯源轨迹。projectmem作为一个三依赖的Python包发布(14个MCP工具,19个CLI命令,37个自动化测试),并通过两个月的自我研究进行评估,涵盖10个项目,共207个记录事件。源代码:https://github.com/riponcm/projectmem。
查看原文
查看缓存全文

缓存时间: 2026/06/11 13:51

# 面向 AI 编码智能体的本地优先、事件溯源记忆与判断层  
来源:https://arxiv.org/html/2606.12329  
童秋  
犹他大学  
(2026 年 6 月)  

###### 摘要  

AI 编码助手如今承担着日益增长的软件开发工作,从快速脚本到生产级应用。然而,这些智能体在很大程度上仍然是**无状态**的:每个新会话都会重新读取项目文件、重新推导先前的决策,并且——最昂贵的是——可能会重复那些已经失败的调试尝试。重构这种上下文每个会话估计消耗 5,000–20,000 个 token;瓶颈通常不在于模型能力,而在于缺失的项目记忆。我们提出了 projectmem,一个面向 AI 编码智能体的开源、本地优先的记忆与**判断**层。projectmem 将开发过程记录为一个仅追加的、纯文本类型的结构化事件日志——问题、尝试、修复、决策和笔记——并确定性地将该日志投影为紧凑的、AI 可读的摘要,通过模型上下文协议(Model Context Protocol, MCP)提供。除了存储之外,projectmem 增加了一个确定性的前置动作门控,在智能体**重复**先前失败的修复或编辑已知脆弱文件之前发出警告。我们将此框架称为**记忆即治理**(Memory-as-Governance):记忆不仅回答智能体的问题,还会对其下一步行动施加影响。该系统完全离线运行,无遥测;其不可变的日志同时也作为可重现、可审计的 AI 辅助开发活动的溯源记录。projectmem 作为一个仅依赖三个依赖项的 Python 包发布(14 个 MCP 工具、19 个 CLI 命令、37 个自动化测试),并通过一项为期两个月、涵盖 10 个项目(共 207 个已记录事件)的自我研究进行评估。源代码:https://github.com/riponcm/projectmem。  

## 1 引言  

大语言模型(LLM)编码智能体已迅速成为日常开发基础设施:从单个开发者快速原型设计一个想法,到工程团队交付功能,再到研究人员编写分析代码,开发者越来越多地通过 AI 助手而非手动键入来推动其工作。这些智能体在单个会话中功能强大,但在跨会话时是**无状态**的。当对话窗口关闭时,智能体就丢失了持久的项目特定状态。下一个会话通常从重新读取源文件、重新回答昨天已经回答过的问题、重新推导架构决策开始,并且——一个尤其代价高昂的失败模式——重新尝试那些已经尝试过并且已经失败的修复。这不是模型质量问题;这是一个**架构**问题。  

最近关于智能体软件工程的实证研究恰好记录了这些病理特征。一项针对 GitHub 上失败的智能体拉取请求的实证研究发现,它们经常表现出“重复应用相同修复而未进行适当测试或演进”[6 (https://arxiv.org/html/2606.12329#bib.bib6)];另一项互补分析表明,一个根本原因错误会通过智能体的后续决策传播,导致级联任务失败,并且智能体可以从这些失败中学习——但仅限于**事后**[26 (https://arxiv.org/html/2606.12329#bib.bib26)]。对智能体编程的调查同样将跨会话记忆和上下文追踪确定为一个核心的开放挑战,且“超出 token 限制”[21 (https://arxiv.org/html/2606.12329#bib.bib21)]。  

上下文的代价是具体的:通过重新读取项目来重建上下文,每个会话消耗数千个 token,并且在积极提示缓存的情况下,长上下文重新提交的每次交互成本也会随着时间线增长而增加,而记忆系统的读取成本在一次性写入后大致固定[15 (https://arxiv.org/html/2606.12329#bib.bib15)]。这些研究指向一个共同的失败模式:重复的错误代价高昂,而阻止重复的最佳时机是在**它发生之前**——而非之后。  

一个自然的回应是赋予智能体记忆,现有的大量文献正是这样做的(第 2 节 (https://arxiv.org/html/2606.12329#S2))。然而,主流的设计共享一组不适用于日常软件开发的特性:它们围绕向量数据库或 LLM 参与的(即 LLM-in-the-loop)事实提取构建(引入了非确定性和重复的读取成本),它们面向**对话式**个性化而非工程正确性,它们常常是云端或服务器托管的(对敏感或专有代码构成障碍),并且——最重要的是——它们主要是**回答**智能体的提问。即使是最接近的编码智能体同行,它出于同样的原因(智能体“跨会话失去连贯性、忘记项目约定、重复已知错误”[20 (https://arxiv.org/html/2606.12329#bib.bib20)])独立地采用了纯文本、基于文件、无向量数据库的设计,也仅仅是**被动地**防止重复——通过提供约定作为智能体必须选择去阅读的上下文。这些系统通常不会以本文所使用的意义来**判断**智能体:据我们所知,没有一个系统会在动作发生之前,基于项目自身记录的失败情况,确定性地进行干预。  

### 贡献。  
我们提出 projectmem 并做出四项贡献:  

1. 1. **一个事件溯源的、纯文本的记忆基板**,用于编码智能体:一个仅追加的、类型化事件(问题/尝试/修复/决策/笔记)日志,从中**确定性地投影**出一个紧凑的、AI 可读的摘要。该日志可被 grep、diff,且与 git 天生契合——无向量数据库,无嵌入向量(第 3 节 (https://arxiv.org/html/2606.12329#S3))。  
2. 2. **一个判断层**:一个确定性的、基于历史的前置动作门控,在智能体重复先前失败的修复或编辑具有变更记录或未解决问题的文件之前发出警告。我们认为这标识了一个未被充分探索的设计点,我们将其命名为**记忆即治理**(Memory-as-Governance)(第 2 节 (https://arxiv.org/html/2606.12329#S2)、第 3 节 (https://arxiv.org/html/2606.12329#S3))。  
3. 3. **一个本地优先、工具无关的系统**:一个原生的 MCP 服务器(14 个类型化工具),为多个支持 MCP 的客户端提供相同的记忆,外加一个用于非 MCP 工具的通用 Markdown 桥接——完全离线运行,默认启用秘密信息剔除(第 4 节 (https://arxiv.org/html/2606.12329#S4))。  
4. 4. **一个开源实现和使用研究**:一个仅依赖三个依赖项的 Python 包,包含 37 个自动化测试,通过估算的 token 成本分析和一项覆盖 207 个事件、10 个项目的自我研究进行评估(第 7 节 (https://arxiv.org/html/2606.12329#S7))。  

## 2 相关工作  

我们将先前的工作组织为四个方向——面向检索的智能体记忆、编码智能体的项目记忆、从失败中学习、以及前置动作护栏——然后阐述 projectmem 所填补的空白。  

### 面向检索的智能体记忆。  
主流范式是提取、整合并检索显著上下文到向量和/或图存储中,以克服固定的上下文窗口。Li 等人 [10 (https://arxiv.org/html/2606.12329#bib.bib10)] 将所有此类系统本质上都描述为**记忆即工具**(Memory-as-Tool)——一次查询输入,得到一个平坦的 top-*k* 段落列表返回。MemGPT/Letta 像操作系统一样将上下文页面换入换出,基于分层的、**可变的**记忆并通过函数调用进行自我编辑[13 (https://arxiv.org/html/2606.12329#bib.bib13)];Mem0 动态提取并向量索引显著的对话事实,其图变体 Mem0g 仅带来边际精度提升[4 (https://arxiv.org/html/2606.12329#bib.bib4)];A-MEM 将记忆组织为 LLM 生成的、动态链接笔记所形成的 Zettelkasten 知识网络[24 (https://arxiv.org/html/2606.12329#bib.bib24)];Zep/Graphiti 是一个通过嵌入向量和重排序检索的时间感知知识图谱引擎[16 (https://arxiv.org/html/2606.12329#bib.bib16)];而 MemMachine 结合了向量数据库和图数据库(并暴露了一个 MCP 服务器),明确优化**检索精度**[22 (https://arxiv.org/html/2606.12329#bib.bib22)]。  

最近,**Memanto** 将**类型化**的语义记忆模式与信息论检索相结合,通过单次查询读取在 LongMemEval 和 LoCoMo QA 基准测试上报告了最先进的精度[1 (https://arxiv.org/html/2606.12329#bib.bib1)]。其客户端是开源的,但检索委托给了一个托管服务(Moorcheh;免费层加按量付费),因此 Memanto 既不是本地也不是离线的。我们将其视为类型化记忆的独立证据,旨在检索保真度而非我们所追求的本地优先、纯文本、动作门控设计。  

生成式智能体(Generative Agents)引入了仅追加的自然语言**记忆流**,具有近因性/重要性/相关性检索和反思[14 (https://arxiv.org/html/2606.12329#bib.bib14)]——这是我们事件日志的思想先驱,尽管其检索是通过 LLM 评分且是有损的,而我们的检索是确定性和精确的。同时,MemoryBank 通过艾宾浩斯曲线**主动遗忘**[25 (https://arxiv.org/html/2606.12329#bib.bib25)],这与我们永不遗忘的审计线索理念相反。CoALA[19 (https://arxiv.org/html/2606.12329#bib.bib19)] 的认知架构框架将经典的工作/情景/语义/程序记忆映射到 LLM 智能体上。  

这些系统主要是基于嵌入或图的、面向对话或个性化的、经常云端托管的、通常可变的,并且是在 QA 基准上评估的;至关重要的是,所有这些系统都是**增强上下文**,而不是**门控动作**。一项关于 LLM 智能体记忆的最新基准发现,目前没有一种架构能够同时掌握精确检索、测试时学习、长程理解和冲突解决[8 (https://arxiv.org/html/2606.12329#bib.bib8)]——这独立地证明了设计空间尚未饱和。  

### 编码智能体的项目记忆。  
一个更小的、非常近期的方向专门针对软件工程智能体的持久记忆。与我们工作最接近的是 Codified Context,它与 projectmem 一样,并独立地采用了基于纯文本、基于文件、无向量数据库的设计,并通过 MCP 服务器提供,其动机源自相同的观察,即智能体“跨会话失去连贯性、忘记项目约定、重复已知错误”[20 (https://arxiv.org/html/2606.12329#bib.bib20)]。它将约定的 Markdown “热记忆架构”与按需检索的关键词规范文档相结合。决定性的区别在于机制:Codified Context **被动地**防止重复——它提供约定作为智能体必须阅读的上下文,其漂移检测器在**会话开始时**基于 git 提交差异触发,而不是基于项目已记录的失败,也不是**每个动作**都触发。projectmem 则从一个不可变的、仅追加的、类型化失败事件日志中推导出**每个动作的确定性警告**。事件溯源基板本身已被并发地提议用于自动驾驶 SE 智能体(一个仅追加的目的和效果日志,从中确定性地投影状态[5 (https://arxiv.org/html/2606.12329#bib.bib5)]),我们将其视为对该基板的验证;projectmem 在此基础上增加了判断层、跨项目记忆和人类可读性。我们注意到 MCP 支持越来越普遍——MemMachine 和 Codified Context 都暴露了 MCP 服务器[22 (https://arxiv.org/html/2606.12329#bib.bib22), 20 (https://arxiv.org/html/2606.12329#bib.bib20)]——因此 projectmem 的贡献不在于协议本身,而在于**组合**了本地优先、事件溯源的纯文本以及一个确定性的判断门控。MCP 本身[2 (https://arxiv.org/html/2606.12329#bib.bib2)] 是使系统工具无关的标准;其安全文献关注的是**不可信的、网络可达的**服务器[7 (https://arxiv.org/html/2606.12329#bib.bib7)],而 projectmem 通过本地化、主要只读和可审计性规避了这类威胁。  

### 从失败中学习(事后)。  
有一系列工作让智能体从自身错误中学习。Reflexion 将失败试验的言语反馈存储在一个情节缓冲区中,无需权重更新即可改进**下一次**试验[17 (https://arxiv.org/html/2606.12329#bib.bib17)],并且最近的工作表明智能体可以将级联失败归因于其根本原因并迭代恢复[26 (https://arxiv.org/html/2606.12329#bib.bib26)]。这些都是回顾性的:它们在任务内或跨试验的**失败之后**做出反应。projectmem 实际上是将 Reflexion 的情节记忆外部化——使其在跨会话和跨项目中持久化,结构化为一个固定的类型化模式,并从事后下一次试验的提示转换为**动作前**门控。  

### 前置动作护栏。  
有一条独立的线索确实在**执行之前**拦截动作。AGrail 是最接近的类别匹配:一个布尔型前置动作门控,用于阻止智能体的动作,并带有一个记忆模块,在其生命周期内迭代优化安全检查[11 (https://arxiv.org/html/2606.12329#bib.bib11)]。ToolSafe 执行主动的步骤级预执行推理[12 (https://arxiv.org/html/2606.12329#bib.bib12)],而 LlamaFirewall 在运行时分层实施越狱、对齐和不安全代码检查[3 (https://arxiv.org/html/2606.12329#bib.bib3)];Meta-Policy Reflexion 将反思整合为类似谓词的规则,并在推理时进行准入检查[23 (https://arxiv.org/html/2606.12329#bib.bib23)]。这些系统与 projectmem 共享**时机**——在动作之前干预——但在**机制和目标**上有所不同:它们的门控是基于 LLM 或强化学习训练的,因此是非确定性的,并且它们针对的是**通用安全或代码安全**类别(越狱、提示注入、不安全代码)或管理员指定的风险,而不是某个特定项目自身记录的失败修复。projectmem 的门控是一个确定性的查找,键是项目的失败历史——无模型调用,无训练,可重现。  

### 第三轴:记忆即治理(Memory-as-Governance)。  
扩展 Li 等人 [10 (https://arxiv.org/html/2606.12329#bib.bib10)] 的术语,我们区分了**记忆即工具**(被动,查询进/段落出)、**记忆即认知**(访问与推理交织),以及 projectmem 所占据的单元**记忆即治理**:记忆作用于智能体,在动作侧进行确定性干预,而非仅仅被读取。检索线程增强上下文但从不门控;护栏线程进行门控但基于通用的、模型训练的安全类别而非项目历史;编码智能体线程共享我们的基板但仅被动地防止重复。据我们所知,不存在一个先前的系统能够同时满足:(i) 本地优先且离线,(ii) 基于不可变、人类可读纯文本的事件溯源,(iii) 原生 MCP,(iv) 配备基于项目**自身**失败历史的确定性前置动作判断门控,以及 (v) 跨项目。表 1 (https://arxiv.org/html/2606.12329#S2.T1) 将 projectmem 与各个方向最强的代表进行了比较。  

表 1:与 AI 辅助软件开发相关的能力对比。这比较的是**设计能力**,而非头对头的任务精度;这些系统并非在同一基准上测量。条目反映了撰写时引用的论文和公开描述。*前置动作判断* 表示动作前的门控:projectmem 的门控是**确定性**的,且源自项目**自身**的失败历史,与护栏(AGrail, LlamaFirewall)不同,后者的门控是模型训练的,针对的是通用安全/安全类别。  

| 系统 | 本地优先 | 纯文本(无向量 DB) | 事件溯源/不可变 | 前置动作判断 | MCP 原生 | 跨项目 | 领域 |
|---|---|---|---|---|---|---|---|
| MemGPT/Letta [13] | ◦ | ✗ | ✗ | ✗ | ✗ | ✗ | 通用/聊天 |
| Mem0 [4] | ✗ | ✗ | ✗ | ✗ | ✗ | ◦ | 聊天/个性化 |
| 生成式智能体 [14] | — | ✓ | ◦ | ✗ | ✗ | ✗ | 模拟 |
| A-MEM [24] | ◦ | ✓ | ✗ | ✗ | ✗ | ✗ | 通用 |
| Zep [16] | ✗ | ✗ | ◦ | ✗ | ✗ | ◦ | 聊天/个性化 |

相似文章

SelfMem: 面向AI智能体的自优化记忆框架

arXiv cs.CL

SelfMem提出了一种面向AI智能体的自优化记忆框架,使其能够通过记忆工具和反馈信号探索、评估和优化自身的记忆策略,在BEAM基准测试上,于大型对话规模下相较于基线方法取得了显著改进。

MindMemOS:面向AI智能体的可移植、自进化记忆操作系统层

arXiv cs.AI

本文介绍了MindMemOS,一个面向AI智能体的可移植、自进化记忆操作系统层,采用统一的实体-属性-时间结构,并具备记忆精炼和技能进化算法。它在LOCOMO和PersonaMem基准上取得了显著准确率,并将SpreadsheetBench性能提升了9.2个百分点。

rohitg00/agentmemory

GitHub Trending (daily)

agentmemory 是一个开源的持久化记忆层,专为 AI 编程智能体(Claude Code、Cursor、Gemini CLI、Codex CLI 等)设计。它通过知识图谱、置信度评分和混合搜索技术,借助 MCP、Hooks 或 REST API,为智能体提供跨会话的长期记忆能力。该项目基于 iii 引擎构建,无需外部数据库,提供 51 个 MCP 工具。