GitHub Copilot 使用指南 · 第5讲 · Ask、Edit 与 Agent 模式



上一讲我们在 Chat 侧边栏发出了第一句话,默认用的是 Ask 模式。但 Chat 面板底部有一个模式选择器,点开下拉菜单能看到三个选项:Ask、Agent、Plan。我第一次看到这三个名字时,最困惑的是:它们跟行内补全是什么关系?答案是——它们是完全不同的东西。行内补全只管"猜你下一个字",而这三种模式是让你跟 Copilot 对话,只是对话的深度和自主权不一样。

 

 

官方文档链接(建议收藏)

  • Chat 模式总览:https://docs.github.com/en/copilot/using-github-copilot/asking-github-copilot-questions-in-your-ide
  • Copilot Edits:https://docs.github.com/en/copilot/using-github-copilot/copilot-edits
  • Copilot 文档首页:https://docs.github.com/en/copilot

 

Ask 模式:先问清楚再动手

Ask 是最基础的模式,也是我建议新手先用熟的。它的核心特点是只读——你可以问 Copilot 关于代码的任何问题,它会回答、给建议、写代码片段,但它不会自动修改你项目里的文件。

适合 Ask 的典型场景:

  • "这个函数在做什么?"——解释代码
  • "这段正则表达式匹配什么?"——理解复杂语法
  • "帮我写一个读 CSV 并排序的脚本"——生成新代码
  • "这个报错是什么意思?"——排查错误

Ask 会自动感知你当前打开的文件。如果想让它参考某个没打开的文件,可以用 #file 关键字引用,比如:#file:config.yml 这个配置里的 timeout 设置是否合理

个人见解:我习惯把 Ask 当"热身"工具。打开一个新项目时,先用 Ask 问几个解释类问题,既熟悉了代码结构,也顺便测试了 Copilot 对这个项目的理解程度。等对话顺畅了,再切到 Agent 让它干活。

 

Agent 模式:给任务让它自己跑

Agent 模式是 Chat 里自主权最高的。选中 Agent 后,你给它一个任务描述,它会自己决定要读哪些文件、改哪些代码、跑什么终端命令,遇到问题还会自动迭代修正。整个过程你只需要审批确认。

官方文档对 Agent 的定义是:"autonomously accomplish a set task"——自主完成一组任务。这句话里的关键词是"自主"。Ask 模式下你问一句它答一句,而 Agent 模式下你给一个目标,它自己规划执行路径。

Agent 模式适合的场景:

  • 任务涉及多个文件——比如"给 API 加分页功能"
  • 需要跑终端命令——比如"装依赖并跑测试"
  • 有迭代和错误处理——比如"写完代码后跑测试,失败了就修"
  • 需要集成外部服务——比如通过 MCP 连接数据库

Agent 在执行过程中,面板上会实时显示每一步操作:读了哪个文件、改了什么代码、跑了什么命令。你可以展开查看细节。如果某一步不对,可以在那个节点中断并修正,不用等它全部跑完。

个人见解:Agent 模式最让我惊喜的不是它能改代码,而是它会自己跑终端。比如你说"给这个项目加单元测试",它会先搜索现有测试目录和框架配置,再读源文件理解函数签名,然后创建测试文件,最后跑 pytest 验证。整个链路是它自己规划的。不过我要提醒一句:第一次用 Agent 改重要代码时,建议先在 Git 分支上试——万一它改歪了,一个 git checkout 就能恢复。

 

Plan 模式:先出方案再动手

Plan 模式是三种模式中最"克制"的。它只做研究和规划,不会修改任何代码,直到你审查并批准它的方案。

用 Plan 模式时,Copilot 会:

  • 用只读工具分析你的代码库,识别需求和约束
  • 把任务拆成可执行的步骤,标出模糊需求
  • 生成一份标准化的方案草稿,供你审阅和迭代

方案批准后,你可以把它交给 Agent 执行,或者保存下来供团队讨论。Plan 模式特别适合复杂任务——比如"重构这个模块的架构"——在真正动代码之前,先把方案想清楚。

个人见解:我发现 Plan + Agent 是最高效的组合。先用 Plan 出方案,审一遍步骤,确认没问题后再切到 Agent 执行。这比直接开 Agent 然后中途打断修正省心得多。

 

Edit 模式:受控的多文件编辑

除了 Chat 面板的三种模式,Copilot 还有一个叫 Copilot Edits 的功能,它提供了第四种模式——Edit。Edit 介于 Ask 和 Agent 之间:它能改多个文件,但每一步都需要你手动确认。

跟 Agent 的区别在于:Agent 自己决定改哪些文件,Edit 需要你提前指定文件列表。每一轮修改后,你可以逐个文件查看差异,选择接受或拒绝。

Edit 适合的场景:你已经知道要改哪几个文件,想要 Copilot 提供修改建议,但希望保持完全控制权。比如"在 controller 和 model 这两个文件里加上分页逻辑"。

 

跟做清单

  • [ ] 打开 Chat 面板,确认底部模式选择器显示的三种模式
  • [ ] 用 Ask 模式问一个代码解释问题
  • [ ] 切换到 Agent 模式,给一个简单的多文件任务(比如"给所有函数加 docstring")
  • [ ] 观察 Agent 的执行过程——它读了哪些文件、跑了什么命令
  • [ ] 尝试 Plan 模式,给一个复杂任务,审查它生成的方案
  • [ ] 点击 Chat 面板的"Open Copilot Edits",试试 Edit 模式的多文件编辑流程