MemoryLake
返回全部文章
Tutorial2026 年 9 月 24 日·10 分钟阅读

如何构建一个随仓库变化而自动更新 of GitHub Copilot Space(2026年指南)

GitHub Copilot Spaces 解决了大多数团队都遇到过的一个问题:关于系统如何运行的相同问题,每次有新人加入或每次开启新对话时都要重新回答一遍。一个空间(Space)收集了 Copilot 应该使用的代码、文档和笔记,任何与您共享该空间的人都能获得基于该上下文的回答。GitHub 将其宣传为“超越聊天历史记录的自助式上下文”。

最关键的承诺是新鲜度。GitHub 的文档指出,“随着项目的演进,您的空间会保持同步”,并且来自 GitHub 的数据源“在发生变化时会自动更新”。

阅读文档的其他部分,情况会变得更加具体。有些数据源会自动更新;有些则是您添加一次后的副本。有些数据源可以在您的 IDE 中传递给 Copilot;有些则不行。而且一个空间只能遵循一个分支。如果在不了解这些规则的情况下构建空间,您可能会得到一个在 github.com 上看起来很完整,但实际上却在默默基于比您预想的更旧或更小的信息进行回答的空间。

以下是每个部分的运作方式、人们尝试的其他替代方案,以及如何构建一个无论团队在哪里使用都能保持最新状态的空间。

为什么 Copilot Space 会逐渐过时

首先来看看一个空间可以容纳什么。GitHub 列出了“仓库、代码、拉取请求(PR)、议题(Issue)、自由文本内容(如会议记录或笔记)、图像和文件上传”。您添加了两种上下文:指令(被描述为“描述 Copilot 在此空间内应重点关注什么的自由文本”)和数据源。

新鲜度承诺仅限于一种数据源。其措辞非常精确:“添加到空间中的 GitHub 文件和其他基于 GitHub 的数据源在发生变化时会自动更新,使 Copilot 成为您项目中常青的专家。”上传的文件和您粘贴的文本不属于基于 GitHub 的数据源。文档将它们描述为由您添加的内容——“您可以直接从本地机器上传文件”和“您可以输入或粘贴自由文本内容”——并且没有描述它们会自动更新。请将它们视为快照。

代码遵循单一分支。创建指南指出,“空间将始终引用仓库 main 分支上的最新版本代码。”如果您的团队当前的工作位于一个长期运行的开发分支上,那么空间将基于 main 分支进行回答。

仓库和文件的使用方式不同。“当您关联一个仓库时,Copilot 不会将整个项目加载到记忆中。相反,它会搜索仓库并仅检索与您的问题最相关的部分。”相比指下,“当您关联一个文件时,它的全部内容都会被加载到 Copilot 的上下文窗口中,并在该空间中的每一次查询中被予以考虑。”如果您需要 Copilot 每次都遵循某个文档,应该将其作为文件关联,而不是留给搜索去查找。

IDE 看到的内容更少。这是最让人感到意外的规则。GitHub 的说明写道:“在 IDE 中使用 Spaces 时,不支持仓库上下文和上传的文件。”其他所有内容仍然可以传递:您添加的文本内容、GitHub 文件、议题、拉取请求以及空间的指令。一个主要由整个关联仓库和几个上传的 PDF 构建的空间,在 github.com 上看起来可能内容丰富,但在您的编辑器中却显得非常单薄。

从 IDE 访问需要进行设置。Spaces 是通过 GitHub MCP 服务器传递的,并且“Spaces 工具集不包含在默认配置中,因此您必须使用 X-MCP-Toolsets 标头显式启用它。”连接后,“在您的 IDE 中,Spaces 只能在智能体模式下使用,因为空间是通过 GitHub MCP 服务器访问的。”

此外,描述是给人类看的,而不是给 Copilot 看的。GitHub 表示它“不会影响 Copilot 的回答,但可以帮助其他人理解该空间的用途”。

这些都不是缺陷。每条规则都是合理的合理设计选择。它们共同意味着,一个空间的新鲜度和完整度,完全取决于您为其选择的数据源。

人们尝试的其他替代方案

上传导出的文档。 这很快速,而且在第一天非常有效。但它也会将文档冻结在上传的那一刻,并且上传的文件无法在 IDE 中传递给 Copilot。

关联整个仓库并期望 Copilot 了解其中的一切。 关联仓库意味着搜索,而不是完整加载。对于特定问题,重要文档可能会也可能不会被检索到,而且仓库上下文不属于 IDE 使用的一部分。

一次性粘贴一大段笔记。 文本内容确实可以传递到 IDE,这很好。但是几个月前粘贴的笔记会一直被视为最新内容,直到有人去编辑它们。

将上下文写进描述中。 GitHub 表示描述不会影响 Copilot 的回答。

为每个问题构建一个单独的空间。 空间最适合作为系统、工作流或功能的长期集合。许多包含重叠、未维护内容的小空间,其过时速度比一个有人维护的空间要快得多。

解决方案:使用可自动更新的数据源构建空间,并在团队工作的地方进行检查

