All skills
cat-xierluo avatar

/de-ai-polish

@6113db6

检测并修订中文文章正文中的模板腔、姿态腔、隐藏排比、分析型例证同构、重复语义骨架、假排名、固定节拍和其他 AI 化表达,同时保护作者事实、既有标题层级、必要功能性列举、法律术语、Markdown 图片与既有声音。文章完成初稿后、用户要求“去 AI 腔/更像真人/按作者样本改写/检查排比或口吻”时必须使用;无作者样本时只做最小清理,不得凭空注入第一人称、比喻、短句金句或经历,也不得借去 AI 之名重做文章结构。

Use this Skill: https://skilld.dev/gh/cat-xierluo/legal-skills/de-ai-polish

This session only. Nothing lands on disk.

SKILL.md

≈146 tokens always: the name and description. ≈6k when used: this file. ≈32k more on demand in 49 files.

De AI Polish

核心立场

去 AI 化不是禁词替换,也不是给文本注入“公众号人设”。按以下优先级处理:

  1. 作者事实与判断来源:不编造经历、感受、材料和立场变化;
  2. 段落功能与信息结构:保护分类、步骤、责任分配和必要重复;
  3. 自然表达:删除姿态、模板、语义稀释和机器节拍;
  4. 声音校准:只有用户提供或明确选择样本时才匹配 voice。

判断一句话时先问它承担什么功能,再问它是否像 AI。词表只用于召回,不能替代通读。

职责边界:只修正文,不接管标题结构

de-ai-polish 负责正文句子和段落内部的语言表达,不负责文章的信息架构。二级、三级标题及其他 Markdown ATX 标题属于 WeChat Article Writer 或原写作流程的职责范围。

因此默认执行以下边界:

  • 保留源稿全部标题行的文字、层级、编号和顺序;不新增、删除、改名、升降级或重排标题;
  • 内部段落功能标注、临时分组和问题归纳只用于分析,不能变成成稿里的新标题或编号;
  • 正文存在隐藏列表时,在原有标题框架内通过合并、承接、因果、时间或场景重组处理,不为每个分析分组另设小标题;
  • 标题本身若有明显模板腔,在报告中标记并建议交给 WeChat Article Writer 处理,本 Skill 不直接修改;
  • 用户若另行要求调整标题体系,先完成去 AI 正文修订,再把标题任务交给相应写作 Skill,不把两项职责混成一次改写。

使用模式

/de-ai-polish detect @article.md   # 只检测并给出 finding
/de-ai-polish fix @article.md      # 在原文件上修订并执行交付门禁

detect 只读,不生成快照或修改文件。fix 必须执行完整工作流。

按需读取参考资料

  • 扫描污染模式:读取 references/pollution-patterns.md。
  • 决定删、合并、恢复列举或重建句子:读取 references/expression-transformations.md。
  • 处理连续短段、隐藏列表和功能性排比:读取 references/sentence-rhythm-guide.md。
  • 使用作者样本或本机私有 anchor:读取 references/personal-style-guide.md。
  • 选择本机私有 anchor:先读取 assets/local-voice-anchors/config.json;用户明确给出 ID 时使用该 ID,否则只在用户已经选择 local_anchor 时读取 default_voice_anchor_id。随后读取同目录下 <voice_anchor_id>.md。整个目录只存本机材料,并由项目 .gitignore 排除。
  • 交付评分:读取 references/quality-scoring.md。

不要一次加载无关参考文件。SKILL.md 负责流程,细节以对应 reference 为准。

启动闸门

1. 判定场景

scene 默认力度 重点 保护范围
legal_document 克制 姿态、过程、格式 最宽
wechat_public_comment 较强 模板、节奏、语义稀释 标准
chat_reply 最小 谄媚、协作痕迹 标准
general 中等 全类 标准

法律文书中的正式语体、程序术语和固定结构默认保留。

2. 判定 voice 模式

voice_mode 使用条件 允许行为
cleanup_only 没有作者样本或用户未要求匹配声音 只清理和澄清;不得注入人设
provided_sample 用户提供并授权本次使用的样本 提取十维 profile 后匹配
local_anchor 用户明确要求使用本机个人声音,且配置与对应文件存在 按显式 ID 或本机默认 anchor 的深层 profile 校准

