《AI 渐进编程》之十八:一个小修补怎么滚成长项目? 前面几篇我们已经把程序项目里最重要的几件事说清楚了prompt适合小任务Harness适合边界和验收state适合记住当前进展revision_log.md适合记录为什么这么改open_issues.md适合保存暂时不能解决的问题工作台适合把这些东西分开摆好完整循环适合把任务从开始跑到通过长期维护适合让通过后的结果继续稳定下来这一篇继续往下只回答一个问题一个本来像一次性修补的小任务为什么最后会变成长项目1. 一次性任务为什么会变长因为程序项目里很多“小问题”修着修着就会冒出后续。还是用购物车程序来举例。一开始你可能只是想空购物车时不要进入结算但真正开始做以后你会发现还要继续处理正常购物车路径不能被破坏支付接口不能被误调用回归测试要补旧调用方行为要确认这次修复要写进日志还有相似边界问题要留给后续这时它就不再是“修一个点”这么简单了。它已经开始带出一串后续动作。所以一次性任务会变长不是因为一开始就想得太大而是因为程序项目本身会不断暴露新的边界和后续。2. 为什么上下文不够用因为上下文只适合当前这一轮不适合长期记住整个项目。如果只靠对话记忆AI 很容易忘记刚确认过的边界把旧问题当成新问题把临时讨论当成最终结论下一轮还要重新猜所以任务一旦开始变长就不能只靠“记住刚才说了什么”。必须把关键事实写到外部状态里让下一轮可以直接接着做。这也是为什么本书一直强调project_map.mdcurrent_task.mdrevision_log.mdopen_issues.md它们不是装饰而是让任务能继续往下走的最小接力棒。3. 为什么要把任务切成短事务因为长期项目不适合一口气做完。更稳的方式是把它拆成一串短事务。以购物车程序为例可以这样拆先修空购物车不能结算再补测试再确认正常购物车没有坏再写修改日志再记录未决问题再决定下一步要不要继续收紧规则每一步都不大但每一步都能检查、能回写、能继续。这样做的好处是任务不会一下子扩散太大每轮都知道自己在做什么失败了也知道从哪一轮退回下一轮能直接接着已有事实继续4. 什么叫“可恢复”可恢复就是中断以后还能继续。真实项目一定会被打断今天只做到一半明天才继续中间换人中间换机器中间被别的任务打断如果没有可恢复结构每次恢复都得重新猜上一轮做到哪了哪些结果已经确认哪些问题还没解决下一步最安全的动作是什么而可恢复的项目应该让下一轮一看就知道这些事实。这就是长期项目真正需要的能力。5. 购物车程序里什么时候说明它已经变成长项目了可以看几个很实际的信号同一个地方反复出问题修完以后还有后续任务状态文件开始变得有意义别人接手时必须先读状态一次修复已经不够得连续做几轮才稳比如空购物车结算这件事第一轮先挡住空购物车结算第二轮补测试和日志第三轮确认旧调用方行为第四轮处理相似边界问题到这里它就已经不是一次修补了而是一个正在变长的项目。6. 本章小结这一章想讲清楚的核心是一次性任务之所以会演进成长期项目不是因为任务一开始就很大而是因为它在推进过程中不断冒出新的边界、验证和后续。以购物车程序为例一个空购物车修复最初看起来只是单次任务但当它开始涉及测试、日志、兼容、回写和后续边界时它就已经变成长期项目的一部分了。这时最重要的不是一次做完而是让每一轮都能看得清改得准验得过留得住接得上这就是任务能继续往前走的原因。下一章我会继续讲程序项目里最容易踩的坑是什么以及控制层为什么会越修越重。