Brooks-Lint 完全指南:让 AI 代码审查扎根于经典工程智慧
AI 编码工具每天都在帮你写更多代码,但有一个问题越来越突出——数量上去了,质量呢?
Cursor、Claude Code、Codex CLI 这些工具生成代码的速度惊人,但它们不会自动让你的代码架构更清晰、耦合更低、领域模型更准确。传统的 linter(ESLint、Pylint)只能检查语法和风格问题,对架构漂移、知识孤岛、领域模型失真这类深层次问题毫无办法。
Brooks-Lint 正是为解决这个问题而生——它是一个 AI 代码审查技能(Skill),扎根于 12 本经典软件工程著作,为 AI 编码工具提供结构化、可追溯、可执行的代码审查。
Brooks-Lint 是什么?
Brooks-Lint 不是一个独立的 CLI 工具,也不是一个 SaaS 平台——它是一个 Agent Skill,安装到 Claude Code、Codex CLI、Gemini CLI、Cursor 等 AI 编码工具后,通过斜杠命令(/brooks-review、$brooks-review)直接调用。
它的核心能力:将代码质量分解为 6 个生产代码衰减风险和 6 个测试套件衰减风险,每个风险维度都对应经典著作中的具体章节,审查结果以「症状 → 出处 → 后果 → 修复方案」的结构化格式呈现。
十二本经典著作
Brooks-Lint 的知识根基来自以下 12 本书:
| 著作 | 作者 | 贡献维度 |
|---|---|---|
| 《人月神话》 | Frederick Brooks | 变更传播、依赖混乱、复杂度 |
| 《代码大全》 | Steve McConnell | 认知过载、复杂度 |
| 《重构》 | Martin Fowler | 全部 6 个风险维度 |
| 《整洁架构》 | Robert C. Martin | 变更传播、依赖混乱 |
| 《程序员修炼之道》 | Hunt & Thomas | 变更传播、知识重复、复杂度 |
| 《领域驱动设计》 | Eric Evans | 认知过载、知识重复、领域失真 |
| 《软件设计的哲学》 | John Ousterhout | 认知过载、复杂度 |
| 《Google 的软件工程》 | Winters 等 | 变更传播、依赖混乱 |
| 《单元测试的艺术》 | Roy Osherove | 测试 4 个维度 |
| 《Google 如何测试软件》 | 三位作者 | 测试覆盖率 |
| 《高效使用遗留代码》 | Michael Feathers | 测试重构 |
| 《xUnit 测试模式》 | Gerard Meszaros | 全部 6 个测试维度 |
六大衰减风险体系
Brooks-Lint 评估代码的六个维度:
| 风险 | 诊断问题 | 来源 |
|---|---|---|
| 🧠 认知过载 | 理解这段代码需要多少脑力? | 代码大全、重构、DDD |
| 🔗 变更传播 | 一次修改会牵动多少无关模块? | 重构、整洁架构、程序员修炼之道 |
| 📋 知识重复 | 同一个决策在多少地方重复表达? | 程序员修炼之道、重构、DDD |
| 🌀 意外复杂度 | 代码比问题本身更复杂了吗? | 重构、代码大全、人月神话 |
| 🏗️ 依赖混乱 | 依赖方向是否一致? | 整洁架构、人月神话、Google 工程 |
| 🗺️ 领域模型失真 | 代码是否忠实反映领域? | DDD、重构 |
测试套件同样有六个维度:测试模糊性、测试脆弱性、测试重复、Mock 滥用、覆盖率幻觉、架构不匹配。
安装
Brooks-Lint 支持几乎所有主流 AI 编码工具。以 Claude Code 为例:
/plugin marketplace add hyhmrright/brooks-lint /plugin install brooks-lint@brooks-lint-marketplace
对 Codex CLI:
curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts/install.sh | bash -s -- codex
对其他平台(OpenCode、Cursor、Windsurf、Gemini CLI、Copilot、Kiro 等),同样的安装脚本:
curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts/install.sh | bash -s -- cursor
安装后,斜杠命令会自动注册,无需额外配置。
六大命令详解
1. PR 审查(/brooks-review)
粘贴一段 diff 或让 AI 分析变更文件,输出结构化的审查报告。每个发现都包含症状描述、著作出处、后果评估和修复建议。
例如,面对这样的代码:
def update_profile(self, user_id, name, email, avatar_url):
user = self.db.query(f"SELECT * FROM users WHERE id = {user_id}")
user['email'] = email
...
if user['email'] != email: # 永远为 False——静默 bug
self.smtp.send(...)
Brooks-Lint 会输出:
Health Score: 28/100 🔴 变更传播 —— 一个方法因四个无关业务原因同时变化 症状: update_profile 同时处理字段更新、邮件通知、积分重算、缓存失效 出处: Fowler《重构》— 发散式变化 后果: 积分规则修改可能破坏邮件通知,每次编辑都带来跨领域回归风险 修复: 拆分为 NotificationService、LoyaltyService
2. 架构审计(/brooks-audit)
扫描项目结构,生成 Mermaid 依赖图,检测循环依赖和 Conway 定律偏离。模块按严重程度着色:红=关键、黄=警告、绿=健康。
3. 技术债务评估(/brooks-debt)
按 Pain × Spread 优先级对债务排序,生成「Critical / Scheduled / Monitored」三级修复路线图。
4. 测试质量审查(/brooks-test)
审查测试套件的六个测试空间衰减风险,基于 xUnit 测试模式等四本测试专著的框架。
5. 健康仪表盘(/brooks-health)
快速扫描所有四个质量维度,输出加权综合 Health Score(0-100)。适合发布前检查或团队接手旧项目时的大盘评估。
6. 全量扫描(/brooks-sweep)
一次执行覆盖所有生产代码和测试维度的扫描,并自动应用安全修复——对单文件安全变更直接应用,多文件或接口变更需确认,复杂架构决策标记为手动处理。
CI/CD 集成
Brooks-Lint 提供 GitHub Action,每次 PR 自动执行审查并发表评论:
name: Brooks-Lint PR Review
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
brooks-lint:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: hyhmrright/brooks-lint/.github/actions/brooks-lint@main
with:
mode: review
anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
fail-below: 70
每次运行花费约 $0.05-0.15,建议仅对 pull_request 事件开启。
横向对比
| Brooks-Lint | ESLint/Pylint | Copilot Review | 原生 Claude | |
|---|---|---|---|---|
| 语法风格检测 | — | ✅ | ✅ | ~ |
| 结构化诊断链(症状→出处→后果→修复) | ✅ | ❌ | ❌ | ❌ |
| 引用经典著作 | ✅ | ❌ | ❌ | ❌ |
| 一致严重度标签 | ✅ | ✅ | ~ | ❌ |
| 架构级洞察 | ✅ | ❌ | ~ | ~ |
| 领域模型分析 | ✅ | ❌ | ~ | ~ |
| 零配置 | ✅ | ❌ | ✅ | ✅ |
| 语言无关 | ✅ | ❌ | ✅ | ✅ |
✅=可靠, ~=偶尔/不稳定, ❌=不支持
Brooks-Lint 不是要取代 linter——它捕获的是 linter 抓不到的问题:架构漂移、知识孤岛、领域模型失真——那些让团队慢下来几个月还没人注意的问题。
自定义配置
项目根目录下放一个 .brooks-lint.yaml 即可定制审查行为:
version: 1 disable: - T5 # 跳过覆盖率检查 severity: R1: suggestion # 将认知过载降为建议级别 ignore: - "**/*.generated.*" - "**/vendor/**" focus: - R2 - R4 # 仅评估变更传播和复杂度
所有配置项都是可选的,不配文件就使用默认行为。
小结
Brooks-Lint 的价值不在于它能发现什么——Claude 本身就能发现很多问题——而在于它每次都能一致地发现什么,并带着可追溯的证据和可执行的修复方案。基准测试显示,Brooks-Lint 的结构化发现通过率高达 94%,而原生 Claude 仅 16%。
在 AI 编码的时代,我们比任何时候都更需要这些来自 Brooks、McConnell、Fowler 们的智慧。Brooks-Lint 把这些六十年工程智慧带到了你的斜杠命令里。