文档

防Slop校验

在变更送达您手中之前,及时察觉智能体采取的捷径行为——包括弱化测试、吞没错误、未完成的代码等。

智能体能够快速编写看似合理的代码,其中部分代码会采取细心工程师不会采用的捷径:为了通过测试而跳过某些用例、吞没错误信息、留下占位符、屏蔽类型检查,或是实现代码库中已有的功能的新版本。Anti-slop检查项会在每次变更中排查此类问题,并在您看到变更前将其退回给开发智能体。

它是您的质量策略中的一项检查项,质量策略并非独立的评分项。只有当变更没有引入任何阻碍因素时,才算通过该检查项。

排查范围

规则被归为不同类别。每条规则要么阻断、建议要么记录相关信息信息。

  • 测试用例——包括针对性不足或被跳过的测试用例、被删除的测试用例、被移除或弱化的断言、无法触发失败的测试用例。
  • 禁用项——新的代码规范禁用项、类型忽略项以及any类型转换。
  • 构建与CI——被移除或失效的测试步骤、被降低的阈值、“无测试也通过”的情况。
  • 测试凭证——将缓存结果冒充为实际运行结果、未执行任何测试用例、将部分运行结果上报为完整运行结果。
  • 生产代码——遗留的调试代码、占位符、模拟数据、给开发人员的备注、被误发到生产环境的测试代码。
  • 错误处理——吞没错误信息、隐藏故障的回退机制、开放权限检查的“允许所有访问”设置。
  • 注释、架构、依赖项、变更范围、 安全、缓存以及智能体操作轨迹——记录智能体的操作内容,例如在测试失败后立刻修改该测试。

每条规则对应的页面位于质量 → 检查项 → Anti-slop其中会说明该规则匹配的内容及其重要性。

只有变更引入的问题才会导致检查项不通过。

大多数代码库中已经存在部分此类模式。Anti-slop会将每个发现结果分为三类:

  • 新增——本次变更中新出现的。
  • 触及——原本已存在,但位于变更所编辑的行或函数中。
  • 现有——存在于代码库的其他位置。

只有属于阻断类规则的新增发现结果才会导致检查项不通过。触及和现有的发现结果会被记录下来,以便您了解技术债务情况,但它们不会阻碍无关工作。移动代码不算作引入新内容;复制代码才算。

已提出

  • 预警关卡
  • 审阅者智能体
  • 关联的扫描工具

已分配

可修复

退回给开发人员作为返工内容

其他情况

附在pull request中

已解决

  • 已修复

    该变更解决了问题

  • 已采纳

    确实如此,但此处无需处理。请说明原因。

  • 已忽略

    属于误报或不适用的规则。请说明原因。

可修复的问题会在运行流程内处理。其余问题会提交至pull request,所有问题最终都会被修复、采纳或搁置,后两种情况均会说明原因。

将其加入策略

在质量 → 策略中打开相应策略,质量 → 策略然后选择添加Anti-slop预设。它会添加五项要求:

  1. 测试用例仍能验证变更的有效性。
  2. 不会发布未完成或仅用于测试的代码。
  3. 不会产生新的结构性技术债务。
  4. 变更范围符合预期,且风格与当前代码库保持一致。
  5. 新增依赖项是真实且可靠的。

发布该策略后,每个关联项目的下次运行就会包含此项检查项。

选择变更约束规则

该规则决定了开发智能体对变更范围的把控程度:

  • 精准型——仅处理需求中指定的内容;其他问题仅会记录,不会修复。
  • 平衡型(默认)——也会顺带修复变更所触及行上的小问题。
  • 修复型——还会清理变更所编辑函数内的相关问题。

智能体在提交代码前会遵循相同规则:它会提前获取约束规则和您设定的隔离模式,每次编辑后都会参照快速规则进行检查,并且在QA环节前有一次机会修复阻断类发现结果。

使其适配您的代码库

  • 规则覆盖——在检查项设置中关闭某条规则,或将其设置为建议而非阻断。
  • 规则包——包含您自定义的模式、禁止导入的依赖项、文件大小限制,或是您已有工具生成的结果(SARIF)。规则包有版本控制;策略会锁定所使用的版本。
  • 隔离模式——您不希望再被复制的模式,每种模式都配有替代方案。智能体会被要求不得传播这些模式,新复制的内容会被标记出来。
  • 代码库配置文件 — .coroid/anti-slop.yml代码库中的该文件可用于添加规则,排除生成的或第三方依赖的路径。它从变更的基准位置读取,因此变更无法放宽自身规则,且修改该文件需要审批。

发现结果与豁免项

发现结果会显示在质量 → 发现结果,且会按检查项过滤。若要接受某条发现结果,需填写理由后予以豁免;该豁免记录会对应到具体的发现结果。智能体无法豁免自身产生的发现结果。若某智能体判定测试有误并修改了相关内容,必须由审核人员批准该变更后,对应检查项才会通过。

评判规则

有两条规则会逐行询问模型:一条是防御性检查,用于排查代码无法实现的情况;另一条则用于检测与相邻代码矛盾的注释。这两条规则仅提供建议,不会阻塞流程。启用评判规则针对新检查项默认开启,每次运行有决策次数限制;可在该检查项的设置中关闭该功能。

您自有的智能体

同样的规则也可为自行运行的智能体提供指导:

  • 下载 AGENTS.md 代码片段,位于技术债标签页的质量 → 检查项 → 反冗余规则,它会输出项目的变更规范、隔离规则及核心规则,可将其作为段落粘贴到智能体的指令中。
  • 通过 Coroid MCP 服务器,anti_slop_rules可描述您已发布的策略,同时anti_slop_scan会只读式扫描同步项目的某个分支。