01 它是干嘛的
Copilot 是把大模型接进写代码这件事的工具。最基础的一层是补全:你写注释或函数名,它把后面的实现续上。更进一步的一层是「交出任务」:描述要做什么,它自己去找相关文件、改代码、跑测试,最后把一个可以直接评审的改动交回来。它解决的是「大量时间被耗在查文档、敲样板、改一行跑一遍」上。
02 为什么会有它
从「猜下一个词」到「交给你一整件小事」
写代码这件事有相当大一部分是重复劳动:写一个读文件的函数、把一段 JSON 转成表格、照着已有的写法再补一个接口。这些活不难,但占时间——而且每换一个库就要重新查一遍文档。
2021 年出现的 Copilot 思路很直接:既然模型已经在海量公开代码上见过「遇到这种需求大家通常怎么写」,那就让它在光标后面把这段续上。你写一句注释说明意图,它给出实现;你敲出函数名的前几个字母,它把整段补全。实际体验更像「身边坐了个记性极好的同事」,随时能问一句怎么写。
之后两年方向变了两次。一次是加了对话:不再只是被动补全,你可以选中一段代码让它解释、让它改。另一次是加了「自己动手」:从 2024 年前后开始,它可以读取整个项目、自己决定改哪些文件、跑命令验证结果,最后交回一个待评审的改动。前一种你始终握着方向盘,后一种更像是把一件小事整个外包出去,这也是它和普通补全工具最本质的区别。
03 它怎么工作
它不是只看你光标附近那几行,而是先把光标所在的上下文、相关文件的内容以及相似代码的线索一起整理出来,交给模型生成候选,再经过过滤排序后只把最合适的一条显示给你。
它凭什么猜到你下一行要写什么
- 1① 收集光标处的上下文
读取当前文件、光标前后代码、函数签名与注释,先弄清「你正在做什么」。
- 2② 检索相关文件
在你打开或索引过的文件里找同类写法、类型定义与调用方式,避免它凭空造一个不存在的接口。
- 3③ 组装成提示
把上下文、检索结果与你的注释要求拼成一段完整输入,这一步决定了它「知不知道你的项目长什么样」。
- 4④ 模型生成候选
模型基于这些材料生成若干种可能的续写,通常包含整段实现而不只是一行。
- 5⑤ 过滤与排序
对候选做重复、明显错误与违规内容的过滤,再按与当前上下文的相关度排序。
- 6⑥ 交给编辑器呈现
把最合适的一条以灰色虚影显示在你光标后面,你按 Tab 接受、按键拒绝或换下一条。
04 谁在用它
重复度高的接口、配置、转换逻辑交给它起个头,人只做调整。
选中一段看不懂的实现让它逐段解释,比翻文档更快建立印象。
照着一个已有测试的写法,让它补齐边界情况,人再核对断言是否合理。
描述需求后让它自己找文件、改代码、跑测试,交回一个待评审的改动。
在合并申请里自动生成一份代码评审意见,先过滤掉明显的疏漏。
05 怎么用
把它当作「写得更快的助手」而不是「替你做决定的同事」:会用编辑器、能把要求说清楚就能用。
- 01在编辑器里安装对应插件并登录,确认账号已开通订阅。
- 02先用一句话注释描述意图,再写函数签名,观察它给出的实现。
- 03接受补全之前先读一遍:重点看边界条件、异常处理与参数校验。
- 04需要它动手改多处时,换成对话或任务模式,把验收标准写清楚。
- 05让它跑测试验证自己的改动,不要跳过这一步直接提交。
- 06在合并前用代码评审功能过一遍,把明显问题先修掉。
# 一、让它补一段实现(被动、你握着方向盘)
# 读取 users.csv,按城市分组统计订单金额,返回前 10 名
# 二、让它改一处已有逻辑(半主动)
# 把下面这个函数的同步读取改成异步,并保留原有的错误处理
# 三、把一整件事交给它(主动、需要写清验收标准)
# 目标:给 /api/orders 加上分页参数支持
# 验收:默认每页 20 条;超过总数返回空数组;补上单元测试;
# 跑通 npm test 后再提交避坑提示
- !生成的代码必须逐行读一遍:接口名、参数顺序、异常分支都可能一本正经地写错。
- !客户数据、未公开的财务信息、生产密钥不要贴给它,先确认公司的数据使用规范。
- !补全片段可能来自公开代码,对外发布前留意开源许可与版权风险。
06 关键概念
- 大模型(LLM)
- 在海量文本与代码上训练出来的模型,能按上下文逐字生成看似合理的内容。
- 上下文窗口
- 模型一次能「看到」的内容总量,决定了它能同时参考多少代码。
- 代码补全
- 在光标处给出后续代码的建议,你接受即写入,拒绝则丢弃。
- 智能体(Agent)
- 不只给建议,还能自己决定改哪些文件、执行命令、验证结果的工作方式。