本机私有 anchor 不属于公共 Skill 内容。default_voice_anchor_id 只是 local_anchor 模式内部的缺省选择,不得把普通 cleanup_only 请求自动升级为个人声音。不得把样本正文、作者 profile、高辨识短语或本机注册表复制到公开配置、测试 fixture、日志或评测元数据中。

3. 写入运行计划

<!-- skill-lint:constraint SCENE-DECLARED-BEFORE-REWRITE --> <!-- skill-lint:constraint VOICE-MODE-DECLARED-BEFORE-REWRITE -->

fix 模式在改写前创建候选外 run-plan.json:

{
  "schema_version": 2,
  "scene": "wechat_public_comment",
  "voice_mode": "local_anchor",
  "voice_anchor_id": "my-writing-anchor-v1",
  "protected_spans": []
}

约束:

  • cleanup_only 的 voice_anchor_id 必须为 null;
  • provided_sample 使用本次稳定样本 ID,不写样本正文;
  • local_anchor 使用稳定 slug 作为 voice_anchor_id:显式 ID 优先;未给 ID 时,从 assets/local-voice-anchors/config.json 读取 default_voice_anchor_id。并要求注册项及同目录 <voice_anchor_id>.md 均在本机存在;
  • 本机 anchor 缺失时停止 voice 校准,回退到 cleanup_only 或请用户重新提供样本,不得假装已经读取;
  • 不得在改写后倒填 scene、voice 或 Protected Spans。

完整工作流

Step 1:通读、保护与作者证据

完整通读全文,不得只用正则或 grep 检测。先理解文章要解决的问题、核心判断、目标读者和现有语气。

在任何改写前生成双快照:

python3 scripts/protected_markdown_gate.py snapshot \
  --input <源文件.md> \
  --output <临时目录>/de-ai-protected-lines.json

python3 scripts/heading_preservation_gate.py snapshot \
  --input <源文件.md> \
  --output <临时目录>/de-ai-heading-lines.json

python3 scripts/delivery_gate.py snapshot \
  --input <源文件.md> \
  --run-plan <临时目录>/run-plan.json \
  --output <临时目录>/de-ai-delivery-manifest.json
<!-- skill-lint:constraint PROTECTED-SPANS-PRESERVED --> <!-- skill-lint:constraint PRESERVE-MARKDOWN-IMAGE-LINES --> <!-- skill-lint:constraint PRESERVE-MARKDOWN-HEADING-LINES -->

把以下内容写入 protected_spans 并逐字保护:

  • 法条、司法解释、案号、合同条款编号;
  • 当事人、机构、律所和公司全称;
  • 程序术语、直接引语和正式引证;
  • 数值、日期、比例、金额、期限和 URL;
  • 用户要求保留的其他字符串;
  • 整段 Markdown 图片语法及其所在整行。

同时为需要“作者在场”的关键判断填写 references/personal-style-guide.md 中的作者证据卡。材料不足时标记 AUTHOR_MATERIAL_NEEDED。不得把一般知识改成“我发现”,也不得编造真实案例或写作经历。

不要把全文反复出现的主题词、核心概念或普通术语登记成要求出现次数完全相同的 protected_span,例如文章主题本身的“抽象泄露”。这类词要保持名称一致并保留必要定义,但删除重复段落时允许出现次数下降。若在改写后发现快照误把通用词锁死,不得为了过门禁机械补回;应废弃该次候选,从只读源稿重新选择真实字节不变量并建立新快照,同时记录重启原因。

标题整行属于结构保护项。标题内即使命中模板词,也只记录 finding,不在本流程中改写。

Step 2:标注段落功能

给每段标一个主功能:FACT / EXPERIENCE / JUDGMENT / MECHANISM / EXAMPLE / BOUNDARY / TRANSITION / SUMMARY。

重点检查:

  • 连续三段是否都在转场或总结,没有新增事实和机制;
  • 每段首句是否用评价词宣布“这一项更重要”;
  • 下一段是否承接上一段对象,还是依靠框架提示重新启动;
  • 观点是否有来源,推断是否被写成事实。

