MemGovern:通过学习受治理的人类经验来增强代码智能体 MemGovern: Enhancing Code Agents through Learning from Governed Human Experiences
将GitHub历史经验治理为结构化记忆卡,提升代码智能体修bug能力
前置知识
代码智能体(Code Agent)
基于大语言模型的自主软件工程代理,能够理解代码库结构、定位bug、生成修复补丁。典型代表如SWE-Agent,它通过Agent-Computer Interface(ACI)与代码仓库交互,执行代码导航、编辑和测试等操作。代码智能体的核心能力在于将自然语言问题描述转化为具体的代码修改,通常在SWE-bench等基准上进行评估。
本文的核心目标是增强代码智能体的能力,理解代码智能体的工作机制是理解MemGovern改进点的前提。
SWE-bench Verified
一个用于评估代码智能体自动修复真实世界GitHub issue能力的标准基准测试集。它包含从知名开源项目(如Django、Flask、scikit-learn等)中收集的真实bug报告及其对应的修复补丁。智能体需要根据issue描述,自主在代码库中定位问题并生成正确的patch。验证集包含500个经过人工验证的实例,是当前代码智能体领域最权威的评测标准之一。
SWE-bench Verified是本文所有实验的核心评测平台,理解该基准才能理解论文中各项指标的含义。
检索增强生成(RAG)
一种将外部知识检索与大语言模型生成相结合的技术范式。标准RAG流程包括:给定用户查询,系统从知识库中检索相关文档片段,然后将这些片段作为上下文注入到LLM的prompt中,辅助模型生成更准确的回答。RAG的核心优势在于让模型能够访问训练数据之外的最新或特定领域知识,避免从头记忆所有信息。
本文提出的Agentic Experience Search是RAG范式的进化版本,理解标准RAG的局限性有助于理解本文方法的创新之处。
经验治理(Experience Governance)
本文提出的核心概念,指将原始的、非结构化的GitHub issue/PR讨论数据,通过系统化的筛选、标准化和质量控制流程,转化为高质量、结构化的「经验卡片」的过程。这个过程类似于数据清洗和知识工程的结合,但专注于将人类调试经验转化为智能体可直接利用的知识表示。
这是本文的核心创新概念,整篇论文的方法论都围绕如何有效治理人类经验展开。
经验卡片(Experience Card)
MemGovern治理后产出的标准化知识单元,每个卡片包含两层结构:索引层(Index Layer)包含标准化的问题摘要和可泛化的诊断信号,用于检索匹配;解决层(Resolution Layer)包含根本原因分析、修复策略和补丁摘要,提供可迁移的修复知识。这种双层设计将检索语义与推理逻辑解耦,使智能体能够基于症状相似性检索经验,同时利用抽象策略进行跨仓库迁移。
经验卡片是MemGovern知识表示的核心载体,理解其结构设计是理解方法有效性的关键。
研究动机
当前代码智能体在修复GitHub仓库中的真实bug时,面临着一个根本性的「闭世界」局限:它们试图从零开始修复bug,或者仅依赖本地代码上下文进行推理,完全忽略了GitHub平台上积累的海量人类调试经验。在真实的软件工程实践中,开发者很少从零修复复杂bug——他们通常会在GitHub等协作平台上搜索类似问题的历史解决方案,考察过去的调试推理和修复模式。然而,将GitHub上的开放世界经验转化为智能体友好的知识面临巨大挑战。首先,原始的issue和PR讨论包含大量非结构化、碎片化的信息,如社交寒暄、流程通知等噪音内容,这些往往掩盖了真正的技术洞察。其次,不同项目之间的术语差异、模块组织和编码风格的异构性,阻碍了修复知识的标准化迁移。具体而言,跨仓库的人类issue经验既噪音密集又高度异构,缺乏有效的治理机制将其转化为可检索、可验证的知识表示。
本文的目标是本文的具体目标是设计一个系统化的经验治理框架MemGovern,将GitHub上的原始人类调试经验转化为结构化、智能体友好的经验记忆。具体而言,MemGovern需要:(1)从GitHub上大规模收集高质量的issue-PR-patch三元组;(2)通过多阶段治理流程将这些原始数据清洗、标准化为经验卡片;(3)设计智能体经验搜索机制,使智能体能够像人类工程师一样逐步检索和利用这些经验;(4)作为即插即用的模块,无缝集成到现有的代码智能体框架中(如SWE-Agent),在SWE-bench Verified上实现显著的性能提升。
与已有工作不同的是,本文的独特切入角度在于,它不是通过训练新的模型或设计新的智能体架构来提升性能,而是从「知识基础设施」的角度出发,专注于治理和结构化已有的人类经验。与现有方法相比,MemGovern的核心差异体现在三个维度:第一,与仅在单一仓库内检索的方法不同,MemGovern实现了跨仓库的经验迁移;第二,与简单的RAG方法不同,MemGovern不是简单地检索和注入原始数据,而是通过经验治理将噪音数据转化为高质量知识;第三,与自动生成合成经验的方法不同,MemGovern直接利用GitHub上真实的人类调试经验,这些经验天然包含丰富的调试推理和修复模式。这种「先治理后利用」的思路,为代码智能体提供了一个全新的经验基础设施维度。
核心方法
MemGovern的方法框架可以分为两个核心阶段:经验治理和经验搜索。直觉上,MemGovern的出发点是:GitHub上有海量的人类调试经验,但这些数据是「生肉」——充满噪音、格式不一、难以直接利用。因此,第一步是把这些「生肉」加工成「熟食」(经验卡片),第二步是教智能体如何「点菜」(搜索和浏览经验卡片)。技术路线如下:首先从GitHub上筛选高质量的仓库和实例,然后通过LLM将原始讨论标准化为结构化的经验卡片(包含索引层和解决层),接着通过质量控制确保卡片质量,最后设计双原语接口(搜索+浏览)让智能体能够渐进式地检索和利用这些经验。整个框架以SWE-Agent为基础骨架,通过添加Experience Search和Experience Browse两个工具实现增强。
MemGovern的核心创新在于两个关键设计决策,这两个决策使其与已有的RAG和经验学习方法形成本质区别。第一个创新是「检索语义与推理逻辑的解耦」:传统方法要么将原始数据直接注入上下文,要么用单一的向量表示捕获整个文档。MemGovern将每个经验卡片明确分为两层——索引层(Index Layer)仅包含标准化的问题摘要和诊断信号,用于跨仓库的语义检索;解决层(Resolution Layer)包含根本原因分析、修复策略和补丁摘要,提供可迁移的修复逻辑。这种解耦使得检索基于症状相似性,而修复利用抽象策略,实现了有效的跨仓库泛化。第二个创新是「渐进式智能体搜索」:与标准RAG的一次性检索不同,MemGovern设计了双原语接口——Searching用于广泛的候选发现,Browsing用于深入的证据提取。智能体可以根据问题解决的演进状态,自主决定何时搜索、何时浏览、浏览哪些候选,实现了从「被动注入」到「主动探索」的范式转变。
方法步骤详情
MemGovern的完整方法流程包含以下步骤:(1)**仓库选择**:从GitHub上筛选Top-M个高质量仓库,使用评分函数 $$\text{Score}(r) = \lambda_s \log(1 + S_r) + \lambda_i \log(1 + I_r) + \lambda_p \log(1 + P_r)$$,其中 $S_r$、$I_r$、$P_r$ 分别代表Stars、Issues和PRs数量,平衡流行度与维护活跃度。(2)**实例净化**:在选定的仓库中筛选(Issue, PR, Patch)三元组,要求必须有完整的证据链:issue与merged代码的显式关联、可解析的diff、以及诊断锚点(如堆栈跟踪)。同时分析评论线程,丢弃技术内容比例低于阈值 $\tau = 0.2$ 的实例。(3)**内容净化**:使用LLM压缩原始评论流,移除非技术交互(如寒暄、合并通知)和冗余执行日志。(4)**标准化**:将净化后的内容重组为双层结构——索引层包含标准化的问题摘要和通用诊断信号,解决层包含根本原因分析、抽象修复策略和补丁摘要。每个经验卡片表示为 $E_i = \langle \text{Index} = I_i, \text{Resolution} = R_i \rangle$。(5)**质量控制**:使用LLM作为结构化评估器,对每个生成的经验卡片进行多维度评分。如果总分低于阈值 $\gamma$,评估器提供针对性反馈,提取流程根据反馈重新生成有问题的部分,最多迭代三次。(6)**智能体集成**:在SWE-Agent框架中实现两个工具——Experience Search工具接受查询和top-k参数,基于索引层的余弦相似度 $\text{sim}(q, I_i) = \frac{\phi(q) \cdot \phi(I_i)}{\|\phi(q)\| \|\phi(I_i)\|}$ 返回排序的候选列表;Experience Browse工具接受经验卡片的唯一索引,返回完整的解决层内容。
技术新颖性
MemGovern的技术新颖性体现在多个层面。首先,在知识表示层面,双层解耦设计(Index Layer + Resolution Layer)是全新的经验组织范式,它将传统的「文档即知识」升级为「结构化知识单元」,使检索和推理能够在不同抽象层次上独立优化。其次,在搜索机制层面,渐进式智能体搜索突破了传统RAG的「检索-注入」范式,引入了智能体自主探索的能力——智能体可以根据当前问题状态动态调整搜索策略,进行多轮检索和选择性浏览,这更接近人类工程师查阅技术文档的方式。第三,在数据治理层面,三阶段治理流程(选择、标准化、质量控制)特别是checklist-based质量控制中的Refine Loop机制,确保了经验记忆的高保真度,这是现有方法所缺乏的系统化质量保障。最后,在系统设计层面,MemGovern作为即插即用的模块设计,可以无缝集成到任何现有的代码智能体框架中,这种模块化设计大大提升了方法的实用性和可扩展性。
实验结果
本文在SWE-bench Verified上进行了全面的实验评估,主要发现如下:(1)**一致性性能提升**:MemGovern在所有7个测试的LLM上都一致地超越了SWE-Agent基线。在Claude-4-Sonnet上,解决率从66.6%提升至69.8%(+3.2%);在GPT-5-Medium上从65.0%提升至67.4%(+2.4%);在DeepSeek-V3.1T上从62.8%提升至65.8%(+3.0%);在Qwen3-235B上从47.2%提升至55.4%(+8.2%);在Kimi-K2-Instruct上从43.8%提升至51.8%(+8.0%);在Qwen3-Coder-30B上从48.0%提升至51.4%(+3.4%);在GPT-4o上从23.2%提升至32.6%(+9.4%);在GPT-4o-Mini上从14.0%提升至17.2%(+3.2%)。平均提升约4.65%。(2)**对弱模型增益更大**:初始性能较弱的模型(如GPT-4o、Qwen3-235B)获得的提升更为显著,GPT-4o的提升高达9.4个百分点,这表明MemGovern能够有效弥补模型自身能力的不足。(3)**经验治理的质量至关重要**:消融实验表明,使用原始未处理的GitHub数据虽然偶尔能提供部分收益,但效果不稳定且模型依赖性强;而经过治理的经验卡片能稳定地带来更强的改进。(4)**Agentic Search优于标准RAG**:对比实验显示,Agentic Search在所有测试模型上都优于静态RAG和自适应RAG。在Qwen3-Coder-30B上,标准RAG反而降低了1.2%的性能,而Agentic Search提升了3.4%。(5)**经验记忆规模的单调收益**:将经验卡片数量从10%增加到100%,性能呈单调递增趋势,表明MemGovern的收益来自多样化的治理经验累积,而非少数特例。(6)**智能体行为模式改变**:MemGovern使智能体的信息收集步骤从15.0%降至11.3%,代码编辑从40.9%降至33.3%,代码执行从19.6%升至22.3%,表明经验卡片提供了更有针对性的导航指导,减少了不必要的探索和编辑。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| SWE-bench Verified(Claude-4-Sonnet) | Resolved Rate (%) | 69.8% | 66.6%(SWE-Agent) | +3.2% |
| SWE-bench Verified(GPT-5-Medium) | Resolved Rate (%) | 67.4% | 65.0%(SWE-Agent) | +2.4% |
| SWE-bench Verified(DeepSeek-V3.1T) | Resolved Rate (%) | 65.8% | 62.8%(SWE-Agent) | +3.0% |
| SWE-bench Verified(Qwen3-235B) | Resolved Rate (%) | 55.4% | 47.2%(SWE-Agent) | +8.2% |
| SWE-bench Verified(Kimi-K2-Instruct) | Resolved Rate (%) | 51.8% | 43.8%(SWE-Agent) | +8.0% |
| SWE-bench Verified(Qwen3-Coder-30B) | Resolved Rate (%) | 51.4% | 48.0%(SWE-Agent) | +3.4% |
| SWE-bench Verified(GPT-4o) | Resolved Rate (%) | 32.6% | 23.2%(SWE-Agent) | +9.4% |
| SWE-bench Verified(GPT-4o-Mini) | Resolved Rate (%) | 17.2% | 14.0%(SWE-Agent) | +3.2% |
局限与改进
作者在论文末尾明确指出了MemGovern的一个主要局限:在智能体执行过程中搜索记忆会带来额外的token消耗。具体数据显示,使用MemGovern后平均token消耗有所增加——例如Claude-4-Sonnet从2.29M增至2.35M tokens,GPT-4o从0.73M增至0.97M tokens,对应的成本也从$6.94增至$7.27(Claude-4-Sonnet)和从$1.38增至$1.84(GPT-4o)。作者认为考虑到平均4.65%的性能提升,这些额外的token消耗是可接受的权衡。除此之外,从独立分析的角度看,还存在以下局限:(1)**数据时效性问题**:135K经验卡片来源于历史GitHub数据,随着软件生态的演进(新框架版本、API变更等),部分经验可能逐渐过时,论文未涉及记忆的更新和维护机制。(2)**LLM依赖性**:经验治理流程本身依赖GPT-5.1进行标准化和质量控制,这引入了额外的LLM调用成本和潜在的幻觉风险,尽管有Refine Loop机制,但质量控制的上限受限于评估LLM的能力。(3)**基准覆盖单一**:所有实验仅在SWE-bench Verified上进行,该基准主要关注Python项目的bug修复,MemGovern在其他编程语言、其他类型任务(如feature实现、代码重构)上的效果有待验证。(4)**仓库选择偏差**:基于Stars/Issues/PRs的评分函数可能偏向于大型流行项目,而许多中小型但同样有价值的项目可能被遗漏。
独立分析的弱点
从独立分析的角度,MemGovern存在以下可改进的弱点:(1)**索引层信息损失**:为了最大化跨仓库的语义匹配性,索引层故意移除了仓库特定标识符和具体实现细节。然而,在某些情况下,这些细节可能是诊断问题的关键线索。例如,某个bug可能只在特定版本的框架中出现,移除版本信息可能导致检索到不相关的经验。改进方向可以是设计层次化的索引结构,在保持通用性的同时保留关键的上下文信息。(2)**静态评分函数**:仓库选择使用的评分函数 $$\text{Score}(r) = \lambda_s \log(1 + S_r) + \lambda_i \log(1 + I_r) + \lambda_p \log(1 + P_r)$$ 基于固定的权重组合,无法捕捉仓库质量的动态变化。一个拥有大量Stars但已停止维护的项目可能被高估。改进方向可以引入时间衰减因子或基于最近活动的动态权重。(3)**单轮质量控制**:虽然Refine Loop最多迭代三次,但质量控制仅在卡片生成阶段进行,而非在检索和使用阶段。随着智能体实际使用这些卡片,可能会发现某些卡片在实际场景中效果不佳,但这些反馈无法回流到质量控制流程中。改进方向可以是建立用户反馈驱动的持续质量改进机制。(4)**缺乏个性化**:当前的治理流程对所有智能体和所有类型的问题采用相同的标准化策略,未考虑不同智能体的能力差异或不同类型bug的特征差异。改进方向可以是根据智能体模型能力和问题类型,动态调整经验卡片的详细程度和组织结构。
未来方向
作者在论文中提出,未来将探索记忆长度压缩策略以减少token消耗。基于MemGovern的成果,还可以从以下方向延伸:(1)**动态记忆更新**:建立持续的经验治理管道,自动追踪GitHub上新的高质量修复案例,定期更新和扩充经验卡片库,同时淘汰过时的卡片,保持记忆库的时效性。(2)**跨任务迁移**:将经验治理框架从bug修复扩展到其他软件工程任务,如feature实现、代码重构、安全漏洞修复等,构建更全面的软件工程经验基础设施。(3)**多模态经验**:当前经验卡片仅包含文本信息,未来可以纳入代码diff的可视化表示、测试覆盖率信息、性能指标等多模态信息,提供更丰富的修复上下文。(4)**个性化检索**:根据智能体的模型能力、历史表现和当前问题的特征,动态调整检索策略和经验卡片的呈现方式,实现个性化的经验推荐。(5)**协作式经验构建**:探索利用代码智能体自身的修复经验来扩充和改进经验卡片库,形成「人类经验→智能体学习→智能体经验→反馈改进」的闭环。(6)**记忆压缩技术**:研究如何在不损失关键信息的前提下压缩经验卡片的长度,例如通过抽象化、摘要化或知识蒸馏技术,减少token消耗的同时保持检索和推理的有效性。
复现评估
从复现角度来看,MemGovern的复现具有一定的挑战性但基本可行。**开源情况**:论文提供了GitHub仓库链接 https://github.com/QuantaAlpha/MemGovern,但未明确说明是否包含完整的训练数据和模型权重。**数据**:经验卡片的构建依赖于约150K个从GitHub收集的Issue-PR-Patch三元组,这些数据需要从GitHub API爬取,涉及大量的数据收集和清洗工作。论文使用GPT-5.1(medium reasoning)进行经验治理,这需要相应的API访问权限和费用。**算力**:经验治理流程需要大量LLM调用(135K张经验卡片的生成和质量控制),对应的API成本较高。智能体评测本身也需要在SWE-bench上运行,每个实例的token消耗在0.7M-2.4M之间,完整评测的成本在数十到数百美元不等。**难度**:方法的核心逻辑(双层经验卡片设计、双原语搜索接口)相对清晰,但数据治理流程的细节(如净化prompt的设计、质量控制checklist的具体条目)对最终效果影响很大,这些细节可能需要仔细调整。总体而言,复现的主要门槛在于数据收集和LLM API成本,而非方法本身的复杂性。
论文图表
示意图对比了MemGovern与现有方法的本质区别。现有方法直接从原始GitHub数据中学习,而MemGovern通过经验治理将原始数据转化为结构化的经验卡片,实现智能体友好的记忆基础设施。
这张图帮助读者快速理解MemGovern的独特定位——不是直接利用原始数据,而是通过治理流程提升数据质量。