让 AI 改 AI 写的代码,到底有没有用

我用同一个 AI 改它自己两个月前写的模块,第一次的结果是:结构变整齐了,但漏掉了两处原有的边界处理。让 AI 改 AI 写的代码有用吗,有用的前提是你先告诉它什么不能动。

这个结论来自我自己几轮的实际操作。下面把有用和无用的场景分开说。

让 AI 改 AI 写的代码有用吗:两种用法对比

| 维度 | 让 AI 自己改自己 | 你定约束、AI 执行 |

|---|---|---|

| 它知道原意吗 | 不知道,只能从代码推 | 你把意图写进提示词,它不用猜 |

| 改动范围 | 经常超出你说的范围 | 由你划定,越界可查 |

| 你能验收吗 | 难,它改的地方你没读过 | 能,你只需要验约定范围 |

| 适合的任务 | 命名统一、格式整理 | 结构调整、逻辑补齐 |

| 最大风险 | 悄悄丢掉原有行为 | 把约束写错,方向就跑偏 |

| 返工成本 | 高,因为要重新理解改动 | 低,方向是你定的 |

表里最关键的是最后两行。AI 改自己代码最大的问题是它不记得当初为什么那么写,所以它会把「看起来多余」的东西删掉,而那可能正是防御边界。

各自适合谁

让 AI 全自动改,适合低风险任务。 统一命名、调整格式、提取重复代码这类,改错了也能立刻看出来,代价可控。

你定约束、AI 执行,适合高风险任务。 只要涉及业务规则、权限、金额、数据落库,就必须走这条路。你得先写出「哪些行为必须保住」,再让它动手。

判断标准很简单:这次改动如果悄悄改了行为,你多久能发现? 当场能发现,就放手让它做;过几周才发现,就必须自己定约束。

我的选择与理由

我现在的固定做法是三步。

第一步,先自己读出边界。 这一步不能外包,因为你要给的约束就来自这里。没有注释的代码怎么读,我写在AI 写的代码没注释,怎么快速读懂里了。

第二步,把「不能动」的部分写进提示词。 我习惯把这段放在提示词末尾,写得比正文还具体:哪些函数不许改名、哪些分支不许删、哪些默认值不许改。

第三步,改完对比改动范围。 不看我原本没让它动的地方有没有被动过。

顺带一提,这个方法在批量清理重复代码时特别管用,相关经验我在AI 写出来一堆重复代码,删之前先看这里里写过。

一个反常识的观察

让 AI 改自己的代码,效果往往比改别人的代码更差,不是更好。

原因是:它写的代码里那些「看似冗余」的判断,很多是它当初为了应付某个你没说清的情况加的。它现在不记得那个情况,就会当成冗余删掉。

反而是让它改你写的代码,它会更谨慎,因为它读不懂你的意图时会倾向于保留。

常见问题

Q:让 AI 改 AI 写的代码有用吗?

A:有用,但要限定任务类型。格式整理、命名统一这类低风险任务可以放手让它做;涉及业务规则的改动,必须由你先写出「不能动什么」,再让它执行。

Q:它改完之后怎么验收?

A:两件事。一是对比改动范围,看你没让它动的地方有没有被动;二是把关键路径手工跑一遍。别只看它给你的总结,总结里不会写它删掉了什么。

Q:同一个 AI 改自己的代码,是不是更懂原意?

A:通常不是。它没有跨会话的记忆,改的时候只能从代码本身推断意图,和改陌生人的代码起点差不多。这反而让它更容易把防御性的代码当成冗余清掉。

相关阅读


本文作者西米,37 岁程序员,一个人加五个 AI 员工在跑一家公司。踩过的坑和真实账本都写在公众号「西米分享」。

完整代码、踩坑清单与最新进展,都在公众号。

📱 关注公众号「西米分享」