SuperAPI AI 工具集

patina

写作与研究

查看项目

更新于 10-16 11:34

技能介绍

用途

patina 是一个“AI 写作模式去除编排器”。它面向 AI 生成的文本,负责找出并去除其中特有的 AI 写作特征,把文字改写成看起来由人类撰写的版本。支持的处理语言为韩语(ko)、英语(en)、中文(zh)、日语(ja)。其改写结果宣称经过意义保留(Meaning-Preservation, MPS)校验。

主要能力

  • 多语言处理:通过 --lang 或配置中的 language 设置切换 ko / en / zh / ja。
  • 四种输出模式:rewrite(改写,默认)、audit、score、diff;另有 --strict 多趟严格模式(使用 rewrite 输出模式,不可与 audit/diff/score 同用)。
  • 三类风格轴:document-type(文档类型,决定文体惯例与 pattern-overrides)、persona(可复用的声音,缺省时保留原文声音)、register(casual | professional,缺省时保留原语域)。三者互不推断。
  • 模式包加载:按语言自动扫描 patterns/{lang}-*.md,并加载用户自定义 custom/patterns/{lang}-*.md;可通过 skip-patterns 排除特定包。模式分为结构模式(phase: structure)与句子/词汇模式两组。
  • 文档类型:优先读取 custom/document-types/{document-type}.md,否则读取 document-types/{document-type}.md,均无则用 default。namuwiki 仅限韩语,其他语言回退到 default。
  • 语义锚点提取(MPS):抽取 Claim / Polarity / Causation / Quantifier / Negation 五类锚点,每段最多 3 个,作为内部工作记忆,不对外输出。文本为 1 段以内且 2 句以内时跳过,MPS 记为 N/A。
  • 统计式可疑区间检测:基于 Burstiness(句长变异 CV)与 MATTR(移动平均类符形符比)等指标标记可疑段落,默认仅对 [ko, en, zh, ja] 运行;zh/ja 使用字符 token 回退方案。
  • AI 词汇重叠检测:用平面词典(lexicon/ai-{lang}.md,并加载 custom/lexicon/ai-{lang}.md)匹配 AI 特有措辞,按词密度阈值与最小命中数判定。
  • 韩语专用确定性诊断:包括 translationese、koPostEditese.v1 等仅作编辑提示的建议性元数据,以及参与 hot 判定的 ko_diagnostics_hot、ending_monotony 等复合信号。

使用方式

默认路径:带验证的 CLI 执行

除非用户明确要求 --instruction-only(或以同等明确的方式要求只用指令流水线),所有 /patina 调用与自然语言校订请求都走此路径。示例命令:

node <skill-directory>/bin/patina-skill.js --input <source-file> [--lang ko] [--backend codex-cli]
  • --input FILE 为必填;模式从 --mode rewrite|audit|score|diff 或别名 --audit、--score、--diff、--strict 中择一(默认 rewrite),模式旗标不可叠加。
  • 值旗标仅有 --lang、--document-type、--persona、--register casual|professional、--backend、--model、--config、--provider、--api-key-file。
  • 所有旗标均为可选覆盖项,省略的值由配置选择规则决定(分发默认值 → ~/.patina.yaml → 项目 .patina.yaml,若给了 --config 则用该文件)。
  • 辅助程序在 stdout 返回一行无内容的 JSON 摘要,包含 schemaVersion、ok、status、code、exitCode、receiptPath、outputPath、reportPath、sourceHash、outputHash、notice。
  • 只有当宿主观察到进程真实退出码为 0,且摘要为 ok: true、status: "verified"、exitCode: 0,并且对应 receipt 的终止状态为 verified、exitCode: 0 时,才可原样返回或复制 outputPath 文件内容。
  • 默认不改写原文件;仅当用户明确要求覆盖原文件时,才在应用前重读目标文件、计算 SHA-256 并与该次调用的 sourceHash 比对,不一致则拒绝。
  • audit/score/diff 为报告模式,成功时 status: "unverified-report",结果为 reportPath 的 JSON,不得当作已验证的改写结果呈现。
  • 失败(ok: false)时原文保持不变,报告退出码与稳定 code 后停止:exit 1 为配置/运行时/后端/存储失败,2 为参数/配置/输入错误,4 为验证拒绝,130 为取消。
  • 输入上限为 20,000 字符、80,000 字节;配置与执行合计预算 180 秒。
  • 多文件时逐个文件单独调用辅助程序;失败的文件记录代码、保持原样并继续下一个。
  • 无法使用命令执行工具时,应报告无法运行 CLI 并停止,或请求用户明确选择 --instruction-only,不得悄悄改用指令流水线。

可选路径:仅指令(--instruction-only)

仅在用户明确选择时启用,按 SKILL.md 中 1~6 步的原有流水线执行。该路径不调用 CLI、不生成 receipt,结果正文外必须标注:

instruction-only; CLI not run; no CLI verification

配置加载顺序

优先读取 SKILL.md 同目录的 .patina.default.yaml 作为分发默认值,然后按顺序读取 ~/.patina.yaml、./.patina.yaml。优先级为 .patina.default.yaml → ~/.patina.yaml → ./.patina.yaml → $ARGUMENTS。YAML 映射递归合并,blocklist、allowlist、skip-patterns 去重合并,其他数组由后设置的值替换。

可配置项包括:document-type、persona、register、patterns、skip-patterns、output、blocklist、allowlist。

批量处理旗标

  • --batch <files>:一次处理多个文件(glob 或显式路径列表)
  • --in-place:用校订后文本覆盖原文件
  • --suffix <ext>:结果保存为 {原文件名}{ext}
  • --outdir <dir>:结果保存到指定目录

后台与限制

  • 辅助程序只检查所选后端的就绪状态,选择可来自旗标或配置文件。patina doctor 通过其他后端并不构成所选后端就绪的证据,也不存在后端替换链;所选后端失败时报告失败,不偷偷改用其他后端。
  • 不存在的选项不应自行发明。

适用场景

适用于需要把 AI 生成的韩语、英语、中文、日语文本改写得更像人类写作的编辑场景,可用作改写、审计、评分或差异对比。

限制

  • 输入上限 20,000 字符 / 80,000 字节,执行总预算 180 秒。
  • custom/ 自定义模式、文档类型、词典、persona 均只是优先加载项,具体可用性取决于是否提供对应文件。
  • 统计式检测默认仅在 [ko, en, zh, ja] 上运行;zh/ja 使用字符 token 回退(不使用形态分析器)。
  • 韩语建议性元数据(translationese、koPostEditese.v1)仅作编辑提示,不参与评分、hot 判定、门限或作者判定。
  • namuwiki 文档类型仅限韩语。
  • 其余配置项、默认值及完整算法细节以资料中指向的 core/stylometry.md、src/features/index.js#analyzeText() 等文件为准,本页未展开的部分暂未提供。