我见过太多人(包括我自己)踩同一个坑:把一个大需求直接丢给 AI,期待它一口气交付完整功能。
结果呢?前半段看起来不错,后半段开始离谱。你 accept 了前 200 行代码,到第 300 行发现逻辑对不上,回头一看——第一步的数据结构就埋了雷,后面全是连锁反应。
结论先说:AI 编程的核心技能不是 prompt 写得多好,而是任务拆得多细。
一、为什么"一句话搞定"是最大的陷阱
先说一个反直觉的事实:上下文窗口越大,你越容易高估 AI 的能力。
2026 年主流模型的上下文窗口已经到了 200K tokens,理论上能装下一个中型项目的全部代码。但问题是——能装下不等于能理解。模型在处理长上下文时,注意力会稀释。你丢进去 10 个文件让它同时改,它可能只精确处理了前 3 个,后面 7 个在"凭印象"写代码。
这引出一个核心概念:幻觉半径。任务越复杂,模型的"合理猜测"范围越大,犯错概率指数级增长。一个小功能的幻觉半径可能只有 2-3 行代码,一个完整模块的幻觉半径能覆盖整个文件。
更致命的是错误累积效应。第一步的数据类型选错,第五步的 API 就对不上,第十步的 UI 就要推倒重来。这不是 AI 笨——你让一个聪明人同时处理 10 个相互依赖的任务,他也会犯错。
类比一下:你不会让实习生第一天就独立交付整个支付模块。你会先让他改个按钮颜色,再写个工具函数,逐步加码。AI 编程也一样——不是因为它不聪明,而是因为复杂任务的本质就需要分步验证。
二、任务拆解的三层粒度模型
拆解不是随便切,有一个实用的分层框架:
| 层级 | 名称 | 时间粒度 | 例子 |
|---|---|---|---|
| L1 | 功能级 | 10-30 分钟 | “实现用户登录” |
| L2 | 步骤级 | 5-15 分钟 | “创建登录表单组件” |
| L3 | 指令级 | 1-5 分钟 | “在 LoginForm.tsx 中添加邮箱验证” |
最佳实践:从 L1 开始规划,用 L3 实际执行。
什么意思?你在脑子里或文档里先拆出 L1 功能清单——“登录"是一个 L1,“评论系统"是一个 L1。然后每个 L1 拆成 3-5 个 L2 步骤。真正交给 AI 执行的是 L3:一个具体的、明确的、可以在几分钟内验证的小指令。
为什么要这样?因为每个 L3 指令都是一个可验证的检查点。做完了,跑一下,看看对不对。对了继续,错了立刻修。这比一口气做完 10 个功能再回头 debug 效率高一个数量级。
三、五种拆解策略
拆解有章法可循,不是凭感觉切。以下是五种我反复验证过的策略:
按文件拆
每个文件一次修改。不要让 AI 同时动 10 个文件——它会顾此失彼,改了 A 忘了 B 的 import 路径。
实操技巧:先问 AI “这个功能涉及哪些文件?",然后一个一个来。
按层次拆
先数据层 → 再逻辑层 → 最后 UI 层。这是经典的分层架构思路,但很多人在 AI 编程时忘了它。
为什么要分层?因为数据模型是地基。你先让 AI 写 UI,回头发现数据结构不对,UI 就得全改。反过来,数据模型定好了,API 和 UI 怎么改都不伤根基。
按依赖拆
画一下依赖图,先实现被依赖的模块。工具函数比业务逻辑先写,公共组件比页面组件先写。
一个简单判断法:如果模块 A 的测试需要模块 B 的存在,那 B 就该先做。
按风险拆
高风险部分(支付、认证、数据迁移)单独审查,低风险部分(样式、文案、配置)可以批量处理。
这不是歧视低风险代码,而是把有限的审查精力集中在最可能出问题的地方。
按测试拆
每个拆分点都是一个可测试的里程碑。如果一个子任务你写不出测试用例,说明它太大了,需要继续拆。
| |
四、审查机制设计
拆解是骨架,审查是免疫系统。没有审查的拆解,只是把一个大错误切成了十个小错误。
Checkpoint 审查
每完成一个子任务,停下来 review。不需要逐行看代码,重点检查:
- 接口是否符合预期(输入输出类型对不对)
- 边界情况有没有处理
- 和上一步的衔接是否顺畅
自动验证
让 AI 自己跑测试、lint、类型检查。这是最高效的审查方式——不需要人肉看,机器告诉你对不对。
| |
回滚机制
git commit 要频繁。每完成一个 L3 指令就 commit 一次。这样出错时能精确回退到上一个正确的状态,而不是 git stash 整个进度。
渐进信任
这是核心原则:
| 阶段 | 信任级别 | 操作方式 |
|---|---|---|
| 小任务(L3) | Agent 自主 | 不审查,看结果 |
| 中任务(L2) | 轻度审查 | 自动验证 + 快速扫一眼 |
| 大任务(L1) | 人工审查 | 逐个 checkpoint 检查 |
| 关键任务 | 人工参与 | 每步确认再继续 |
信任是挣来的,不是给的。先让 AI 在小任务上证明自己,再逐步放权。
五、实战案例——一个真实功能的拆解过程
需求:“给博客系统加一个评论功能。”
这句话看起来简单,实际涉及至少 6 个独立模块。如果一把丢给 AI,大概率翻车。拆开看:
L1 拆解(6 个功能):
| |
L2/L3 拆解(以"数据模型"为例):
| |
关键点:每一步都是独立的、可验证的、可回滚的。
- L3-1 做完,跑类型检查,确认 schema 没语法错误
- L3-2 做完,查数据库,确认表结构正确
- L3-3 做完,跑测试,确认 CRUD 正常
任何一步出错,只回退那一步,不影响其他部分。这就是拆解的价值——把不可逆的大失败变成可逆的小失败。
六、不同工具的拆解差异
不同工具对拆解粒度的要求不同:
| 工具 | 适合粒度 | 原因 | 注意事项 |
|---|---|---|---|
| Cursor | L2-L3 | Agent 模式可自动执行多步,但文件级操作仍需控制 | 单次改动不超过 3 个文件 |
| Claude Code | L1-L2 | 长上下文能力强,可以一次处理更大范围 | 但仍需 checkpoint,不能盲目信任 |
| OpenCode/Codex CLI | L2-L3 | 沙箱隔离,适合高风险操作的独立审查 | 适合"先在沙箱里试,确认后再合并” |
通用原则:工具越强,粒度可以越粗,但不能不拆。
即使是最强的模型,面对"帮我重写整个认证系统"这种指令,也大概率会遗漏边界情况。能力上限不等于可靠性上限。
七、常见反模式
最后列四个我见过最多的反模式,每个都是血泪教训:
“一口气全做完”——丢一个大需求,期望一次交付。这是最常见也最致命的。你以为省了时间,实际在后面付出了 3 倍的 debug 时间。
“过度拆解”——拆到每行代码一个指令。走到另一个极端,效率为零。L3 是底线,再细就该自己写了。
“只拆不审”——拆了 10 个步骤,一口气全执行完,中间不检查。拆解的意义在于验证,不检查等于没拆。
“盲目信任”——AI 说"测试全通过"就信了。实际上它可能只跑了它自己写的测试,而那些测试恰好跳过了真正的 bug。验证要独立于被验证的对象。
写在最后
AI 编程的真正门槛不是 prompt engineering,是工程思维。
能用 AI 写代码的人越来越多,但能把 AI 编程用好的人——任务拆得清、审查做得实、质量守得住——依然是少数。
任务拆解听起来像管理话题,和技术无关。但做过大型项目的人都知道:最难的从来不是写代码,是决定先写什么、后写什么、什么不写。
AI 改变的是编码速度,没有改变软件工程的基本规律。小步快跑、持续验证、快速回滚——这些原则在 AI 时代比任何时候都重要。
varkm