目标是建立一个空间,其重要内容能够自动刷新,其快照有明确的负责人,并且其上下文既能传递到 github.com,也能传递到 IDE 中。

步骤 1:优先选择 GitHub 文件,并为每个数据源决定是使用文件还是仓库

列出团队成员理解系统所需的内容:架构概述、关键模块、运行手册(runbook)、规范、未解决的设计问题。然后决定每个项目如何进入空间。

如果它存在于仓库中,请将其作为 GitHub 文件添加,而不是上传副本。GitHub 文件是文档中所说的“在发生变化时会自动更新”的数据源,并且它们在 IDE 中可用。如果该项目尚未存在于仓库中但应该存在——例如决策记录、设计说明——请考虑先提交它。这使得它在空间中具有版本控制、可评审且保持最新。

深思熟虑地选择文件或仓库。对于 Copilot 在回答每个问题时都应该考虑的少数文档,请关联单个文件,因为文件的“全部内容都会被加载到 Copilot 的上下文窗口中”。当目标是在 github.com 上回答涉及大量代码或文档的问题时,请关联整个仓库,但要清楚这依赖于搜索且无法在 IDE 中使用。

链接承载实时决策的议题(Issue)和拉取请求(PR)。GitHub 允许您将它们的 URL 作为数据源粘贴,并且它们在 IDE 中可用。

检查分支。如果 main 分支不能反映系统当前的运行方式,请在指令中注明,或者将空间指向 main 分支上最新的文档。

步骤 2:使用指令和文本内容来容纳仓库无法保存的内容,并为其指定负责人

有些上下文不属于仓库:迁移被推迟的原因、API 选择背后的客户限制、评审人员应用的清单。这就是指令和文本内容的用途。

将指令写成给 Copilot 的简要说明。GitHub 的建议是包含“它的专业领域、它应该帮助完成哪些任务,以及它应该避免什么”。保持它们简短并针对空间的特定目的。

将持久的背景信息放在文本内容中,因为它可以传递到 IDE。为每个内容块注明日期并命名维护者。注明日期的笔记能让过时显而易见;未注明日期的笔记则看起来永远都是最新的。

然后设置角色。对于组织拥有的空间,“编辑者(Editor)可以更新空间的附件、描述、名称和指令”,而“查看者(Viewer)可以使用该空间提问并查看包含的附件和指令”。将编辑权限授予拥有快照的人,并将“审查空间”添加到与更新运行手册相同的清单中。GitHub 自己的新手引导示例正是这样建议的:“让其他人成为编辑者,以便任何人都可以更新包含的资源。”

步骤 3:在 IDE 中连接并测试实际传递的内容

设置启用了 Spaces 工具集的远程 GitHub MCP 服务器,然后在智能体模式下打开 Copilot Chat。GitHub 建议确认 get_copilot_space 和 list_copilot_spaces 工具已列出并启用。

现在用两个问题进行测试。问一个答案存在于 GitHub 文件或文本内容中的问题,再问一个答案仅存在于上传的文件或关联仓库中某个地方的问题。在 github.com 和 IDE 中都问这两个问题。两者的差异会向您展示团队在编码时究竟能看到空间的哪些部分。

将任何必不可少的内容移出 IDE 不可见的数据源。如果关键答案仅存在于上传的 PDF 中,请将该内容提交到仓库并作为 GitHub 文件添加,或者将核心部分作为文本内容粘贴。

最后,记住使用额度。在空间中提出的问题“会计入 Copilot Chat 请求,并根据所使用的模型和处理的 token 数量消耗 AI 额度”。一个由精心挑选的文件组成的精简空间,其查询成本比一个塞满所有内容的空间要低。

在 MemoryLake 中进行设置

一个构建良好的空间可以覆盖 GitHub 内部的一个系统。但有些上下文超出了这个范围:影响多个仓库的决策、适用于跨团队的规范、没有任何单一文件记录的选择背后的合理性,以及您的团队成员在 GitHub 之外的工具中所需的相同背景信息。MemoryLake 是保存该层信息的地方,以便它可以传递到您团队使用的每个助手。

您可以用自己的语言亲自编写这些条目。不会从您的 Copilot Spaces、您的仓库或任何供应商的存储中读取、写入或删除任何内容。

步骤 1:创建 API 密钥

登录并从控制面板生成一个密钥。无论团队成员打开哪种工具,该密钥都能让助手读取您编写的条目。

MemoryLake 控制台显示 API 密钥屏幕,在此处创建并复制新密钥以供智能体使用
MemoryLake 控制台显示 API 密钥屏幕,在此处创建并复制新密钥以供智能体使用

步骤 2:上传您的第一批记忆

从步骤 2 中超出单个空间范围的上下文开始:跨仓库决策、团队规范以及它们背后的原因。每个条目包含一个决策,注明日期,并指定负责人。

MemoryLake 工作区显示首批上传的文档,列出了每个文件成为可搜索记忆的过程
MemoryLake 工作区显示首批上传的文档,列出了每个文件成为可搜索记忆的过程