功能标注只作为改写中间表示,不写入交付正文,也不得转写成新的二级、三级标题或编号。

在扫描和改写前,再建立候选外的论证脊柱账本。逐段记录不能被上位总结替代的唯一信息:

源稿锚点:可定位短片段
唯一载荷:该段新增的对象、区分、因果环节、例外、反方、比较、风险放大因素或认识边界
在全文中的作用:它把上一段推进到哪里
处理:逐项保留 / 合并但保留全部载荷 / 可删除的重复
改稿落点:最终段落位置

以下内容默认进入脊柱账本:提出核心区分的段落;把一个对象推进到下一条件或后果的中间环节;“风险并不均匀/为什么某一层更危险”一类分布判断;反例、例外、反方与跨领域比较;互不替代的多个放大因素;解释作者为何得出结论的材料或认识边界。

更短、更整齐的上位总结不能替代这些载荷。若源稿先区分风险分布,再解释中间层为何更容易取信,随后列出三个放大因素,改稿不能只留下“法律风险更高”。改写后的每个 逐项保留 项都必须有可定位落点;找不到落点就回到源稿恢复机制,而不是在报告中解释已经概括。论证脊柱账本只约束正文,不进入读者正文。

Step 3:两轮独立扫描

开始前先声明本轮覆盖范围和未覆盖范围。

词汇与模板层

读取 references/pollution-patterns.md,扫描姿态、对比、过渡、大词、模糊频次、黑话、强加口语、格式和过程残留。频次只触发复核,不自动决定修改。

结构与段落层

独立扫描:

  • 连续相同虚词、疑问词、被动式和短段;
  • 每两三段固定出现的短句金句;
  • 同一对象的同义词轮换;
  • 显式列表被改成隐藏列表;
  • 最典型 / 最容易 / 也容易 / 类似的还有等伪装排比;
  • 一组分析例子是否被编辑者逐项扩成同长度、同功能、同收束方式的段落;
  • 同一语义关系是否只换了主语、动词或转折词后跨段、跨节重复,例如反复写“工具能完成表层任务,但判断仍需由人作出”;
  • 标题承诺“N 层、N 种、N 步”后,正文结构是否被错误打散。

Step 4:先判定列举功能,再决定保护或重组

不要把所有“有多个项目”的正文都归为功能性列举。先回答两个问题:读者是否需要逐项执行、核对、比较或追踪?项目的顺序、数量或独立边界是否承担文章承诺?

以下结构默认保留显式序号和平行句式:

  • 分类、层级、步骤、清单、责任分配;
  • 法条、合同条款和固定格式;
  • 为核对输入、输出、主体或条件而设置的平行结构。

若多个项目只是共同证明一个判断,读者不需要逐项操作,它们属于分析型例证组,不能因为“怕遗漏”就自动扩成连续的“一是、二是、三是”同构段落。按以下顺序处理:

  1. 先找源稿已经存在的关系:共同条件、相互影响、冲突、时间先后、风险分配、审查路径或责任主体;
  2. 在候选外填写 references/expression-transformations.md 的“关系证据卡”,除关系两端各自的锚点外,还必须抄录关系本身的源稿锚点;
  3. 关系本身的锚点必须在同一处源稿中同时提到两端,或明确让同一个具体变量约束两端。只有 A 的材料和 B 的材料、没有原文连接句时,关系不成立;
  4. “必要推论”只允许换一种说法复述源稿已经存在的关系,不能凭专业常识补出时间顺序、程序路径或共同目标。模型自身的法律常识、行业惯例和“通常会怎样”不算源稿材料;
  5. 用通过证据卡的关系组织至少两个例子,让后一段承接前一段留下的对象或问题;
  6. 若源稿没有足够材料支持关系,只把例子压缩为诚实的一句或一段列举,不虚构客户、案件、谈判过程、审查条件、因果后果或生活场景;
  7. 不要求每个例子拥有等长说明、相同段首和相同结论。

关系层不得成为内容扩写许可。不得为了让两个条款“连起来”,新增源稿没有出现的交易联系、履行地点、付款里程碑、程序路径、经营限制、技术使用后果或其他专业分析变量。用户若同时要求补充专业内容,应交给上游写作/研究流程;本 Skill 只在报告中标记 AUTHOR_MATERIAL_NEEDED。

