识别与应对 AI 的「幻觉」

本节目标

4 种幻觉表现:

① 编造不存在的 API / 函数名(如 fs.readAllSync)
② 给过时的用法(旧版本签名、已废弃方法)
③ 逻辑看似合理但边界错(off-by-one、漏处理 null)
④ 引用不存在的库或版本

三招拦截:

招1 类型守卫:用 TypeScript,编译期就能抓出"不存在的函数"
招2 官方文档:凡 AI 提到的 API,先去官方文档/类型定义核对
招3 自证运行:让 AI 给"能跑的最小验证",你自己跑一遍

示例:AI 写了 fs.readAllSync('a.txt'),你一查 Node 文档发现没有这个函数(应为 fs.readFileSync)——这就是典型幻觉,TS 也会立刻标红。

名词解释

课后练习

  1. 为什么 TypeScript 能拦住很多"编造 API"的幻觉?
    • 答案:TS 编译时查类型定义,调用不存在的函数/字段会直接报错,把"运行时才炸"提前到"写代码时就红"。
  2. 招3"自证运行"具体怎么做?
    • 答案:让 AI 给一段能直接 node/浏览器跑的最小验证(含输入与期望输出),你亲自跑,跑不通即证明有诈。

总结

幻觉是 Vibe Coding 必须直面的"原罪"。AI 生成代码时,会自信地写出根本不存在的函数名、过时的 API、看似对实则错的边界处理——而且它"说"得理直气壮,让你容易轻信。我的三条拦截招里,最该养成的是"反射性查官方文档":凡 AI 抛出一个 API,先去文档或 .d.ts 里确认它真的存在、签名正确。TypeScript 是免费的第一道防线,它把一堆幻觉在编译期就红给你看。招3"自证运行"则把信任建立在"我亲眼跑过"而非"AI 说能跑"。请记住:AI 不会因为你信任它就变准确。对它的每个具体断言保持轻微怀疑、用验证收口,是你与幻觉之间最稳的防火墙。