返回技术博客

AI 编程 Agent 进化史:从代码补全到自主开发

2024 年初的某天,我在写一个用户注册接口。输入 function register,Copilot 补全了函数签名和参数列表。我按了 Tab,觉得省了十秒钟。

2025 年底,类似的需求又来了。这次我在终端里打了一句话:"给项目加用户注册,要邮箱验证和密码强度校验,顺便写好测试。" 我去倒了杯水。回来的时候,Agent 已经改了 8 个文件,测试全绿,等我 review。

从省十秒到省半小时,这中间发生了什么?

第一阶段:聪明的 Tab 键(2021-2022)

GitHub Copilot 在 2021 年刚出来的时候,我身边的反应分两种:一种是"卧槽这也行",另一种是"这不就是高级自动补全吗"。

说实话,两种都对。

你写一行注释 # 计算两个日期之间的工作日天数,Copilot 能生成一个完整的函数实现。这确实比 IDE 原来的关键字补全强了几个量级。但它的能力边界也很明确:

# 你写了注释
# 计算两个日期之间的工作日天数

# Copilot 生成了这个
def count_business_days(start_date, end_date):
    business_days = 0
    current = start_date
    while current <= end_date:
        if current.weekday() < 5:
            business_days += 1
        current += timedelta(days=1)
    return business_days

看起来不错,但问题来了。它不知道你的项目里已经有个 DateUtils 工具类。它不知道你用的是 arrow 而不是 datetime。它甚至不知道你的项目是 Python 2 还是 Python 3。

每次补全都是一次独立的猜测,像一个只看眼前这页纸的实习生。聪明,但没有全局视野。

第二阶段:可以聊天的顾问(2023)

ChatGPT 在 2023 年彻底改变了开发者和 AI 的交互方式。从"按 Tab 接受建议"变成了"用人话描述问题"。

"这段代码有并发问题,帮我看看" "把这个 REST API 改成 GraphQL" "这个正则表达式我看不懂,能解释一下吗"

GitHub Copilot Chat、JetBrains AI Assistant 纷纷在 IDE 里加了聊天窗口。你可以选中一段代码,右键问 AI,让它解释、重构、找 bug。

这确实比自动补全有用多了,但用了几周之后,一个新的烦恼出现了:复制粘贴

AI 在聊天窗口里给你生成了一段 50 行的代码。然后呢?你得自己找到正确的文件,找到正确的位置,小心翼翼地粘贴进去,确保缩进没乱,确保 import 都加了。如果 AI 的方案涉及三四个文件的改动,你就要来回复制粘贴好几次,每次都得人工确认上下文有没有对齐。

本质上,这个阶段的 AI 是一个远程顾问。你描述问题,它给方案,但所有脏活累活——打开文件、定位代码、粘贴修改、跑测试确认——全是你自己干。

第三阶段:能动手的队友(2024)

2024 年是分水岭。AI 从"告诉你怎么改"变成了"直接帮你改"。

这一年出现的 Cursor Composer 和 Aider 做了一件看似简单但意义重大的事:让 AI 直接修改你的文件

用 Cursor 的典型场景是这样的:你按 Cmd+I 打开 Composer,输入需求——比如"给 User 模型添加 email 验证字段,更新迁移文件,修改注册接口"。Composer 会扫描你的项目结构,找到相关的 model、migration、controller、test 文件,然后同时生成这四个文件的修改。你在 diff 视图里逐个审查,觉得没问题就一键接受。

从"我告诉你改哪里"到"你告诉我你改了哪里"——主客关系反转了。

让这个跳跃成为可能的,是三个技术突破同时到位:

项目级的上下文理解。 模型不再只看当前打开的文件。通过对整个代码库建索引,AI 能理解目录结构、模块关系、数据库 schema、API 定义之间的关联。你说"加个字段",它知道要改哪五个地方。

多文件协同编辑。 一个需求牵扯多个文件是常态。添加一个 API 字段,可能要动 model、serializer、view、test、文档。Agent 能规划出完整的修改方案,保证文件之间的一致性,而不是改完 model 忘了改 serializer。

工具调用能力。 这是真正让"Agent"这个词名副其实的变化。AI 不只是生成文本,还能执行动作——读文件、搜代码、跑命令、运行测试。它有了手和脚,不再只有嘴。

这一年的主要玩家:

产品 形态 亮点
Cursor Composer IDE diff 预览,和编辑器深度整合
Aider 终端 CLI 自动 Git 提交,轻量
Cline VS Code 插件 可自主执行命令
Windsurf IDE Cascade 流式编辑

第四阶段:独立干活的初级工程师(2025-2026)

如果说第三阶段的 Agent 像一个需要你逐步指导的实习生,第四阶段则更像一个能接任务独立交付的初级工程师。

2025 年发布的 Claude Code 代表了这个转变。它跑在终端里,你给它一个目标——不是一步步的指令,而是一个目标。

比如你说:"项目的测试覆盖率太低了,给 service 层所有公共方法补上单元测试。" 然后它自己干:扫描项目找到所有 service 文件,分析每个公共方法的输入输出,生成测试用例,创建测试文件,运行测试确认全部通过,最后提交一个 commit。整个过程你可以去干别的事。

