3.6.1 AI 常见的「不听话」表现
经过本节学习,你将掌握
- 识别 AI 输出问题的六种常见类型
- 理解 AI 幻觉的四种形态及其危害
- 了解 2024-2025 年新兴的「Slopsquatting」安全威胁
- 获得一份实用的验证技巧速查表
六种常见问题类型
AI 的「不听话」表现看似五花八门,但归纳起来主要有六种类型:
| 类型 | 症状 | 典型案例 |
|---|---|---|
| 答非所问 | AI 理解错了你的意图 | 你要登录页,它给了注册页 |
| 过度发挥 | 做了你没要求的事情 | 你要简单时钟,它给了带时区切换的全功能版 |
| 偷工减料 | 少做了关键部分 | 没有错误处理,缺少边界检查 |
| 自相矛盾 | 前后逻辑不一致 | 注释说「返回数组」,代码实际返回对象 |
| 幻觉 | 编造不存在的内容 | 推荐不存在的库,调用不存在的 API |
| 死循环 | 反复犯同一个错误 | 你指出问题,它改了,下次又改回去 |
类型一:答非所问
场景:你让 AI 做一个「用户登录功能」,它却给了你完整的「用户注册 + 登录 + 找回密码」三件套。
为什么会这样:AI 基于大量训练数据进行模式匹配,当它看到「登录」这个词时,会联想到常见的用户认证系统,然后「好心」地给你全套方案。
识别信号:
- 输出的内容比你要的多很多
- 包含了你没提到的功能模块
- AI 在解释时说「我假设你还需要...」
类型二:过度发挥
场景:你只想要一个显示当前时间的简单组件,AI 却加上了时区选择、12/24 小时切换、自定义格式等功能。
为什么会这样:AI 见过太多「完整」的解决方案,倾向于给出「全面」的实现,即使你只需要最简单的版本。
识别信号:
- 代码量远超预期
- 引入了你不认识的第三方库
- 包含大量你不需要的配置选项
类型三:偷工减料
场景:AI 给的代码能跑,但没有处理「用户输入为空」「网络请求失败」等异常情况。
为什么会这样:为了让代码看起来简洁,或者因为你没有明确要求,AI 省略了防御性代码。
识别信号:
- 代码中没有 try-catch 或错误处理
- 没有输入验证
- 「Happy Path」(理想路径)能跑,边界情况会崩
类型四:自相矛盾
场景:AI 说「这个函数返回用户列表」,但实际代码返回的是单个用户对象。
为什么会这样:AI 生成注释和生成代码是相对独立的过程,有时会出现不同步。
识别信号:
- 注释与代码行为不符
- 函数名暗示的功能与实际实现不一致
- 前面说的方案和后面的代码不匹配
类型五:幻觉(重点)
这是最危险的问题类型,下面会详细展开。
类型六:死循环
场景:你指出代码有问题,AI 修改后,下一轮又改回了原来的写法。
为什么会这样:
- 对话上下文太长,AI「忘记」了前面的修正
- 你的修正指令不够明确
- 任务本身超出了 AI 的能力范围
识别信号:
- 同样的错误反复出现
- AI 的修改越来越「绕」
- 修一个问题引入两个新问题
重点:AI 幻觉的识别与应对
AI 幻觉(Hallucination)是指 AI 生成看起来正确但实际错误的内容。在编程场景中,这可能导致代码无法运行,甚至引入安全漏洞。
代码幻觉的四种类型
| 类型 | 表现 | 危害程度 | 示例 |
|---|---|---|---|
| 包幻觉 | 推荐不存在的 npm/pip 包 | 🔴 高(安全风险) | npm install super-easy-utils(包不存在) |
| API 幻觉 | 编造不存在的函数或方法 | 🟡 中 | 调用 array.findLast() 在旧版 JS 中不存在 |
| 逻辑幻觉 | 代码逻辑与描述不符 | 🟡 中 | 说「返回去重后的数组」,实际没有去重 |
| 版本幻觉 | 使用已废弃的语法或 API | 🟡 中 | 使用 React 旧版类组件生命周期 |
包幻觉:最危险的幻觉类型
为什么包幻觉的危害程度最高?因为它涉及到软件供应链安全。
真实案例:2024-2025 年的安全研究发现了一种名为「Slopsquatting」的攻击方式:
- 研究人员测试了 16 种主流 AI 模型,发现它们推荐的包中约 20% 是不存在的
- 更令人担忧的是,43% 的幻觉包名会在多次询问中重复出现
- 攻击者可以注册这些 AI 经常「幻觉」出的包名,植入恶意代码
- 当开发者按 AI 建议安装这些包时,就会中招
攻击链条:
AI 幻觉出包名 → 攻击者注册该包名 → 植入恶意代码 → 开发者按 AI 建议安装 → 系统被入侵真实威胁:2025 年 10 月,安全公司发现了名为「PhantomRaven」的恶意活动,利用这种技术感染了 126 个 npm 包,窃取了开发者的 npm tokens、GitHub 凭证等敏感信息。
API 幻觉:看起来对但跑不起来
典型场景:
// AI 生成的代码
const lastItem = myArray.findLast(item => item.active);问题:findLast() 是 ES2023 引入的方法,在旧版浏览器或 Node.js 中不可用。AI 可能混淆了不同版本的 API。
常见的 API 幻觉模式:
- 混淆不同库的 API(把 Lodash 的方法当成原生方法)
- 使用已废弃的 API
- 编造不存在的配置选项
逻辑幻觉:代码能跑但结果不对
典型场景:
你让 AI 写一个「去重函数」,它给了你:
function removeDuplicates(arr) {
// 去除数组中的重复元素
return arr.filter((item, index) => arr.indexOf(item) === index);
}代码看起来没问题,注释也对。但如果数组中包含对象,这个方法就失效了,因为对象比较的是引用而不是值。
版本幻觉:用的是「过时」的写法
典型场景:
你让 AI 用 React 写一个组件,它给了你类组件写法:
class MyComponent extends React.Component {
componentWillMount() {
// ...
}
}问题:componentWillMount 在 React 16.3 后已被废弃,React 18 中会产生警告。
验证技巧速查表
面对 AI 生成的代码,用这份清单快速验证:
验证包是否存在
# npm 包
npm search <包名>
# 或直接访问 https://www.npmjs.com/package/<包名>
# Python 包
pip index versions <包名>
# 或直接访问 https://pypi.org/project/<包名>验证 API 是否正确
- 查阅官方文档:不要只相信 AI 的解释
- 检查兼容性:使用 caniuse.com(前端)或查看库的版本说明
- 小范围测试:先在独立环境跑一下,确认能用
要求 AI 提供来源
当 AI 推荐了你不熟悉的库或 API 时,追问:
请给出这个库的官方文档链接。这个 API 是在哪个版本引入的?请给出参考来源。如果 AI 无法给出有效链接,或者链接打开是 404,那很可能是幻觉。
验证逻辑正确性
- 用边界情况测试:空数组、空字符串、null、超大数值
- 用反例测试:故意输入「应该失败」的数据,看是否正确处理
- 让 AI 自己检查:
请检查上面的代码,列出可能的边界情况和异常情况,以及当前代码是否正确处理了它们。
本节要点
✓ 六种问题类型:答非所问、过度发挥、偷工减料、自相矛盾、幻觉、死循环
✓ 四种代码幻觉:包幻觉(最危险)、API 幻觉、逻辑幻觉、版本幻觉
✓ Slopsquatting 威胁:攻击者利用 AI 幻觉的包名进行供应链攻击,20% 的 AI 推荐包可能不存在
✓ 验证习惯:对 AI 推荐的包和 API,先验证再使用;对代码逻辑,用边界情况测试
识别问题只是第一步。下一节,我们来学习如何快速定位问题的根源。
