用途
deslop 用于清理代码中的“AI 废话”(AI slop),即 AI 生成代码时常遗留的调试语句、占位文本、无用导入等杂物。它适用于仓库卫生清理、移除调试语句以及查找幽灵代码等场景。
主要能力
该技能通过基于确定性的发现结果与自动修复来识别和分类代码问题。检测流程分为四个阶段:
- 运行检测脚本:脚本位于
../../scripts/detect.js,从技能目录的相对路径运行。 - 仓库地图增强(可选):如果存在 repo-map,可使用基于 AST 的分析增强检测,查找从未使用的基础设施、未使用的导出等。
- 聚合与优先级排序:按确定性(HIGH 优先于 MEDIUM 优先于 LOW)、严重程度(high 优先于 medium 优先于 low)、修复复杂度(可自动修复优先于手动)排序。
- 返回结构化结果:技能返回结构化 JSON,不直接应用修复,由编排器处理。
使用方式
调用时接受以下参数:
- 模式:
report(默认)或apply - 范围:
all(默认,整个代码库)、diff(仅当前分支更改的文件)、<path>(特定目录或文件) - 深度:
quick(仅正则表达式模式)、normal(默认,增加多遍分析器)、deep(增加 CLI 工具如 jscpd、madge,如果可用)
运行检测的示例命令:
node ../../scripts/detect.js . --thoroughness normal --compact --max 50
对于 diff 范围:
BASE=$(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@' || echo "main")
git diff --name-only origin/${BASE}..HEAD | \
xargs -d '\n' node ../../scripts/detect.js --thoroughness normal --compact
检测模式与确定性等级
- HIGH 确定性(可自动修复):debug-statement(如 console.log、console.debug、print、println!)、debug-import(未使用的调试/日志导入)、placeholder-text(如 "Lorem ipsum"、"TODO: implement")、empty-catch(无注释的空 catch 块)、trailing-whitespace(尾随空白)、mixed-indentation(混合制表符/空格)
- MEDIUM 确定性(需要审查):excessive-comments(注释/代码比例大于 2:1)、doc-code-ratio(JSDoc 超过函数体 3 倍)、stub-function(仅返回占位值)、dead-code(return/throw 后的不可达代码)、infrastructure-without-impl(创建了数据库客户端但从未使用)
- LOW 确定性(仅标记):over-engineering(文件/导出比例大于 20 倍)、buzzword-inflation(无证据的声明)、shotgun-surgery(文件频繁一起更改)
修复类型
remove-line:删除行,适用于 debug-statement、debug-importadd-comment:添加解释,适用于 empty-catchremove-block:删除代码块,适用于带 TODO 的 stub-function
输出格式
技能返回位于标记之间的 JSON 结构,包含模式、范围、扫描文件数、发现结果列表、修复列表以及摘要(按高、中、低和可自动修复计数)。
适用场景
- 清理 AI 生成代码的遗留物
- 仓库卫生维护
- 移除调试语句和占位文本
- 查找未使用的导出和孤立基础设施
限制
- 技能本身不应用修复,由编排器处理
- 若 Git 不可用,将跳过依赖 Git 的检查
- 无效范围将在 JSON 中返回错误
- 解析错误时跳过文件并继续扫描
- deep 深度依赖可用的 CLI 工具(jscpd、madge)
集成
该技能由以下调用:
- deslop-agent 用于 /deslop 命令
- /next-task 第 8 阶段(预审查门禁),范围=diff
编排器生成 simple-fixer 来应用 HIGH 确定性的修复。