从 Copilot 到智能体:AI 编程简史
AI 编程智能体的历史始于人们还没有认真称之为”智能体”的时代。2017 年,《Attention Is All You Need》论文引入了 Transformer 架构,正是这一架构使现代大语言模型成为可能。
2020 年,CodeBERT 将这一基础拉近了软件开发领域,展示了自然语言和编程语言可以在单一预训练系统中共同学习,用于代码搜索和文档生成等任务。
这些还不是现代意义上的智能体。它们不会打开文件、运行测试或在开发环境中操作。但它们确立了一个前提——使后来的一切成为可能:代码可以被建模为语言,而语言模型可以学习软件编写、解释和转换的有用表示。
到 2021 年,这条研究路线已成熟为实用、可测试的代码生成。Codex 描述了一个在公开代码上微调的 GPT 模型,并通过 HumanEval 进行评估。GitHub 于 2021 年 6 月 29 日宣布推出 Copilot,Codex 论文随后于 7 月 7 日发布,明确指出一个独立的 Codex 生产版本为 Copilot 提供动力。这一细节至关重要,因为它标志着大语言模型从研究产物走向主流开发者产品的桥梁。
Copilot 让 AI 编码成为原生体验
Section titled “Copilot 让 AI 编码成为原生体验”Copilot 的到来完成了一件比”写代码”在历史上更重要的事情——它让 AI 感觉像是编程行为的原生部分。GitHub 将 Copilot 描述为一个 AI 结对编程助手,能够从周围代码中提取上下文,并在编辑器中建议整行甚至整个函数。
这在现在听起来很普通,但在 2021 年,这是一个真正的界面突破。代码生成不再停留在研究演示中,而是直接进入了编辑界面本身——在这里,延迟、相关性和开发者信任比抽象基准分数更重要。
这就是为什么 Copilot 的成就超越了传统的自动补全工具。它的意义不仅仅在于模型质量,更在于将模型直接放入软件编写工作流的产品决策。
GitHub 的后续研究发现,Copilot 用户完成任务更快,并且报告节省了精力。换言之,Copilot 不仅仅证明了模型可以生成代码——它证明了 AI 辅助可以改变软件开发的过程。
自动补全之后是意图理解
Section titled “自动补全之后是意图理解”下一个重要信号来自 2022 年,而且不是来自编辑器。DeepMind 的 AlphaCode 表明,更难的编程问题往往需要超越优雅的即时生成的东西。AlphaCode 生成大量候选程序,进行激进过滤,并依靠程序行为而非表面流畅性。在竞争性编程中,它达到了中等竞争者的水平。
从历史角度看,AlphaCode 之所以重要,是因为它预见了后来编程智能体所依赖的一个原则:困难的软件任务通常是搜索问题,而不仅仅是语言问题。
同年晚些时候,ChatGPT 使与模型的对话式交互成为主流,而 InstructGPT 已经展示了为什么这很重要——调优以遵循用户意图的模型比仅能续写文本的模型更有用。
2023 年 3 月,GitHub Copilot X 将这一转变直接带入软件开发领域,带来了聊天、拉取请求辅助、文档帮助和 GPT-4 集成。从那时起,开发者与机器之间的关系发生了改变。你不再需要等待合适的补全出现。
你可以解释你想要什么,要求重构,请求测试,或者让系统解释不熟悉的代码。
对话还不够,助手必须能”看到”仓库
Section titled “对话还不够,助手必须能”看到”仓库”编程 AI 一旦具备对话能力,一个新的瓶颈就出现了:上下文。聊天的质量取决于它能检索到多少关于眼前项目的信息。GitHub 的仓库索引文档使这一转变变得明确:索引在后台运行,一旦索引存在,Copilot Chat 就能在 GitHub 和 VS Code 中回答有关仓库的问题。这是编程 AI 不再像一个聪明的陌生人,而是开始像一个至少读过代码库的同事的时刻。
与此同时,开放代码模型开始更直接地适应程序员实际的编辑方式。SantaCoder 强调中间填充生成,StarCoder 以更广泛的语言覆盖和更长的上下文推动开放模型的前沿,Code Llama 强调填补和更大的输入窗口。
这些细节之所以重要,是因为真正的开发者很少从左到右在空白页面上写作。他们在现有系统中插入、修补、重构、打桩和修复。训练目标开始与软件工作的实际机制相匹配。
智能体是能行动的模型
Section titled “智能体是能行动的模型”这就是现代”智能体”概念开始结晶的地方。编程模型成为编程智能体的标志是,它能做的不仅仅是生成合理的代码——它必须检查文件、调用工具、运行命令、观察失败,然后继续。
ReAct 论文为这个领域提供了一个清晰的概念模板,用于交错推理和行动,而 OpenAI 的函数调用使工具使用在产品和 API 模式上变得实用。两者共同将领域从被动生成转向与环境的闭环交互。
这个想法很快变得具体。SWE-agent 论文的作者认为,语言模型智能体需要自己的”智能体-计算机接口”来导航仓库、编辑文件和执行程序。
Devin 将 shell、编辑器和浏览器打包在沙盒计算环境中。OpenHands 将同样的理论转化为更开放、可组合的堆栈,可以在本地、终端或 CI/CD 工作流中运行。在每种情况下,突破不仅仅是更好的代码生成,而是采取行动、检查结果、再次尝试的能力。
基准测试不再只要求函数,而是要求完成工作
Section titled “基准测试不再只要求函数,而是要求完成工作”基准测试以缩影形式讲述了这段历史。2021 年,HumanEval 衡量模型能否从文档字符串合成正确的函数。到 2023 年,SWE-bench 的作者问:一个系统能否解决真实仓库中的真实 GitHub 问题?这一转变是巨大的。
领域不再问模型能否生成看起来胜任的代码,而是问系统能否在真实约束下完成软件任务。
然后标准再次提高。SWE-bench Verified 引入了人工验证的子集以获得更可靠的评估。LiveCodeBench 专注于无污染评估,并明确将目标扩展到包括自我修复、代码执行和测试输出预测。
Terminal-Bench 更进一步,测量在困难的、现实的命令行任务上的性能。评估不再奖励看起来合理的代码,而是奖励能够完成实际工作的系统。
后台智能体时代
Section titled “后台智能体时代”到 2025 年,这个类别的形状再次改变。截至 2026 年初,GitHub 记录了两种互补的智能体体验。在 VS Code 中,你可以描述你想构建什么,让智能体规划、实施和验证项目中的更改。在 GitHub 本身,Copilot 编码智能体作为拉取请求工作流的一部分在后台工作。你分配任务,它进行更改,打开拉取请求,然后请求审查。助手不再需要在光标处等待——智能体可以接受任务并带着工作成果回来。
其他平台也收敛于同一模式。OpenAI Codex 产品在 2025 年被重新引入为面向更长运行时间任务的软件工程智能体,而 Google 的 Jules 明确被定位为实验性编码智能体,可以与 GitHub 集成,自主工作,并能在安全的云虚拟机中打开带有可运行代码和测试结果的拉取请求。云沙盒成为后台编码智能体的自然栖息地。
终端和编辑器成为控制平面
Section titled “终端和编辑器成为控制平面”本地界面也在平行演变。Anthropic 将 Claude Code 描述为一种智能体编码工具,可以读取你的代码库、编辑文件、运行命令并与开发工具集成。其 GitHub Actions 工作流可以响应问题和拉取请求中的 @claude 提及,Claude Code 现在支持用于特定任务工作流的专用子智能体。
Codex CLI 将 OpenAI 的编码智能体带入终端,GitHub Copilot CLI 现在被定位为具有更高自主模式的终端原生智能体,Google 的 Gemini CLI 支持 Gemini Code Assist 智能体模式。终端不再只是一个 shell——它成为了智能体的操作系统。
AI 原生编辑器将同一逻辑推向更远。Cursor 将自己描述为 AI 编辑器和编码智能体,Cursor Agent 可以完成复杂任务、运行终端命令和编辑代码,而 Cloud Agents 在远程运行,Automations 可以在计划或事件上触发智能体工作。Windsurf 的 Cascade 结合了规划、代码编辑、记忆和工作流。编辑器不再仅仅是人类编写代码的地方——它成为了人类监督、重定向和与智能体协作的协调层。
指令和集成成为基础设施
Section titled “指令和集成成为基础设施”一旦智能体能够行动,组织就发现了一个新问题:如何让它们像你的团队那样行动?这就是为什么指令文件和互操作性协议变得至关重要。
Anthropic 于 2024 年底推出 MCP,作为 AI 应用连接外部工具和数据的开放标准。同时,AGENTS.md 等仓库指令文件为编码智能体提供了一个可预测的位置来查找设置步骤、测试命令、架构指导和审查期望。
OpenAI 的文档指出 Codex 在做任何工作之前都会读取 AGENTS.md 文件。Anthropic 的 CLAUDE.md 文件和自动记忆为 Claude 提供持久项目上下文。GitHub 支持仓库和组织自定义指令,Cursor 暴露持久规则。提示工程已经变得更像是基础设施。
这在历史上之所以重要,是因为它标志着另一个概念转变。在早期 Copilot 时代,提示主要是短暂的:一个注释、一个函数名、一个光标位置。在智能体时代,持久指令与短暂请求同样重要。
团队现在将设置命令、测试规则、代码风格、升级路径和审查标准编码在与仓库同行的文件中。这与”预测下一行”是完全不同的世界——它更接近于给新队友一本操作手册。
这段历史真正展示了什么
Section titled “这段历史真正展示了什么”描述这段历史最清晰的方式不是”自动补全变得更聪明”,而是软件工程的系统性分解为机器可操作的层次。
首先是代码模型,然后是内联生成,然后是对话,然后是代码库感知,然后是工具使用,然后是后台执行,然后是持久记忆,然后是审查和验证层。每一个突破都解决了前一个突破所创建的瓶颈。
我们一开始是教机器预测代码。而暂时来说,我们正围绕能够接受目标、导航系统并产生有效更改的机器来重组软件工程。