Show HN:Deslop — 面向 AI 生成 TypeScript 代码的 Oxlint 规则集

Hacker News Top 工具

摘要

Deslop 是一套面向 Oxlint 的开源插件规则集,用于拦截 AI 生成的 TypeScript 代码中常见的类型断言滥用、低信号测试等'slop'模式。

捕获不安全的类型、重复代码以及低价值测试。
查看原文
查看缓存全文

缓存时间: 2026/10/13 18:58

maharshi365/deslop

来源:https://github.com/maharshi365/deslop

ai-deslop

一套有主见的 Oxlint 规则,用于拒绝低证据、低信噪比的 AI 垃圾代码模式。

规则部分来源于 dmmulroy/anti-slop(https://github.com/dmmulroy/anti-slop)中的通用规则(vendor 模式),并附加了额外的 deslop 规则,全部重命名为 deslop/* 命名空间。vendor 来源采用 MIT 许可证,详见下方致谢。

安装

``bash npm install –save-dev ai-deslop

@oxlint/plugins 作为运行时依赖一同安装 —— 请保持其与 oxlint 版本一致

``

发布编译后的 JavaScript —— 可在任何支持 oxlint JS 插件的运行时中使用(Bun、Deno 或 Node.js)。

用法

import { defineConfig } from "oxlint";
import { configs as deslopConfigs } from "ai-deslop";

export default defineConfig({
  jsPlugins: ["ai-deslop"],
  options: deslopConfigs.recommended.options,
  rules: deslopConfigs.recommended.rules
});

规则

类型安全与证据

规则状态描述
no-chained-type-assertions推荐拒绝嵌套的 as / 尖括号类型断言,这类断言会伪造证据。
no-conditional-empty-object-spread推荐报告使用条件 {} 分支进行对象展开来省略字段的写法。
no-known-value-widening推荐拒绝已知表达式流入显式 unknown、object 或开放式字典类型。
no-object-parameters推荐拒绝函数参数使用 object 类型。
no-runtime-typeof推荐要求在边界处进行解析,而非临时使用 typeof 进行类型收窄。
no-unknown-parameters推荐拒绝函数参数使用 unknown 类型。
no-unknown-returns推荐拒绝返回值类型解析为 unknown 的函数。
no-unknown-type-aliases推荐拒绝解析后类型为 unknown 的类型别名。
no-unsafe-dictionary-type推荐拒绝基于不安全逃生通道的字典值类型。
no-widen-then-assert推荐拒绝先拓宽已知证据再进行收窄断言的写法。
require-safety-comment-for-type-assertion推荐要求非 const 断言必须附带不变式安全说明注释。
no-pass-through-type-alias推荐禁止仅对另一个类型重命名的透传类型别名。

代码质量与 API

规则状态描述
no-array-filter-map推荐拒绝相邻的即时数组 filter/map 链式调用;允许使用惰性迭代器管道。
no-reduce-accumulator-copy推荐拒绝 reducer 中使用非展开运算的累加器拷贝。建议同时启用原生 oxc/no-accumulating-spread 规则。
no-reflect-apply推荐拒绝使用全局 Reflect.apply。
no-reflect-get推荐拒绝使用全局 Reflect.get。
no-shape-in-symbol-names推荐拒绝在本地拥有的符号名称中使用 shape 一词。

测试

规则状态描述
no-call-only-assertions推荐标记仅检查 mock 调用的测试断言。
no-module-mocking推荐拒绝使用 Vitest 和 Jest 的模块 mock。
no-poor-substring-tests推荐拒绝对常量字符串进行子串包含测试。
no-repeated-expect-call推荐标记测试文件中相邻断言重复调用相同函数的写法。请复用调用结果。无自动修复。

可选规则

规则状态描述
no-duplicate-consts可选报告不同文件中具有相同静态值的全大写常量。
no-duplicate-types可选报告完全重复的对象类型契约。无自动修复。
no-renamed-imports可选修复不必要的命名导入别名,前提是原始名称在模块级别没有冲突。
canonical-class-names可选修复非规范的 Tailwind CSS v4 类名拼写。

推荐配置中启用的标准规则

标准规则状态描述
typescript/no-deprecated推荐禁止使用标记为 @deprecated 的代码。需要启用类型感知 lint。
typescript/no-require-imports推荐禁止使用 CommonJS 的 require() 导入。
typescript/no-floating-promises推荐禁止浮空 Promise。需要启用类型感知 lint。
typescript/no-unnecessary-condition推荐禁止永远为真/为假/为空的条件判断。需要启用类型感知 lint。
no-unreachable推荐禁止不可达代码。

指南

指南内容
No duplicate consts配置方式及精确静态值比较行为。
No duplicate types精确比较行为、worker 作用域、完整的 TypeScript/JSON 示例及所有支持的选项。
No renamed imports命名导入别名何时会被自动修复,以及冲突如何处理。
Tailwind canonical class namesTailwind v4 配置、完整的 TypeScript/JSON 示例及所有支持的选项。

致谢

  • 通用规则逐字移植自 dmmulroy/anti-slop(https://github.com/dmmulroy/anti-slop)(MIT,© Dillon Mulroy),包括 src/shared/*。

许可证

MIT

相似文章

hardikpandya/stop-slop

GitHub Trending (daily)

一种用于从散文中去除常见AI写作模式的技能/工具,包括禁用短语、结构陈词滥调和句子层面的问题,旨在用于Claude或任何LLM。