AI 写代码总返工?提示词里补上这三类约束

一句话: AI 改代码跑偏,多数时候不是模型不行,而是需求里少了三件事——改哪里(范围)、什么算改对(验收)、什么绝对不许动(禁止);把这三类约束写成三行补在需求后面,加上"先给计划、后给代码",返工轮次会明显下降。

适合谁读:已经在用 AI 写或改代码,但经常收到"改动范围远超预期""顺手重构了整个文件""改完编译不过"的开发者。

先做这一步:补三行约束,然后看它第一步做什么

下次提需求,别改你原来的描述,只在后面加三行:

只改 <文件名> 里的 <函数名>,其他文件一律不动。
完成后要满足:1) <可验证的条件> 2) <可验证的条件>
不许新增第三方依赖;不许改函数签名;不许动对外的接口定义。

判据:发出后先看它的第一条回复——如果出现"我准备改 X 文件的 Y 函数、计划分两步"这类范围复述加计划,说明约束生效了;如果它直接甩出一整段代码,说明约束没被采纳,这时候别急着读代码

预期结果:约束生效时,首轮改动基本收在一个函数内,你能在几分钟内读完 diff。 失败时下一步:直接回一句"先只给改动计划,不要给代码"——把它的输出顺序强行掰过来,这一步几乎总能生效。

缺哪一类约束,出哪一类事故

缺什么典型症状补什么一句话判据
范围你只想加一个判断,它重写了整个函数,还顺手改了相邻文件"只改 X 文件的 Y 函数,其他一律不动"diff 里有没有你没提到的文件
验收代码看着对,但接口、命名、日志格式和工程里其他地方不一致"要满足:能用现有编译选项过 / 日志按现有格式输出"能不能逐条回答"哪一条满足了、怎么验证的"
禁止引进了新库、改了配置、动了对外协议"不许新增依赖 / 不许改签名 / 不许动接口定义"有没有出现你没批准的"顺手优化"

这三类约束对应三种不同的失败,不是一句"请小心一点"能覆盖的。

一份可以直接复制的提示词骨架

六行,顺序有讲究:

【任务】<一句话说清要达成什么>
【范围】只改 <文件/函数>,其他文件不要动
【现状】<只贴会被改到的那部分代码,不要贴整个文件>
【验收】满足以下条件才算完成:1) ... 2) ...
【禁止】不许新增依赖;不许改签名;不许动无关文件
【输出顺序】先给 3 行以内的改动计划,我确认后再给代码

关键在最后一行:"输出顺序"必须放在末尾。它是唯一能改变交互节奏的约束——把"范围确认"从"事后返工"提前到"事前 10 秒"。计划不对,你在还没写代码的时候就发现了。

为什么这三类约束有效

  1. 模型不知道你的工程。它看不到你的目录结构、命名习惯和编译选项,只能用默认值填空;你不说的部分,它一定会自己决定。
  2. 没有验收判据,它就停不下来。"加个判断逻辑"没有终点,它倾向"多给一点",于是顺手补上参数校验、日志、错误码——看起来更专业,但不在你的计划里
  3. 改动范围和上下文长度正相关。你贴进去的东西越多,它越容易"一起整理一下";只贴要碰的那一段,是最便宜的约束手段。

这三条是机制解释;下面那个对照实验才是能自己验证的部分。

四个高频坑

#为什么会踩改法
1约束写在一大段需求的最前面靠前的内容在长上下文里会被稀释挪到需求末尾三行
2约束互相矛盾既要求"零依赖"又要求"用某某库"一次只留一类约束,冲突的删掉
3一次提五件事每件事都要改文件,范围互相交叉拆成五轮,一轮一个可独立验收的点
4把禁止项写成"尽量不要"它按"可以,但要克制"来理解用"不许",并给出替代做法

第 4 条最常见:"尽量别改别的文件"约等于没写。 要写成"不许改这个文件以外的任何文件",它才会真的绕开。

一个可复现的对照实验

想确认对你是否有效,不用看别人的结论,今天就能试一次:

  1. 挑一件你本来就打算做的小改动(加一个边界判断、改一处日志格式);
  2. 用你现在的习惯提一次,记录四个数字:改动文件数 / 是否新增依赖 / 首轮是否通过编译 / 返工轮次
  3. 开一个新会话,同一条需求加上上面那三类约束再提一次,记录同样四个数字;
  4. 两组数字放一起对比。

判据:先只看"改动文件数"和"返工轮次"——它们最容易数,也最能说明问题。 失败时下一步:如果两组数字一样,说明你的需求本来就写得够清楚,不用改流程;如果第二轮改动文件数明显更小但首轮编译不过,说明验收判据还不够具体,把"能用现有编译选项过"换成明确的接口约束再试。


实测对比:同一条"加一个边界判断"的需求,不写约束时收到的回复里带了参数校验、日志,还有一处相邻函数的"顺手整理";补上三类约束并加"先给计划"之后,回复变成"改 X 文件 Y 函数第 N 行一处 + 三行计划"。变的不是代码质量,是改动边界。(单次观察,非统计结论;用上面的对照实验可以自己复核。)

有用的话点个收藏,下次让 AI 动手前先把这三行补上。你在项目里被 AI"顺手送你"的改动坑过哪一次?欢迎在评论区说说它多改了什么。

相关文章AI 写的驱动代码,怎么验证它没瞎编?——约束只能把范围框住,代码对不对还得靠"三查法"对照手册;AI编程的入口文件——CLAUDE.md的正确写法——把这三类约束固化进工程,就不用每轮重打一遍。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