2026 年 5 月,Cursor 发布 Composer 2.5,把这条路推得更远:

  • 后台运行:Agent 可以在云端独立工作,不需要你的 IDE 一直开着
  • 并行处理:同时处理多个不相关的编码任务
  • 自我修复循环:写代码、运行、发现报错、修复、再运行,自己闭环,直到测试通过

把四个阶段放在一起看,变化的脉络很清晰:

代码补全:     写一行 → 补全一行
对话编程:     描述问题 → 给出方案(你来执行)
多文件编辑:   描述需求 → 修改文件(你来审查)
自主开发:     描述目标 → 规划+编码+测试+调试(你来验收)

每一步,人的角色都在往上移:从打字员,到执行者,到审查者,到验收者。

这一切背后的推动力

技术进步很少是单一因素驱动的。AI 编程工具的进化,至少有三股力量在同时起作用。

模型本身变强了,而且是量级级的变强。 从 GPT-3.5 到 Claude Opus 4,上下文窗口从 4K token 扩展到 200K token。4K 的时候模型只能"看"到你当前文件的一部分,200K 意味着它可以一次读完一个中型项目的核心代码。推理能力的提升更难量化,但体感上,今天的模型能理解的业务逻辑复杂度和两年前完全不是一回事。

工具调用协议标准化了。 Agent 能力的核心不是"生成更好的文本",而是"能和外部世界交互"。Anthropic 的 Tool Use、OpenAI 的 Function Calling,以及更进一步的 MCP(Model Context Protocol),让 AI 有了读写文件、执行命令、调用 API 的标准化接口。没有这一层,Agent 就只是一个能说会道但没法动手的聊天机器人。

信任边界在持续外移。 最早我们只信任 AI 补全一行代码。后来信任它写一个函数。再后来信任它同时改多个文件。现在有些团队开始信任它独立完成整个 feature 分支的开发。这种信任不是盲目的——它建立在 diff 审查、测试覆盖、权限控制这些安全网之上。但方向是明确的:人的角色从"亲手写每一行"转向"定义目标、审查产出"。

说说局限——Agent 现在还做不好什么

写到这里如果让你觉得 AI Agent 已经可以替代开发者了,那我得踩个刹车。2026 年的编程 Agent 有几个很硬的天花板:

架构决策不行。 Agent 擅长在已有架构内完成具体任务,但不擅长做架构级的判断。它能帮你写微服务,但不能帮你决定该不该用微服务。"我们应该把这个单体拆成什么样的服务边界"——这种需要权衡业务发展、团队能力、运维成本的决策,目前还得靠人。

跨系统排查做不了。 当一个 bug 涉及前端、后端、消息队列、数据库、CDN 之间的时序交互,Agent 的排查能力远不如有经验的工程师。它读不了网络包,理解不了分布式系统里那些只在特定时序下才复现的诡异问题。

领域知识是短板。 金融系统的合规要求、医疗软件的隐私标准、嵌入式开发的硬件约束——这些深度领域知识,Agent 顶多知道个大概,离"可以信赖"还差得远。

需求本身经常是模糊的。 "做个好用的搜索"——什么叫好用?全文检索还是模糊匹配?要不要搜索建议和拼写纠错?移动端和桌面端的体验要一样吗?Agent 需要清晰的需求描述,但真实世界的需求往往要经过反复讨论才能明确。这件事本身就需要经验和判断力。

那开发者该怎么办?

我不喜欢"AI 会取代程序员"这种说法,太粗暴了。更准确的表述是:开发者的工作重心在上移。

当 Agent 可以处理"写一个 CRUD 接口并补上测试"这种任务时,开发者的价值就不在写 CRUD 上了。价值往上走:

  • 架构设计——系统怎么拆,技术怎么选
  • 需求拆解——把业务人员的模糊想法变成 Agent 能执行的具体描述
  • 代码审查——看 Agent 的输出,判断质量、安全性、可维护性
  • 系统集成——确保各个组件协同工作,处理边界情况

我自己现在的工作流大概是这样:

  1. 我定义需求和边界("做什么"和"不做什么")
  2. 看一眼 Agent 的执行计划,确认方向没跑偏
  3. Agent 写代码、跑测试
  4. 我审查改动,重点看安全相关和架构合理性
  5. 如果有问题,给反馈让 Agent 改
  6. 确认没问题,合并

关键是第 1 步和第 4 步——定义清楚要做什么,以及判断做出来的东西行不行。这两步目前没法自动化,也正是开发者经验的核心价值所在。

写在最后

从 2021 年 Copilot 第一次帮我补全一个函数签名,到今天 Agent 能独立交付一个功能模块,中间只过了五年。如果画一条曲线,它的斜率还在加速。

但有一件事从第一天到现在都没变:最终为代码负责的是人。

Agent 写的代码出了线上事故,不会有一个 AI 来背锅。签字的是你,review 的是你,点 merge 的也是你。工具变了,这个责任没变。

想清楚这一点,就不会恐慌,也不会盲目乐观。该用的时候大胆用,该审查的时候认真看。就这么简单。


这是 AI Agent 系列的第三篇。前两篇: