VS Code 代理中的记忆功能
Visual Studio Code 中的代理使用记忆功能在不同对话之间保留上下文。代理不会在每次会话开始时重新开始,而是能够回想您的偏好、应用从过往任务中汲取的经验,并随时间推移积累关于您代码库的知识。
有关记忆功能如何融入代理架构的背景信息,请参阅 代理概念。
本文介绍了如何在 VS Code 中使用记忆工具、如何管理记忆文件,以及 Copilot 记忆如何跨开发工作流程扩展记忆功能。
记忆工具
记忆工具目前处于预览阶段。您可以使用 github.copilot.chat.tools.memory.enabled 设置来启用或禁用它。
记忆工具是一个内置的代理工具,允许代理在工作时保存和回想笔记。您也可以明确要求代理记住某些内容。所有数据均存储在您的本地计算机上。记忆工具默认处于启用状态。
记忆范围
根据信息的持久性要求及其适用范围,每个范围都有不同的用途。
| 范围 | 路径 | 跨会话持久化 | 跨工作区持久化 | 用途 |
|---|---|---|---|---|
| 用户 | /memories/ |
是 | 是 | 偏好设置、模式、常用命令 |
| 存储库 | /memories/repo/ |
是 | 否(工作区范围) | 代码库规范、项目结构、构建命令 |
| 环节 | /memories/session/ |
否(聊天结束时清除) | 否 | 任务特定的上下文、进行中的计划 |
用户记忆
用户记忆在所有工作区和对话中保持持久。每次会话开始时,前 200 行会自动加载到代理的上下文中。使用用户记忆来存储通用的偏好设置和见解,无论您在处理哪个项目,这些信息均适用。
例如,要求代理记住某项编码偏好:
Remember that I prefer tabs over spaces and always use single quotes in JavaScript
在随后的对话中,即使是在不同的工作区中,代理也会回想此偏好并将其应用于生成的代码。
存储库记忆
存储库记忆的作用域为当前工作区,并在该工作区的不同对话之间保持持久。使用存储库记忆来记录关于特定代码库的事实,例如架构决策、命名规范或构建命令。
例如
Remember that this project uses the repository pattern for data access and all API endpoints require authentication
会话记忆
会话记忆的作用域为当前对话,并在对话结束时清除。使用会话记忆来记录临时的工作笔记或任务特定的上下文,以便代理在处理多步骤任务时进行跟踪。
Plan 代理使用会话记忆将其实施计划持久化到 plan.md 文件中。此计划在会话期间可用,并可通过 Chat: Show Memory Files(聊天:显示记忆文件) 命令查看,但在后续会话中不可用。了解更多关于使用代理进行规划的信息。
存储和检索记忆
要存储记忆,请使用自然语言要求代理记住某些内容。代理会确定合适的范围并创建或更新相应的记忆文件。
Remember that our team uses conventional commits for all commit messages
要检索记忆,请在新的对话中询问相关信息。代理会检查其记忆文件并回想相关内容。
What are our commit message conventions?
代理聊天回复中的记忆文件引用是可点击的,因此您可以直接查看记忆文件的内容。
管理记忆文件
VS Code 提供了用于查看和管理记忆文件的命令:
- Chat: Show Memory Files(聊天:显示记忆文件):打开所有作用域内的记忆文件列表。选择一个文件以查看其内容。
- Chat: Clear All Memory Files(聊天:清除所有记忆文件):移除所有作用域内的所有记忆文件。
目前尚不支持删除单个记忆文件。请使用 Chat: Clear All Memory Files 来移除所有记忆,或者要求代理更新特定的记忆文件以删除过时的信息。
Copilot 记忆 (Copilot Memory)
Copilot 记忆处于预览阶段,与上述本地记忆工具是分开的。
Copilot 记忆是一个由 GitHub 托管的记忆系统,它允许 Copilot 在工作时学习并保留特定于存储库的见解。与本地记忆工具不同,Copilot 记忆可在多个 GitHub Copilot 界面之间共享,包括 Copilot 云代理、Copilot 代码审查和 Copilot CLI。
Copilot 记忆的工作原理
当 Copilot 代理在您的存储库中工作时,它们会自动捕获称为“记忆”的紧密作用域见解。这些记忆具有以下特点:
- 存储库作用域:记忆与特定存储库绑定,只能由拥有写入权限的贡献者创建。
- 跨代理共享:一个 Copilot 代理所学到的知识可供其他代理使用。例如,Copilot 代码审查发现的模式稍后可以指导 Copilot 云代理。
- 使用前验证:代理在应用记忆之前会根据当前代码库对其进行验证,防止陈旧或错误的信息影响结果。
- 自动过期:记忆会在 28 天后被删除,以避免过时信息。
启用 Copilot 记忆
Copilot 记忆默认处于关闭状态,必须在您的 GitHub 设置中启用。
- 个人用户(Copilot Pro 或 Pro+):在 GitHub 上的个人 Copilot 设置中启用 Copilot 记忆。
- 组织和企业:通过组织或企业设置中的策略设置进行启用。
此外,您需要在 VS Code 中通过 github.copilot.chat.copilotMemory.enabled 设置来启用 Copilot 记忆集成。
存储库所有者可以在 Repository Settings(存储库设置) > Copilot > Memory(记忆) 中查看和删除已存储的记忆。
有关详细的设置说明,请参阅 GitHub 文档中的启用和管理 Copilot 记忆。
记忆工具与 Copilot 记忆的对比
| 记忆工具 | Copilot 记忆 (Copilot Memory) | |
|---|---|---|
| 存储方式 | 本地(在您的机器上) | GitHub 托管(远程) |
| 范围 | 用户、存储库、会话 | 仅限存储库 |
| 在 Copilot 界面间共享 | 否(仅限 VS Code) | 是(编码代理、代码审查、CLI) |
| 创建方式 | 您或代理在聊天时创建 | Copilot 代理自动创建 |
| 默认启用 | 是 | 否(需选择启用) |
| 过期机制 | 手动管理 | 自动(28 天) |
这两个系统是互补的。在 VS Code 中,使用本地记忆工具处理个人偏好和会话特定的上下文;使用 Copilot 记忆来存储可惠及整个开发工作流程中所有 Copilot 代理的存储库知识。
相关资源
- 使用代理进行规划
- 智能体工具
- 启用和管理 Copilot 记忆(GitHub 文档)
- 为 GitHub Copilot 构建代理记忆系统(GitHub 博客)