一个被低估的分水岭
2024 年之前,大多数人谈论 AI 编程时,说的其实是同一件事——代码补全。Tab 键一按,AI 给你续写几行代码,你挑挑拣拣,接受或拒绝。这个模式从 GitHub Copilot 开始,到 Cursor 做到极致,本质上没有变化:AI 是你的打字加速器。
但 2025 年开始,一个新的品类冒出来了——Coding Agent。它不再等你按 Tab,而是自己读需求、读代码库、规划步骤、写代码、跑测试、修 Bug,一条龙完成。代表产品是 Claude Code 和 Codex CLI。
这两者之间的差距,不是"更好用一点"的渐变,而是范式的跃迁。就像从搜索引擎到 AI 对话的跳跃一样——前者是你提问、它给链接;后者是你描述需求、它直接给答案。
代码补全是"人写代码,AI 帮忙"。Coding Agent 是"人说需求,AI 写代码"。
这篇文章不谈概念,只谈实战。我拿一个中等复杂度的真实项目——一个 FastAPI 后端服务,包含 CRUD、认证、数据库迁移和单元测试——在四类工具上分别跑了一遍,记录它们各自能走多远、在哪里卡住、以及怎么才能真正把 AI 编程用到生产环境中。
四类工具的定位光谱
先明确我们在比较什么。把当前市面上的 AI 编程工具按自主程度从低到高排列,大致是这样的:
| 层级 | 代表工具 | 核心模式 | 人的角色 |
|---|---|---|---|
| L1 补全 | GitHub Copilot | Tab 续写单行/多行代码 | 逐行编写,AI 辅助加速 |
| L2 对话 | Cursor Chat / Copilot Chat | 在 IDE 内对话,生成代码片段 | 描述局部需求,审查生成结果 |
| L3 编辑 | Cursor Composer / Windsurf | 跨文件编辑,理解项目上下文 | 描述功能需求,审查多文件变更 |
| L4 自主 | Claude Code / Codex CLI | 终端内自主执行,读写文件、跑命令 | 描述完整需求,审查最终产出 |
这个分类不是学术划分,它直接影响你的工作流设计。L1/L2 适合你在已有代码上修修补补,L3 适合开发一个新功能模块,L4 适合从零开始或在明确边界内完成一个完整任务。
选错了层级,效率反而会下降。你拿 L4 的工具去做一行代码的修改,杀鸡用牛刀;你拿 L1 的工具去重构一个模块,累死自己。
评测设计:同一个项目,四条路线
评测用的项目不算大,但麻雀虽小五脏俱全:
- 技术栈:Python 3.11 + FastAPI + SQLAlchemy + Alembic + pytest
- 功能范围:用户注册/登录(JWT)、多租户 API Key 管理、调用量统计、RESTful CRUD
- 质量要求:单元测试覆盖率 > 80%、有数据库迁移脚本、有 API 文档
- 代码规模:最终约 2000 行 Python,30+ 个文件
我对每个工具使用相同的起点(一个空的 Git 仓库 + 一份需求文档),记录从零到"可运行且测试通过"的全过程。
L1:GitHub Copilot——打字速度的天花板
Copilot 的体验已经非常成熟。在 VS Code 里写代码,它的 Tab 补全准确率大概在 60-70%,对于 CRUD 这类模式化代码甚至能到 80% 以上。
实际体感:
写 FastAPI 的路由定义时,Copilot 几乎能预判你的下一步。你写了 @app.get("/users/{user_id}"),它立刻给你补上函数签名、参数注入、数据库查询、异常处理。对于熟悉框架的开发者来说,这确实能把编码速度提升 2-3 倍。
但它的问题也很明显:
第一,它不理解全局。 Copilot 的上下文窗口有限(大约是当前文件 + 少量相邻文件),它不知道你的数据库模型在另一个文件里定义了什么字段,不知道你项目的认证中间件怎么写的。所以你经常需要手动 import、手动传参,然后 Copilot 才能继续补。
第二,它不会主动思考架构。 你让它写一个"用户服务",它会给你一个函数接一个函数地写,但它不会先规划"这个模块需要哪几个文件、怎么分层、错误处理怎么做"。所有的架构决策还是得你来。
第三,Bug 发现靠人眼。 Copilot 生成的代码偶尔会有隐蔽的错误——用了不存在的 API、参数顺序搞反、异步函数忘了 await。这些问题编译器不一定能抓到(Python 尤其如此),全靠你自己 review。
用 Copilot 完成这个项目,大约花了 8 小时。其中真正写代码的时间被压缩了,但思考架构、排查 Bug、跑测试的时间一分没少。
适合场景:你已经很清楚要写什么,只需要加速打字过程。修改已有代码、写样板代码、实现明确的算法。
L2:Cursor Chat——带项目上下文的对话伙伴
Cursor 在 Copilot 的基础上做了一件关键的事:把整个代码库变成了 AI 的上下文。你在 Chat 面板里提问时,它可以索引你的项目文件,引用其他模块的代码来回答问题。
实际体感:
当我问"帮我写一个用户认证的中间件,要兼容项目里已有的 JWT 工具函数",Cursor 会先去找到我项目里的 JWT 模块,理解它的签名方式,然后基于此生成中间件代码。这比 Copilot 的"瞎猜"强了太多。
另外,Cursor 的 @引用 功能非常实用。你可以在对话中 @filename 指定上下文,比如 @models.py 参考这个模型,帮我写 CRUD 接口,这让 AI 的输出精准度大幅提升。
但它仍然有一个根本限制:Chat 模式生成的代码需要手动复制粘贴。 你得到了一段代码,然后你得自己决定放在哪个文件、怎么跟现有代码集成、有没有命名冲突。这个"集成"的工作量,在中型项目中往往占了总开发时间的 30-40%。
用 Cursor Chat 完成这个项目,大约花了 6 小时。生成代码的速度更快了,但人工集成的工作量依然不小。
适合场景:需要跨文件参考的局部开发任务。比如"这个函数的输入参数要跟另一个模块对齐"、“参考这个测试文件的模式帮我写新的测试”。
L3:Cursor Composer——跨文件的自主编辑
Cursor 的 Composer 模式(以及类似的 Windsurf Cascade)是真正开始"动手改代码"的 AI。你描述一个功能需求,它会:
- 自动分析需要修改哪些文件
- 生成跨文件的代码变更
- 在 Diff 视图中展示所有改动
- 你逐个 Accept 或 Reject
实际体感:
我说"添加多租户支持:每个 API 请求需要带 X-Tenant-ID header,数据库查询自动过滤租户"。Composer 会自动找到中间件文件、数据库模型文件、路由文件,分别做出修改。这种跨文件的联动修改,是 L1/L2 完全做不到的。
但 Composer 有几个严重的坑:
坑一:过度修改。 你让它加一个功能,它可能顺手"优化"了你没让它碰的代码。比如重命名变量、重构函数结构、调整 import 顺序。这些改动单独看可能没错,但混在功能变更里就增加了 review 的难度和风险。
坑二:上下文丢失。 当项目文件超过 50 个时,Composer 的索引开始不够用了。它可能漏掉某个关键的配置文件,或者引用了一个已经被删除的函数。生成的代码在语法上正确,在逻辑上却有缺口。
坑三:Diff 审查疲劳。 Composer 一次生成 5-10 个文件的变更,每个文件可能改了 20-30 行。你必须逐行 review,因为任何一个没注意到的改动都可能引入 Bug。这个过程比写代码还累。
用 Cursor Composer 完成这个项目,大约花了 4 小时。AI 承担了更多的集成工作,但 review 成本也相应增加了。
适合场景:功能模块级别的开发。需求明确、边界清晰、改完就能验证的场景。
L4:Claude Code / Codex CLI——终端里的自主程序员
这是当前 AI 编程的最高形态。你在终端里用自然语言描述需求,AI 自主完成全部编码工作——读文件、写文件、执行命令、跑测试、修 Bug,全程不需要你打开 IDE。
Claude Code
Claude Code 基于 Anthropic 的 Claude 模型,通过终端 CLI 运行。它的核心优势是推理深度——面对复杂任务时,它会先制定计划,再逐步执行。
实际体感:
我给 Claude Code 的指令是:"根据需求文档,搭建 FastAPI 项目骨架,实现用户认证和多租户 CRUD,包含完整的单元测试。"
它的执行过程非常有条理:
- 先读取需求文档,提取关键信息
- 规划项目结构(目录布局、模块划分)
- 逐个创建文件,写入代码
- 写完一个模块就跑一遍测试
- 测试失败了,自己读报错信息、修代码、重跑
- 全部通过后,给出完成报告
这个过程几乎不需要我介入。唯一需要人工干预的场景是:当它遇到一个需要二选一的设计决策时(比如认证用 JWT 还是 Session),我会告诉它偏好。
Claude Code 的短板:
- 额度消耗大。一个完整任务下来,token 消耗很可观,速率限制容易触发
- 偶尔过度设计。它可能给一个简单项目加太多抽象层——Repository Pattern、Factory Method、依赖注入框架——远超项目需要
- 长时间任务不稳定。超过 30 分钟的任务,中间可能因超时或 token 限制中断,恢复后上下文可能丢失
Codex CLI
OpenAI 的 Codex CLI 是 Claude Code 的直接竞品,基于 GPT-4o 和专门的 codex 模型。
实际体感:
Codex CLI 的操作流程和 Claude Code 类似,但有几个关键差异:
| 维度 | Claude Code | Codex CLI |
|---|---|---|
| 推理深度 | 更强,擅长复杂架构 | 稍弱,但够用 |
| 执行速度 | 较慢 | 更快 |
| 额度限制 | 容易触发 | 相对宽松 |
| 沙箱安全 | 本地直接执行 | 云端沙箱隔离(更安全) |
| 价格 | Claude Pro/Max 订阅 | ChatGPT Plus 订阅 |
Codex CLI 的 /init 命令会自动通读项目并生成 context.md,让后续对话有全局上下文。这个功能很实用——相当于让 AI 先"预习"一遍你的代码库。
它的 /approvals 机制也做得比较好:可以设置权限级别,敏感操作(如删除文件、执行 shell 命令)需要你确认,常规操作自动执行。
用 Claude Code 完成项目:约 2 小时(含等待和速率限制恢复时间) 用 Codex CLI 完成项目:约 2.5 小时(推理深度稍弱,需要更多人工修正)
适合场景:从零搭建项目、完成边界明确的完整功能模块、自动化重构任务。
工程化落地的关键:不是选工具,而是建流程
工具选对了只是第一步。真正的难点在于:怎么把 AI 编程嵌入到团队的开发流程中,让它稳定、可控、可审查。
1. 分层使用策略
不要试图用一种工具解决所有问题。根据我的实践经验,比较合理的分工是:
| 任务类型 | 推荐工具 | 原因 |
|---|---|---|
| 写新功能模块 | L4 (Claude Code / Codex CLI) | 让 AI 从零完成,效率最高 |
| 修改已有代码 | L3 (Cursor Composer) | 需要精确的 Diff 控制 |
| 局部调试 / 补测试 | L2 (Cursor Chat) | 快速问答,轻量介入 |
| 写样板代码 / 改格式 | L1 (Copilot) | Tab 补全即可 |
2. 上下文管理是第一生产力
不管是哪个层级的工具,给 AI 的上下文质量直接决定了输出质量。几个实战经验:
- 项目根目录放
CLAUDE.md或context.md:写清楚技术栈、代码规范、项目结构、已知的坑。这相当于给 AI 一份"入职手册" - 用
.cursorrules或 prompt 模板:把编码规范、命名约定、禁止使用的库等信息固化下来 - 定期清理对话历史:对话越长,AI 的表现越差。完成一个子任务后开新对话,而不是在一个长对话里从头做到尾
3. 验证闭环不能省
AI 生成的代码必须经过跟人类代码一样的审查流程:
- 单元测试是第一道防线。AI 写的测试覆盖率往往不够,你需要自己补充边界用例
- Code Review 不能跳过。AI 生成的 Diff 看着都"挺对的",但隐蔽的逻辑错误只有人类审查能发现
- 集成测试尤其重要。AI 擅长写单个函数,但不擅长保证模块间的接口对齐
4. 用 Spec 驱动替代 Prompt 驱动
前面提到过一个非常重要的方法论转变:从"给 AI 一段 Prompt 让它猜"变成"给 AI 一份规格让它执行"。
在 L4 级别的工作中,这个转变尤其关键。你不能给 Claude Code 一句"帮我写个用户系统"就放手不管。正确的做法是:
- 先写规格文档:输入输出是什么、错误码定义、性能要求、安全约束
- 让 AI 按规格执行:每个功能点都有明确的验收标准
- 用测试验证规格:TDD 流程,先写测试再让 AI 实现
这套方法论有一个成熟的工具叫 Spec Kit,它把上述流程工具化了。核心指令是:
|
|
规格驱动的核心价值不是让 AI 写得更快,而是让 AI 写得更确定。Prompt 是模糊的,规格是精确的。你用精确的规格去约束 AI 的行为,比用模糊的 Prompt 去引导它,产出质量的差距是数量级的。
成本与效率的真实数据
说了这么多,到底值不值?这是我最想分享的结论。
以这个 FastAPI 项目为基准,四种方式的时间成本对比:
| 方式 | 总耗时 | AI 贡献比例 | 人工主要工作 |
|---|---|---|---|
| 纯手写(无 AI) | ~16h | 0% | 全部 |
| L1 Copilot | ~8h | ~40% | 架构、调试、集成 |
| L3 Cursor Composer | ~4h | ~65% | Review、修正、测试补充 |
| L4 Claude Code | ~2h | ~85% | 审查、补充边界测试 |
从时间上看,L4 是纯手写的 8 倍效率。但这里有一个被严重低估的成本:审查 AI 代码的心智负担。
AI 生成的代码量大、风格一致、“看着都对”,这反而让 review 变得更难——你的大脑会不自觉地放松警惕。我的经验是,review AI 代码的时间和 review 人类代码差不多,但发现的 Bug 密度更高。
所以真实的效率公式应该是:
|
|
对于简单、模式化的任务,净效率提升可以达到 5-8 倍。对于复杂、需要深度理解业务逻辑的任务,可能只有 2-3 倍。
几个容易被忽略的实战细节
环境隔离
L4 工具(Claude Code、Codex CLI)会直接在你的文件系统上操作。强烈建议在独立目录或容器里运行。Claude Code 可以直接修改 ~/.bashrc,Codex CLI 虽然有沙箱但也不能完全放心。
MCP 工具的杠杆效应
不管是 Claude Code 还是 Codex CLI,都支持通过 MCP(Model Context Protocol)接入外部工具。比如接入数据库文档的 MCP,AI 就能直接查表结构,生成的 SQL 准确率会大幅提升。这个能力目前被大多数人忽略了,但它的杠杆效应非常大。
中国用户的特殊考量
由于网络环境的限制,实际可用的方案需要做一些调整:
- Codex CLI 可以通过魔搭社区(ModelScope)接入国产模型作为替代方案
- Claude Code 需要稳定的海外网络访问
- Cursor 和 Copilot 的网络依赖相对较轻,但偶尔也会遇到连接问题
模型选择的务实建议
不要被模型排行榜带偏。在编程场景下:
- 推理深度优先:选 Claude 系列,复杂架构任务表现最好
- 速度优先:选 GPT-4o 系列,简单任务够用且快
- 成本优先:可以用国产模型(通义千问、DeepSeek 等)通过兼容协议接入,成本大幅降低
从"用 AI 写代码"到"跟 AI 协作写代码"
回到最开始的问题:AI Coding Agent 到底改变了什么?
它改变的不是"写代码"这个动作本身,而是程序员在项目中的角色。在 L1 时代,你是代码的编写者,AI 是你的打字助手。在 L4 时代,你变成了需求的定义者和产出的审查者,AI 变成了执行者。
这个转变对能力的要求其实更高了,而不是更低了。你需要:
- 更强的需求拆解能力:你能把模糊的业务需求转化为精确的技术规格
- 更强的架构判断力:你能在 AI 给出的多个方案中选出最合适的
- 更强的代码审查能力:你能发现 AI 代码中那些"看着对但实际有坑"的问题
有句话说,工具的上限取决于使用它的人。在 AI Coding Agent 的时代,这句话比任何时候都准确。
最后的选型建议
如果你正在考虑引入 AI 编程工具,这是我的务实建议:
个人开发者:Cursor(L2+L3)+ Claude Code(L4)的组合覆盖面最广。日常用 Cursor,大任务切 Claude Code。
小团队(3-10 人):先用 Copilot 或 Cursor 做全员覆盖,成本低、学习曲线平缓。等团队适应了 AI 辅助编程后,再引入 L4 工具给高级开发者使用。
企业团队:不建议一步到位上 L4。AI 编程的引入需要配套的 Code Review 流程调整、安全审计策略、以及代码质量标准的重新定义。从 L1 开始,逐步推进,每一步都确保流程跟上了工具的能力。
AI 编程不是银弹。但如果你用对了方式,它确实是目前能找到的、最大的单点效率杠杆。