一句话总结
AI 代码的四大风险:幻觉 API/依赖包(调用不存在的函数、编造包名——衍生出 slopsquatting 供应链攻击)、安全漏洞(SQL 注入、硬编码密钥、缺失校验——训练数据里就有这些旧代码)、许可证污染(逐字复述带 GPL 的代码)、能跑但错(逻辑对需求的理解偏差,测试没覆盖就发现不了)。把关原则一句话:AI 产出走与人工代码完全相同的门禁,一步都不省。
初级理解
为什么不能直接信任:语言模型的目标是"生成统计上像正确代码的代码",不是"正确的代码"。它没有真实执行过你给的场景——"看起来对"和"是对的"之间的差距,就是 review 要补的部分。
个人 review 清单(五项保底):
中级深入
幻觉 API 与幻觉包(slopsquatting,2025 年后必考):AI 会自信地编造不存在的库函数,更危险的是编造不存在的包名——攻击者监控 AI 常编造的包名并提前抢注到 PyPI/npm(称为 slopsquatting),开发者照着 AI 建议安装就中招。防御:
- 新依赖引入必须走人工确认(官方仓库是否存在、维护活跃度、下载量)
- 锁文件(lockfile)+ 私有源白名单,CI 禁止运行时动态拉包
- 幻觉函数在编译/解释期就会暴露——所以"每小步都跑构建"是天然的幻觉探测器
安全风险的成因与对策:训练语料包含大量历史不安全代码(老教程、Stack Overflow 答案),AI 会"复刻"这些模式。对策:SAST 静态扫描(SonarQube/Semgrep)+ 密钥扫描(gitleaks)进 CI;鉴权/加密/支付类代码禁止 AI 直接生成后直接用,必须人写或逐行审。
许可证风险:模型可能逐字复述训练数据中的 GPL/AGPL 代码片段。企业对策:代码溯源扫描(如 fossa/scancode)抽样审计;内部规范要求 AI 辅助代码同样声明来源审查。
高级拓展
团队防线设计(资深岗答题框架):
- 第一道(生成时):规则文件约束(指定经过审计的库与写法);私有化/企业版模型防止代码外泄
- 第二道(提交时):PR 模板加"AI 产出"勾选项(促使 reviewer 提高警觉);AI code review 作为第一轮筛子,人审聚焦设计与安全
- 第三道(CI):测试覆盖率阈值、SAST、依赖与密钥扫描——所有代码同一标准,AI 产出没有豁免通道
- 第四道(运行时):灰度发布 + 监控告警,兜住漏网之鱼
技能退化的管理视角:团队风险不是"个人不会写代码",而是组织排查能力空洞化——当线上故障没人能脱离 AI 排查时就是危机。可操作做法:核心模块的"无 AI 演练"(定期让成员手写关键修复)、code review 时要求说明"为什么这样写"(检验理解而非接受)、新人前三个月限制 Agent 模式(先建立基础心智模型)。
实战场景
场景一:review 一个 AI 生成的 PR(面试实操题)
场景二:一次幻觉 API 事故复盘(讲故事模板)
场景三:给团队定 AI 使用规范(管理题)
面试模拟
Q:AI 生成的代码和资深工程师写的,review 时有什么不同?
A:关注点分布不同。资深的 PR 重点看设计取舍;AI 的 PR 重点看三处:① 幻觉(API/依赖/配置项是否真实存在);② "聪明但错"的隐藏逻辑(AI 喜欢写出能跑但曲解需求的实现);③ 范围外改动(Agent 常顺手重构)。相同点:安全、边界、测试有效性的标准完全一致。一句话总结——对 AI 代码,我的默认假设是"有错待证",对人反而先信任。
Q:什么是 slopsquatting?怎么防?
A:AI 幻觉出的不存在的包名被攻击者抢注发布恶意版本,开发者按 AI 建议安装即中招——是 AI 时代特有的供应链攻击面。防御:新依赖人工核实(官方源存在性、维护者、下载量)、锁文件 + 私有源白名单、CI 禁止动态解析依赖、对 AI 建议的新包保持"默认不装"的姿态。组织级可以维护内部经过审计的依赖目录。
Q:长期用 AI,工程师基本功退化怎么办?
A:先承认风险真实存在(调试能力、系统直觉靠练习不靠阅读)。个人层面:核心技能刻意保留"裸写"练习、review AI 代码时弄懂每一行而不是只看结果、定期做无 AI 排障演练。团队层面:新人成长期限制 Agent 自主模式(先手写建立心智模型)、把"能脱离 AI 讲清系统"作为晋升答辩的一部分。结论:把 AI 当杠杆而不是拐杖——杠杆放大能力,拐杖替代能力。