
我的困惑:当AI编程的“爽文”照进现实
当我第一次使用Cursor时,真觉得自己像是拿到了小说中的主角剧本。AI生成代码的速度实在太快了,让我一度觉得自己要进入“编程的冥想”状态,只需提出需求,代码就会自动生成。
不过,现实很快就给了我当头一棒:
- 代码“看起来不错”:AI生成的代码结构清晰、注释详细,真心可以称作典范。但一旦运行,要么出错,要么崩溃。
- 陷入“修复循环”:让AI去修复bug时,它常常是拆了东墙补西墙,修复一个bug,却引入两个新bug。
- 效率反而下降:折腾半天后,发现我自己重写代码比让它修改要快得多。
渐渐地,我意识到问题不在AI,而是我自己——我总是用“人类的思维”去命令一个“机械的脑袋”,却没有真正理解它是如何运作的。
经过大量的实践和反思,我总结出了一套与AI高效合作的方法论。
一、我的方法论:从“命令”到“协作”
我将我的方法论归纳为三个核心原则,主要思想是从单向的“命令”转变为双向的“协作”。
1.1 规划优先:放大了“思考”的重要性
在传统开发中,我们遵循“计划-执行-验证”的PDCA循环。但在AI辅助开发的情况下,这个循环的成本结构发生了显著变化:
- 执行成本非常低:生成代码几乎可以说是零成本。
- 返工成本极高:修复AI生成的错误代码需要花费大量的精力去理解和重建上下文。
- 规划成本适中:使用Cursor的Plan Mode,只需几分钟。
这就意味着,在AI时代,规划的价值被前所未有地放大了。
我的数据:
我进行过统计,在自己的项目中:
- 直接让AI生成代码,bug率高达60-80%。
- 使用Plan Mode进行规划后,bug率降到了20-30%。
- bug减少超过60%。
1.2 小步沟通:尊重AI的“机器思维”
以前我天真地认为,AI模型有长上下文窗口,就能理解我给它的复杂指令。但实际上,我错了。
- 注意力容易分散:在长文本中,AI的注意力机制很容易被无关的细节干扰。
- 理解是基于概率的:AI的理解并不是绝对的,而是基于概率的生成。指令越复杂,歧义就越多,出错的概率自然增大。
我的解决方案:
我将复杂的任务拆解成小步骤,确保每一步都:
- 目标明确。
- 上下文清晰。
- 结果可以验证。
我的数据:
- 一次性下达复杂指令,bug率在50-60%。
- 拆分成小步骤后,bug率降低到15-25%。
- bug减少超过40%。
1.3 测试驱动:为AI生成的代码建立“安全网”
传统的测试驱动开发(TDD)在AI时代有了新的意义。我把它改造成了我的“AI版TDD”:
- 规划阶段:我先定义好测试用例。
- 生成阶段:我要求AI同时生成代码和测试。
- 验证阶段:我会立即运行测试,只有通过才算完成。
- 迭代阶段:我根据测试结果进行优化。
这样做的好处:
- 即时反馈:代码生成后,我立刻就能知道它是否正确。
- 降低修复成本:在问题萌芽阶段就发现。
- 提升代码质量:强制AI考虑边界情况。
我的数据:
- Bug发现时间:从“运行时”提前到“生成后”。
- Bug修复时间:减少超过50%。
- 代码覆盖率:从几乎为零提升到80%以上。
二、我的实践细节:8种方法的具体应用
接下来,我将详细介绍我是如何把这套方法论应用到日常工作中的。
方法1:全面利用Plan Mode
我的实践:
- 全面规划:我不再满足于简单的几句描述,而是用Plan Mode把整个流程和步骤间的依赖关系都规划清楚。
- 逐步执行:我把AI的每一步执行当作一次代码复审。每完成一步就验证结果,确认无误后再继续。
- 组件级测试:我将测试视为验证我对AI意图理解是否正确的手段。完成每个组件后,我都会立即为其编写测试。
我的量化效果:
| 指标 | 直接生成 | Plan Mode + 逐步执行 | 提升 |
|---|---|---|---|
| 错误数量 | 8-12个 | 1-2个 | 减少 80%+ |
| 修复时间 | 2-3小时 | 20-30分钟 | 减少 83% |
适用场景:我认为这个方法适合所有中大型项目(超过3个文件)、复杂业务逻辑或需要长期维护的项目。
方法2:把“调整计划”放在“修复代码”之上
我有一个深刻的体会:调整计划的成本始终低于修复一堆烂代码的成本。
我的成本模型分析:
我曾经画过一条时间线,反思自己跳过规划直接构建的愚蠢行为:
T0: 我直接让Cursor构建。
T1: Cursor创建了组件A, B, C, D, E。
T2: 我发现遗漏了需求,需要调整。
T3: B和D无法协同工作,因为E的功能有冲突。
T4: Cursor创建了组件F,修改了B,调整了A。
T5: 我最终发现,我其实只需要A, C, D。
T6: 我花了大量时间清理不需要的组件B, E, F。
我的成本对比:
| 成本类型 | 规划阶段 | 修复阶段 |
|---|---|---|
| 时间成本 | 5-10分钟 | 30-120分钟 |
| Token成本 | 低 | 高 |
| 代码质量 | 高 | 低(技术债) |
结论:在规划阶段的投入,是最高回报的时间投资。
方法3:与AI进行“小步骤沟通”
我的沟通方式对比:
❌ 过去的我: "构建我的网站后端,从认证开始。"
- 问题分析:这个指令包含了太多隐含的信息,AI只能靠猜测,猜错的概率自然很高。
✅ 现在的我: 第一步:"我想在项目中集成Supabase。" 第二步:"我想创建SQL允许用户注册。" 第三步:"现在创建好友请求的SQL,同时记住登录的SQL。"
- 优势分析:每个步骤目标明确,上下文清晰可验证,AI的“思考”不容易偏离。
方法4:进行“前置思考”
我坚信,在启动AI之前,必须先花时间进行思考。
我的思考框架:
在动手之前,我会强迫自己完成一个“AI启动前检查清单”:
□ 需求是否清晰?
□ 边界情况是否考虑周全?
□ 架构设计是否合理?
□ 技术选型是否合适?
□ 可能的bug是否已经预判?
□ 测试策略是否已经制定?
效果:我发现,这个清单帮助我减少了至少40%的返工。
方法5:像“架构师”一样与AI沟通
我总结了三个沟通原则:
- 详细性原则:我假设AI对我的项目一无所知,提供完整的上下文和约束条件。
- 清晰性原则:我使用简单的语言,并用列表、表格等结构化方式表达,避免歧义。
- 分步骤原则:我遵循“背景-需求-约束”的逻辑顺序,确保每一步都能独立理解和验证。
方法6:实践“测试驱动的AI开发”
我把测试规则固化在我的.cursorrules文件里,建立了一套自动化流程。
# 我的测试规则
对于每个新功能:
1. 必须编写单元测试,覆盖率不低于80%。
2. 如果涉及多个组件,必须编写集成测试。
3. 如果是用户流程,必须编写E2E测试。
4. 所有测试通过,才能提交代码。
效果:回归Bug的概率降低了70%以上。
方法7:我的模型选择策略
我为自己建立了一个模型选择的决策树,以便最大限度地发挥不同模型的优势:
任务类型?
├─ 需求分析/规划 → 我用ChatGPT
├─ 代码实现 → 我用Claude
├─ Bug修复 → 我用Claude
├─ 大型重构 → 我用GPT-4
└─ 遇到困难 → 我会切换模型试试
方法8:对“任务并行”的克制
我曾经也追求“并行处理”的快感,结果却往往是“欲速则不达”。
我的任务管理流程:
- 任务列表:我用看板管理所有任务,并按优先级排序。
- 选择任务:我坚持一次只做一个任务。
- 执行流程:我严格遵循“规划-执行-测试-提交”的流程。
- 下一个任务:当前任务完成后,才会开始下一个。
效果:虽然看起来慢了,但由于错误率和修复时间的减少,我的整体开发效率反而提升了30%以上。
三、我的思考:这套方法论的投资回报率(ROI)
我的时间投资:
- 规划、思考和测试编写等,前期投入大约增加40-60%的时间。
我的时间回报:
- Bug修复时间减少了83%。
- 返工时间减少超过60%。
- 代码审查时间减少了50%以上。
ROI计算:投入40-60%的时间,节省了超过50%的后期时间,净收益是10-20%的时间节省,还有无法用时间衡量的代码质量和维护性的提升。
四、总结与展望
从小白到AI编程高手的转变之路
我曾经是一个被AI的各种bug搞得心力交瘁的“小白”,但现在我已经能够和AI高效地协作了。我的关键转变在于:不再把AI视为一个神秘的“黑盒”,而是把它当做一个需要明确指令、及时反馈和验证的“合作伙伴”。
这套方法论其实是我在实践中逐渐总结出来的,它让我真正体验到了AI编程的乐趣,而不再是痛苦的挣扎。
接下来的计划:
- 自动化:我正在尝试编写一些脚本,目的是能自动生成Plan Mode的模板和测试用例。
- 工作流集成:我打算把这套流程与CI/CD和代码审查工具更紧密地结合。
希望我的经历能够给你带来一些启示。
欢迎交流
- 你在使用Cursor时,遇到的最大困难是什么?你是怎么解决的?
- 你觉得在AI辅助开发中,最关键的原则是什么?
- 对于这套方法论,你有什么补充或改进的意见吗?
欢迎在评论区分享你的看法和经验,我们一起探讨AI辅助开发的最佳实践!










