技术速递|为 GitHub Copilot 构建智能体记忆系统

作者:Tiferet

排版:Alan Wang

Copilot 的跨智能体记忆系统使各类智能体能够在整个开发工作流中学习和改进,涵盖从编码智能体、CLI 到代码审查。

我们的愿景是将 GitHub Copilot 发展为一个由多个智能体组成的生态系统,在整个开发生命周期中协作------从编码和代码审查,到安全、调试、部署和维护。要释放多智能体工作流的全部潜力,我们需要超越彼此孤立、每次会话都从零开始的交互方式,转向一个随着每次使用不断积累的知识库。

跨智能体记忆使各类智能体能够在整个开发流程中基于经验进行记忆和学习,而无需依赖用户的明确指示。

每一次交互都会让 Copilot 更加了解你的代码库和约定,使其随着时间推移变得越来越高效。例如,当 Copilot 编码智能体在修复安全漏洞时学会了你的仓库如何处理数据库连接,Copilot 代码审查智能体之后就可以利用这些知识,在未来的拉取请求中识别不一致的模式。又比如,如果 Copilot 代码审查智能体发现某些文件必须保持同步,那么在未来生成新代码时,Copilot 编码智能体会自动同时更新这些文件。

目前 GitHub Copilot 中记忆的工作方式(公开预览版)

Copilot 的新记忆系统已进入公开预览,首先支持 Copilot 编码智能体、Copilot CLI 和 Copilot 代码审查,面向所有付费 Copilot 计划,其他智能体将很快跟进(了解其工作方式请参阅我们的文档)。该功能默认关闭,完全自愿启用,因此由你决定何时以及在何处让 Copilot 开始从你的工作流中学习。

你可以在 GitHub Copilot 设置中开启记忆功能。
了解如何启用记忆功能 >

挑战:记住什么,以及何时遗忘

我们的智能体在持续提升提取特定任务所需上下文的能力。记忆系统的核心挑战并不在于信息检索,而在于确保任何存储的知识在代码随分支和时间演变的过程中仍然有效。

在实践中,这意味着记忆系统必须处理代码变更、被放弃的分支以及相互冲突的观察结果------同时确保智能体仅基于与当前任务和代码状态相关的信息采取行动。例如,在某个分支中观察到的日志约定,之后可能被修改、替代,甚至根本未被合并。

一种选择是实现离线整理服务,用于去重、解决冲突、跟踪分支状态并清理过时信息。然而在 GitHub 的规模下,这种方式会引入显著的工程复杂性和 LLM 成本,同时仍然需要在读取时进行变更协调。因此我们首先探索了一种更简单、更高效的方法。

我们的解决方案:即时验证

信息检索是一个非对称问题:解决它很难,但验证它却很容易。通过使用实时验证,我们既能获得预存记忆的优势,又能避免过时或误导信息的风险。

我们不进行离线记忆整理,而是以带引用的方式存储记忆:每条事实都附带支持该事实的具体代码位置引用。当智能体遇到存储的记忆时,它会实时验证这些引用,在使用前确认信息在当前分支中仍然准确且相关。这种验证仅需少量简单的读取操作,在我们的测试中不会为智能体会话带来显著延迟。

将记忆创建作为工具调用

我们将记忆创建实现为一个工具,当智能体发现某些信息可能对未来任务具有可执行意义时,可以调用该工具。

考虑以下示例:在审查一位资深开发者的拉取请求时,Copilot 代码审查发现 API 版本跟踪必须在代码库的不同部分保持同步。它可能在同一个拉取请求中看到以下三个更新:

在 src/client/sdk/constants.ts 中:

python 复制代码
export const API_VERSION = "v2.1.4";

在 server/routes/api.go 中:

python 复制代码
const APIVersion = "v2.1.4"

在 docs/api-reference.md 中:

python 复制代码
Version: v2.1.4

对此,Copilot 代码审查可以调用记忆存储工具,创建如下记忆:

python 复制代码
{
subject: "API version synchronization",
fact: "API version must match between client SDK, server routes, and documentation.",
citations: ["src/client/sdk/constants.ts:12", "server/routes/api.go:8", "docs/api-reference.md:37"],
reason: "If the API version is not kept properly synchronized, the integration can fail or exhibit subtle bugs. Remembering these locations will help ensure they are kept synchronized in future updates."
}

结果是 :下次智能体在这些位置中的任意一个更新 API 版本时,它都会看到这条记忆,并意识到必须同步更新其他位置,从而避免可能破坏集成的版本不一致。同样,如果一位经验不足的开发者只更新了其中一个位置并提交拉取请求,Copilot 代码审查会指出遗漏并建议补充更新,从而将资深成员的知识自动传递给新成员。💥

记忆的使用

检索

当智能体开始新的会话时,我们会检索目标仓库中最新的记忆,并将其包含在提示中。未来的实现将支持更多检索技术,例如搜索工具和加权优先级排序。

验证

在应用任何记忆之前,系统会提示智能体通过检查引用的代码位置来验证其准确性和相关性。如果代码与记忆内容相矛盾,或引用无效(例如指向不存在的位置),智能体会被鼓励根据新证据存储修正后的记忆。如果引用有效且记忆被认为有用,智能体会再次存储该记忆以刷新时间戳。

