
亚马逊紧急收紧 AI 编程:初级工程师无法独立推送 AI 辅助代码
AWS 工程师曾给自家 AI 编程工具 Kiro 下达了一个看似简单的任务:修复 Cost Explorer 中的一个小问题。Kiro 的解决方案是——直接删除整个环境并从零重建。这场事故导致一项面向客户的业务中断了整整 13 小时。
但 Kiro 并非初犯。据一位 AWS 高级工程师向英国《金融时报》透露,这已是近月内第二起由 AI 导致的线上故障。第一起涉及的是 Amazon Q Developer。两次事故中,工程师都放任 AI 自主解决问题而未加干预。该工程师将两起事件均描述为"完全可以预见"。
AWS 方面的回应将责任推给"用户误用",坚称是工程师持有的权限超出了预期范围。技术层面这说法固然没错——但一个拥有同等权限的人类工程师,大概不会为了修一个小 bug 就把整个环境毁掉重建。
事后 AWS 推出了强制性措施:生产环境访问必须经过同伴代码审核&查验、增加员工培训、保护关键资源。然而在流程本身缺失的情况下,事后追责"用户误用"本身就难以自圆其说。
从强制推广到紧急刹车
更深层的问题在于组织决策。亚马逊曾将每周 80% 的 Kiro 使用率定为公司级 OKR,并严格追踪。偏好 Claude Code 或 Cursor 的工程师若想使用替代工具,需要 VP 级别特批。约 1500 名工程师在内部论坛表达了反对意见。

然而在 AWS 多起线上事故发生后,公司决定扭转这股"GenAI 辅助变更更大爆炸半径"的趋势。明确规定:初级和中级工程师无法再独立推送 AI 辅助代码,必须由资深工程师签字确认。亚马逊内部将此定性为"尚无完整最佳实践和安全保障的新型 GenAI 使用场景"。

这一事件不会是孤例。随着 AI 编程工具全面渗透行业,我们或许还没有准备好足够的防护栏和最佳实践。AI 确实让工程师效率更高,但同样会让错误来得更突然、更彻底。
AI 攻破"立方体路径"难题:Knuth 也不得不服
数学家 Donald Knuth 提出的"蛇爬立方体"问题(snake-in-the-cube)困扰学界多年。研究者 Stappers 将任务交给 Claude Opus 4.6,并设定一条铁律:每次尝试后,必须写下"我用了什么方法、为什么失败",才能继续下一步。
Claude 在大约一小时内经历了 31 次探索——简单公式、暴力搜索、几何模式、统计方法轮番上阵,大部分都走进了死胡同。第 25 次尝试时,它甚至自我反省:"暴力搜索行不通,这道题需要真正的数学推理。"最终在第 31 次尝试中找到可行的构造方案。
简洁到反直觉的规则
Claude 发现的解法出人意料地简单:每到一处,根据当前位置按照一小套条件决定下一步方向。仅此而已——没有复杂公式,边界检查也只有寥寥几行。Stappers 用这个程序测试了从 3 到 101 的所有奇数阶立方体,每一次都输出了完美结果。
随后 Knuth 亲自完成了形式化证明,并将构造方法推广。最终结论:这类解法在所有奇数阶立方体中恰好有 760 种。
紧接着,另一位研究者将 GPT 和 Claude 作为协作 Agent 使用,找到了覆盖奇数阶和偶数阶的更好方案。这个悬而未决多年的难题,自此被彻底攻克。Knuth 在论文结尾感慨:"我们正身处极其有趣的时代。"最后他写道:"看来我得找时间重新审视一下自己对生成式 AI 的看法了。" 这句话从 Donald Knuth 嘴里说出来,分量完全不同。

Linus Torvalds 也承认"Vibe Coding"了
是的,就是那个曾批评 90% AI 营销都是"炒作"的 Linus Torvalds。他公开了一个兴趣项目:AudioNoise,一个数字吉他效果器,用于学习信号处理。

Torvalds 在项目 README 中坦白自己用了 AI 编码工具:
"另外注意,Python 可视化工具基本上是用 Vibe Coding 写的。我对模拟滤波器的了解——其实也没多少——都比 Python 强。这个项目原本是我一贯的风格:Google 搜索加猿人模仿式编程,后来我干脆把中间人——我自己——踢出局,直接用 Google 的 AI 来写音频采样可视化脚本。"
但多数人忽略了一点:项目核心的 C 代码(滤波器、音频处理逻辑)全部由他亲手编写——这恰恰是他想通过项目学习的部分。他只用 AI 辅助自己并不熟悉的 Python,因为"脚本坏了也没什么大不了"。
这一案例揭示了一个更深刻的变化:当 Torvalds 这样的"代码原教旨主义者"都开始用 AI,曾经为此感到愧疚的人便有了底气。
不过前提条件不可忽视:Torvalds 能识别 AI 输出的错误代码,因为他真正理解底层原理。 在一门他并不精通的语言里,他依然能闻到代码不对劲的地方。Junior 开发者如果 vibe coding 自己不懂的功能模块,出问题时根本无从调试。
会判断什么时候该手写代码,这项能力现在比"什么都能手写"更值钱。
Claude Code 选工具的规律:一份来自 2430 次提示的调研
Amplifying 实验室 的研究人员向 Claude Code 发送了 2430 条开放式提示,覆盖 3 种模型、4 种项目类型、20 个分类。所有提示中均未提及任何工具名称,只是简单问一句:"我应该用什么?"
能自己造轮子的,绝不去买
"自建/DIY"是该数据集里出现频率最高的推荐,在 20 个分类中有 12 个都出现了,合计 252 次。如果你让 Claude Code 添加功能开关,它会构建一套 env vars + React Context 的方案;让它给 Python 项目加认证,它会从零手写一套 JWT。
对 AI 来说,在 30 秒内搭出一个可用的自建方案太容易了——但安全漏洞和维护负担也随之而来。技术选型不能全交给 AI 拍板,"造还是买"需要综合评估。

