如何利用 GitHub Copilot Spaces 更快地调试问题
这个“搜索阶段”耗时极长,而这甚至还不是真正的工作。即使你想引入AI,GitHub Copilot 仍然需要和你一样的东西:上下文。没有上下文,你只能得到不理解你代码库的通用答案。
GitHub Copilot Spaces 解决了这个问题。
Spaces 为 GitHub Copilot 提供了它所需的项目知识——文件、拉取请求、问题、代码库——因此它的回答是基于你实际的代码,而非猜测。
你是视觉学习者吗?观看下面的完整演示视频。
什么是 Space?
可以把 Space 想象成一个项目知识包。你为项目精心挑选重要的文件、文档和决策,Copilot 在生成计划、解释或拉取请求时会使用所有这些信息。
你可以:
- 添加整个代码库或特定的文件、拉取请求和问题(只需粘贴URL)
- 包含文本内容,如笔记、视频转录稿或Slack消息
- 添加设计文档和架构决策
- 直接从 Space 触发 Copilot 编程代理(coding agent)
- 通过 GitHub MCP 服务器在你的 IDE 中使用 Space
最棒的部分是?只需链接一次,之后就无需再管。Spaces 会自动与链接的内容保持同步。当你的代码库更新时,你的 Space 也会随之更新。
如何用 Spaces 调试问题:
1. 从一个问题开始
一位贡献者开了一个问题,报告了你的项目中存在不安全的 check_call 用法。
作为维护者,你可能无法立即知道最佳的修复方法。如果独自处理,你需要先搜索代码库,查看过去的拉取请求,仔细检查安全指南,仅仅是为了弄清楚从哪里开始。
有了 Spaces,你无需手动完成这些。创建一个 Space,添加该问题以及关键的文件或文档,然后让 Copilot 一次性对所有信息进行推理。
2. 为你的项目创建一个 Space
在 Space 中,添加:
- 设计模式(例如,
/docs/security/check-patterns.md,/docs/design/architecture-overview.md) - 安全指南
- 无障碍访问建议
- 整个代码库(以获得广泛覆盖)或针对你特定用例精心挑选的最相关文件集。当你对包含的内容有明确意图时,Spaces 效果最佳。
- 问题本身的 URL
3. 为 Copilot 添加指令
每个 Space 都包含一个“指令”面板。在这里,你可以告诉 Copilot 你希望它在你的项目中如何工作。 以下是一些有助于我们当前任务的示例指令:
|
|
这些指令让 Copilot 保持一致性。它不会“幻想”出你的代码库中不存在的模式,因为你已经告诉它要引用来源。
4. 让 Copilot 调试该问题
一切设置妥当后,询问 Copilot:“帮我调试这个问题。”
Copilot 已经知道你指的是哪个问题,因为它已链接到 Space。它会解析所有来源,然后返回一个清晰的计划:
目标:修复 runBinaryCheck 的不安全用法,确保输入路径经过验证。
方法:
- 在代码库中搜索
runBinaryCheck的用法 - 将每个用法与安全文档中的安全模式进行比较
- 确定需要进行的重构
- 为每个存在不安全用法的文件准备差异(diff)
这不是一个通用的 LLM 答案。它基于实际的项目上下文。
5. 生成拉取请求
一旦你批准了计划,告诉 Copilot:“使用 Copilot 编程代理提议代码更改。” 代理将生成一个包含以下内容的拉取请求:
- 更改前后的版本对比
- 对所做更改的解释
- 告知修复所依据的确切文件的引用
- 指导其选择的指令
拉取请求中的每个文件都会显示是哪个来源为建议提供了依据。你可以在合并前审核其推理过程。
6. 如需,进行迭代
对某些地方不满意吗?在拉取请求的评论中提到 @copilot 以基于现有拉取请求进行迭代,或者回到 Space 生成一个新的。继续与 Copilot 协作,直到得到你完全满意的结果。
7. 与你的团队共享你的 Space
Spaces 默认是私有的。但你可以将其与特定个人、整个团队或整个组织(如果管理员允许)共享。 企业管理员控制谁可以共享哪些内容,因此你可以与公司的安全策略保持一致。
从你的 IDE 使用 GitHub Copilot Spaces
Spaces 现在可以通过 GitHub MCP 服务器 在你的 IDE 中使用。 安装 MCP 服务器后,你可以直接从编辑器调用你的 Spaces。同样的精选上下文,同样基于实际信息的答案,就在你已经在工作的地方。 “能够从 IDE 调用 Space 对我来说改变了游戏规则。它让我保持专注,无需在浏览器和编辑器之间切换,这在调试过程中消除了大量摩擦。” — Andrea Griffiths
即将推出
以下是路线图中的功能:
- 公共 API
- 图像支持
- 其他文件类型,如 doc/docx 和 PDF
团队目前使用 Spaces 的三种方式
- 代码生成与调试:将 Spaces 与 Copilot 编程代理结合使用,以生成符合你的模式、安全规则和架构的拉取请求。
- 功能规划:链接问题、设计文档和代码库来规划功能和起草需求。向 Copilot 请求技术计划,它会生成一个拉取请求。
- 知识共享与入职培训:Spaces 成为活的知识库。新工程师能更快入职。现有工程师无需再反复回答相同的问题。
在你的下一个问题上尝试一下
这是我的挑战:
- 创建一个 GitHub Copilot Space。
- 添加一个问题以及三到四个关键文件。
- 添加简单的指令。
- 让 Copilot 分析该问题并提出调试计划。
- 批准该计划。
- 触发编程代理以生成拉取请求。
你会真切地看到,当 Copilot 真正了解你的项目时,你能节省多少时间。你的 AI 助手永远不应缺乏正确的上下文。这正是 Spaces 的用途所在。
想看完整演示吗?观看关于 Copilot Spaces 的 GitHub Checkout 节目,并尝试使用 GitHub Copilot Spaces。