用途
code-slop 是一个代码审查技能,用于检测 AI 生成代码中常见的模式(称为“slop”)。它关注的是定性层面的失败模式:代码虽然能通过所有量化指标(复杂度、重复率、CVE 等),但读起来像教程博客,而不是人类编写的代码。该技能适用于 PHP/Laravel 和 TypeScript/React(Node)项目。
主要能力
该技能包含 24 条规则,分为 6 个类别,按优先级排列:
- 注释(CRITICAL):检测仅复述代码的注释、空文档块、占位符注释、闭合大括号标签。
- 命名(CRITICAL):检测通用占位符名称(data、result、info、temp、helper)、过度描述性名称、后缀滥用(*Helper / *Manager / *Util / *Wrapper)、类型入名模式(userObject、resultArray)。
- 过度工程(HIGH):检测只有一个实现的接口、单方法类、仅调用一次的无用包装函数、重复添加依赖。
- 防御性代码过量(HIGH):检测通用 catch 块、对不可能为 null 的值做 null 检查、以及真正需要防御的地方(超时、限流)反而缺失。
- 测试 slop(HIGH):检测模拟所有依赖但无真实行为断言的测试、仅验证“不抛出异常”的测试、镜像实现逻辑的测试、滥用快照测试。
- 风格指纹(MEDIUM):检测格式过度一致、滥用 as any / @ts-ignore、缺少 HACK/XXX 标记、遗留调试产物、冗余样板代码。
使用方式
当用户要求“审查 AI slop”、“审计代码质量品味”或“查找 AI 模式”时,按以下步骤执行:
- 确定范围:如果提供了 PR diff,只审计变更文件;如果指定了文件,审计这些文件;如果没有范围,审计整个仓库,优先处理最近修改的文件。
- 检测技术栈:通过 composer.json + artisan 识别 PHP/Laravel;通过 package.json(含 TypeScript/React 依赖)识别 Node/TypeScript/React;两者都存在则为 Laravel + Inertia + React。
- 运行 slop 检查清单:对每个检查项输出 CLEAN(未出现)、SUSPICIOUS(少量出现)、INFLATED(大量出现,建议修复)、CRITICAL(大量 AI 指纹,合并前需全面审查)。
- 生成 Slop Ledger:以表格形式列出每个文件的判定、主要发现和建议操作,并汇总各类别文件数量。
判定标准:CLEAN 为标记行数低于 5%;SUSPICIOUS 为 5–15%;INFLATED 为 15–30%;CRITICAL 为超过 30%。
适用场景
- 在合并 AI 辅助的 PR 之前进行审查
- 审计已接受大量 AI 辅助贡献的仓库
- 评估代码库是否像人类维护的
- 强化团队的代码审查清单以对抗 AI slop
- 在“氛围编程”冲刺后、宣布功能完成之前
- 为 AI 输出质量设置 CI 门禁
限制
该技能主要针对 PHP/Laravel 和 TypeScript/React 技术栈,其他语言或框架的适用性暂未提供。规则基于启发式判断,需要人工审查确认。具体安装命令、收费模式、价格等信息暂未提供。