斜坡防护装置

一个基于规则的散文连字号,为公式化的人工智能写作模式对文本进行0-100的评分。没有LLM法官,没有API调用。纯粹是程序性的。
默认管道加载23个可配置规则,由200多个文字和结构启发式算法支持。它返回一个数字分数、一个乐队标签、与周围环境的具体违规行为,以及每次点击的具体建议。
添加到您的代理
两个客户端使用相同的MCP命令: uvx slop-guard. 如果你想要一个自定义规则JSONL,请附加 -c /path/to/config.jsonl.
克劳德代码
从命令行添加:
claude mcp add slop-guard -- uvx slop-guard添加到您的 .mcp.json:
{
"mcpServers": {
"slop-guard": {
"command": "uvx",
"args": ["slop-guard"]
}
}
}法典
从命令行添加:
codex mcp add slop-guard -- uvx slop-guard添加到您的 ~/.codex/config.toml:
[mcp_servers.slop-guard]
command = "uvx"
args = ["slop-guard"]如果你想要一个固定的释放,把它钉上 args例如: ["slop-guard==0.4.1"].
命令行界面
这 sg 从终端命令lints散文。没有API密钥,没有网络调用。
快速开始
# Run without installing
uvx --from slop-guard sg README.md
# Or install it
uv tool install slop-guard
sg README.md用法
sg [OPTIONS] INPUT [INPUT ...]sg 需要至少一个输入。每个输入可以是文件路径, - 对于stdin或引用的内联散文文本:
sg "This is some test text"
echo "Latency dropped from 180 ms to 95 ms." | sg -一次抓取多个文件(shell级glob扩展):
sg docs/*.md README.md
sg path/**/*.md选项
| 标志 | 描述 |
|---|---|
-j, --json | 以JSON格式输出结果,包括 source 作为原始内联/stdin文本或完整文件路径 |
-v, --verbose | 显示个人违规行为和建议 |
-q, --quiet | 仅打印未达到阈值的源 |
-t SCORE, --threshold SCORE | 最低及格分数(0-100)。如果任何输入分数低于此值,则退出1 |
-c JSONL, --config JSONL | JSONL规则配置的路径。默认为打包设置 |
-s, --score-only | 仅打印数字分数输出 |
--counts | 在摘要行中显示每条规则的点击次数 |
例子
# One-line summary per file
sg draft.md
# => draft.md: 72/100 [light] (1843 words) *
# Score-only output
sg -s draft.md
# Use a custom rule config
sg -c /path/to/config.jsonl draft.md
# Verbose output with violations and advice
sg -v draft.md
# JSON for scripting
sg -j report.md | jq '.score'
# JSON preserves the true CLI input identity
sg -j "The migration finished in 12 seconds." | jq '.source'
# => "The migration finished in 12 seconds."
# CI gate: fail if any file scores below 60
sg -t 60 docs/*.md
# Quiet mode: only show failures
sg -q -t 60 **/*.md退出代码
| 代码 | 含义 |
|---|---|
| 0 | 成功(所有文件都通过阈值,或未设置阈值) |
| 1 | 一个或多个文件得分低于阈值 |
| 2 | 错误(文件路径错误、读取失败等) |
适配规则配置(sg-fit)
使用 sg-fit 从语料库数据中拟合JSONL配置规则:
# Legacy shorthand
sg-fit TARGET_CORPUS OUTPUT
# Multi-input mode (for shell-expanded globs or many files)
sg-fit --output OUTPUT TRAIN_INPUT [TRAIN_INPUT ...]例子:
sg-fit data.jsonl rules.fitted.jsonl
sg-fit --output rules.fitted.jsonl **/*.txt **/*.md可选参数:
--init JSONL:从特定的规则配置JSONL开始,而不是打包的默认值。--negative-dataset INPUT [INPUT ...]:添加负数据集输入。这个标志可以重复;所有负行都被标准化为标签0.--no-calibration:跳过拟合后对比惩罚校准,以便在大型语料库上更快地拟合。--output JSONL:当您通过多个培训输入时,此项为必填项。
目标语料库行可以是:
{"text": "body of text", "label": 1}或者:
{"text": "body of text"}如果 label 在目标语料库中省略, sg-fit 将其视为 1 (积极/目标风格)。
sg-fit 也接受 .txt 和 .md 文件夹。每个文件都被标准化为一个训练样本。
安装
需要 紫外线.
无需安装即可运行(建议用于MCP设置):
uvx slop-guard
# MCP server with custom rule config
uvx slop-guard -c /path/to/config.jsonl持续安装(为您提供 slop-guard, sg,以及 sg-fit):
uv tool install slop-guard重复性引脚版本:
uvx slop-guard==0.4.1升级已安装的工具:
uv tool upgrade slop-guard来源
从本地结账:
uv run slop-guard # MCP server
uv run slop-guard -c config.jsonl
uv run sg # CLI linter
uv run sg-fit data.jsonl rules.fitted.jsonl核心开发工作流程也通过以下方式公开 make:
make sync
make check
make fix
make build
make verify-wheelMCP工具
check_slop(text):分析字符串。仅返回JSON诊断;它不会重复输入文本。
check_slop_file(file_path):从磁盘读取文件并对其进行分析。输出相同,不重复有效负载中的文件路径。
它捕获了什么
默认规则包括股票炒作词和样板短语、辅助语气标记、未归因的黄鼠狼短语、人工智能自我披露、占位符文本、项目符号/区块引用/水平规则重的Markdown结构、句子和段落节奏,以及破折号或冒号的过度使用。
他们还标记了对比/设置-解决告诉、简洁的片段、重复的4-8个单词的短语、系词链、超长句子、格言式的结尾和不均匀的段落节奏。
10个单词以下的文本将被跳过,并返回一个干净的 100.
否则,评分使用指数衰减: score = 100 * exp(-lambda * density),其中密度是每1000个单词归一化的加权惩罚和。克劳德特定类别(对比度对、设置分辨率、简洁片段)会得到浓度倍数。重复使用相同的tic比不同的违规行为成本更高。
评分乐队
| 分数 | 乐队 |
|---|---|
| 80-100 | 清洁 |
| 60-79 | 光线 |
| 40-59 | 中等 |
| 20-39 | 重型 |
| 0-19 | 饱和 |
输出
命令行界面 --json 输出和MCP工具响应共享此结构:
source CLI JSON only; raw inline/stdin text or full file path
score 0-100 integer
band "clean" / "light" / "moderate" / "heavy" / "saturated"
word_count integer
violations array of {type, rule, match, context, penalty, start, end}
counts per-category violation counts
total_penalty sum of all penalty values
weighted_sum after concentration multiplier
density weighted_sum per 1000 words
advice array of advice strings, one per distinct issueMCP工具响应省略 source,因为工具运输工具已经携带 输入参数。
violations[].type 总是 "Violation" 用于打印记录。
基准快照
分数分布示例 benchmark/us_pd_newspapers_histogram.py 上 PleIAs/US-PD-Newspapers (一个本地分片的前9001行):
示例分数与长度散点图 benchmark/us_pd_newspapers_scatter.py 在同一个分片上:
slop-guard score vs length scatter
根据规则计算时间曲线的示例 benchmark/compute-time.py + benchmark/chart.py (以最大长度标注最慢的规则):
slop-guard per-rule compute time
许可证
麻省理工学院
致谢
- @米亚诺特 感谢他们的贡献和许多关于该项目的有益对话。
