berelevant-ai/slopless
Deterministic textlint rules and CLI for catching prose slop in English Markdown.
它是什么
Slopless 是一个命令行工具,用于扫描英语 Markdown 文件中的“slop”——即 AI 生成和人类写作中常见的模糊、陈词滥调或过度自信的写作。它基于 textlint(一种流行的文本检查框架)构建,但捆绑了所有内容,因此您无需单独设置 textlint。
工作原理
您可以针对文件或文件夹运行它,它会返回 JSON,列出发现的每个问题。README 展示了一个示例段落,触发了五个规则下的六项发现——例如“let me be honest”(模板化框架)、“in a world where”(禁止短语)、“We do not sell software. We sell outcomes.”(否定重构)、“everyone knows”(普遍化主张)和“at the end of the day”(陈词滥调)。因此,它关注的是结构和修辞,而不仅仅是禁用词列表。
退出代码
0— 未发现问题1— 发现问题2— 发生错误(例如,未提供输入)
不带文件路径、glob 或 stdin 的裸 npx slopless 命令会以代码 2 退出。该工具仅支持英语。
两层检查
- 确定性规则 — 在本地运行,始终开启。这些是短语和结构检查。
- Jev 检查 — 可选,需要
JEV_API_KEY环境变量中的 TypeSafe API 密钥。这些会将您的写作发送到 TypeSafe 进行语义判断(例如“空结论”或“重复解释”)。共有 54 个 Jev 检查,涵盖 11 个系列。它们是实验性的——README 表示其质量因检查而异——并且仅在您使用--check标志明确选择时运行。
叙事 slop 规则 — 一组用于小说和回忆录的单独规则(命名情感、空拍、动作节奏、感知密度、叙事陈词滥调)。这些默认关闭;您可以使用 --narrative 开启。
三种使用方式
- CLI —
npx slopless "docs/**/*.md"。输出始终为 JSON。您可以自行将其重定向到文件。 - 库 — 在 JavaScript/TypeScript 中导入
createSlopless和createJevClient,调用lintText()或lintFiles()。支持中止信号、并发限制、超时和重试。 - textlint 预设 — 如果您已经使用 textlint,请将
preset-slopless添加到您的.textlintrc.json中,它会与您的其他规则一起运行,并支持 textlint 的输出格式化程序。
代理集成
您可以使用 npx slopless install-skill codex(或 claude)为 Codex 或 Claude Code 安装“技能”。两者安装相同的技能主体。预期工作流程:安装技能,启动新的代理会话,并告诉代理使用 Slopless 技能进行检查、重写和重新运行,直到 JSON 输出没有发现。
忽略特定规则
您可以将有意的例外包裹在 HTML 注释中:
<!-- textlint-disable slopless/semantic-thinness -->
Something shifted in the room.
<!-- textlint-enable slopless/semantic-thinness -->
按 ID 抑制 — npx slopless --list-checks 显示每个检查的 reportId,您可以在这些禁用注释中使用它。确定性 ID 是稳定的;Jev 模型 ID 包含其系列名称。
安全/来源
自 0.2.13 以来的每个版本都通过 OIDC 从 GitHub Actions 发布,并带有记录在 Sigstore 透明度日志中的 SLSA v1 来源证明。您可以使用 npm audit signatures slopless 进行验证。
致谢
flat-action-cadence 规则使用 Compromise 库进行英语单词分类。其物理动作和演员词汇来自 Open English WordNet 2025(CC BY 4.0)。README 还感谢 Graham Rowe,其 antislop 库“完全整合”。
底线
Slopless 是一个用于英语 Markdown 的写作质量检查器,旨在捕捉 AI 模型和匆忙的人类产生的听起来自信但空洞的散文。它默认是确定性的,可选地通过 AI 语义检查增强,并设计为供人类和可以迭代直到检查通过的写作代理使用。
相关
- 项目
- Dispatch
- 项目
- 项目
- 项目