【免费下载链接】sashiko
Agentic review of Linux Kernel code changes
Sashiko 是一个由 Linux 基金会支持的AI 代码审查系统,专为 Linux 内核补丁而生:它用多阶段 LLM 审查流水线自动揪出补丁里的逻辑错误、内存泄漏与安全问题,连 Linus Torvalds 与 Andrew Morton 都公开称赞它的检出能力。本文带你全面了解 Sashiko 的诞生背景、核心工作原理与实际价值。
Sashiko 是什么:名字背后的故事
Sashiko(日语"刺し子",意为"小刺")原本是一种日本传统缝纫技法——用密集的白色缝线在靛蓝棉布上绣出几何图案。它最初的用途,是加固衣物易磨损的部位、修补磨损与破洞。
这个比喻恰好就是项目的使命:用自动化、智能化的补丁审查来"加固" Linux 内核,在缺陷扩散到主线之前,先把它"缝补"掉。而部署页面上的吉祥物,正是一只戴着放大镜、手拿针线缝补丁的企鹅——一针一线,缝的就是内核补丁 🧵
诞生背景:内核补丁审查的现实困境
每个内核发布周期,都会有大量补丁涌向邮件列表。人工审查再仔细,也总有顾不上的角落:
- 审查者精力有限,细节疏漏在所难免
- 很多缺陷要等数月后靠
Fixes:补丁才被发现 - 子系统维护者要同时盯守多个邮件列表,压力不小
Sashiko 正是为了补上这个缺口而生:让 AI 先把补丁读一遍,人类再做最终裁决。这个思路与内核社区"第一条规则就是别引入 bug"的信念完全一致。
为什么 Linus 和 Andrew Morton 都侧目
Linus Torvalds:公开盛赞"AI 100% 正确"
Linus 在邮件列表上这样评价 Sashiko 的报告:
"But I think that lately quite a noticeable percentage of reports have become very much valid... we've seen some truly stellar reports too. Things that are deep and subtle, and the AI is 100% correct."
他还点出了 Sashiko 的本质价值:它是一个"能提升你对补丁信任度"的工具——AI giveth, and AI taketh away,但关键在"信任"二字。
Andrew Morton:"命中率 50% 就足以证明价值"
"Rule #1 is, surely, 'don't add bugs'. This thing finds bugs. If its hit rate is 50% then that's plenty high enough to justify people spending time to go through and check its output."
BPF 维护者 Alexei Starovoitov 更有过被 Sashiko "说服"的经历:他读完 AI 的推理日志后,承认自己判断错了,直接采纳了修复方案。
数据说话:53.6% 的历史缺陷检出率
官方基准测试面向最近 1,000 个带Fixes:标签的上游提交(即"确曾溜进主线、后来被修复"的历史缺陷),结果如下:
| 指标 | 数值 | 说明 |
|---|---|---|
| 缺陷检出率 | 53.6% | 人类审查漏掉、最终合入主线的缺陷中,Sashiko 能找出的比例 |
| 误报率 | < 20% | 人工抽样统计,多为"灰色地带"式疑问 |
测试使用 Gemini 3.1 Pro 作为模型。基准测试方法详见 docs/benchmarking.md,维护者原话收录在 PRESS.md。
多阶段审查流水线:Sashiko 如何审查一个补丁
Sashiko 不是"问一次 LLM 就完事",而是一套多阶段验证协议(multi-stage verification protocol),并搭配内核子系统专属提示词库(见 third_party/prompts/kernel/subsystem/)。
并行分析:7 个维度同时开火
| 阶段 | 关注点 |
|---|---|
| goal | 架构缺陷、UAPI 破坏、概念正确性 |
| implementation | 代码与提交说明是否一致、未声明的副作用 |
| execution-flow | 逻辑错误、缺失的返回值检查、off-by-one |
| resources | 内存泄漏、use-after-free、双重释放 |
| locking | 并发、死锁、RCU 规则违反 |
| security | 缓冲区溢出、越界读写、TOCTOU 竞态 |
| hardware | 寄存器访问、DMA 映射、内存屏障 |
其中 goal、implementation、execution-flow 必定运行,其余由规划阶段按需选择。
顺序整合:三关过滤,只留"铁证"
- verification— 汇总各阶段发现与驳回理由,筛掉噪音
- post-verification— 对仍有争议的可疑点,派出最多 10 个并行验证任务,用 git blame、git log、grep 等工具逐一证实或证伪
- report— 仅将确认的缺陷整理成标准 LKML 风格的审查报告
工具箱源码位于 src/toolbox/,完整系统设计见 designs/DESIGN.md。
两种使用方式:本地审查与守护进程
本地审查:开发者三步上手
无需部署服务器,直接在你的内核代码检出目录里运行:
cargo install sashiko # 安装(需 Rust 1.90+、Git) sashiko init # 生成配置文件 export LLM_API_KEY="your-key" # 设置 LLM API Key sashiko review # 审查最新提交本地审查使用临时沙箱克隆,不会触碰你的工作区。默认模型是 Gemini,也可切换到 Claude、OpenAI 兼容接口、Bedrock、Vertex AI 等,详见 docs/llm-providers.md。
守护进程模式:维护者的"自动哨兵"
以守护进程部署后,Sashiko 会自动从内核邮件列表与 git forge 摄取补丁、完成审查、并以标准 LKML 邮件回发结果,同时提供 Web UI 查看每个补丁集的审查状态。维护者可以逐列表配置跟踪范围、收件人、embargo 等策略:
- 维护者配置指南:MAINTAINERS_GUIDE.md
- 守护进程与 Web UI 文档:docs/daemon.md
- 邮件列表跟踪配置示例:projects/linux/mailing_lists.toml
核心价值:不同角色各得其所
| 角色 | 价值 |
|---|---|
| 内核开发者 | 补丁提交前让 AI 先挑毛病,减少被打回的概率 |
| 子系统维护者 | 自动盯守邮件列表,可疑缺陷第一时间浮现 |
| 内核社区 | 多一双"永不疲倦的眼睛",降低缺陷进入主线的概率 |
| 开源生态 | 项目正探索将 Sashiko 推广到 Linux 内核之外的其他开源项目 |
⚠️ 注意:Sashiko 会把补丁数据与相关上下文发送到你配置的 LLM 服务商,请确认自己有权与所选服务商共享代码,并留意多阶段审查带来的 token 消耗。
延伸阅读
- README.md — 项目总览与快速开始
- docs/configuration.md — 完整配置参考
- docs/sashiko-cli.md — 命令行工具手册
- benchmarks/ — 基准测试数据集
- CONTRIBUTING.md — 参与贡献指南
【免费下载链接】sashiko
Agentic review of Linux Kernel code changes
相关推荐
gh_mirrors/eng/eng-practices核心价值:如何通过代码审查降低系统复杂度
gh_mirrors/eng/eng practices核心价值:如何通过代码审查降低系统复杂度 在软件开发过程中,系统复杂度往往随着项目迭代而不断累积,最终导
文档教程代码评审GAPS快速入门指南:5分钟学会使用遗传算法求解拼图
GAPS快速入门指南:5分钟学会使用遗传算法求解拼图 GAPS(GitHub 加速计划)是一款基于遗传算法的拼图求解工具,能够自动解决复杂的拼图问题。本指南将帮
Renderdoc 网格导出 FBX:RenderdocResourceExporter 单网格 30 秒搞定
Renderdoc 网格导出 FBX:RenderdocResourceExporter 单网格 30 秒搞定 你在 Renderdoc 里抓到了想要的模型,导
开发工具图形学
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考