Brooks-Lint 实战:用 12 本经典软件工程书做 AI 代码审查
AI 代码审查工具不少,但大多数只检查语法错误和代码风格。如果你的代码写得「优雅但脆弱」——模块职责混乱、领域模型失真、变更传播链过长——传统 linter 和 AI 审查都帮不上忙。
Brooks-Lint 解决的就是这个问题。它是一个开源的 AI 代码审查技能(Skill),基于 12 本经典软件工程书籍(《人月神话》《代码大全》《重构》等)提炼出 6 大代码腐烂风险维度,给每次审查附上具体的书籍来源、严重性标签和修复建议。
12 本书,6 个腐烂风险
Brooks-Lint 的名字致敬了 Frederick Brooks 的《人月神话》。它的核心框架来自 12 本跨越 50 年的经典著作:
| 书籍 | 作者 | 覆盖维度 |
|---|---|---|
| 《人月神话》 | Brooks | 变更传播、依赖混乱 |
| 《代码大全》 | McConnell | 认知过载、意外复杂度 |
| 《重构》 | Fowler | 所有维度 |
| 《整洁架构》 | Martin | 变更传播、依赖混乱 |
| 《程序员修炼之道》 | Hunt & Thomas | 变更传播、知识重复 |
| 《领域驱动设计》 | Evans | 认知过载、领域模型失真 |
| 《软件设计哲学》 | Ousterhout | 认知过载、意外复杂度 |
| 《Google 的软件工程》 | Winters 等 | 变更传播、依赖混乱 |
针对生产代码和测试套件,Brooks-Lint 分别定义了 6 个腐烂风险。生产代码端包括:认知过载(理解这段代码需要多少脑力)、变更传播(改一处牵连多少个无关模块)、知识重复(同一个决策在多少地方复制粘贴)、意外复杂度(代码比问题本身复杂多少)、依赖混乱(依赖方向是否一致)、领域模型失真(代码是否忠实地表达了业务领域)。
安装:一行命令
Brooks-Lint 以 Agent Skill 形式分发,支持 11 个平台。最简洁的安装方式是一行命令:
curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts/install.sh | bash -s -- claude
把 claude 换成 codex、cursor、opencode、gemini 等即可安装到对应平台。安装后,在会话中直接输入 /brooks-review 或 $brooks-review 即可调起审查。
6 种审查模式
Brooks-Lint 提供 6 种命令,覆盖从日常 PR 到全量清扫的完整工作流:
1. /brooks-review — PR 审查
贴入一段 diff 或指向变更文件,Brooks-Lint 会逐项检查 6 个腐烂风险,每个发现按 症状→出处→后果→修复 四段式输出。最终给出一个 Health Score(0-100),让你一眼知道本次变更的健康度。
2. /brooks-audit — 架构审计
扫描整个项目的模块依赖关系,自动生成 Mermaid 依赖图,用颜色标注严重性:红色=严重问题,黄色=警告,绿色=健康。可以帮你发现循环依赖和模块边界违规——这些是传统 linter 完全看不到的。
3. /brooks-debt — 技术债务评估
按 6 个风险维度分类技术债务,按 Pain × Spread 优先级排序,生成分阶段的还款路线图(Critical / Scheduled / Monitored)。
4. /brooks-test — 测试质量审查
从 6 个测试空间腐烂风险(测试模糊性、脆弱性、重复、Mock 滥用、覆盖幻觉、架构不匹配)入手,基于《xUnit Test Patterns》《The Art of Unit Testing》《How Google Tests Software》和《Working Effectively with Legacy Code》四本测试专著。
5. /brooks-health — 健康仪表盘
在发布前、团队入职时或任何需要全局概览的时刻,跑一次全面的健康检查,输出加权综合评分。
6. /brooks-sweep — 全量清扫
一次扫描所有 12 个风险维度(6 生产 + 6 测试)+ 架构,然后自动修复:安全的修改立即应用,触碰到接口或跨文件的变更需要确认,复杂的架构决策标记为手动项。
Benchmark:不只是比 Claude 强一点
Brooks-Lint 在 PR 审查、架构审计、技术债务评估三个真实场景中与纯 Claude 做了对比:
| 评估项 | Brooks-Lint | 纯 Claude |
|---|---|---|
| 结构化发现(症状→出处→后果→修复) | 100% | 0% |
| 每项发现附带书籍引用 | 100% | 0% |
| 严重性标签 | 100% | 0% |
| Health Score(0-100) | 100% | 0% |
| 检测变更传播问题 | 100% | 100% |
| 综合通过率 | 94% | 16% |
差距不是 Claude 找不到这些问题——而是 Brooks-Lint 每次都稳定地找到,且附带可追溯的证据和可操作的修复建议。
配置与 CI/CD 集成
在项目根目录放一个 .brooks-lint.yaml 即可定制审查行为:
version: 1 disable: - T5 # 跳过覆盖度检查 severity: R1: suggestion # 将此维度降级为建议 ignore: - "**/*.generated.*" - "**/vendor/**"
Brooks-Lint 还提供了官方的 GitHub Action,每次 PR 自动跑审查并发布评论:
name: Brooks-Lint PR Review
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
brooks-lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: hyhmrright/brooks-lint/.github/actions/brooks-lint@main
with:
mode: review
anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
fail-below: 70
每次 PR 运行成本约 $0.05-0.15,支持自定义 Health Score 阈值——低于阈值自动阻断 CI。
真实输出什么样?
Brooks-Lint 对一段包含 SQL 注入、逻辑错误和职责混乱的 Python 代码给出了 28/100 的 Health Score,并给出了以下判断:
- 🔴 变更传播:
update_profile方法在一处修改中处理了 4 个不相关的业务逻辑——配置变更、邮件通知、积分重算、缓存清理——改一个就要担 4 个领域的回归风险。 - 🔴 领域模型失真:
user['email'] = email在比较前就覆盖了旧值,if user['email'] != email永远是 False——邮件变更通知静默失效。 - 🔴 SQL 注入:直接字符串拼接 SQL 查询。
每项发现都附带具体的书籍出处(《重构》的 Divergent Change 模式)和可操作的修复方案。
为什么现在更需要 Brooks-Lint
AI 编码助手让我们的代码产出速度大幅提升,但这不意味着代码质量的天然提升。认知过载和领域模型失真不会因为代码是 AI 写的就消失。你写得更快了,但也在更快地积累技术债务。
Brooks-Lint 的价值在于:它将六十年软件工程界积累的智慧,系统性地注入到了你的 AI 编码工作流中。不是取代 ESLint 或 Pylint——它们擅长语法和风格——而是捕捉它们看不到的问题:架构漂移、知识孤岛、领域模型失真。这些才是让团队数月后才发现走错方向的问题。
如果你正在用 AI 编码工具,Brooks-Lint 是为数不多能真正帮你「写得更快也写得更好」的辅助工具。
项目地址:github.com/hyhmrright/brooks-lint · 1099⭐ · MIT 协议 · 支持 Claude Code / Codex CLI / Cursor / OpenCode / Gemini CLI 等 11 个平台