关系证据卡、材料充足度、标题或导航保护、扫描范围和评测结论都属于候选外信息。它们只能改变正文的处理结果,不能成为正文内容。最终稿不得出现“按源稿”“源稿的导航仍保留”“材料不足以相连”“不是若干项检查任务”等面向编辑者或评测者的解释;材料不足时,直接保留独立例子或压缩列举,把 AUTHOR_MATERIAL_NEEDED 只写入报告。

“换词重复、同功能段落、连续同构、能力边界候选、门禁或阈值”等评测语言也不得进入正文。它们是扫描概念,不是文章概念。

“都属于合同风险”“都要结合具体合作”“都需要判断”“都发生在合作偏离或履行阶段”只是宽泛同类项,不是可写入的关系。真实关系必须满足至少一项:源稿明确用同一个具体变量同时约束两端;一端会改变另一端的解释、效果或处理顺序;源稿明确给出两端的冲突或相互作用。若只有一组关系通过证据卡,就只使用这一组,不为满足数量或段落节奏继续配对。

两端分别有锚点仍不够。例如源稿分别讨论违约金和管辖,不能因此补成“违约发生后进入诉讼,管辖继续影响程序”;源稿分别讨论知识产权使合作难以继续、解除条件影响退出,也不能自动合成“围绕合作继续或退出”的共同关系。除非源稿本身把两端放进同一关系句,否则让它们在同一段各自成立即可。

一个实用判断是:删去某一项会不会破坏分类或操作完整性?会,通常是功能性列举;只会减少一个论据,通常是分析型例证组。这个判断优先于项目数量和原稿是否已有序号。

不要为避免“排比”把“一是、二是、三是”改成“最典型、最容易、也容易”。如果内容本来就是列表,恢复序号;如果作者希望叙事,则必须按真实场景、因果或时间重组,不能只改段首。

恢复正文中的显式序号不等于新增标题。原稿没有小标题时,不得把每一项升级为 ## 或 ###;原稿已有标题时,标题行原样保留。

保护列举形式不等于认可分类逻辑。若各项不在同一分类尺度、粒度不一致,或两套“N 分法”被强行宣称一一对应,标记 STRUCTURE_REVIEW 并说明错位;除非用户同时授权论证重构,否则去 AI 流程只报告,不擅自发明新分类。

Step 5:执行最小充分改写

在既有标题框架内按问题选择操作:

  1. 删除没有独立信息的姿态句;
  2. 合并同义判断和连续短段;
  3. 把抽象评价改成对象、条件和后果;
  4. 恢复被误伤的显式列举;
  5. 把分析型例证从逐项同构改为由真实关系推动的段落;
  6. 基于用户提供的材料重建经验段;
  7. 仅在必要时重写整句或整段。

不要把禁词替换成固定同义词。不要为了长短句变化拆坏条件、例外和结论之间的联系。具体操作读取 references/expression-transformations.md。

不得把“重写整段”扩大为重做章节导航。正文改得再自然,只要标题行被新增、删除、改名、升降级或重排,就属于越界修复。

Step 6:按 voice 模式校准

  • cleanup_only:保留源稿已有语气,不新增第一人称、反问、比喻、对话感和短句配额。
  • provided_sample:读取授权样本,提取十维 profile 和反例;只匹配适合当前场景的维度。
  • local_anchor:读取指定的本机私有 anchor;学习判断来源、不确定性、段落动力和功能性列举,不复制原句、事实或场景专属主语。

作者样本不能弥补内容不足。Voice Calibration 只调整表达,不制造事实深度。

声音校准也不得提高判断强度。逐项比较源稿与改稿的确定性:我不这么看 / 我仍有保留 / 可能 / 未必 / 取决于不能被改成这个判断错了 / 下得太早 / 必然 / 决定 / 一定会;源稿没有频率范围时,不新增“已经不算少见、越来越多、通常如此”。VoiceAnchor 提供的是判断方式,不是把文章立场写得更响亮的许可证。

启用 provided_sample 或 local_anchor 时,改写后运行新增重合门禁。它只拦截相对源稿新出现的长连续重合,不把源稿本来已有的共同表述算成复刻,也不在默认输出中打印私有短语:

