近期,upstream 到 Linux 社区的 Patch 邮件列表中出现了一位新的 Reviewer------AI 审查工具 Sashiko。它已在多个内核子系统的邮件列表中活跃参与补丁审查,实际运行数据显示其能检出超过半数的已知缺陷。从内核社区最初对 AI Review 的质疑与抵制,到如今 Sashiko 正式上线并被多位 maintainer 接纳使用,这一转变本身就说明:AI 辅助审查的能力已经得到了上游社区的实质性认可,并正在切实加速内核补丁的合入流程。
本文来说下这个reviewer的身份,并探讨下本地部署的可行性。
1. Sashiko 是什么
Sashiko 是由 Meta 内核工程师 Roman Gushchin 等人主导开发、现已开源并交由 Linux 基金会维护的 Linux 内核专用 AI 补丁审查工具 ,基于 Rust 开发,轻量、可本地化部署。名称取自日语「刺し子」(literally "little stabs"),原为日本传统的装饰性加固缝补针法,寓意通过自动化智能审查来加固 Linux 内核质量。
不同于 Cursor、CodeLlama 等通用代码 AI,Sashiko 专为 Linux 内核 Patch 场景设计,内置多阶段审查协议和子系统专属检查规则,覆盖内核各子系统(DRM、网络、调度、MHI、驱动等),通过模拟多位专业审查者的视角来全面评估补丁。
1.1 核心能力
-
多阶段内核 Patch 审查:采用 11 阶段审查协议,依次从架构设计、实现正确性、执行流验证、资源管理(内存泄漏/UAF/双重释放)、锁与同步(死锁/RCU 违规)、安全审计(缓冲区溢出/TOCTOU 竞态)、硬件驱动审查(寄存器访问/DMA 映射/内存屏障)等角度逐层分析,最终去重合并并生成标准 LKML 格式报告。
-
双工作模式 :支持线上自动监控内核邮件列表(通过
lore.kernel.org)抓取补丁,也支持本地 Git 仓库直接分析自研补丁。 -
子系统专属提示词:内置 per-subsystem 和通用审查提示词(最初由 Chris Mason 开发),可针对不同内核子系统进行精准审查。
-
多 LLM 提供商支持:默认使用 Google Gemini,同时支持 Claude、GitHub Copilot CLI、AWS Bedrock、Vertex AI、Kiro CLI、Devin CLI 以及 OpenAI 兼容端点,也可搭配本地 Ollama/vLLM 实现离线审查。
-
自包含设计 :不依赖任何第三方代理工具,提供 Web 界面和 CLI(
sashiko-cli)两种交互方式。
1.2 审查质量
根据官方基准测试,Sashiko(使用 Gemini 3.1 Pro)能够发现 53.6% 的已知 Bug(基于最近 1000 个带 Fixed: 标签的上游提交)。考虑到这些 Bug 100% 通过了人类代码审查才被合入主线,该检出率具有实用价值。误报率经有限人工验证在 20% 以内。
适用场景
Linux 内核各子系统补丁审查、驱动开发自查、内核补丁提交前预校验、规避上游社区 review 中的低级问题、团队内部内核代码质量把关。
2. 本地完整部署指南
2.1 环境依赖
部署前需安装基础依赖(Linux 环境):
- Git
- Rust 最新稳定版(1.90+)
- build-essential(编译所需)
一键安装依赖:
bash
sudo apt update
sudo apt install git build-essential
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"
注:SQLite 作为 Rust crate 依赖会在编译时自动处理,无需单独安装系统级 sqlite3。
2.2 拉取源码
bash
git clone --recursive https://github.com/sashiko-dev/sashiko.git
cd sashiko
--recursive 标志用于初始化内置的 Linux 内核源码子模块,该子模块为审查提供必要的代码上下文。若缺失,审查时将无法获取完整的内核源码背景信息。
2.3 配置
拷贝默认配置模板:
bash
cp docs/examples/Settings.example.toml Settings.toml
设置 LLM API Key 环境变量:
bash
export LLM_API_KEY="your-api-key-here"
Settings.toml 核心配置项说明:
- LLM 提供商 :默认 Gemini。如需切换为 Claude、OpenAI 兼容端点或其他提供商,参考
docs/llm-providers.md配置指南。 - Git 仓库路径:配置本地 Linux 内核源码路径,用于提供审查上下文。
- 服务端口:守护进程启动后提供 Web UI 和 API 服务。
- 数据库:默认使用本地 SQLite 存储审查记录。
完整配置参考见 docs/configuration.md。
2.4 编译构建
bash
cargo build --release
编译完成后,主程序输出在 target/release/sashiko,CLI 工具为 target/release/sashiko-cli。
也可通过 crates.io 直接安装:
bash
cargo install sashiko
2.5 启动与使用
启动守护进程:
bash
./target/release/sashiko
启动后守护进程自动监控邮件列表、管理数据库、协调 AI 审查流程,并提供 Web UI(启动时会打印访问 URL)。
CLI 使用:
bash
# 提交补丁到运行中的守护进程审查
sashiko-cli submit HEAD~3..HEAD
# 本地独立审查(无需守护进程)
sashiko-cli local --force-local
# 查看最新审查结果
sashiko-cli show latest
3. LLM 接入方案
方案一:云端大模型(推荐、速度快)
直接使用默认 Gemini,或配置 Claude、OpenAI 兼容端点(DeepSeek、通义千问等国内模型均支持 OpenAI 兼容协议)。延迟低、效果好。
配置示例(OpenAI 兼容端点):参考 docs/llm-providers.md 中 OpenAI-compatible 部分。
方案二:纯离线本地大模型(涉密/断网场景)
本地使用 Ollama / vLLM 部署 Qwen-Coder / DeepSeek-Coder 等模型,将 Sashiko 的 LLM 端点指向本地地址(如 http://127.0.0.1:8000),实现全程无外网通信。
重要提示:仅在使用本地模型时数据才完全不离开本机。使用任何云端 LLM 提供商时,Sashiko 会将补丁数据及相关内核 Git 历史发送至该提供商。请确保你有权限且愿意将相关代码分享给第三方 LLM 服务。
4. 部署优势与注意事项
优势
- 开源免费,Apache 2.0 许可,Linux 基金会维护
- 基于 Rust,性能优异,自包含无外部依赖
- 11 阶段深度审查,覆盖架构、逻辑、资源、并发、安全、硬件等维度
- 灵活的 LLM 接入,支持多家云端和本地模型
- Web UI + CLI 双界面,适配不同工作流
- 可自定义子系统审查提示词,适配项目规范
注意事项
- 数据隐私:使用云端模型时代码会上传至 LLM 服务商,涉密项目务必使用本地模型方案
- API 成本:审查大量补丁会产生可观的 Token 消耗,需自行监控用量和费用
- 概率性输出:与所有 LLM 工具一样,Sashiko 的输出具有概率性,相同输入可能产生不同结果
- 非替代人工审查:Sashiko 是辅助工具,不能替代人类 maintainer 的最终判断
5. 相关资源
- 官方仓库:https://github.com/sashiko-dev/sashiko
- 官方网站:https://sashiko.dev
- 邮件列表:
sashiko@lists.linux.dev(归档于 lore.kernel.org) - 配置参考:
docs/configuration.md - LLM 提供商指南:
docs/llm-providers.md - CLI 参考:
docs/sashiko-cli.md - 基准测试:
docs/benchmarking.md