步骤 3:连接您的 AI 和智能体

连接 Copilot 以及您团队使用的其他助手。这样,相同的背景信息就可以与空间并存,并在那些从未读取过该空间的工具中可用。

MemoryLake 集成屏幕列出了可以连接到记忆层的 AI 客户端和智能体框架
MemoryLake 集成屏幕列出了可以连接到记忆层的 AI 客户端和智能体框架

这在实践中带来了什么改变

第一个区别是,对于关键部分,“常青”变成了现实。当关键文档是 GitHub 文件时,空间会随着代码和文档的变化而自动刷新,这正是 GitHub 对这些数据源所承诺的行为。

第二个区别是,IDE 和网页端显示相同的空间。一旦核心上下文存在于 GitHub 文件、议题、拉取请求、文本内容和指令中,开发者在智能体模式下就能获得与在 github.com 上相同的背景支持。

第三个区别是,过时问题有了负责人。注明日期的文本内容和明确的编辑者角色,将“空间已过时”从一句模糊的抱怨变成了一个有人可以承接的任务。这与最初防止 Copilot 遗忘您的代码库上下文 的原则是一样的。

第四个区别是,Spaces 可以与您的其他 Copilot 上下文和谐共存。仓库指令文件决定了 Copilot 在代码中的行为方式;空间决定了它对系统的了解;而 在 VS Code 中设置 Copilot 记忆 则增加了其自身的一层。保持这些角色的独立性可以避免 哪一个 Copilot 指令文件胜出 中所描述的冲突。

Copilot Spaces 的最佳实践

将仓库内容作为 GitHub 文件添加,而不是上传。 基于 GitHub 的数据源是文档中说明会自动更新的数据源。

为 Copilot 必须始终考虑的文档关联文件。 关联的文件会完整加载;关联的仓库则会被搜索。

检查 main 分支的内容。 空间使用 main 分支上的最新代码。

将核心背景信息放在文本内容中,注明日期并指定负责人。 这样它可以传递到 IDE,且日期能让过时显而易见。

在 IDE 中进行测试,而不仅仅是在 github.com 上。 仓库上下文和上传的文件不属于 IDE 使用的一部分。

将描述留给人类。 应该将给 Copilot 的引导写在指令中。

提交属于代码的决策。 将 零散的项目文档转化为 AI 记忆 首先要将它们放到工具可以可靠访问的地方,当您 将 CLAUDE.md 内容迁移到 Copilot 时,同样的直觉也会有所帮助。

结论

Copilot Spaces 是一种实用的方法,可以让 Copilot 和您的团队对系统有一个共同的认识。GitHub 关于空间“随着项目的演进保持同步”的承诺适用于基于 GitHub 的数据源,这些数据源在发生变化时会自动更新。

其余部分则需要精心设计。上传的文件 and 粘贴的文本是快照。空间遵循 main 分支。关联的仓库是被搜索而不是被完整加载,并且在 IDE 中,“不支持仓库上下文和上传的文件”。

尽可能从 GitHub 文件构建,深思熟虑地选择文件或仓库,为快照注明日期并指定负责人,并在 IDE 中测试空间。对于超出单个空间范围的上下文,请将其保存在您团队使用的每个工具都能访问的地方。如果您正在比较该层信息的各种选择,适用于工程团队的代码库记忆工具 涵盖了该领域,而 Copilot 的单次请求工作流 解释了为什么上下文必须存在于任何单次请求之外。

常见问题

GitHub Copilot Spaces 会自动更新吗?

GitHub 文件和其他基于 GitHub 的数据源会自动更新。文档指出它们“在发生变化时会自动更新”。上传的文件和粘贴的文本是按您提供时的状态添加的,因此当底层信息发生变化时,需要对其进行审查。

Copilot Space 使用哪个分支?

GitHub 指出“空间将始终引用仓库 main 分支上的最新版本代码”。其他分支上的工作不会反映在空间中。

我应该关联仓库还是单个文件?

对于 Copilot 应该始终考虑的文档,请关联单个文件,因为它们的全部内容都会在每次查询时加载。当您希望 Copilot 在 github.com 上的大型代码库中进行搜索时,请关联仓库;它只会检索最相关的部分。

我可以在 VS Code 或其他 IDE 中使用 Copilot Spaces 吗?

可以,通过启用 Spaces 工具集的 GitHub MCP 服务器,在智能体模式下使用。在 IDE 中,“不支持仓库上下文和上传的文件”,而 GitHub 文件、议题、拉取请求、文本内容和指令是可用的。

空间的描述会影响 Copilot 的回答吗?

不会。GitHub 表示描述“不会影响 Copilot 的回答,但可以帮助其他人理解该空间的用途”。请将给 Copilot 的引导写在指令中。

谁可以编辑共享的 Copilot Space?

在组织拥有的空间中,编辑者可以更新附件、描述、名称和指令,管理员还可以更改共享设置或删除空间。查看者可以提问并查看附件和指令。