前几天在技术社区刷到一条消息,说一位AI实验室创始人在内部全员会上放话:到今年年底,要让AI直接生成二进制。乍一听挺唬人,毕竟连“AI写代码”都还在跟编译器较劲,直接一步跨到机器码,步子实在迈得有点大。但冷静下来想想,这句话放在今天的AI行业,倒也不算完全离谱——因为让模型从“生成人类语言”转向“生成机器指令”,并不是科幻小说,而是大模型、编译器、强化学习三条线恰好撞到一起之后,自然长出来的一个方向。这篇我不打算做新闻评论,只从技术层面拆一拆:AI直接生成二进制到底意味着什么,它与我们现在说的“AI写代码”有多少真实差距,以及如果这条路真的被趟开,最先发生变化的是哪些场景。
1. 先别急着惊讶,“AI直接生成二进制”究竟指哪一层
很多人听到“生成二进制”的第一反应,是一堆0和1像瀑布一样从模型里流出来。这个画面确实有冲击力,但它掩盖了一个关键问题:二进制不是一个单一的东西,它至少可以分成好几层。搞清楚这句话到底指哪一层,是判断它可不可行的前提。
1.1 我们平时说的“代码”,和“二进制”隔着好几层
我习惯把一次完整的程序产出,拆成四个层次来看:
| 层次 | 形态 | 对应到实际工作 |
|---|---|---|
| 高级语言 | return a + b; | 日常写Python、Java、C/C++ |
| 汇编语言 | mov eax, edi; add eax, esi; ret | 手写汇编、阅读反汇编结果 |
| 目标文件 | 编译后带符号和重定位信息的字节序列 | 编译器的产物 |
| 可执行文件 | OS能直接加载运行的文件 | 链接后的ELF、PE等 |
现在大家常说的“AI写代码”,默认指的是第一层:模型生成一段高级语言文本,然后交给编译器去处理。而标题里那句“AI直接生成二进制”,在业内人士听来,通常指的是直接产出第三层或第四层的东西——不是给编译器当输入,而是把编译器的工作也一并接管。
这里头的差距,不是换一种输出格式那么简单,而是从“生成文本”变成“生成指令编码”,每一层之间的鸿沟都藏着大量隐式知识。
1.2 “AI写代码”本质是写文本,二进制却要求字节级精确
为什么AI生成高级语言代码看起来已经挺像样,但生成二进制却没有类似的路径?因为高级语言容错率太高了。
模型写一段Python,哪怕逻辑跑不通,人类看一眼能改;写一个C函数,哪怕变量名错乱,编译器的报错也能帮忙兜底。可二进制没有“大概正确”这个概念。一条指令错一个字节,程序可能直接崩溃,更可怕的是可能落入一个完全意想不到的执行路径,产生不可预测的后果。
更重要的是,二进制背后是硬件指令集的编码规则、调用约定、内存布局、ABI、文件格式。拿x86来说,一条简单的mov eax, 42编译出来也就是几个固定字节,但要让模型精确预测这几个字节,它必须理解这条指令的操作码、立即数的编码方式,甚至还要理解这条指令在这个函数上下文中合不合理。
这相当于要求一个模型从“会说人话”进化到“能精确控制每一个音素的发声位置和时长”,难度完全不在一个量级。
1.3 其实“AI+二进制”的研究早就起步了,只是方向相反
如果因此觉得这是一个凭空冒出来的方向,那也错怪它了。过去几年,安全分析和逆向工程领域已经有大量工作在做AI与二进制的结合:
- 用深度学习模型识别函数边界,把一堆指令流切成有意义的函数;
- 用模型恢复被strip掉的符号名,辅助逆向人员阅读;
- 用神经网络的向量表示做二进制代码相似性检测,判断两段二进制是不是来自同一份源码;
- 用大模型辅助反编译,把汇编翻译回伪代码。
这些方向本质上都是“读懂二进制”。而“AI直接生成二进制”,更像是这些研究的镜像版:以前是让人和机器理解二进制,现在是让AI直接制造二进制。理解了这层关系,就能明白这不是空中楼阁,而是同一个技术栈换了个方向输出。
2. 为什么偏偏是“今年年底”这个时间点,而不是十年后
要说这个判断纯属营销口号,也不客观。至少从技术演进脉络来看,有四个变量确实在最近一两年集中发生了质变,它们共同构成了一种“现在不做,更待何时”的氛围。
2.1 数据终于多得够了:二进制文本第一次成为可规模化的语料
大模型时代有一个朴素规律:什么语料多,模型就在什么任务上变强。以前的困难在于,二进制/汇编语料分散在固件、嵌入式程序、编译产物里,难以统一采集和清洗。
但这两年情况变了。开源固件、历史软件包、交叉编译产物大量涌现,配合成熟的自动化反汇编/反编译工具链,可以批量把二进制还原成带语义标签的汇编文本。也就是说,行业第一次有能力构造“源码—汇编—二进制—行为描述”这样的三元组数据集。对模型来说,这是最理想的燃料。
2.2 上下文窗口够大了:一个函数编译后的指令序列塞得进模型
早几年的模型只有几千token的上下文,处理一个中等函数的汇编指令序列都费劲。而现在主流模型动辄几万甚至几十万上下文,这意味着编译后几千到上万token的汇编文本可以整体放进模型视野。
别小看这一点。寄存器分配、指令调度这类问题,恰恰需要跨越很长的符号距离去追踪值流。上下文不够大,模型只能“看到眼前这几条指令”,根本建立不了全局理解。上下文变大之后,模型至少有了从整段指令序列中学习模式的物理基础。
2.3 验证信号变强了:执行反馈给了AI一台“绝对裁判”
这是我认为最关键的一环。过去训练模型对齐人类偏好,用的是RLHF这类基于人类反馈的方法,成本高、噪声大。但二进制这个东西有一个最独特的优势:它对就是对,错就是错,而且可以自动化验证。
AI生成一段指令序列之后,放进模拟器执行,给定输入,比对退出的寄存器状态、内存快照、返回值。结果和预期不一致,就是明确的负反馈;一致,就是正反馈。这个反馈信号比文本生成的BLEU分数可靠得多,而且可以无限自动生成测试样例。
事实上,过去一两年“代码执行反馈”已经成为代码模型训练的主流范式:让模型生成代码,跑测试用例,用测试结果做强化学习。这套方法迁移到二进制生成,本质上只是把执行环境从解释器换成指令集模拟器,训练闭环是现成的。
2.4 商业动机也逼到这个点上了
当然,技术变量只是一方面。“为什么是今年年底”这个问题,还得从商业角度补一刀。
现在各类专用芯片、异构计算平台层出不穷,传统编译器的适配速度经常跟不上新硬件迭代。如果有一家AI公司能拿出手的东西是“你给我一段需求,我直接给你这个芯片能跑的二进制”,这等于绕开了所有工具链生态位,直接从最底层收割价值。
再叠加行业竞争压力,对外喊一个激进的年底时间表,对内其实是给团队立军令状;对外则是给资本市场和开发者社区释放想象力。这个动作本身就是一种技术叙事。
但我还是想泼一盆冷水:年底兑现到“特定小程序的二进制demo”,可能性存在;兑现到“普通业务程序直接生成高质量二进制”,概率很低。方向性宣言不等于路线图承诺,这两件事要分开看。
3. 要让AI直接产出机器码,至少还有四道绕不开的坎
前面说了一堆利好条件,现在聊聊实打实的困难。如果这个方向真要在年内交出答卷,至少四个问题绕不开。
3.1 从“生成指令”到“生成可执行文件”:中间隔着一整个链接过程
很多人以为难点在指令本身,实际上更大的坑在指令之外。
假设AI已经能生成一段完全正确的指令序列,它仍然要面对可执行文件的格式要求:文件头、程序头表、节区头表、符号表、重定位表、动态链接信息、入口地址。这些结构任何一个字段错位,文件连加载都加载不起来。
换句话说,AI不只是要做一个指令编码器,还要当一个精通文件格式和ABI的链接器。哪怕目标只是“输出一个能运行的ELF文件”,程序体只有几条指令,文件结构本身也足够复杂。这很考验模型的长期依赖能力——它要在几千字节的序列里维护各种隐式对齐关系,本质上相当于一边写代码一边手动维护一本书的目录和索引。
3.2 正确性验证:怎么告诉AI“它错了”
生成难,验证更难。
一个二进制程序怎么算对?跑几个测试用例能通过,算不算对?边界条件呢?内存访问越界呢?性能是否达标呢?更麻烦的是,有些行为错误只有在特定输入下才暴露,而测试集的构造本身就是一个难题。
目前可行的技术路径大概有三条:
- 用模拟器跑有限的测试集,过滤掉那些明显错误的输出;
- 对更关键的程序,引入符号执行或定理证明,做行为等价性检查;
- 把这些验证结果作为强化学习的奖励信号,让模型逐步学会规避错误模式。
但问题在于,这三条路各自的成本都不低。第一条路覆盖不全;第二条路计算开销大,且对任意程序不可判定;第三条路需要大量的训练筹码和算力。更麻烦的是,反馈信号非常稀疏——模型生成一大段指令,可能只有最后执行时才知道对错,这个中间过程的梯度几乎为零。这也是我最不看好“年底”这个时间点的原因:验证闭环还没形成一个普适的工程标准。
3.3 优化质量:AI不能只会“能跑”,还得“跑得快”
如果AI生成的二进制只是“能跑”,那它几乎没有存在价值。传统编译器经过几十年的积累,已经内置了成百上千条优化pass,从常量传播到循环向量化,覆盖面非常广。AI生成的二进制如果连这个基准都达不到,那它就是玩具。
要超越编译器,AI面临的是搜索空间爆炸的问题。指令调度、寄存器分配、分支布局,每一个环节的排列组合都是天文数字。理论上可以用蒙特卡洛搜索或强化学习去探索编译器没覆盖到的优化机会,但这类搜索的收敛速度很慢,而且容易陷入局部最优。
我比较看好的折中路线是:AI不直接生成最终二进制,而是生成“编译策略”——比如决定哪些代码块该内联,哪些循环该展开,用什么向量指令——再由传统编译器后端落地成机器码。这样AI发挥它擅长模式识别的长处,编译器继续承担需要严格保证正确性的工作。但这已经不是“AI直接生成二进制”,而是“AI辅助编译器调优”。
3.4 指令集碎片化:总不能在每一颗芯片上都重新训练
这是一个经常被外行忽略的问题。x86、ARM、RISC-V,再到各家私有NPU、GPU,指令集差异非常大。同一个AI模型不太可能对所有后端都达到专家级水准。
如果针对单个指令集训练,那么每接入一个新芯片,就需要重新采集数据、重新微调、重新验证,成本极高。如果要做一个通用模型,它需要先理解“算法意图”,再适配“目标指令集”,这实际上又回到了编译器的分层结构:前端解析意图,中间表达统一,后端生成目标指令。
也就是说,真实世界里更可能出现的是一个“AI驱动的编译流水线”,而不是一个黑盒模型输入需求、直接吐二进制的魔法。这也意味着,传统编译器基础设施不但不会被替代,反而会成为AI落地的重要骨架。
4. 真做出来后,哪些场景会先被改写
如果一个团队真的能在未来一段时间内让AI稳定生成指令级产物,那么第一波冲击不会落在通用编程上,大概率会从这几个角落杀出来。
4.1 嵌入式与固件开发:最先长出实用价值的地方
嵌入式开发有一个特点:代码规模相对小,硬件约束明确,编译工具链却非常碎片化。不同MCU需要不同的交叉编译器,环境配置半天到一天是常态;不同版本的工具链还会产生不同的二进制行为,调试起来让人头疼。
如果AI能针对某个具体芯片直接生成固件镜像,等于把交叉编译环境整个省掉了。开发者在网页上描述需求,模型吐出一个可以烧录的文件,这在硬件原型验证场景里价值巨大。而且固件通常不需要动态链接,结构相对简单,正好是现有模型能力容易够到的范围。
4.2 编译器后端的自动调优:AI先抢“优化工程师”的活儿
通用开发者不会天天需要手动写二进制,但优化编译器的人需要。传统编译器的优化选项多到爆炸,-O2和-O3之间差什么,同一个选项在不同芯片上效果如何,很多都依赖工程师的经验和反复实验。
AI可以学习历史编译数据,判断当前这段代码在目标芯片上适合什么优化组合,然后交给后端生成指令。这个方向上,AI不用跟整个工具链对抗,它只需要替换其中“靠人拍脑袋”的那一部分,落地阻力小得多,也更容易在生产环境中验证效果。
4.3 安全分析领域:自动化会先于普通应用出现
安全研究人员是全世界最需要“读二进制”的群体。日常工作中,他们面对的是没有符号表、没有调试信息的程序,靠经验在指令海里辨别函数边界、恢复调用约定、寻找异常行为。
AI一旦具备较强的指令序列理解能力,这些扫描性的工作会迅速自动化:自动识别函数起始点、自动标记危险指令模式、自动生成补丁字节。这类工具不需要等到“完美”,只要比人工快一个数量级,市场就会买单。
但硬币的另一面也必须说清楚:二进制生成能力的提升,同样会降低构造攻击载荷的门槛。防御侧必须同步升级自动化检测和沙箱执行能力,否则这个技术会先成为一个安全难题,然后才是一个效率工具。
4.4 跨架构迁移与兼容层:没有源码也能干活
大量老软件根本没有源码,想在新架构上运行,只能靠二进制翻译和指令级模拟。这类工作极度依赖对指令语义的准确理解,越是复杂指令集,翻译出来的代码越臃肿。
AI如果能理解二进制语义,就有机会生成更简洁、更高效的翻译结果,把原本臃肿的翻译层降下来。这是很大的存量市场,金融、工业、政务里跑着的旧系统不在少数,它们不可能推倒重写,跨架构兼容是刚需。
不过,所有场景在初期都会以“AI出结果、人来确认”的半自动形态出现。指望一键全自动,然后全员躺平,不太现实。
5. 与其赌时间表,不如先把自己手里的工具磨快
方向到底对不对,时间表准不准,这些我没法给确定答案。但有一点我很确定:不管AI生成二进制这个目标哪一年实现,底层技能的价值都在增长。这半年与其盯着新闻猜进度,不如做几件具体的事。
5.1 重新走一遍“源码到机器码”的全流程
别嫌基础,这一步比任何概念都管用。拿一个很小的C函数,比如两个整数相加,分别用不同编译参数生成目标文件,再用反汇编工具拆开看指令序列。重点观察三件事:
- 每条指令的字节编码是长什么样的;
- 局部变量和寄存器之间是怎么映射的;
- 链接前后,文件里的符号和地址发生了什么变化。
这个过程走完,“AI生成二进制”这个口号里所有的难点,你都能在具体对象上感知到。没有这份体感,后面看再多分析都是飘的。
5.2 让AI写一段汇编,然后你亲手验证它
现在随便一个本地模型都能写汇编。你让它写一个“比较两个整数,返回较大值”的函数,然后把这段汇编拿去汇编、链接,再放到模拟器里跑几组测试。
大概率你会看到模型在调用约定上犯错,比如使用了一个调用者保存的寄存器却忘记保存。这种错误模式,恰恰就是以后强化学习要重点解决的东西。你亲手踩一次,比读十篇论文都记得牢。
5.3 搭一个“执行反馈验证器”
这部分算是进阶练习。写一个自动化脚本,接收一段指令字节流,放进指令级模拟器执行,自动比对退出码、返回值和内存快照,输出一个“是否等价”的判断。
这个东西就是AI二进制生成的实验核心设施。有了它,后续无论是测试模型生成的代码,还是研究强化学习算法,你都有一把自己的尺子。不用多复杂,能跑通最小闭环就行。
5.4 学会用“中间表示+专用后端”的思维看技术路线
可以留个心眼:不要把所有期望押在“AI一步到位生成可执行文件”这个黑盒模式上。工程上更可能走通的,是AI负责需求理解和策略决策,传统编译器负责需要严格正确性的翻译工作。
这就好比汽车行业的“人机共驾”:AI是那个熟悉路况的辅助驾驶系统,方向盘和刹车仍然在可靠底盘上。理解这种分工方式,比猜测具体发布日期更有价值。
5.5 开始积累你自己的二进制语料
如果你手上有嵌入式项目或做过固件分析,从现在开始有意识地保存“源码—汇编—二进制”三件套;如果你是做研究的,可以构建一个小型指令级数据集。
这些数据现在看着零碎,但以后无论是做微调、做评估,还是做检索增强,都是稀缺资源。数据这个东西,早到手一天,就早一天有复利。
我个人不太相信“今年年底”这个时间点能兑现成正式产品,但我从不怀疑“AI理解指令序列”这个方向会持续加速。前几天有个朋友问我,现在还要不要花时间学汇编,我的回答是:以前不学是觉得用不上,现在学是为了能看懂AI在底层到底在干什么。
二进制是计算机最底层的共同语言,不管它将来是人写的还是AI写的,能读懂它的人,永远比只看上层封装的人多一层筹码。大家不妨把这半年当作一次底层补习,等风向真的变了,手里有工具的人和只会看热闹的人,感受会很不一样。