python3 scripts/voice_anchor_copy_gate.py \
  --source <源文件.md> \
  --final <最终文件.md> \
  --sample <作者样本或本机 anchor.md> \
  --min-chars 14

Step 7:修复伪影复扫

改写后单独执行一轮反向检查:

  • 是否把清楚列表改成假排名或隐藏列表;
  • 是否从旧禁词逃到新口癖;
  • 是否强加第一人称、比喻、口语或短句金句;
  • 是否编造作者经历、感受、讨论或判断变化;
  • 是否复制 voice anchor 原句、高辨识短语或事实;
  • 是否为了“自然”损坏专业准确性、必要重复和段落逻辑;
  • 是否把分析型例证组逐项扩成等长、同功能、同收束方式的段落;
  • 是否为建立关系层新增了源稿没有的变量、审查条件、因果或后果;关系证据卡是否能定位到两端源稿锚点;
  • 是否出现三个以上功能相同、句式近似的段落开头;
  • 是否跨段、跨节反复使用同一个语义关系骨架,只替换了任务名和转折词。
  • 是否把源稿的保留、可能性或未知改成更强的裁断、频率和必然后果。
  • 是否把内部分析分组写成了新标题,或改动了原有标题的文字、层级、编号和顺序。
  • 是否把“源稿、导航保留、材料不足、关系证据卡、扫描或交付”等候选外过程写进了读者正文;证据不足必须表现为克制处理,而不是向读者解释修订过程。
  • 是否保留或新增“先承认一个前提”一类通用框架启动语,而没有直接进入事实或判断。
  • 是否通过省略 AI 主语、把限制改成“另一项工作/难点在于/只对应”,让同一能力边界逃过复扫。
  • 是否把多处重复判断压成“X 的是 A,不是 B”“工具退场/走到边界,留下判断与责任”等短金句;压缩不是去重,结尾只保留一个由前文自然抵达的完整结论。
  • 最后一节是否在解释价值、后续任务和责任后,又用同一组名词压缩总结一次;先给末节逐段标 JUDGMENT / MECHANISM / CONSEQUENCE / SUMMARY,只允许一个 SUMMARY,其他段落必须提供新的对象或机制。
  • 是否保留“AI 最危险/可怕/重要的时候,是……”等脱离新增机制的传播金句;源稿已有也不自动受保护,重复前文时应删除。
  • 是否把“入口顺滑”换成“更低的入口/低摩擦入口”等抽象入口隐喻;应直接写“不必从空白文档开始、启动成本下降、可以更早讨论”等实际变化。
  • 同一篇正文是否跨三段以上反复使用“入口/门槛/进入/回到内部/穿透/退场”等空间图式;中心概念最多保留一至两处必要解释,其余改成事实、审查动作和后果。
  • 论证脊柱账本中的每项唯一载荷是否都能在最终稿定位;是否用一个上位摘要替代了风险分布、中间机制、反例或多个放大因素。

发现修复伪影时回到 Step 2—5,不得继续同义替换。

对“工具能力 → 转折或限制 → 人的判断/经验/责任”这类高频骨架,再运行启发式复检。脚本同时观察显式主语,以及“初稿/外观/措辞完整/填空/规则复述/建议自洽”等隐式能力端。

原始候选只用于扩大召回,不是删除配额。紧跟“第 N 层/第 N 种/第 N 步”等显式导航标签的说明项单独列为 functional_navigation_item,不计入普通正文硬阈值;这些段落本来就承担逐项区分功能。豁免只保护分类结构,不保护同义复唱:若五项都以同一个“表面可做—仍需人类判断”收束,仍须人工改写为各自的对象、条件、机制或后果。

公众号评论对普通正文使用四道硬门禁:全文计数候选不超过 6,单节不超过 2,相邻同功能候选最多 1 个,最后一节最多 1 个。不要为了降计数,把包含具体对象、判断来源、条件和后果的段落压成无主语摘要;独立机制应保留,重复的是段落功能和收束方向,不是文章讨论“错误、限制或判断”本身。脚本失败必须继续修订,不能用报告中的人工归并覆盖;脚本通过后仍须人工检查功能性导航项是否真的各有机制。

