mcpField
C
clean-user-facing-text

clean-user-facing-text

github.com/guillaumemeyer文档处理25.3k498 次安装1 周前更新
代码仓库

关于 clean-user-facing-text

这是一个独立运行的技能,用于润色面向用户的文本,同时保留事实、语气、披露内容和格式。它通过本地脚本检查文本、清理 Unicode 痕迹并衡量统计信号,仅在评分等级要求时改写。

主要功能

  1. 01检查文本并衡量文体统计信号
  2. 02用本地脚本清理 Unicode 痕迹
  3. 03编辑时保护代码和事实细节
  4. 04仅在密度等级较高时改写
  5. 05说明评分局限,不声称文本真实

适用场景

  1. 01润色获授权的用户文案
  2. 02审查文本但不进行改写
  3. 03清理文本文件中的 Unicode 痕迹

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/guillaumemeyer/watermarks-remover --skill clean-user-facing-text

安装后在 Claude Code 中输入/clean-user-facing-text确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
detectors.md
responsible-use.md
watermark-notes.md
writing-in-your-voice.md
scripts/
clean_text.py
common.py
inspect_text.py
score_stylometry.py
text_unicode.py

详细介绍

清理面向用户的文本

对用户拥有或获准处理的文本进行最后一轮清理。将 Unicode 清理视为确定性操作,将降低统计水印特征视为尽力而为;绝不声称改写可以证明内容由人类创作或无法被检测。保留必需的学术、法律、平台和监管披露。

工作流

  1. 找出读者会看到的文本。

  2. 保护非文本片段:

    • 围栏代码块和行内代码
    • 命令、路径、URL、标识符、API 名称和精确值
    • 公式、引文,以及用户要求逐字引用的文本
  3. 保留每项主张、事实、数字、名称、引文和要求。绝不为了让文本更好写或更多样而编造细节、名称、数字、引文或来源;如果缺少事实,应指出缺口,而不是自行补全。改写可以让表达更精确、更简洁或调整顺序,但不得增删主张。

  4. 先测量。 使用随附的零 LLM 文体计分估算器检查并评分输入文本(参见「评分」),记录分数。读取报告中的 density_tier:仅当其值为 high 时才改写;若为 low 或 medium,请核对文本,其余部分保持不变。对于只标记问题、从不改写的审查,请使用 --audit:

    PYTHON "$SCRIPTS/inspect_text.py" --stylometry --json INPUT
    PYTHON "$SCRIPTS/inspect_text.py" --audit INPUT  # detect-only: lists flagged spans, no rewrite
    
  5. 修改文本前,先确定写作要求:

    • 仅当用户拥有某个语气样本或获准使用该样本时,才使用它;不要模仿其他具名人士
    • 没有样本时,应让文本清晰自然,不要假装在模仿某个特定人物
    • 绝不注入原文没有的语气:不得伪造第一人称表达(如「我见过这种情况」)、编造具体信息、刻意唱反调、假装坦率,也不得添加立场或个性。保留作者有意留下的不完美之处和领域术语,不要一概抹平
    • 保留必需的披露、不确定性,以及作者真实的观点
    • 选择适合文本的语气和领域预设(参见「语气和领域预设」);默认使用通用文本
  6. 第 A 层——先清除伪影。 对文本伪影或用户提供的文本文件,先运行确定性 Unicode 清理,再进行改写,确保改写基于干净、无标记的文本:

    PYTHON "$SCRIPTS/clean_text.py" INPUT -o OUTPUT --stats --no-normalize-spaces
    
  7. 第 B 层——只改写一次。 仅改写剩余文本,并按顺序应用检测器调节手段(参见「检测器调节手段」):

    • 调整从句顺序、句子边界、节奏、连接词和功能词
    • 将公式化的过渡语和填充语替换为直接、自然的表达
    • 保留让文本具有作者辨识度的具体细节和判断
    • 将不寻常的语法、重复、直白表达和措辞视为可能体现个人语气或无障碍需求的选择;只有用户提出要求,或这些表达明显影响阅读时,才进行修改
    • 保留用户要求的语言、语气、结构和格式;除非用户提出要求,否则绝不翻译
    • 对于非英语文本,使用符合该语言习惯的流畅表达,而不是英语句式
    • 不得仅为增加变化而增删主张
  8. 再次运行第 A 层。 对改写后的文本运行确定性 Unicode 清理,清除改写引入的伪影(智能引号、长破折号、形近字符):

    PYTHON "$SCRIPTS/clean_text.py" OUTPUT -o FINAL --stats --no-normalize-spaces
    
  9. 改写后测量。 使用相同方法为改写文本评分。若有评分和置信度等级,请一并报告;否则报告 status: insufficient_length。改写后分数降低,只表示可测信号发生了变化;这不是任何检测器给出的判定,也绝不凌驾于上述事实和语气规则之上。

  10. 除非用户要求审查或解释,否则只返回润色后的结果。

