虎嗅

代码在变便宜,现实没有:AI Coding 撞上的第一堵墙

该文章尚未提供 العربية 解读,以下为中文版内容。

核心内容总结

这篇文章通过一个STM32硬件bug的真实案例,揭示了AI在纯软件领域表现出色,但进入现实物理世界(如硬件、机器人、汽车等)时遇到的关键瓶颈:现实世界的很多关键信息没有被数字化,AI看不到;而且观测现实本身会改变结果,导致AI难以找到问题根源。文章还指出,未来AI要征服物理世界,需要先解决“现实数字化”的工程问题(给AI装“眼睛耳朵”),而人类工程师的价值将转向“知道机器没看到什么”。

一、AI在纯软件里是“学霸”,到硬件现实就“懵圈”

AI在写代码、修软件bug时特别厉害,不是因为它比人聪明,而是软件世界本身就是“数字友好型”的:需求、代码、报错日志都是文本,测试结果是“通过/失败”的结构化数据。AI可以自己完成“写代码→编译→跑测试→改代码”的闭环,只要测试全绿,它就觉得任务完成了。

但到了硬件现实里就不一样了。比如文章里的STM32板卡偶发断网,AI折腾了很久都没找到原因——因为它只看到代码,看不到电源电压瞬间跌落、内存地址重叠、DMA(数据快速传输通道)和Cache(高速缓存)的冲突这些“隐形因素”。这些现实中的问题,原因和现象之间没有稳定的对应关系,AI没有这些数据,自然推理不出来。

二、现实里的bug藏在AI“看不见的角落”

Web服务报错会直接说“连接失败”“数组越界”,但现实硬件的“报错”是随机且模糊的:偶尔断网、夏天才出问题、接上调试器就正常、加一行日志bug就消失……这些问题的根源可能不在代码里,而是在代码之外:

  • 硬件层面:电压波动、温度过高、芯片批次差异、PCB电路板走线问题;
  • 系统层面:内存两块区域重叠(比如文章里的发送队列和动态内存占了同一个地方)、DMA读取了还没写到内存的Cache数据;
  • 环境层面:电磁干扰、总线竞争(多个设备抢着用同一根数据总线)。

这些因素中,绝大多数都没有被转化成AI能读懂的数字信息,所以AI即使再聪明,也像“盲人摸象”一样找不到问题。

三、你一观测,bug就“躲猫猫”——观测会改变现实

底层硬件调试有个很麻烦的特点:你想观察问题,反而会改变问题本身。比如加一行日志,会让系统运行的时序(时间顺序)发生变化,原本存在的bug就消失了;接上调试器,会改变中断响应的速度;把代码优化等级从-O2降到-O0,bug也可能直接不见。

AI不懂这个道理,它只会根据看到的代码和日志来推理。比如看到“加日志后bug消失”,它可能以为是日志修复了问题,而不会想到是时序变了。这就是为什么老工程师凭“手感”能快速定位问题——他们知道观测会扰动系统,而AI没有这种“现实经验”。

四、未来AI要懂现实,得先给它装“眼睛耳朵”

文章说,AI要进入物理世界(比如机器人、汽车、工业设备),光靠模型聪明、上下文长是不够的,关键是要让它能“看见”现实。这需要做一系列“现实数字化”的工程:

  • 加更多传感器:比如测电压、温度、振动的传感器;
  • 记录更多数据:比如芯片寄存器状态、总线传输的trace(轨迹)、示波器里的波形;
  • 优化硬件架构:让AI能确认“我发出的命令,现实真的执行了吗?”(比如机器人有没有真的停住,设备有没有真的关闭)。

而人类工程师的价值,也从“会写代码”转向“知道机器没看到什么”:比如哪些状态是软件推断的(不是真实的)、哪些“成功”只是API返回的(不是实际动作完成的)、哪些安全判断用的是过时的状态。当AI能批量生成代码时,最危险的不是“代码写错”,而是“系统运行顺畅,但对现实的理解从一开始就错了”。

最后一句话总结

AI在纯数字世界里如鱼得水,但要征服现实物理世界,得先把现实变成它能看懂的数字——这不仅需要更聪明的模型,更需要给它装上“眼睛、耳朵和神经”,而人类工程师的核心价值,就是帮它补上那些“看不见的现实”。