任何开始处理现有代码库的开发人员通常会阅读存储库的自述文件、编码约定和其他文档,以了解项目的工作原理以及如何参与。 这有助于他们从一开始就提交高质量的拉取请求。 当他们处理项目时,他们的工作质量通常会提高,因为他们更熟悉代码库并了解其细微差别。 同样,Copilot Memory 允许 Copilot 构建自己对存储库的理解,以及你喜欢的工作方式,使它能够随着时间的推移变得越来越有效。
记忆类型
Copilot 可以存储两种类型的内存:
- 存储库级事实描述代码库,并会与你的协作者共享。
- 用户级首选项描述你个人喜欢的工作方式,并会在不同存储库之间随你保留。 它们可以包括你想要如何呈现响应、需要审批的操作以及想要 Copilot 在各个项目中遵循的工作流。
| 存储库级事实 | 用户级首选项 | |
|---|---|---|
| 捕获的内容 | 有关存储库的事实,例如编码约定、体系结构决策、生成和测试命令以及特定于项目的规则。 | 明确声明的、不敏感的首选项、审批要求和跨项目应用的可重用工作流。 |
| 谁可以看到它们 | 具有存储库读取权限且可以使用 Copilot Memory 的用户。 查看存储库设置中的记忆需要写入权限,并为您的帐户启用用户级首选项。 | 你和任何能查看显示该首选项的共享代理会话的人都可以看到。 在 Copilot Business 和 Copilot Enterprise 计划中,组织或企业管理员也可以查看和导出它们。 |
| 适用范围 | 仅在同一存储库的操作中。 | Copilot在您的所有存储库中的交互中。 |
| 谁可以创建它们 | 对存储库具有写入访问权限且已启用 Copilot Memory 的用户 | 只有你自己,能从你自己的交互中得出答案。 |
| 谁可以删除它们 | 对存储库具有写入访问权限且其帐户启用了用户级首选项的用户。 请参阅“管理企业、组织或存储库的 Copilot 记忆”。 | 你。 在Copilot Business和Copilot Enterprise计划中,组织或企业管理员也可以删除它们。 |
| 如何引用它们 | 引文指向支持该论断的代码。 | 引文可能包含直接引用你所说内容的引文。 |
例如,“此存储库使用 Vitest 进行单元测试”是一个关于代码库的事实,它对于在其中工作的每个人都很有用,因此被存储为存储库级事实。 “在应用更改之前解释你的更改”是关于你希望 Copilot 如何表现的声明,因此它会存储为用户级首选项,并适用于你工作的任何地方。
仅当适用设置允许该类型的记忆时,才会创建记忆。
可使用Copilot Memory的位置
Copilot Memory 在所有付费 Copilot 计划中均可用。 是否使用它取决于您的计划设置、存储库访问权限以及您所使用的界面。
Copilot Memory 可供 Copilot 在以下场景中使用:
- GitHub Copilot app
- Copilot CLI
- Copilot code review
- Copilot cloud agent
- Agentic Autofix
- Copilot 在 GitHub Mobile 中
- Copilot 在 Slack 中
- Copilotin Microsoft Teams
一个 Copilot 界面捕获的事实和偏好设置可供另一个 Copilot 界面使用。 例如,如果 Copilot cloud agent 发现存储库如何处理数据库连接, Copilot code review 则以后可以应用该知识来发现拉取请求中的不一致模式。 同样,如果 Copilot code review 了解到某些设置必须跨两个文件保持同步, Copilot cloud agent 则更改一个文件时将知道更新这两个文件。
注意
GitHub Copilot app是否可用取决于是否已为你的帐户启用Copilot Memory。 应用中没有可用于启用此功能的设置。 如果可用,个人设置、存储库设置和适用的策略将确定可以使用哪种类型的内存。
在**** 中的项目的GitHub Copilot app设置是一项单独的功能。 它跨任务存储该项目的偏好设置,而不是本文中所述的共享存储库信息和用户级偏好设置。 编辑或关闭项目的记忆库不会编辑或关闭 Copilot Memory。
存储和所有权在内存类型之间有何差异
这两种类型的内存单独存储,其所有权和管理方式不同。
存储库级事实
每个仓库级信息都属于一个特定的仓库,并且可以在该仓库的设置中查看和删除。 当 Copilot 发现与当前工作相关的存储库级事实时,它会根据当前分支检查该事实的引文,以判断信息是否仍然准确。 由于这是 Copilot 作出的判断,而不是系统执行的保证,因此不应依赖存储的事实作为始终遵循的规则。 若要一致地提供说明,请改用自定义说明。 请参阅 结合自定义说明使用 Copilot Memory。
存储库事实不会在组织的各个存储库之间汇总。 派生仓库不会将其已存储的记忆复制到派生仓库。 在分叉中工作时,用户级首选项仍可应用。
用户级首选项
用户级首选项存储在用户设置中。 当找到与其当前工作相关的首选项时 Copilot ,它使用最佳判断来确认首选项仍适用。
Copilot Business 和 Copilot Enterprise 计划
在 Copilot Business 和 Copilot Enterprise 计划中,用户级首选项由计费实体拥有,该实体是授予用户许可证的组织或企业。 创建首选项时,该首选项会存储在与用户当前使用情况对应的有效计费实体名下。 然后,在为代理会话创建上下文时 Copilot ,它会再次查看用户的当前活动计费实体,并仅检索该计费实体拥有的首选项。 用户可以在其 个人设置中查看其存储的用户级首选项以及每个显示首选项的所有者。
拥有来自不同地区的多个许可证的用户必须在 帐户设置 中选择默认计费实体,才能创建新的仓库级 facts 或用户级首选项。
组织和企业所有者可以批量导出或删除其成员的用户级首选项,也可按用户分别执行。 请参阅“管理企业、组织或存储库的 Copilot 记忆”。
回忆是如何形成的
Copilot 会自行形成记忆,这是与你协作过程中产生的附带结果。 随着 Copilot 的运行,它会注意到有关存储库的持久事实以及你个人偏好的详细信息,并将其存储起来以供后续使用,因为它认为这些信息值得保留。
可以查看Copilot已为你存储的用户级首选项,并删除任何你不想让Copilot使用的首选项。 如果您对某个存储库具有写入权限,且您的帐户已启用用户级首选项,还可以在该存储库的设置中查看和删除存储库级信息。 你不能直接在 GitHub.com 的设置中创建或编辑单个记忆条目,但你可以影响 Copilot 创建记忆条目。 如果明确声明个人偏好,或有关存储库的事实(或显式要求 Copilot 记住某些内容),则这些内容很可能会被捕获为记忆。 还可以使用 Copilot CLI 批量导入预先准备好的记忆库。 请参阅使用Copilot CLI导入记忆库。 当 Copilot 由于你说的话创建一个记忆时,你的话将被记录为该记忆的引用内容。
Copilot 选择记忆是存储库级事实还是用户级首选项。 它根据该记忆适用于谁来做出该选择,而不是根据由谁陈述。 对于在存储库中工作的任何人来说都适用的内容,就属于存储库级设置,而反映你自己工作方式的内容则属于用户级首选项。 如果你的意图不明确,Copilot 会要求你澄清范围,而不是猜测。 可以通过明确说明该记忆是供你个人使用,还是供在存储库中工作的所有人使用,来避免歧义。
可以创建的内存 Copilot 类型取决于上下文。 仅当 Copilot 在你具有写入权限的存储库中工作时,才会创建存储库级信息,并且仅当 Copilot 能够识别出你是其正在与之交互的用户时,才会创建用户级首选项。
为每个内存存储数据
每个记忆都包含 Copilot 需要用来确定是否、何时以及如何使用该记忆的数据。 某些数据(例如投票详细信息)仅供内部使用,因此不会显示在 GitHub 网站上,也不会包含在审计日志中。 下表显示了为每个内存存储的部分数据,并指示哪些字段显示在 GitHub.com 上的设置页面中。
| Data | Example | 已显示 |
|---|---|---|
| 内存文本内容 | The payments module must never call Stripe directly — route all charges through BillingGateway. | |
| 主题领域 | architecture | |
| Agent | Copilot cloud agent | |
| Model | claude-sonnet-4 | |
| 计费实体 | Acme Org | |
| 引文 | — | |
| 存储的原因 | — | |
| 存储库事实或用户首选项 | — | |
| 投票数据 | — | |
| 到期日期/时间 | — |
注意
- 对于未显示的字段,已省略数据示例。
- 模型和计费实体并不总是存在,因此可能不会显示。
- 如果计费实体是组织,则建筑图标(🏢)将显示在用户界面中。 如果是企业,将显示地球图标(🌐)。
记忆是如何强化和消退的
Copilot 在存储记忆后,不会将其视为永久为 true。 相反,Copilot 被指示在使用之前检查随每个记忆提供的引文。 Copilot 使用内部投票系统根据每个记忆是否仍然有效来对其有用性进行评分。 它可以对能够验证的记忆投赞成票,如果发现记忆有误或已过时,则会对记忆投反对票。 这强化了有用的记忆。
并非所有内存存储中的内存都会随提示发送到模型。 获得赞成票的记忆更有可能会被发送。 因此,点赞会使记忆在将来的工作中更有可能被应用。 被点踩超过阈值的记忆条目将不再使用,并会在一段时间未使用后被删除。
向上投票和反对票由 Copilot 自动执行。 尽管你可以通过就某条记忆在会话中的使用情况提供正面或负面的评论,来影响 Copilot 对其点赞或点踩,但这可以交给 Copilot 来管理。 某条记忆的投票数会被有意隐藏,但你可以在相关设置页面中记忆的排列顺序里看到投票的效果。 获得赞成票的记忆会在列表中上移,而获得反对票的记忆会下移。
设置页显示按有用性排名的记忆项。 Copilot 已学会不使用的记忆会从列表中隐藏,但可以一直存储到过期为止。 从列表中消失的记忆不一定意味着它已被删除。
如果 Copilot 使用了你不希望它再次使用的记忆,则应从存储库设置(对于存储库事实)或个人设置(对于用户级首选项)中明确将其删除。 请参阅“管理个人帐户的 Copilot 内存”。
保留期和过期时间
为了防止过时的信息持续存在,存储的存储库事实和用户首选项如果一段时间内未得到强化,则会过期。 到期期限从创建内存时开始,并在当 Copilot 对其点赞时重置。 仅检索记忆不会重置此时间段。
默认到期期限为 90 天。 企业和组织所有者可以将存储库级事实的到期期限配置为 7 到 180 天之间的任何值(含)。 此设置不适用于用户级首选项,后者始终使用默认保留期。 更改保留期不会重新设定已存储的存储库级事实的日期:它们会在下次由 Copilot 强化时采用新的保留期。
如果组织以及组织所属的企业设置了不同的到期期限,则使用两个值的下限。
当 Copilot 对某条记忆点赞时,该记忆的到期期限将重置为默认或已配置的到期期限。 这延长了已使用的存储器的生存期。 点踩某条记忆不会更改该记忆过期前的剩余时间。
注意
可以从未合并即关闭的拉取请求中获取存储库事实。 Copilot 被指示根据当前代码库核对这些事实,但这并不能保证它会识别出每一条过时的信息。
Copilot 不存储的内容
系统会阻止存储某些内容,并指示 Copilot 不要存储其他内容:
- 检查内存中是否存在敏感信息,例如令牌、密钥或凭据。 检测到秘密的记忆将被拒绝,并且不会存储。
- 系统可以拒绝包含已识别的模型控制令牌的内存,作为防止提示注入的防御。
- Copilot 被指示不要存储敏感个人信息、机密信息或以保密方式分享的任何内容。
- Copilot 被指示不要存储短期或特定于任务的指令,因为记忆旨在捕获随时间推移保持真实的东西。
默认设置
用户级首选项和仓库级信息具有各自独立的默认值。 以下默认值在可使用 Copilot Memory 的情况下适用,并且你或管理员尚未更改相关设置。 现有的选择退出仍然有效。
| Plan | 用户级首选项的默认值 |
|---|---|
| Copilot Pro、 Copilot Pro+和 Copilot Max | 已启用。 您可以在个人设置中选择退出。 |
| Copilot Business 和 Copilot Enterprise | 禁用,直到 组织所有者 或 企业所有者 启用策略。 然后,您可以在个人设置中选择退出。 |
仓库级设置针对所有这些计划采用单独的默认设置。 除非企业、组织或仓库设置限制仓库访问权限,否则允许进行仓库访问。 组织的 存储库访问 设置默认为 “所有存储库”。 在个人设置中禁用用户级首选项不会禁用仓库级事实数据。 请参阅 管理 Copilot Memory 存储库。
每个表面的设置
某些表面具有附加的本地设置。 打开后,只有在上述设置也允许时,图面才能使用 Copilot Memory。
| Surface | Default | 更多信息 |
|---|---|---|
| Copilot CLI、交互式会话 | 已开启本地设置项。 遵循您的 GitHub 设置。 | 管理个人帐户的 Copilot 内存 |
| Copilot CLI、程序化会话 | 关闭 每次运行都使用 --enable-memory。 | 管理个人帐户的 Copilot 内存 |
| Visual Studio Code | 关闭 启用本地设置。 | |
| 管理个人帐户的 Copilot 内存 | ||
| GitHub Copilot app | 按照你的 GitHub 设置进行操作(如果你的帐户支持)。 | |
| 管理个人帐户的 Copilot 内存 | ||
| Copilot cloud agent | 按照你的GitHub设置。 | |
| 管理个人帐户的 Copilot 内存 和 管理企业、组织或存储库的 Copilot 记忆 | ||
| Copilot code review | 遵循存储库设置。 | |
| 管理企业、组织或存储库的 Copilot 记忆 | ||
| Agentic Autofix | 遵循存储库设置。 | |
| 管理企业、组织或存储库的 Copilot 记忆 |
所有这些界面都支持仓库级信息。 除 Copilot code review 和 agentic autofix 外,其他都支持用户级首选项。 在 Copilot CLI 中,用户首选项属于启动会话的用户。
在Copilot app和Copilot CLI交互式会话中,Copilot可以要求你批准保存一条记忆。 Copilot cloud agent 和 Copilot code review 不要求此批准。
Copilot cloud agent此处介绍的行为也适用于从 Slack 或 Microsoft Teams 启动的会话。 请参阅 将 Copilot 云代理与 Slack 集成 和 将 Copilot 云代理与 Teams 集成。
Copilot code review 并且 agentic autofix 从不应用用户级首选项,因此个人首选项不会更改拉取请求的查看方式或修复安全警报的方式。
在 Copilot CLI 中,只有根代理可以使用 store_memory 或 vote_memory。 子代理可以在他们有权访问 read_memories时读取记忆,但不能更改它们。
注意
使用 Copilot SDK 构建的应用程序可以在创建或恢复会话时启用 Copilot Memory 。 SDK 不提供用于列出、编辑或删除记忆的 API。 请参阅“SDK 和 CLI 兼容性”。
什么决定是否使用 Copilot Memory
用户级首选项和仓库级事实数据具有单独的控件。 是否使用 Copilot Memory 取决于有关内存类型的设置以及正在使用的客户端:
-
你的个人设置项。 Copilot Memory个人帐户中的设置控制是否可以在会话中存储和使用用户级首选项。 它不控制存储库级相关信息,也不会覆盖管理员限制。 请参阅“管理个人帐户的 Copilot 内存”。
在企业和组织管理的计划中,用户级首选项将处于关闭状态,直到管理员启用它们,之后用户可以选择停用这些首选项。
-
您的企业或组织政策。 在托管计划中, Copilot Memory 策略控制用户级首选项。 如果持有来自多个组织的许可证,则应用限制性最高的策略。 存储库访问是单独控制的。 请参阅“管理企业、组织或存储库的 Copilot 记忆”。
-
存储库访问和设置。 组织所有者可以对全部、选定或不对任何仓库启用仓库级信息,但须受企业限制。 存储库管理员还可以关闭单个存储库的存储库级别信息。
注意
关闭仓库级信息不会关闭用户级首选项。 同样,禁用用户级首选项本身不会禁用仓库级信息。
-
您的客户端设置。 在交互式 Copilot CLI 会话中,
/memory off即使其他设置允许它们,也会禁用这两种类型的内存。 此首选项与 GitHub.com 上的设置无关,并会为该计算机上今后的交互式会话保存此首选项。/memory on清除此首选项,但不能绕过适用的企业、组织或存储库限制。 非交互式运行需要单独的--enable-memory选项。 Visual Studio Code 在应用程序中也有其自己的设置。 请参阅“管理个人帐户的 Copilot 内存”。
何时使用 Copilot Memory 的摘要
要使用 Copilot Memory:
- 您必须拥有受支持的付费 Copilot 计划。
- 您正在使用的客户端必须支持 Copilot Memory,并且任何本地设置都必须允许它。 在 Copilot CLI 中,使用
/memory show检查本地设置。 - 如果有多个 Copilot 许可证,则必须先选择默认计费实体,然后才能存储新的记忆。
对于用户级首选项,个人 Copilot Memory 设置和任何适用的企业或组织策略也必须允许启用这些首选项。
对于存储库级事实:
- 您必须有权访问存储库。
- 必须具有存储库的推送权限,才能创建新的存储库信息。
- Copilot Memory不得在存储库的 Copilot 设置中将其禁用。
- 如果存储库归组织所有,则组织的 Copilot Memory 存储库访问权限必须包含该存储库。
- 任何适用的企业级存储库内存访问限制都必须允许此类访问。
使用情况和计费
模型上下文中包含的记忆会计入令牌使用量,并且可能会影响某次交互所消耗的 AI credits。 成本取决于模型和使用的令牌数。 有关详细信息,请参阅“GitHub Copilot 的模型和定价”。
与自定义说明一起使用 Copilot Memory
Copilot Memory 和自定义指令以不同的方式解决类似的问题,它们协同工作。
Copilot Memory 由 Copilot 构建并维护。 它不需要你进行维护,它会适应代码库和习惯的变化,并丢弃不再相关的内容。 Copilot 决定要记住的内容,判断记忆是否仍适用,并且可能不会在每个会话中应用记忆。
自定义说明由你编写和维护。 它们提供供 Copilot 参考的说明,并且可在你的存储库或个人设置中看到,因此你可以准确查看和审查 Copilot 被告知的内容。
使用自定义说明来说明重要规则(如安全要求或强制性评审步骤),并让 Copilot Memory 处理累积的细节,否则这些细节会使指令文件变得冗长且难以维护。 无论是记忆还是自定义指令都不能保证 Copilot 每次都遵循规则,因此请查看其工作。 有关详细信息,请参阅“GitHub Copilot的自定义说明”。