若需了解如何在保留作者语气的同时去除公式化表达,请在用户要求保留或调整语气时阅读 references/writing-in-your-voice.md。 若需了解检测器的实际测量对象以及哪些说法合理,请阅读 references/detectors.md。

评分

scripts/inspect_text.py --stylometry(或独立脚本 scripts/score_stylometry.py,也接受 --explain)会运行从服务流水线移植而来的零大模型估算器:句长突发性(变异系数)、每 100 个词的加权 AI 节奏短语密度、词汇多样性(MATTR),以及经过衰减处理的 0 到 1 综合评分。退出码为 1 表示评分达到或超过阈值(默认为 0.65)。报告还包含 density_tier(low / medium / high,未评分时为 uncalibrated),用于重新标注评分所处的区间,以便仅在 high 时启用改写流程。inspect_text.py --audit 会生成相同的评分和仅用于检测的标记片段列表,但不会改写文本。少于 30 个词时,估算器会报告 status: insufficient_length,而不是给出评分。这里的任何操作都不会访问网络;此技能可独立运行。

限制:该估算器针对统计检测器系列(困惑度和突发性类信号)进行了校准。它不是 GPTZero、Turnitin、Originality 或 Pangram 等训练型神经分类器的输出,也无法检测秘密密钥水印,更不能说明文本的真实性。改写后的低评分意味着测得的信号发生了变化;这并不能证明文本读起来像人类写的,也不能证明任何特定检测器会接受它。用户要求审计时,应将这些数字作为参考指标,而非定论(参见“报告”)。

确定性 Unicode 处理

将 SCRIPTS 解析为此技能的 scripts/ 目录。 使用适用于当前平台的 Python 3 启动器。将下方的 PYTHON 替换为:大多数 macOS/Linux 系统上的 python3、Windows 上的 py,或其他已验证的 Python 3 命令。

此技能可独立运行,会直接执行其随附脚本;它不依赖服务或网络。下方的确定性 A 层清理有意通过脚本调用,因此即使 HTTP 服务不可用,此技能也能正常运行。

编辑现有文件时,先检查文件(加入 --stylometry 以记录编辑前的评分):

PYTHON "$SCRIPTS/inspect_text.py" --stylometry --json INPUT
PYTHON "$SCRIPTS/clean_text.py" INPUT -o OUTPUT --stats --no-normalize-spaces
PYTHON "$SCRIPTS/inspect_text.py" --stylometry --json OUTPUT

标准输入请使用 -。除非用户明确要求原地编辑,否则优先输出到新的 *.cleaned.* 文件。

默认不要使用 --no-normalize-spaces,以保留 NBSP、窄不换行空格、数字空格和 CJK 表意空格的布局语义。仅在用户要求时才规范化空格。

除非用户要求进行激进规范化,并接受可能对多语言文本、表情符号、文字方向或排版造成的改动,否则不要使用 --aggressive-homoglyphs、--nfkc 或 --strip-emoji-glue。

这些脚本支持将纯文本、源文本、Markdown 和 HTML 源码作为文本处理。对于混合 Markdown 或 HTML,应先检查命中位置。如果命中位于受保护的代码、属性或其他非正文片段中,不要清理整个文件;只清理正文片段,或保留该命中不变。不要传入 PDF、DOCX、图像或归档文件等二进制容器。

对于未写入文件、仅在聊天中回复的内容,请直接执行改写流程。不要声称聊天回复在发送后经过了确定性 Unicode 过滤。

检测器调节手段

