news 2026/8/23 7:31:43

anti-slop 使用教程:Oxlint 规则拦截 AI 低质量代码 TypeScript 代码质量详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
anti-slop 使用教程:Oxlint 规则拦截 AI 低质量代码 TypeScript 代码质量详解

GitHub 3.1k Star:anti-slop

从零部署完整教程 · 新手照着做就能跑起来 · 效率工具指南 · 原创教程


摘要:anti-slop 是 GitHub 3.1k Star 的 Oxlint 规则插件,拦截 TypeScript/JavaScript 代码中的"低证据"模式(AI slop)——链式类型断言、unknown 参数/返回、无 SAFETY 注释的强制转换等。本文介绍安装配置、16 条规则详解与正反例对照、真实拦截演示。


AI 写的代码,编译能过、跑起来也对,但总有些地方"看着就不对劲"——滥用as断言伪造类型、到处unknown逃避检查、强制转换连注释都不写。这种代码叫 AI slop(水货):能跑,但没依据、难维护。anti-slop 是一组 Oxlint 规则,专门拦截这些低证据模式。

本文要点

  • 16 条 Oxlint 规则,拦截 AI 代码的"低证据"模式;
  • 规则可复制进自己仓库,改成团队标准;
  • 一条命令装(npx skills add)或手动配置;
  • 本文含规则正反例对照 + 真实拦截演示。

一、GitHub 项目数据

项目数据
Star3,163(3.1k,2026-08 创建,增长快)
主要语言TypeScript
许可证MIT
运行环境Oxlint(Rust 写的 JS/TS lint 器)
适用TypeScript / JavaScript 项目

二、它能解决什么问题

你的痛点anti-slop 怎么解决
AI 代码滥用 as 断言"伪造类型证据"no-chained-type-assertions 拦截链式断言
到处 unknown 逃避类型检查no-unknown-parameters/returns 拒绝
断言无注释,谁改谁踩坑require-safety-comment 强制写依据
代码"能跑但没依据",难维护把"低证据"模式挡在 CI/提交前

三、安装

路径 1:Agent Skill 一键装(让 AI 自动配置):

npx skillsadddmmulroy/anti-slop--skillinstall-anti-slop

路径 2:手动配置(实测走通):

# ① 复制规则源码到项目mkdir-ptools/oxlint/anti-slopcp-rsrc/* tools/oxlint/anti-slop/# ② 装 Oxlintnpminstall-Doxlint @oxlint/plugins# ③ 配 oxlint.config.ts(注册插件 + 启用规则,package.json 需 "type": "module")# ④ 运行npx oxlint src/

四、规则怎么用(重点:正反例)

下面是 6 条最典型的规则,每条都有「会被拦的写法 ❌」和「该这么写 ✅」对照。

1. no-chained-type-assertions(链式类型断言)

// ❌ 被拦:一步步"假装"类型,丢弃证据constuser=inputasobjectasUser;// ✅ 该写:在边界处解析/校验,保持精确类型

2. no-unknown-parameters(unknown 入参)

// ❌ 被拦:unknown 意味着"没解析就收"functionhandle(input:unknown){}// ✅ 该写:接受命名域类型,I/O 边界跑 schema 后再进函数

3. no-unknown-returns(unknown 返回)

// ❌ 被拦:把责任甩给调用方functionloadUser():unknown{returninput;}// ✅ 该写:边界解析后返回命名域类型(如 UserId)

4. no-unsafe-dictionary-type(不安全字典类型)

// ❌ 被拦:调用方拿不到具体值契约typeMetadata=Record<string,unknown>;// ✅ 该写:用 schema 推导的具体值类型,外部数据先解析

5. require-safety-comment-for-type-assertion(断言要写 SAFETY 注释)

// ❌ 被拦:没写为什么安全constuserId=valueasUserId;// ✅ 该写:// SAFETY: parseUserId validated the identifier before branding it.constuserId=valueasUserId;

6. no-module-mocking(禁止模块 mock)

// ❌ 被拦:mock 掩盖真实依赖vi.mock("./user-store");// ✅ 该写:用真实依赖注入(dependency seams)替代模块 mock

全部 16 条规则:no-chained-type-assertions、no-conditional-empty-object-spread、no-known-value-widening、no-module-mocking、no-object-parameters、no-reflect-apply、no-reflect-get、no-runtime-typeof、no-shape-in-symbol-names、no-unknown-parameters、no-unknown-returns、no-unknown-type-aliases、no-unsafe-dictionary-type、no-widen-then-assert、require-safety-comment-for-type-assertion、Effect 的 no-service-constructor-imports。

五、功能验证(真实输出)