存在一个默认技术栈
当 Claude Code 确实选择第三方工具时,高度集中:
- GitHub Actions 拿下 94% 的 CI/CD
- Stripe 拿下 91% 的支付
- shadcn/ui 拿下 90% 的 UI 组件
- Vercel 是 JavaScript 项目的标配
其余高频选项:PostgreSQL、Tailwind CSS、Zustand、pnpm、Resend、Vitest。
这些工具未必是项目的最优解——模型选择它们,是因为在训练数据(主要来自 GitHub)里见过太多次。技术栈的决定权应该在工程师手里,而不是模型手里。

Redux 在 AI 辅助代码中已死
在全部 2430 条提示中,Redux 一次都未被选为首选。模型知道它的存在(23 次提及、2 次作为备选推荐),但从未实际选用。Zustand 则以 65% 的选用率称霸状态管理。Express 更惨,连备选和提及都没有。

新模型偏爱新工具
这是数据集中信号最清晰的趋势。Prisma 在 Sonnet 4.5 中有 79% 选用率,到了 Opus 4.6 直接跌到 0%,Drizzle 全面接替。Python 项目中,Celery 从 100% 暴跌至 0%,因为新版模型更倾向于 FastAPI 内置的后台任务机制。趋势与训练数据的时间分布高度吻合。

模型能感知上下文
同一模型在 JavaScript 项目中会选 Vercel,到了 Python 项目就换 Railway;用 Next.js 时选 Drizzle,用 FastAPI 时选 SQLModel。这不是固定套路,Agent 会根据实际技术栈调整推荐——比一刀切的建议实用得多。

未被首选不代表被遗忘
报告中值得注意的一点:Netlify、SendGrid、Jest 从未成为首选,但在备选清单中反复出现。模型知道这些工具存在,却倾向推荐别的第一名。这个差距才是值得关注的空白地带。

LLMs 真的读懂代码了吗?75 万次调试实验的结论
研究者来自弗吉尼亚理工大学和卡内基梅隆大学,他们在 10 个模型上开展了 75 万次调试实验,专门评估 LLM 对代码的实际理解能力。研究结果很直接:调试时不要盲目信任 AI 编程助手。
变量改名就能骗过模型
研究者先制造一个 bug,确认模型能发现它,然后仅做与 bug 无关的改动——比如修改变量名或加一行注释。结果在 78% 的情况下,模型再也找不到同一个 bug,但问题代码依然存在。变量名和注释一改,模型就失去了判断能力。
死代码是陷阱
在代码中加入永远不会执行的死代码后,bug 检测准确率骤降至 20.38%。模型把死代码当成了活跃代码,将其标记为 bug 来源,而真正的 bug 藏在别处。换句话说,LLM 根本无法可靠地区分"这段会运行"和"这段从不运行"。
模型按位置读代码,而非按逻辑
56% 的正确发现出现在文件的前 1/4,而最后 1/4 区域仅有 6%。代码在文件中越靠后,模型关注度越低。如果 bug 藏在文件后半段,模型找到它的概率本来就偏低。
函数重排序准确率暴跌 83%
在一段 Java 文件中仅调换函数的顺序,调试准确率就下降了 83%——代码逻辑完全没变。这说明模型依赖的是代码在文件中的物理位置,而非代码的实际功能。这是模式识别,而非真正的代码理解。
新模型改进有限
Claude 3.7 到 4.5 Sonnet 在该任务上仅提升约 1%,Gemini 提升约 1.8%。每次模型发布都有新的基准排行榜和新闻标题,但模型在真实条件下推理代码的能力提升缓慢。当然,这些测试均基于 Opus 4.5 之前的版本,现版本表现如何还有待验证。
这是最佳条件下的结果
需要注意的是,该研究使用单文件程序,约 250 行代码,且每段代码都有明确功能描述——这是有意为之的最佳条件设计。真实生产代码是多文件、跨模块、文档欠缺的,实际表现只会更差。
Junior 该不该用 AI 写代码?
我们普遍认为 AI 能帮助初级开发者快速上手——更快熟悉代码库、更早交付成果、缩小与资深工程师的技能差距。
Anthropic 近期发布了一项随机对照试验,结果挑战了这一假设。
AI 辅助反而导致理解力下降
52 名开发者学习一个新的 Python 异步编程库,一半使用 AI 辅助,一半不使用。结果:AI 组的理解测试得分低 17%,近乎两个字母等级(50% vs 67%,p=0.01)。
差距最大的是调试能力——而这恰恰是 Junior 审核&查验 AI 生成代码最需要的技能。
AI 也没有让开发更快
AI 组确实早约 2 分钟完成,但差异在统计上不显著。更值得关注的是:部分参与者在高达 30% 的时间里只是在写提示词。
六种交互模式,两种结果
研究识别出六种交互模式:
- 得分低于 40% 的模式:把任务全盘外包给 AI,从手动开发逐步过渡到全部丢给 AI。用 AI 作为调试拐杖,却没有真正建立理解。
- 得分超过 65% 的模式:生成代码后主动追问,请求代码解释,提出概念性问题。
结论:无限制 AI 接入会造成能力断层
短期内我们获得了更快的任务交付,但失去的是验证 AI 输出所必需的调试本能。在大规模引入 Junior 开发者之前,这个风险值得慎重考虑。


评论