使用开源 AI 技能扩展代码审查
I’m unable to retrieve the full article from the link you provided. Could you please paste the text you’d like translated here? Once I have the content, I’ll translate it into Simplified Chinese while keeping the source line and formatting exactly as you requested.
AI 生成代码的崛起与合并请求过载
随着 AI 生成代码的兴起,审查合并请求变得比以前更具挑战性。
在多个项目中,我注意到同样的模式:合并请求的规模越来越大,频率也越来越高,这使得彻底审查变得日益困难。挑战不在于复杂度,而在于数量。
AI 加速了代码的产出,使这一差距变得显而易见。我们可以快速生成代码,但以同等严谨度进行审查却更为困难。
我没有尝试加快审查速度,而是选择以不同的方式审查。我提炼了自己的审查模式,并将其转化为一个AI Skill,现已开源。
背景:代码审查成为新的瓶颈
- 代码审查过去能够随团队规模而扩展。更多的开发者意味着更多的审查者,平衡相对保持稳定。
- 随着 AI 辅助开发,代码量大幅增长。Pull Request 更频繁且往往更大,而审查在持续的时间压力下进行。
- 反馈往往变得表面化,架构问题可能被忽视,编码规范也会慢慢漂移。
问题不再是速度;而是 在整个代码库中保持一致的质量水平。
从直觉到系统
有经验的开发者在审查代码时依赖一套 隐式规则。随着时间的推移,我们会建立一个 心智模型,了解优秀代码的样子:命名应反映行为,副作用应明确,UI 层应与业务逻辑隔离,等等。
这些规则很少被形式化;它们存在于经验之中,难以在团队中推广。
AI 技能的设计目标是将这些模式转化为 结构化且可复用 的东西。它 不 替代审查者;而是通过提前呈现相关问题、降低认知负荷、使期望明确来支持审查者。
设置:准备技能
该技能基于 模型上下文协议 (MCP) 构建,能够集成到任何兼容的环境,例如 Cursor。
要使技能正常工作,您的编辑器必须与 GitHub 或 GitLab 建立活跃的 MCP 连接。强烈建议使用这些平台提供的 原生 MCP,以确保在获取拉取请求数据时获得最佳的稳定性、安全性和性能。
一旦您的环境已连接到代码仓库,具体的安装步骤请参阅仓库文档:
Source: …
实现:技能的实际工作方式
一旦完成配置,技能即可直接嵌入您现有的工作流。它从编辑器中的一个简单指令开始:
/frontend-code-review Please review this pull request 技能会检索该 Pull Request 并进入 发现阶段。它会检测技术栈、识别所使用的工具,并尝试了解更改的性质。此步骤至关重要,因为它使技能能够保持上下文相关,避免无关的检查。
仅根据更改的文件类型加载相关参考:
- CSS 更改会触发 CSS‑特定的校验。
- TypeScript 组件会在考虑前端‑架构模式的前提下进行分析。
在内部,分析依赖于 结构化审查模式。不会自动发布任何内容。开发者会审阅报告,过滤发现,并决定哪些内容真正需要在 Pull Request 中共享。
知识库:模块化参考指南
技能的强大之处在于它的 参考模块。AI 并不是使用“黑箱”逻辑,而是将每个领域的真相来源设为特定的 Markdown 文件。
您可以在仓库中查看完整的规则集,涵盖以下内容:
| 类别 | 检查内容 |
|---|---|
| 安全性与可靠性 | XSS 漏洞、消毒问题、日志或存储中的 PII 保护 |
| 可访问性(WCAG) | 焦点管理、ARIA 角色、自定义交互元素的键盘可访问性 |
| 性能与 DOM | 布局抖动、内存泄漏(缺少监听器清理)、脚本加载策略 |
| 架构与逻辑 | 关注点分离、命名语义、边界条件 |
| 现代 JS/TS | 类型安全、显式返回类型、现代语法 |
| 项目约定 | 项目特定的编码风格、linter 规则、在发现过程中检测到的模块格式 |
这种模块化使得技能能够高度精准。如果您只想关注特定领域,只需简单指示它:
“仅审查此 PR 的可访问性和安全性方面。”
结构化反馈:降低噪声
噪声并非 AI 辅助审查所独有。即使在人类审查中,过多的评论一次性出现也会埋没重要反馈,或使优先级判断变得更困难。
此技能通过引入明确的 发现分类 来解决此问题。每条评论都标注一个级别,以帮助确定审查的优先顺序:
| 级别 | 描述 |
|---|---|
| Blocking | 安全问题、关键缺陷或逻辑破坏 |
| Important | 架构、性能和可访问性方面的关注 |
| Suggestion | 可读性改进 |
| Minor | 成组的代码整洁项 |
另一个重要特性是 “需要关注” 标记。某些情况无法由 AI 可靠评估——尤其是涉及视觉冲击或复杂业务意图时。在这些情况下,技能会明确请求人工验证。
实际要点
- AI 并未消除对人类专业知识的需求;它只是改变了工作投入的方向。
- 使用 AI 作为检测层 而非决策者效果更佳。它能够快速呈现模式,而我们则对最终输出进行验证。这使审查过程保持可靠,并降低了扫描大量差异的认知负担。
生成(原文意外中断;如有需要请继续)。
过多的评论会削弱审查的价值
过滤和优先级排序比覆盖率更重要。在更大的前端拉取请求中,我们发现通过仅关注高层次的发现,审查速度可提升至 8 倍。
开源与后续步骤
本项目最初是作为内部实验,用于自动化我自己的审稿模式。
我决定将其开源,因为向社区开放可以加速其演进。规则可以被讨论、挑战并共同改进。目标 不是 创建一个完美的审稿人,而是提供一个共享的 结构化审稿模式 基线。
所有代码和技能配置均可在我的 GitHub 上获取:
Discover the frontend code review skill on GitHub
Conclusion
代码审查必须与加速的开发保持同步。仅仅依赖人工审查已不再可持续,尤其是 AI 以空前的速度生成代码。
通过使用 结构化 AI 技能,我们可以在人工查看差异之前自动检测高级模式——包括安全性和可访问性。这恢复了必要的平衡,即 AI 负责重复且繁琐的扫描,而人类专家则专注于需要真正判断的架构决策和业务逻辑。
归根结底,目标是 不 将我们的责任委派出去,而是在最能发挥价值的地方行使它。