python3 scripts/semantic_repetition_gate.py \
  --file <最终文件.md> \
  --max-count 6 \
  --max-per-section 2 \
  --max-final-section 1 \
  --max-adjacent 1

Step 8:标点修正

只在正文改写完成后运行:

python3 scripts/fix_punctuation.py <文件路径>

脚本必须跳过 YAML、代码块、行内代码、URL、Markdown 链接和 Markdown 图片整行。图片行发生任何变化都视为失败。

Step 9:评分与交付门禁

读取 references/quality-scoring.md,按自然度、节奏感、专业度、个性度和精炼度评分。解释口径:

  • 节奏感评价信息推进是否自然,不奖励固定长短句序列;
  • 个性度在 cleanup_only 下评价是否保住源稿声音,在 voice 模式下评价 profile 匹配;
  • 总分不能覆盖修复伪影、虚构作者材料或功能性列举受损。
<!-- skill-lint:constraint QUALITY-SCORE-GATE-PASSED -->

生成绑定最终文件 SHA-256、scene、voice mode、anchor ID 和分数的 score-receipt.json,再运行:

python3 scripts/protected_markdown_gate.py verify \
  --manifest <临时目录>/de-ai-protected-lines.json \
  --final <最终文件.md>

python3 scripts/heading_preservation_gate.py verify \
  --manifest <临时目录>/de-ai-heading-lines.json \
  --final <最终文件.md>

python3 scripts/delivery_gate.py verify \
  --manifest <临时目录>/de-ai-delivery-manifest.json \
  --final <最终文件.md> \
  --score-receipt <临时目录>/score-receipt.json

python3 scripts/style_regression_gate.py <最终文件.md>

只有图片保护、标题保护、交付绑定以及假排名、编辑过程泄漏、框架启动语和压缩金句逃逸回归门禁均退出 0;启用 voice 时新增重合门禁退出 0;语义骨架复检和人工关系层复扫没有未处理项,才可交付。

Detect 输出格式

每条 finding 至少包含:

锚点:原文位置或短片段
段落功能:该句本应承担什么
主污染类型:七类之一
问题:为什么像模板、隐藏列表或修复伪影
读者影响:会造成何种理解或信任问题
处理:删除 / 合并 / 直接陈述 / 补足 / 恢复结构 / 作者补料

不要只报“命中某词”。保留项写明功能和理由。

完成边界

  • 脚本门禁只能证明候选绑定、保护项和评分步骤得到执行,不能证明主观评分正确。
  • 标题保护门禁只证明 ATX 标题行的文字、层级、编号和顺序未变,不证明原有标题体系本身合理;标题结构优化属于其他写作 Skill。
  • 分析型例证与功能性列举的区别依赖文章任务,不能只靠序号或正则判断。
  • 语义骨架和长连续重合门禁只能召回已知风险,不能替代通读,也不能证明没有语义模仿或事实污染。
  • 正则回归只能拦截已知修复伪影,不能替代通读。
  • 缺少作者材料时明确报告 AUTHOR_MATERIAL_NEEDED,不要声称已经获得真情实感。
  • 未执行真实改写或没有最终文件时,不生成虚假评分回执。

Source: SKILL.md on GitHub

1 warning15d4 checks · Risk SAFE
  • Gen Agent Trust Hub15d

    The de-ai-polish skill is a sophisticated NLP toolkit designed to naturalize AI-generated Chinese text. It utilizes a robust framework of internal validation scripts to ensure Markdown structure preservation (images and headings) and stylistic integrity without relying on external dependencies or performing risky network operations. The implementation follows security best practices, including privacy-preserving hashing for logs and defensive coding to prevent data leakage.

  • Socket15d

    No alerts

  • Snyk15d

    Risk: LOW · No issues

  • Runlayer7mo

    6/6 files flagged

Signed by skilld at 6113db6. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 18 hours ago.

Activeupdated 2 months ago
Other metadata
metadata
{
  "author": "杨卫薪律师(微信ywxlaw)",
  "homepage": "https://github.com/cat-xierluo/legal-skills",
  "version": "3.2.6"
}

README badge

README badge for cat-xierluo/legal-skills/de-ai-polish