隐私与安全

需要强调的是,记忆具有严格的作用范围。某个仓库的记忆只能在该仓库内由具有写入权限的贡献者操作时创建,并且只能在同一仓库中由具有读取权限的用户发起的任务中使用。就像源代码本身一样,关于某个仓库的记忆仅限于该仓库之内,从而确保隐私和安全。

跨智能体记忆共享

我们记忆系统的真正力量在于不同 Copilot 智能体之间的相互学习。

  1. Copilot 代码审查在审查拉取请求时发现一个日志约定:"日志文件名应遵循 'app-YYYYMMDD.log' 模式。使用 Winston 进行日志记录,格式为:时间戳、错误代码、用户 ID。"

  2. 之后,Copilot 编码智能体被分配实现一个新的微服务任务。它看到并验证了这条记忆,并自动应用相同的日志格式。

  3. Copilot CLI 帮助开发者调试问题时,可以高效检索正确的日志文件,并基于代码审查智能体学到的日志格式找到相关时间戳。

每个智能体都为共享知识库做出贡献并从中受益,使智能体能够在不同任务中复用经过验证的仓库知识。随着更多智能体采用记忆机制------无论是用于开发流程、调试还是安全分析------它们都将参与并受益于对代码库不断演进的共同理解。

评估

对智能体韧性进行压力测试

我们最大的担忧是过时、不正确甚至恶意注入的记忆所带来的影响。为测试系统的韧性,我们故意在仓库中植入对抗性记忆------与代码库相矛盾的事实,并附带指向无关或不存在代码位置的引用。

在所有测试案例中,智能体都持续验证引用、发现矛盾并更新错误记忆。记忆池会在智能体根据自身观察存储修正版本后实现自我修复。引用验证机制有效防止了误导性记忆的风险。

模拟真实的记忆池

对于评估集中的每个仓库,我们在多种历史任务(早于目标评估任务)上运行智能体,并让其通过我们提供的 "store_memory" 工具自然填充记忆数据库。为模拟最坏情况,我们刻意提高来自已被放弃或未合并分支的记忆比例,确保记忆环境具有现实噪声。

当我们在评估集的拉取请求上运行 Copilot 代码审查时,使用记忆后,精确率提升 3%,召回率提升 4%。

衡量对开发者的影响

记忆系统的最终考验是它在开发者日常工作流中的实际影响。我们在首批部署记忆功能的两个 Copilot 智能体------Copilot 代码审查和 Copilot 编码智能体------上进行了 A/B 测试,衡量关键用户指标的变化。

  • Copilot 编码智能体:拉取请求合并率提升 7%(启用记忆为 90%,未启用为 83%)。这意味着当开发者将任务交给 Copilot 时,可以节省更多时间,更频繁获得期望结果。

  • Copilot 代码审查:评论的正向反馈率提升 2%(启用记忆为 77%,未启用为 75%)。这意味着自动化代码审查带来了更高质量的质量保障。

  • 两项提升均具有高度统计显著性,p 值 < 0.00001。

这些结果表明,跨智能体记忆为开发者的日常工作流带来了可衡量的价值。

下一步

我们已在 Copilot CLI、Copilot 编码智能体和 Copilot 代码审查中,以自愿启用方式部署了基于仓库范围的记忆存储与使用功能。我们正在倾听用户反馈,并密切跟踪性能指标,以便在更广泛的 Copilot 工作流中推广之前持续迭代。同时,我们也在探索多种方法来优化记忆的生成、整理、优先级排序和使用。

跨智能体记忆通过让经过验证的信息在智能体工作流中持续存在,减少了每次任务开始时重新建立上下文的需要。我们对记忆将带来的可能性充满期待,而这仅仅是一个开始。期待你的反馈,帮助我们确保 GitHub Copilot 以最符合你需求的方式不断演进。祝编程愉快!

阅读我们的文档,了解如何在 Copilot 中启用记忆功能 >

相关推荐
weixin_553132072 小时前
探索Vortex开源GPGPU:RISC-V SIMT架构(4-2),TCU 矩阵计算(1)
矩阵·架构·github·risc-v·wmma·simt·tcu
莫叫石榴姐2 小时前
海豚调度器DataX任务执行失败(退出码127)解决方案(软链接版)
大数据·github
乐茵lin2 小时前
github开源项目 “校园活动平台“ —— 报名活动二维码生成核销流程详解
计算机·微服务·golang·开源·github·大学生·zero
zhangfeng11332 小时前
GitHub 知名博主 hiyouga 及其明星项目 LlamaFactory项目介绍 详细介绍
人工智能·pytorch·语言模型·github
苏琢玉3 小时前
用 Go 实现一个可长期运行的 GitHub Webhook 服务实践
golang·github
CoderJia程序员甲3 小时前
GitHub 热榜项目 - 日榜(2026-02-12)
人工智能·ai·大模型·github·ai教程
微尘hjx3 小时前
【GitHub 代码仓 03】Git + GitHub 实战速查手册
git·github