关于 Patina
Patina 是一款离线写作检查工具,适合修改 AI 生成或自行撰写的草稿。它会标出可能显得像机器生成的句子并说明原因,但不会改动文件。
主要功能
- 01标记机器化短语和句式
- 02为可预测句子排序
- 03将句子特征与人类写作范围对比
- 04检查短标题和标语
- 05提供不同写作场景的配置
- 06以命令行工具和 MCP 服务运行
适用场景
- 01分享前检查 AI 草稿
- 02发现个人写作中的风格习惯
- 03发布前检查标题
- 04在 CI 或提交前加入写作检查
MCP 相关
Patina 可在本机作为 MCP 服务运行,提供 patina_check、patina_explain、patina_rules 和 patina_profiles 四个工具,以及 rewrite_with_patina 提示词。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Patina
借助 AI 写作,依然保留你的风格。 Patina 会标出草稿中读起来像机器写的句子,并告诉你原因。
AI 草稿能节省时间,但往往也会留下几句你认识的人都不会说的话。Patina 会找出这些句子,并解释每句露馅的原因。它绝不会动你的文件,因此改写和写作风格都由你掌控。
它也适用于你亲自写的内容。如果人们总说你的作品听起来像 ChatGPT,Patina 会展示他们听到的是哪些习惯,由你决定哪些要保留。
检查内容
- 露馅点:读者已经学会识别的套话和句式。
- 可预测性:按优先级列出大模型最可能先写出的句子,让你知道从哪里开始。
- 句法范本:将每句话与两本已出版小说进行对比,衡量语法、用词、开头方式和逗号位置。超出人类范围的句子会被标出。
- 短句:为标题和标语提供简报、筛选器和冷读测试,让你在发布前了解陌生人是否能看懂。
前后对比
一篇短篇小说的开头:左侧是初稿 AI 草稿,右侧是用 Patina 改写后的同一场景。

每份草稿都不一样,所以最好的测试对象就是你自己的作品。它是免费的:用你写的内容试试看。
快速开始
你需要 Node 18 或更高版本。无需安装其他东西。
npx github:taxmanhaven/patina-showcase check my-draft.md
每个标记都会附上行和列、严重程度,以及读起来像机器写的原因:
my-draft.md:3:1 warning connector-open "Moreover," Let the ideas join by their own logic.
my-draft.md:3:14 warning style-words "delve" Use the plain word a person would say.
不确定某个标记是什么意思?使用 patina explain style-words。
使用 --profile 选择适合读者的配置:fiction、web(默认)、email、pro-email、technical、playful、captions、spoken、headline、testimonial 或 ui。如果你克隆了仓库,运行 node tools/cli.mjs 即可达到相同效果,无需 npx。
在你的 AI 应用中使用
Patina 也可以作为 MCP 服务运行,因此 Claude、Cursor 或任何支持 MCP 的应用都能在把草稿交给你之前自行检查。它在你的设备上离线运行,绝不会更改你的文本。应用可以使用四个工具(patina_check、patina_explain、patina_rules、patina_profiles)和一个提示词 rewrite_with_patina:先检查,只改写标记的句子,再次检查。
Claude Code:
claude mcp add patina -- npx -y github:taxmanhaven/patina-showcase mcp
Claude Desktop、Cursor 和其他应用只需在 MCP 设置中使用相同的命令:
{
"mcpServers": {
"patina": { "command": "npx", "args": ["-y", "github:taxmanhaven/patina-showcase", "mcp"] }
}
}
然后提出请求:“写一封产品发布邮件,并在给我看之前用 Patina 检查一遍。”
在 CI 中或提交前使用
通过时退出代码为 0,草稿不符合其配置要求时为 1,因此拉取请求无法合并读起来像套话的页面。--format github 会在拉取请求中行内显示标记:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 20 }
- run: npx -y github:taxmanhaven/patina-showcase check docs/*.md --format github
--format json 会将相同的标记提供给你自己的脚本。--fail-on any 会在出现任何标记时失败;--fail-on never 则只报告。
设置
patina init 会创建 .patinarc.json。Patina 会在文件所在文件夹及其所有上级文件夹中查找该文件:
{
"profile": "web",
"profiles": { ".md": "web", ".txt": "email" },
"disable": ["em-dash"],
"protect": ["A line you wrote on purpose"],
"failOn": "gate"
}
disable 可以接受一条规则(style-words)、一个类别(triplet)或一项衡量指标(rhythm、specificity)。patina rules 会列出所有规则。
更多工具
处理大量简短的应用文案时,使用 batch:
node tools/patina.mjs batch strings.json --report report.md
对于标题或标语,填写 templates/headline-brief.txt,然后:
node tools/patina.mjs brief brief.txt
node tools/patina.mjs lines --brief brief.txt --candidates candidates.txt
每个候选项按 technique | line / subline 的格式编写。相关技巧见 craft/headlines.md。
可选扩展
- 可预测性地图和冷读工具会通过兼容 OpenAI 的 API 调用大模型(默认使用 Prima Labs)。请将密钥放入
PRIMALABS_API_KEY环境变量中。Patina 会在进程中读取该密钥,且绝不会打印出来。node tools/predict.mjs my-draft.md --out predict.md - Copybook 的语法层需要 Python 3.12,以及 spaCy 和 wordfreq;这些需要自行安装:
如需将整篇草稿与人工写作范围进行对比:运行pip install "spacy>=3.8,<3.9" wordfreq python -m spacy download en_core_web_md python tools/intro_commas.py check my-draft.mdnode tools/sentences.mjs label my-draft.md --out draft.lab.jsonl(需要密钥),然后运行python tools/anatomy.py draft.lab.jsonl draft.an.jsonl,再运行node tools/copybook.mjs --draft draft.an.jsonl --panel。
Copybook 自带 norms/norms.json,其中包含人工写作范围,因此无需图书即可使用。规范中只有数字,不包含任何书籍正文。
此目录包含什么
| 文件夹 | 内容 |
|---|---|
tools/ | 命令行工具(cli.mjs)、MCP 服务(mcp.mjs)、检查器、可预测性地图、Copybook 和测试(npm test) |
craft/ | 标题写作指南和句子代码手册 |
norms/ | 根据两部已出版小说测得的人工写作范围,附带来源 |
templates/ | 标题简报 |
glossaries/ | 产品设计用语示例列表,用于检查设计用语泄漏 |
examples/ | 上文的前后对比图 |
corpus/ | 一章公有领域文本(Willa Cather 的 My Antonia),用作人工写作基准 |
明确的局限
- Patina 会指出问题,但不保证你的文本能通过任何检测器。专业读者能看穿换词,因此修正需要你自己重写。
- 规范来自小说。用于 README 或销售页面时,请将其视为参考指南。
- 扫描结果只是底线。最终由你自己的语感和你信任的读者来判断。
许可证
MIT。可使用、修改并在此基础上构建。examples/before-after.png 中的故事节选除外:其版权仍归作者所有。详情见 LICENSE 和 NOTICE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。