统计检测器会对概率模式打分:AI 文本过于可预测(困惑度低)、过于平稳(突发性低),而且充斥着套话。下列调节手段针对这些信号,按效果从强到弱排列。第 1、2 和 6 项具有确定性或近乎确定性;第 3 至 5 项是目标,而非保证。只有在测量前的 density_tier 为 high 时,才使用改写手段;对于 low 或 medium,可测量的 AI 密度信号较弱,因此应先核实,否则保持文本不变。以下步骤的排序依据 references/detectors.md 中的模式目录。

  1. 先清除痕迹(始终执行)。 首先运行确定性的 Unicode 处理步骤(clean_text.py):不可见字符和同形异义字符是机械性标记,会影响所有检测器类别,而且清除成本很低。
  2. 去除套话词汇(困惑度)。 将 AI 常用词替换为朴素、具体、明确的表达:深入探讨、织锦、证明、凸显、促进、无缝、多面、无数、范式转变、发挥……的力量、发挥关键作用、在当今快节奏的世界中、需要注意的是。随附评分器的短语列表是需要核对的权威清单;改写后不得包含其中的短语。
  3. 增加突发性。 有意改变句子长度:两个长句后接一个短句,偶尔也反过来。节奏均匀、长度中等的句子(句长变异系数低于 0.35)是最明显的 AI 信号之一。
  4. 打散结构。 将程式化的部分融入正文:例如以“尽管有 X,未来仍一片光明”收尾、强行凑成三项、套用“挑战与机遇”的模板,以及公告式标题。
  5. 贴近真实语气并保留细节。 优先采用来源中的具体细节,而非泛泛的措辞;行文节奏应参照作者的样本(参见 references/writing-in-your-voice.md)。切勿为了提高差异度而捏造事实;包含虚构细节的改写即使得分较低,仍然不合格。
  6. 规范标点和 RLHF 语气。 使用直引号,不用破折号,不加粗小标题,不说“希望这能帮到你”或“作为 AI”,也不使用用户不需要保留的模棱两可表述、完美主义措辞或过度谨慎的免责声明。必须保留的披露内容除外。
  7. 可选:递归改写。 对于带密钥的统计水印(KGW、SynthID-Text 风格),任何保留原意但改变词元顺序的改写都会降低检测效果,而回译或重复改写是目前已知效果最强的处理方式。只有在用户要求降低水印检测率时才这样做:每增加一轮处理,都有语义偏移的风险,而且无法在本地验证供应商的秘密密钥。

诚实说明:这些调节手段针对的是统计检测器。经过训练的神经分类器已通过对抗式训练来抵御释义式编辑(参见 references/detectors.md);要应对这类分类器,唯一稳健的手段是贴近真实的人类文本分布,即便如此也无法保证效果。

语气与领域预设

预设会调整各项手段的使用力度,以及允许多少个性表达。它们 绝不会凌驾于事实规则之上(小说除外,见上文第 3 步),也 不能保证任何检测结果。

预设个性节奏与措辞要消除的内容
通用文章(默认)优先保留作者的语气,不注入立场适度变化,使用自然的衔接词陈词滥调式 AI 词汇、千篇一律的节奏
随笔 / 博客欢迎表达立场、插入题外话和复杂情绪长度变化明显,节奏不均匀夸大意义、格言式套话、三段式
技术 / 文档中性、准确适度变化,使用简短的陈述句宣传用语、长破折号、加粗的小标题;保留代码和标识符
学术 / 专业正式,以证据为先变化克制,谨慎使用保留措辞夸大其词的动词、为显新颖而填充内容、堆砌引文;保留学科要求
商务 / 产品文案朴实陈述,突出具体价值句子直接“无缝”“赋能”、含糊的好处、三段式;保留必要的免责声明
小说允许虚构细节根据叙述者调整变化千篇一律的节奏、编辑式陈词滥调;保留方言和独特习惯
浅白语言子模式

对于流程、运行手册、错误信息和其他面向工程师的文本,用户可以 要求采用浅白语言子模式:使用简短、常见的词语,每句话只包含一条指令,步骤使用祈使动词,每个术语只表达一种含义,不使用营销形容词或没有边界的保留措辞。此子模式是清晰度底线,不是新的个性风格:它会有意淡化语气,但保留每项主张和要求,也不是规避检测的工具。随笔、帖子和个人文章应改用上述保留语气的预设。

代码边界

当文章和代码混在一起时,只改写文章。作为此技能的一部分,绝不重命名变量、修改字符串字面量、重新格式化代码或更改可执行输出。Markdown 或 HTML 文件中如含有可执行代码片段,应尽可能逐字节保留这些部分。

报告

用户要求审计时,请区分:

  • 可验证: 删除或替换的 Unicode 字符及其文字系统计数;改写前后的文体统计分数及置信度(仅作参考,不作为定论)。
  • 尽力而为: 改写文章,以改变词元和句法模式。
  • 尚未证实: 能否规避官方检测器、是否由人类创作,或是否移除了供应商的秘密密钥水印。

关于技术背景,请阅读 references/watermark-notes.md。关于滥用或披露问题,请阅读 references/responsible-use.md。

评论

支持 Markdown