基于本体的项目记忆系统,面向编程智能体
摘要
本文介绍了MOOSEDev,一个面向编程智能体的神经符号记忆系统,该系统使用本体来结构化项目知识,并展示了在处理架构决策和理由方面,相较于向量记忆工具具有更优的检索性能。
查看缓存全文
缓存时间: 2026/08/17 09:49
# 面向编程智能体的本体基础项目记忆系统 来源:https://arxiv.org/html/2608.13662 ###### 摘要 编程智能体已成为许多软件项目中生成新代码的主要方式,而由此带来的快速变更使得追踪这些变更背后的原因变得极具挑战。本文介绍MOOSEDev系统,该系统旨在为编程智能体提供结构化的、基于本体的项目记忆。系统通过模型上下文协议接口,将架构决策、经验教训、约束条件和基本原理以知识图谱的形式捕获并呈现给智能体。记录具有生命周期状态、来源信息和替代关系链接,并可通过专有神经符号引擎MOOSE进行查询——该引擎将符号层作为主要推理基础。我们在包含835条类型化记录的中立公共语料库上,将MOOSEDev与生产级向量记忆工具进行了对比。MOOSEDev在替代关系、集合完整性和否定性问题上几乎完整返回了预期答案集(0.98–1.00),而基线工具的top-k检索仅能获取6%至27%的答案。相反,两个系统在相关性召回率和token成本方面基本相当。本文还描述了我们代码库的时间性提交历史引导过程、预先注册的实时试验以及经验教训。 ## 1引言 软件团队越来越多地将编程智能体用于生成大部分新代码,同时将架构和设计工作保留在人类工程师的职责范围内;这种协作模式要求团队持续向智能体提醒设计决策,并在其偏离轨道时进行干预。更深层次的代价被称为"理解负债"——对代码库存在原因的逐渐遗忘。源代码是决策结果的体现;而背后的推理、理论和基本原理则存在于其他地方(Naur 1985 (https://arxiv.org/html/2608.13662#bib.bib10))。 笔记文件、Markdown规范和检索增强记忆(Lewis et al. 2020 (https://arxiv.org/html/2608.13662#bib.bib9);Chhikara et al. 2025 (https://arxiv.org/html/2608.13662#bib.bib4))有所帮助,但持续存在的问题仍然存在。智能体需要了解笔记代表何种类型的知识(决策、约束、原理、经验、反模式);需要知道其是当前还是历史版本;还需要理解记录之间的关系:此决策替代了彼决策。这些区分本质上是本体论问题。向量搜索可以找到相近的词语;但它不知道记录*是*什么,或者它在生命周期中扮演什么角色。至此,项目记忆问题就不再是笔记记录问题,而是建模问题。基于源代码本身的知识图谱已有深入研究,包括提取的类与使用关系图(Abdelaziz et al. 2021 (https://arxiv.org/html/2608.13662#bib.bib1))以及用于驱动代码生成的API演化图(Kang et al. 2026 (https://arxiv.org/html/2608.13662#bib.bib7))。虽然这些方案为代码建模,但MOOSEDev为*关于*代码的知识建模——这是现有工作隐含忽略的层面。 本文是将编程智能体记忆视为本体论问题的案例研究。我们呈现了MOOSEDev系统(Adam 2026 (https://arxiv.org/html/2608.13662#bib.bib2))——一个已部署的神经符号记忆系统(第2节 (https://arxiv.org/html/2608.13662#S2)),包含在严格验证评判标准下与生产级向量记忆工具的直接对比评估(第3节 (https://arxiv.org/html/2608.13662#S3)),以及部署工作流程、经验教训和采用障碍(第4节 (https://arxiv.org/html/2608.13662#S4))。 ## 2系统:基于神经符号引擎的类型化记录 MOOSEDev在项目知识图谱中记录架构决策(Nygard 2011 (https://arxiv.org/html/2608.13662#bib.bib11))、经验教训、约束条件、基本原理和反模式,这些记录基于两个小型本体:用于代码库结构词汇的软件工程本体,以及用于*关于*该结构的知识的软件架构本体。两者都是OWL本体,配有伴随的SHACL形状(W3C OWL Working Group 2012 (https://arxiv.org/html/2608.13662#bib.bib13);Knublauch and Kontokostas 2017 (https://arxiv.org/html/2608.13662#bib.bib8)),通过我们的本体工程平台Trivyn交互式生成,经手动精炼,并由MOOSE引擎在运行时推理;两者均刻意保持小规模,分别包含九和十一个类,共51个属性。关系至关重要:记录可以承载基本原理、替代其他记录、影响某个组件,并具有生命周期状态、作者和时间戳;这些边构成了可遍历的网络。 结构为智能体提供了类型化捕获、基于SHACL形状的验证、可查询性(例如"没有记录基本原理的已接受决策")、生命周期和溯源追踪,以及对齐新概念的能力。 底层的神经符号引擎(d’Avila Garcez and Lamb 2023 (https://arxiv.org/html/2608.13662#bib.bib5))将大语言模型视为不可靠但有用的传感器。关键词和结构匹配、本体遍历、确定性证据融合、验证和执行跟踪是符号化的;模型仅在狭窄、声明的点上被调用,因此可以很小(8-32B参数)。当智能体请求当前指导时,引擎遍历图谱以查找相关记录,遵循类型化关系,过滤已替代的记录,并将剩余证据确定性地排序为上下文;大语言模型仅解释问题并综合答案,每一步都记录在执行跟踪中。 MOOSEDev通过MCP协议(Anthropic 2024 (https://arxiv.org/html/2608.13662#bib.bib3))将此能力暴露为四个主要工具组:类型化捕获、读取(上下文检索、自然语言查询、SPARQL(Harris and Seaborne 2013 (https://arxiv.org/html/2608.13662#bib.bib6)))、生命周期管理和完整性保障。 ## 3评估:结构化记忆 vs 向量记忆 ### 测试设置 基于本体的知识图谱是否能证明其复杂性相对于自由文本和向量记忆对编程智能体的合理性?111基准测试工具、CodeGraph语料库导出和公共语料库运行记录见https://github.com/Trivyn/moosedev(bench/);私有语料库记录已保密,聚合数据见仓库评估摘要。我们的基准测试比较了五种记忆和检索条件。B0是使用无记忆的编程智能体(即"氛围编码模式"):作为基线。B1-notes为智能体提供真实文档的平面文件语料库。B1-mem0是mem0(Chhikara et al. 2025 (https://arxiv.org/html/2608.13662#bib.bib4)),一种当代向量记忆工具,使用其自身原生捕获方法摄取相同文档。B1-rag是基于图内容平面化文本的基本BM25(Robertson and Zaragoza 2009 (https://arxiv.org/html/2608.13662#bib.bib12))工具,测试仅内容(无结构)是否承载结果。B2是我们的结构化项目记忆图谱。测试语料库是第三方开源开发者工具CodeGraph的文档,在我们的图谱中捕获为835条类型化记录,在mem0中为553条记忆,经验证忠实。每次运行使用单一CLI智能体配置和模型(GPT-5.x系列);我们预先注册了判断标准,根据原始来源或SPARQL派生集制定真实答案,并使用严格的大语言模型评判者(GPT-5.4-mini)评分,该评判者允许释义但拒绝主题正确但事实错误的答案,通过复现图谱条件的严格匹配分数进行了验证。222三次记录评判的平均值,每项判断与产物一起发布;早期未记录的一次评判每单元最多偏差0.12,正负方向均有。每次运行都是不可变的记录,无需重新运行智能体即可重新评分。 ### 能力差异 表中的结果表明,在需要结构化推理的任务上存在质的差异。(B0在这些类别上得分为零,故省略;B1-rag通过F1比较出现在下文。)这并非由摄取不完整导致:B1-mem0包含相关事实,但其检索返回有限的排序切片,因此无法枚举完整集合、确定缺失项或遍历关系。随着所需答案规模和复杂性的增加(对于两个项目的集合,系统等效),结构化优势持续存在,并在不同语料库中保持一致。与B1-rag相比,在私有语料库上集合重叠F1为0.94 vs 0.25,在中立公共语料库上为0.90 vs 0.34。然而,这种能力需要消耗token:通过SPARQL获取122项完整性集合需要78k至167k token,而针对性检索大约需要35k。相比之下,基线系统无论如何都无法产生完整答案。这证明了记忆是一个建模问题:当问题是结构性的(例如,完整性、缺失性、遍历性),相对于基本检索的优势是质的不同。 ### 检索能力持平,实时性通过设计保障 仅测试需要结构化检索的任务会有点以偏概全,因此测试矩阵也测试了向量记忆预期擅长的领域,而在这些领域条件持平。在简单相关性方面,图谱在约35k智能体token时达到0.82的覆盖率,而mem0在约40k token时得分为0.67至0.90之间。我们曾预期结构化优势会随着存储增长而复合,但并未出现:从50到634条记录的规模研究发现,在每个规模上图谱都领先(在最大规模时hit@5为0.84 vs 0.60),保持恒定偏移;斜率的置信区间跨零。因此,检索精度并非区别因素,仅凭它可能不足以证明系统的合理性。实时性则不同:在四个真实世界的逆转对、四种模型和两种交付模式下,图谱在所有40次试验中都提供了当前答案,因为已替代的记录在设计上被排除在当前指导检索之外。在测试的逆转中,B1-mem0在冷启动智能体得分为0.00时与图谱并列100%;而自由文本B1-rag条件在已替代记录排名高于当前记录且该内容被推送到提示中的一对上,仅在13次试验中有1次(8%)保持实时性。 ## 4部署、引导与经验教训 ### 引导现有代码库 仅从仓库当前状态构建的图谱会是扁平的,缺少历史关系,因此我们的引导工作流程逐个提交遍历仓库历史,提取带有历史时间戳的类型化记录。在我们自己的仓库上,它恢复了七条真实的替代链。本体是领域级的(例如,软件架构概念)而非项目特定的,因此新代码库不需要自定义模式工作,只需在引导过程中构建实例图谱。 ### 预先注册的实时试验 驱动本项目的主张——结构化记忆能在数月的实际工作中减少理解负债——无法通过时间点基准测试来验证,因此我们正在公司的两个生产代码库日常使用中测试该系统。我们在测试开始时建立了十六个固定参考点用于上下文恢复,每个点针对一种逆转情况,其早期方法已从当前树中删除,因此无法仅从代码重建答案。标准答案根据原始来源制定,从未从图谱中获取,因此图谱无法为自己评分。一个盲审本地评判者根据预设的失败条件对每月图谱与冷启动智能体的差距进行评分:每个项目每月少于四次引用记录的辅助将触发系统退役。注册的读数是每月趋势;在试验的前二十一天,图谱提供了71次引用相关记录的主动辅助,同时记录了38次遗漏(无用的召回或本应掌握的知识),其中35次发生在从较薄弱的提交历史引导的一个项目中。 ### 实践者经验教训 衡量基于大语言模型的记忆系统会以可预见的方式产生误导。我们的评估差点得出三个错误结论:我们系统取得的20分优势是评分工件造成的;明显的相关性损失是由配置错误引起的:记忆服务器宕机而智能体静默地在原始存储上进行grep;以及一条误导性的提交消息污染了标准答案和引导的基本原理。捕捉到这些错误的规则超出了基准测试范围:可自由重新评分的不可变记录、针对已知分数的条件验证的评判者、验证记忆工具确实触发的运行、以及仅来自原始来源的真实答案。每次看似合理但错误的结论几乎要被采纳时,一个可审计、可复查的流程捕捉到了它:这正是这类系统存在旨在减少的失败模式(自信、流畅、错误)。 ### 采用障碍 能力优势取决于正确的捕获:扁平捕获会将图谱降级到自由文本同等水平,而这种纪律带来了向量存储所没有的摩擦。对齐工具、辅助捕获和结论的推送方向都降低了这种成本。设计也依赖于主机工具使用:MCP是被动的;智能体决定何时调用,这有利于更高级模型;我们评估了一个智能体系列(GPT-5.x)。 ## 5结论 与常见的向量记忆工具相比,基于本体的记忆(在有效捕获的前提下)在检索能力强的方面表现持平,而在完整性、缺失性和替代性方面明显更优。具有有限上下文窗口的小型本地模型应该受益最大,因此自然的下一步是在循环内部操作:在代码被修改时推送实体精确的记录,并基于记录的约束条件来控制编辑。 ## 参考文献 - Abdelaziz et al. (2021) Ibrahim Abdelaziz, Julian Dolby, James P. McCusker, and Kavitha Srinivas. A toolkit for generating code knowledge graphs. In *Proceedings of the 11th Knowledge Capture Conference (K-CAP)*, 2021. https://doi.org/10.1145/3460210.3493578. - Adam (2026) James Adam. MOOSEDev: A practical application of ontologies and the MOOSE engine. Blog post, 2026. https://trivyn.io/blog/introducing-moosedev. - Anthropic (2024) Anthropic. Model Context Protocol, 2024. https://modelcontextprotocol.io/. - Chhikara et al. (2025) Prateek Chhikara, Dev Khant, Saket Aryan, Taranjeet Singh, and Deshraj Yadav. Mem0: Building production-ready AI agents with scalable long-term memory, 2025. arXiv:2504.19413, https://arxiv.org/abs/2504.19413. - d’Avila Garcez and Lamb (2023) Artur d’Avila Garcez and Luís C. Lamb. Neurosymbolic AI: The 3rd wave. *Artificial Intelligence Review*, 56(11):12387–12406, 2023. arXiv:2012.05876. https://doi.org/10.1007/s10462-023-10448-w. - Harris and Seaborne (2013) Steve Harris and Andy Seaborne. SPARQL 1.1 Query Language, 2013. W3C Recommendation, 21 March 2013, https://www.w3.org/TR/sparql11-query/. - Kang et al. (2026) Jiazhen Kang, Yuchen Lu, Chen Jiang, Jinrui Liu, Tianhao Zhang, Bo Jiang, Ningyuan Sun, Tongtong Wu, and Guilin Qi. KCoEvo: A knowledge graph augmented framework for evolutionary code generation, 2026. arXiv:2603.07581, https://arxiv.org/abs/2603.07581. - Knublauch and Kontokostas (2017) Holger Knublauch and Dimitris Kontokostas. Shapes Constraint Language (SHACL), 2017. W3C Recommendation, 20 July 2017, https://www.w3.org/TR/shacl/. - Lewis et al. (2020) Patrick Lewis, Ethan Perez, Aleksandra Piktus, Fabio Petroni, Vladimir Karpukhin, Naman Goyal, Heinrich Küttler, Mike Lewis, Wen-tau Yih, Tim Rocktäschel, Sebastian Riedel, and Douwe Kiela. Retrieval-augmented generation for knowledge-intensive NLP tasks. In *Advances in Neural Information Processing Systems 33*, pages 9459–9474, 2020. https://arxiv.org/abs/2005.11401. - Naur (1985) Peter Naur. Programming as theory building. *Microprocessing and Microprogramming*, 15:253-261.
相似文章
rohitg00/agentmemory
agentmemory 是一个开源的持久化记忆层,专为 AI 编程智能体(Claude Code、Cursor、Gemini CLI、Codex CLI 等)设计。它通过知识图谱、置信度评分和混合搜索技术,借助 MCP、Hooks 或 REST API,为智能体提供跨会话的长期记忆能力。该项目基于 iii 引擎构建,无需外部数据库,提供 51 个 MCP 工具。
PROJECTMEM:面向AI编码代理的本地优先、事件溯源记忆与判断层
PROJECTMEM是一个开源的、本地优先的记忆与判断层,专为AI编码代理设计,可记录开发事件,并在重复失败操作前提供确定性警告,从而减少令牌浪费并提高可复现性。
Memanto:面向长周期智能体的类型化语义记忆与信息论检索
Memanto 引入了一个基于模式(schema)、冲突解决机制以及 Moorcheh 信息论检索引擎的类型化语义记忆系统,在 LongMemEval 和 LoCoMo 基准测试中取得了最先进的结果,且零摄入成本、延迟低于 90 毫秒。
MindMemOS:面向AI智能体的可移植、自进化记忆操作系统层
本文介绍了MindMemOS,一个面向AI智能体的可移植、自进化记忆操作系统层,采用统一的实体-属性-时间结构,并具备记忆精炼和技能进化算法。它在LOCOMO和PersonaMem基准上取得了显著准确率,并将SpreadsheetBench性能提升了9.2个百分点。
什么是“最好的”用于编码智能体的多智能体记忆系统?我在 rohitg00/agentmemory 上提交了9个问题,已经放弃了。
一位开发者讨论了用于编码智能体的多智能体记忆系统的替代方案,对比了 Mem0 和 ByteRover,并询问关于 Opencode 和 Pi 的确认信息。