01 第一篇 · 先搞懂:为什么、是什么、选什么

AI 编码的翻车与根因

这一章回答一个问题:你让 AI 写代码,它为什么会翻车,翻车又能不能治。

AI 翻车大多不是因为它笨。它背后有一个共同的诱因:拿训练时见过的一般写法,去填它不知道的、你这个项目的具体情况。不同的翻车,近因并不相同,所以对策不能靠跟它说”认真点”,而要针对每一种翻车的近因或缺口,改变它能看到什么、强制它交出什么。

1.1 三种最常见的翻车

很多人第一次用 AI 写代码,印象是”对着它随口说说就出代码”。真用进项目就会撞见三种翻车,而且反复撞见:

这三种翻车共享一个诱因,近因却不同。编造接口和字段,是因为它缺项目事实、又没有先去代码里检索;跑偏需求,是因为你给的意图和验收条件不完整,它用常见模式补了空白;自称已完成,是因为它没有真实执行、没有独立检查、也没有一个可验证的”算完”的标准。近因不同,后面的对策也就分成三条,各治一种。

所以这套方法不是要把 AI 用得更随意,恰恰相反,是给 AI 编码套上纪律:先把项目事实、要做什么、做到什么算完立清楚,再让它动手。

1.2 现象、近因与对策

撞见翻车,最常见的反应是在提示词里加一句”请认真、不要偷懒、仔细检查”。这几乎没用。要讲清为什么,得把问题分成三层看,这个分法全书都会用到。

下面这张表就是这套方法的诊断方式:遇到一个现象,先找它背后的事实、任务、流程或模型缺口,再选对策。三者是多对多的,一个现象可能有几个近因,一条对策也可能压住好几个缺口。

现象(你观察到的坑)近因或缺口(事实、任务、流程、模型)可执行的对策(你能写进流程的)
编造接口和字段缺项目事实;没有先检索动手前核实;调用前先在代码里确认存在
跑偏需求意图和验收条件不完整,用常见模式补空白先写清”做什么 + 验收条件”再动手
自称已完成没有真实执行、独立检查、可验证的完成标准独立于自我报告的验证 + 可追溯记录

判据很简单:能直接观察到的是现象;需要进一步追问的,是事实、任务、流程或模型在哪一层出了缺口;能落实成动作的才是对策。只复述现象,就容易写出”请认真点”这种无效话术。

“请认真点”为什么瞄错了?两个原因。一是”认真”不是一个模型能执行的动作,它会生成一句”好的,我会认真检查”,然后该漏的照漏,这种叮嘱没有约束力。二是模型的输出对提示里的措辞和暗示很敏感:你带着假设去问”是不是用了 X”,它容易顺着你说”是”,哪怕事实不是。叮嘱改变不了这两点。

还有一项针对真实 agent 运行轨迹的研究给出一个更反直觉的结论:在这项研究覆盖的任务里,决定一个 agent 可靠不可靠的,主要不是它”一次做对”的能力,而是它发现、诊断和纠正错误的能力;研究还发现,掺入无关信息会降低可靠性,上下文的质量比数量更重要。

这把对策的方向定了下来:流程要能发现和纠正错误,而不是指望一次做对;提供上下文时,优先保留当前任务真正需要的材料。

1.3 上下文的质量与数量

窗口大小也印证了上下文的质量比数量重要。模型的标称窗口越来越大,但标称窗口不等于有效窗口。有专门的长上下文基准测过”非字面匹配的推理”:线索散在长文本各处、要跨段落关联起来才能回答,而不是在一堆文本里找一个原词的那种大海捞针。远不到窗口填满,模型的表现就开始明显下降,连表现较好的模型也不能避免。上下文越长,模型对其中信息的利用越不均匀,中段的内容尤其容易被忽略。

这项基准测的是模型能不能在长文本里找到并使用相关信息,没有比较系统提示、工具定义、steering 和任务历史各自的影响。它不能直接给出统一的会话清理线,也不能证明某一类上下文几乎没有成本。

1.4 三条地基

把前面三件事翻译成能天天用的规矩,就是这套方法的三条地基。后面每一步流程,都是这三条的展开。它们一一对应三种翻车的成因:

地基一句话规则治哪种翻车
动手前核实(Grounding)写代码前先把接口事实、需求意图、验收条件核实清楚;要调一个接口/字段前,先在代码里确认它真实存在编造接口和字段;跑偏需求
改旧前上锁(Safety Net)没有安全网,不许改没完全看懂的旧代码。重构先写锁住现有行为的特征测试;修 bug 先写能复现 bug 的失败测试改旧代码时的回归和误伤
交付前验证(Honest Verify)每个交付都要有独立于 AI 自我报告的证据(运行结果、测试、验收记录);高风险或用户可见的行为必须人工验收自称已完成

三条各管一段:核实管起点的事实和意图,上锁管过程里的回归风险,验证管终点的”假完成”。特征测试只能证明旧行为没有改变;新需求是否做对,要在验证阶段对照验收条件判断。

验证强度跟着风险走:低风险、可回退的改动,有运行和测试证据即可;高风险或用户可见的行为要求人工验收。

1.5 翻车诊断卡

AI 的产出让你觉得不对劲时,按三步排查:

  1. 记录现象:它具体做了什么让你起疑。调了不存在的方法?做出来的东西和你要的不一样?说完成但你没验过?
  2. 定位缺的那一层:是缺项目事实(该核实),还是改了看不懂的旧代码却没有安全网(该上锁),还是没有独立证据证明完成(该验证)?
  3. 补对应的地基,别加”请认真点”这类叮嘱。

通过标准:你对现象的每一条判断,都能指向一个具体的项目证据,比如哪个接口不存在、哪条验收条件没写、哪个测试没跑,而不是停留在”感觉它不靠谱”。

本章小结

AI 翻车共享一个诱因,近因却各不相同。动手前核实、改旧前上锁、交付前验证,分别在起点、过程和终点发现并纠正错误。

参考与出处