本机实测(npm 项目 + oxlint + anti-slop 插件):

  • slop 代码被拦:5 种低证据模式 → 7 errors:
x anti-slop(no-chained-type-assertions): discards type evidence... x anti-slop(no-unknown-parameters): Parameter `input` leaves input unparsed... x anti-slop(no-unknown-returns): exposes `unknown` to its caller... x anti-slop(no-unsafe-dictionary-type): unknown value type... x anti-slop(require-safety-comment-for-type-assertion): No `SAFETY:`... Found 6 warnings and 7 errors.
  • 健康代码不误报:有 SAFETY 注释 + 边界解析的代码 → 0 errors ✅

六、常见问题

Q1:anti-slop 是 npm 包吗?

不是固定依赖。作者设计成"复制进你仓库、改造成团队标准"(vendored)——复制 src/ 后这些规则就是你的了。

Q2:需要 ESLint 吗?

不需要。它基于 Oxlint(Rust 写的极快 lint 器),npm install oxlint 即可。

Q3:规则太严格怎么办?

规则源码在你仓库里,改配置/删规则/调 severity 都行——这正是 vendored 设计的初衷。

Q4:只适合 AI 生成的代码吗?

不。任何"低证据"代码都会被拦,只是 AI 时代这类代码变多了。

七、总结

anti-slop 是一组"反 AI 水货"的代码规则:拒绝链式断言、unknown 泛滥、无注释的强制转换——逼着你写"有依据"的代码。适合用 AI 写代码、又想保持代码质量的团队。规则可复制可定制,Oxlint 极快不拖慢开发。记住:规则挡的是"没依据",不是"不能用类型断言"——写清楚依据就好。

命令速查

# 1. Agent Skill 一键装npx skillsadddmmulroy/anti-slop--skillinstall-anti-slop# 2. 手动装mkdir-ptools/oxlint/anti-slop&&cp-rsrc/* tools/oxlint/anti-slop/npminstall-Doxlint @oxlint/plugins# 3. package.json 加 "type": "module",配置 oxlint.config.ts# 4. 运行检查npx oxlint src/

项目地址:[dmmulroy/anti-slop] (https://github.com/dmmulroy/anti-slop)

标签:anti-slop、Oxlint、代码质量、TypeScript、AI代码、Lint、效率工具

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/23 7:28:49

差分方程建模:从离散数据到动态系统预测的数学工具

1. 从“离散”视角看世界&#xff1a;差分方程为何是建模利器在数学建模的世界里&#xff0c;我们常常面对两类数据&#xff1a;连续的和离散的。当我们谈论人口增长、传染病传播、经济周期、甚至是一支股票每日的收盘价时&#xff0c;我们处理的往往是按固定时间间隔&#xff…

作者头像 李华
网站建设 2026/8/23 7:26:55

二叉树的遍历 线索二叉树

二叉树的存储结构--链式存储二叉树的遍历-前序遍历两个 return&#xff0c;两种退出函数的方式手写return;仅当 TNULL&#xff08;空节点&#xff09;触发&#xff0c;直接结束当前这一次函数调用。隐式自动 return&#xff08;重点&#xff01;你疑惑的点&#xff09;当节点不…

作者头像 李华
网站建设 2026/8/23 7:25:35

从零实现流式Markdown解析器:状态机与渐进式渲染实战

在实际前端面试中&#xff0c;流式 Markdown 解析器是一个能很好考察候选人综合能力的问题。它不像简单的算法题有标准答案&#xff0c;而是需要你理解流式处理、状态机、词法分析、语法解析、异步渲染等多个概念&#xff0c;并能将它们组合成一个可工作的方案。很多开发者对 M…

作者头像 李华
网站建设 2026/8/23 7:17:53

构建个人知识体系:从信息过载到认知清晰的四层架构与实践方法

1. 从“信息过载”到“认知清晰”&#xff1a;我们为什么需要知识体系&#xff1f;你有没有过这样的经历&#xff1f;每天刷着手机&#xff0c;收藏了无数篇“干货”文章&#xff0c;关注了几十个领域的博主&#xff0c;感觉自己每天都在学习新东西。但当你真正需要解决一个具体…

作者头像 李华
网站建设 2026/8/23 7:16:12

Claude Code v2.1.236 更新:环境变量与闲置通知如何提升AI编程效率

如果你是一名开发者&#xff0c;最近在尝试各种AI编程助手&#xff0c;可能会发现一个现象&#xff1a;很多工具要么配置繁琐&#xff0c;要么模型切换不灵活&#xff0c;要么在长时间对话后突然“失忆”&#xff0c;导致工作流中断。这些问题看似琐碎&#xff0c;却实实在在地…

作者头像 李华