Btrfs之父力推:Linux内核代码审查引入AI提示词
如果说科技圈有什么能让“老古董”代码库焕发新机,那非AI莫属。但别误会,我指的不是让AI去瞎写代码然后被Linus Torvalds痛骂,而是让AI来帮我们找茬。
就在昨天,Linux内核社区发生了一件挺有意思的事。Btrfs文件系统的创始人、Meta工程师Chris Mason,在Linux内核邮件列表(LKML)上发布了他最新的成果——一套专门用于Linux内核代码审查的AI提示词。
这事儿不仅听起来新鲜,而且看样子是动真格的。
这不是简单的“让ChatGPT看代码”
我们在日常开发中,可能习惯了把一段代码扔给ChatGPT,问它“这有啥bug”。但在Linux内核这种级别的工程里,这种做法简直就是儿戏。代码依赖关系复杂,上下文极深,直接扔进去往往只会得到一堆看似正确实则胡扯的废话。
Chris Mason搞的这个项目,名为 review-prompts,目前已经托管在GitHub上(账号为 masoncl)。
我也去扒了扒这个项目,发现它比我想象的要硬核。Chris并没有简单地写几个Prompt,而是写了一套Python脚本来配合这些提示词。
为什么要这么麻烦?
Chris在邮件列表中解释得很清楚。他最近提交的更新主要解决了一个核心痛点:Token消耗和上下文准确性。
在此之前,如果你想让AI审查一个较大的补丁(Patch),你可能得把整个Diff扔进去。结果就是:
- 2. 效果差:模型在处理过长文本时,很容易“迷失”,忽略掉细微的逻辑错误。
Chris的新方案是将审查过程拆解为一个个独立的“任务”。
他的Python脚本会自动分析Diff,提取出修改过的函数、类型定义和调用图(Call Graphs)。然后,脚本会把这些信息拆成小块,分批次喂给AI。
这样做的好处显而易见:
- • 省钱:不需要每次对话都来回传输整个巨大的Diff上下文。
- • 精准:每个任务有独立的上下文窗口,AI能更专注于当前这块代码的逻辑。
- • 深度:脚本甚至能帮AI预加载必要的函数定义,不用AI自己去猜“这个函数是干嘛的”。
具体能干啥?
根据Chris的描述,这套新的设置目前包含以下几个具体的审查任务:
- 1. 代码块审查:最基础的功能,看代码写得对不对。
- 2. 历史记录检查:检查过去的Lore线程(如果semcode可用),看看这块代码以前有没有被喷过。
- 3. Fixes标签检查:内核开发有个规矩,修Bug得带上
Fixes: 标签,AI现在能帮你检查这个引用的Commit对不对。 - 4. Syzkaller修复深度分析:Syzkaller是Google搞的内核模糊测试工具,AI能专门针对它报告的Bug修复进行深度审查。
- 5. 生成最终报告:把上面所有的发现汇总成一个人话能听懂的报告。
靠谱吗?
我知道大家肯定会问:“这玩意儿真的有用吗?”
Chris Mason表示,他在Meta内部已经用这套东西试运行了几周,“结果非常积极”。它不仅能抓到Bug,而且在处理速度上也有优势。
当然,Chris也承认这还在早期阶段。他在邮件里也很坦诚:“这东西可能还有Bug,但我确定我会继续优化这些Python脚本。”
怎么看这事儿?
我觉得这是一个非常健康的信号。
前两年,我们看到太多关于“AI污染开源代码库”的新闻。甚至有些开源项目(比如Gentoo)曾明确表示要限制AI生成的代码贡献。原因很简单:AI生成的代码往往也就是“看起来能跑”,实际上漏洞百出,维护者还得花大把时间去擦屁股。
但Chris Mason的做法完全不同。他不是让AI去写代码,而是让AI去读代码。
他在教AI如何像一个资深的内核维护者那样思考。他把人类专家的经验(比如怎么拆解Diff,怎么看调用图)固化成了脚本和Prompt,通过工具赋能,让AI成为一个不知疲倦的“初级审查员”。
如果这套流程能跑通,对于Linux内核这样庞大且日益复杂的项目来说,绝对是减负神器。毕竟,内核维护者也是人,也会累,也会眼花。
总结
目前这个项目 review-prompts 已经在GitHub上开源,支持Linux内核和systemd的代码审查。如果你对AI辅助编程感兴趣,或者你是做底层开发的,强烈建议去GitHub上搜一下 masoncl/review-prompts 看看。
哪怕不写内核,学习一下这位大佬是如何拆解代码上下文、如何设计Prompt结构的,对我们写业务代码的Code Review工具也大有裨益。
总之,工具无罪,关键看怎么用。Chris Mason这次算是给AI在硬核技术圈的应用打了个样。
信息来源:
- • https://lore.kernel.org/lkml/b187e0c1-1df8-4529-bfe4-0a1d65221adc@meta.com/
- • https://github.com/masoncl/review-prompts