de-ai-polish · diff

v2.2.0 to v3.2.6

253 added, 498 removed. Audit A to A.

---
name: de-ai-polish
- homepage: https://github.com/cat-xierluo/legal-skills
- author: 杨卫薪律师(微信ywxlaw)
- version: "2.2.0"
license: MIT
- description: 检测并去除文章中的AI化表述模式。**必须触发**:当文章经过写作流程(无论是模式1润色优化还是模式2内容创作)完成初稿后,在输出给用户之前,**必须**调用此 skill 进行 AI腔 检测和去除。不可跳过此步骤,不可仅凭感觉省略检测。任何"先输出再说"的做法都是不允许的。**不要用于**与文本润色/去 AI 化无关的任务(代码审查、法律检索、ASR 纠错等,使用对应的专门工具)。
+ description: 检测并修订中文文章正文中的模板腔、姿态腔、隐藏排比、分析型例证同构、重复语义骨架、假排名、固定节拍和其他 AI 化表达,同时保护作者事实、既有标题层级、必要功能性列举、法律术语、Markdown 图片与既有声音。文章完成初稿后、用户要求“去 AI 腔/更像真人/按作者样本改写/检查排比或口吻”时必须使用;无作者样本时只做最小清理,不得凭空注入第一人称、比喻、短句金句或经历,也不得借去 AI 之名重做文章结构。
+ metadata:
+ author: 杨卫薪律师(微信ywxlaw)
+ homepage: https://github.com/cat-xierluo/legal-skills
+ version: "3.2.6"
---
- # De AI Polish
- ## 快速开始
-
- 检测文章中的AI化表述:
-
- ```bash
- # 全文扫描检测
- /de-ai-polish detect @article.md
-
- # 直接修改
- /de-ai-polish fix @article.md
- ```
-
- ## 核心检测规则
-
- ### 总则:检测原则与通用模式
-
- > **核心原则**:以下清单和规则是**参考框架**,不是穷举清单。AI 写作的变体无穷,正则匹配必然遗漏。检测必须以 Agent 通读全文为主,清单仅作为辅助参考。
-
- AI化表述往往以**变体**出现,不会恰好匹配清单字面形式。遵循以下原则:
-
- 1. **向上溯源**:未列出的表述判断是否属于已知模板家族的变体(对比句式→递进结构→程式化转折→工整排比→程度副词堆叠→否定宣言→分离式对比→同义循环)
- 2. **频次红线**:以下词/结构在全文出现超**2次**即视为AI程式化:`越来越`/`越...越...`、`其实`、`往往`/`通常`/`很多时候`、`经常`/`常常`、`更重要的是`/`更麻烦的是`、`看起来`/`看来`、`真正`、`不只`/`不只是`、`更像`/`更像一个`/`更像一种`、`很容易`、`更容易`
- 3. **连续重复**:同一强化词在相邻句子连续出现即为AI痕迹(`才...才...`、`不是...而是...`、`就是X,就是Y,就是Z`)
- 4. **结构机械感**:三个以上并列项以相同虚词引导(`容易X、容易Y、容易Z`);句子开头用程式化引导词(`更麻烦的是`、`说到这里`);程度副词+抽象名词固定搭配(`有很强的体感`)
- 5. **同义循环**:不同词反复表达同一语义场,如`窄/小/平/浅/局限`、`变化/改变/转变/变革`,在短距离内超过3次即为AI词汇贫乏的表现
-
- ### 低 AI 污染类型学(v1.4.0)
-
- > 下面 7 类用于把本 skill 的细碎禁用风格归纳成稳定问题来源。原有 17 类清单继续保留,负责具体命中;本类型学负责先判断“为什么这句话像 AI”,再决定怎么改。
- > 结论:本 skill 的**负面风格清理项**可以完整归入这 7 类;`personal-style-guide.md` 中的正向个人风格是改写目标,不属于污染项。
-
- | 污染类型 | 问题来源 | 覆盖本 skill 中的规则 | 改写优先级 |
- |---|---|---|---|
- | 姿态污染 | 文本在评价自己、讨好读者或摆作者姿态 | 结尾姿态句、谄媚语气、自我陈述、评价式陈述、过度强调知名度、客观让步姿态 | 删除姿态层,直接保留事实、判断或经验 |
- | 模板污染 | 用固定句式组织观点,替代真实判断 | 对比句式、程式化连接词、AI 过渡语、导语式口癖、比较性与断定性表述 | 重写整句,改成直接陈述、因果、场景或并列 |
- | 语义稀释 | 模糊词、程度副词和大词冲淡信息 | 绝对化 / 哲学化 / 戏剧化、程度副词堆叠、模糊频次词、同义循环、空泛意义拔高 | 补足对象、条件、范围、结果;删掉无信息修饰 |
- | 节奏污染 | 句式、排比、短句和断句形成机器节奏 | 工整排比、疑问词排比、连续短段、长级联 `越...越...`、句子节奏问题 | 打散工整结构,合并碎句,恢复自然段落节奏 |
- | 概念污染 | 借黑话、隐喻、口号或专业词制造高级感 | 口号化隐喻、互联网黑话、引号误用、`格局/生态/闭环/模板/叙事` 等抽象词 | 能不用术语就改普通词;必须用时说明本文用法和边界 |
- | 过程泄漏 | 把 AI、调研、协作或写作过程暴露给读者 | 模糊归因、知识截止免责声明、协作交流痕迹、`以上是/请告诉我`、资料状态式表达 | 删除过程痕迹;正文只留可确认事实和作者判断 |
- | 格式污染 | 用格式包装替代正文表达 | 无序列表滥用、内联标题垂直列表、表情符号、过度粗体、引用块宣言、引号滥用 | 还原为自然段、合法清单或真实引用 |
-
- **使用方式**:
- 1. 先给每个疑似问题标一个污染类型,再查下方 17 类细则确认命中依据。
- 2. 同一句同时命中多类时,只保留一个主类型,其余写作协同原因。例如“`**这是 X**` 出现在引用块里”主类型是模板污染,协同格式污染。
- 3. 改写建议按主类型给完整句式,不做同义词替换。
-
- ### 一、绝对禁止类(必须去除)
-
- 以下模式在任何情况下都应去除,它们是最明显的AI痕迹:
-
- #### 1. 对比句式
-
- **必须去除的模式**:
-
- - `不是.*而是`
- - `并非.*而是`
- - `不在于.*在于`
- - `不在.*而在`(缩写形式,如「问题不在工具,而在…」)
- - `不再是.*而是`
- - `与.*是两回事`
- - `与.*不等同于`
- - `看似.*实则`(如:看似在讲隐喻,实则在讲生产方式)
- - `看起来.*其实`(如:看起来是X,其实是Y)
- - `可以.*但不能.*`(能力限定式对比,如"冷水可以让人清醒,但不能替人看见未来")
- - `不在于.*也不在于`(双重否定变体)
- - `远不只是.*`("不只是"的加强变体)
- - `这不是X。这是Y。`(分离式对比:把「不是…而是」拆成两句,本质相同)
- - `这不是X`(否定宣言:作为段落开头或独立断言,如「这不是想象」「这不是追热点」)
- - `**这是X**`(肯定宣言:作为独立加粗行或引用块,本质与否定宣言相同,只是省略了否定前缀,如「**这是提前移动自己的观察位置**」「**这是在新的信任机制里,为自己建立位置**」)
- - `低水平X...高水平Y` / `表层X...深层Y`(工整对称对比,常出现在引用块中)
-
- **改写策略**:根据上下文选择「删 / 合并 / 改写」。拆成独立陈述句或递进关系,避免为了强调而强行对比。改写时不要套用同一结构("本质上是X""症结在于X"),要根据语境灵活选择陈述、问答、因果、并列等替代方式。
-
- **否定宣言和肯定宣言的改写**:直接删除"这不是"或"这是"前缀,保留核心内容即可。加粗行本身的格式已足够传达强调,无需再用"这是"开头。
-
- **同义词循环**:
-
- **检测模式**:在短距离内使用多个同义词指代同一事物
-
- **示例**:
- - `主人公…主要角色…中心人物…英雄`(同一段落中用4个词指代同一人)
- - `系统…平台…工具…解决方案`(频繁换词但指代同一事物)
-
- **改写**:统一使用最准确的词汇,在上下文清晰的情况下重复使用同一词汇。
-
- #### 2. 程式化连接词
-
- **写作规则中已禁用**:
-
- - `首先`、`其次`、`此外`、`但是`、`因此`、`然而`
- - `一方面`、`另一方面`
- - `综上所述`、`总而言之`
-
- **AI 词汇库**:
-
- - `深入探讨`、`深入分析`(过度使用)
- - `强调`、`凸显`、`彰显`(过度重复)
- - `持久的`、`持久的证明`
- - `增强`、`增强其`
- - `培养`、`培养/促进`、`促进`
- - `获得`、`获得.*的认可`
- - `相互作用`、`复杂的相互作用`
- - `复杂/复杂性`、`错综复杂的`
- - `格局`、`整体格局`、`格局的演变`(抽象名词滥用)
- - `织锦`、`社会织锦`(抽象名词滥用)
- - `宝贵的`、`宝贵的经验`
- - `充满活力的`、`充满活力的社区`
-
- **肤浅分析表述**:
-
- - `突出/强调/彰显…,确保…`
- - `反映/象征…,为…做出贡献`
- - `培养/促进…,涵盖…`
- - `展示…,体现…`
-
- #### 3. 结尾姿态句
-
- **必须检测的表述**:
-
- - `方向已经明确`
- - `未来可期`
- - `拭目以待`
- - `这只是开始`
- - `让我们期待`
-
- **公式化展望**:
-
- **检测关键词**:
- - `尽管其…面临若干挑战…`
- - `尽管存在这些挑战`、`尽管面临挑战`
- - `挑战与遗产`、`机遇与挑战并存`
- - `未来展望`、`下一步计划`
- - `我们将继续关注`、`值得关注`
-
- **改写**:删除空洞的展望,用具体事实或具体计划结尾,或直接结束。
-
- #### 4. 口语化与随意表述
-
- **必须检测的词汇**:
-
- - `稳`、`挺稳`、`很稳`、`靠谱`
- - `飘`、`摇摆`、`不稳`
- - `搞定`、`没问题`
- - `迟早得`、`肯定`、`必须得`
- - 过度使用肯定词:`肯定`、`绝对`、`一定`
- - `跑偏`、`很顺`、`挺顺`等过于口语化的状态描述
-
- **随意化表述模式**:
-
- - `写长了`、`做多了`、`搞定了`等过于随意的说法
- - `迟早得拆`、`肯定会`、`必须得`等口语化表达
- - `接下来要盯的东西`、`接下来要关注的`等口语化表达
- - 用简短口语替代专业说明
-
- **改写方向**:使用更正式、更具体的表达("迟早得拆"→"需要考虑拆分","跑偏"→"偏离预期","很顺"→"顺畅")。
-
- **系动词回避**:
-
- - `作为/代表/标志着/充当 [一个]`、`拥有/设有/提供 [一个]`、`位于.*的中心`、`坐落于`
- - 改写:"作为X的Y"→"X是Y","设有Z个W"→"有Z个W","坐落于"→"位于"
-
- **谄媚语气**:
-
- - `好问题!`、`您说得完全正确!`、`这就是一个很好的观点`
- - 改写:直接陈述核心内容,删除讨好性表达。
-
- #### 5. 绝对化、哲学化与戏剧化表述
-
- **必须检测的表述**:
-
- - `并不是一个绝对命题`
- - `本质上`、`从根本上说`、`从本质上讲`
- - `必然`、`无疑`、`绝对`、`必须`
- - `真正的`、`核心的`、`关键的`(过度使用)
- - `推到底`、`刺痛感`
- - `这词听着玄`、`道理其实很朴素`
- - `天然`、`天生`、`自然而然`(绝对化自然表述)
- - `立刻`、`马上`、`立即`(过于绝对的时间表述)
- - `其实`(过度使用,显得矫饰)
- - `其实已经能看清`、`其实很简单`等带"其实"的表述
- - `很现实`(AI式绝对化判断)
-
- **过度强调意义**:
-
- - `作为.*的体现/证明/提醒`、`充当.*的证明`
- - `标志着.*关键时刻`、`见证了.*历史`
- - `是.*不可或缺的组成部分`、`是.*的重要体现`
- - `凸显/强调/彰显了其重要性/意义`
- - `反映了更广泛的`、`象征着其持续的/永恒的/持久的`
- - `为.*做出贡献`、`为.*奠定基础`
- - `关键转折点`、`不断演变的格局`
-
- **虚假范围**:
-
- - `从.*到.*`(检查是否在有意义的尺度上)
- - 例如:"从大爆炸到暗物质"这种无意义的大范围
- - 问题:强行用"从X到Y"结构,但X和Y不在同一尺度上
-
- **程度副词堆叠结构**:
-
- - `很+形容词/动词`:很直接、很吃人、很依赖、很麻烦
- - `非常+形容词/动词`:非常依赖、非常麻烦、非常清楚
- - `有+很+的+名词`:有很直接的感觉、有很强的体感、有很深的感受
- - 改写:用更精确的动词替代程度副词,或直接陈述具体状态
-
- **戏剧化感受词**:
-
- - 震动、震撼、触动、眼前一亮、引人入胜、令人振奋
- - 改写:换成更平实的表述("有意思"、"不一样"、"值得注意")
-
- **改写**:用弹性表达替代绝对化("必然"→"往往"/"多半"/"可能","本质上"→"通常"/"在某种程度")。保留空间感,不过度封死结论。
-
- #### 6. 工整排比与对称结构
+ # De AI Polish
- **必须检测的结构**:
+ ## 核心立场
- - 三个或以上的"既要...又要...还要..."排比
- - 强行对仗的并列句式
- - 工整的对称表达结构
+ 去 AI 化不是禁词替换,也不是给文本注入“公众号人设”。按以下优先级处理:
- **具体示例**:
+ 1. **作者事实与判断来源**:不编造经历、感受、材料和立场变化;
+ 2. **段落功能与信息结构**:保护分类、步骤、责任分配和必要重复;
+ 3. **自然表达**:删除姿态、模板、语义稀释和机器节拍;
+ 4. **声音校准**:只有用户提供或明确选择样本时才匹配 voice。
- - "既要说明'我是谁',又要说明'我在做什么',还要说明'我怎么做'"
- - "讲清楚口味、讲清楚底线、讲清楚习惯"(三个"讲清楚")
- - 过于工整的"一方面...另一方面..."
+ 判断一句话时先问它承担什么功能,再问它是否像 AI。词表只用于召回,不能替代通读。
- **疑问词排比**:
+ ## 职责边界:只修正文,不接管标题结构
- 三个以上疑问词引导的并列项,是 AI 列举场景时的典型结构:
- - `能不能...能不能...能不能...`(如"能不能下载,能不能直接跑,能不能少填几张表")
- - `怎样...怎样...怎样...`(如"怎样收集信息,怎样组织判断,怎样沉淀经验")
- - `如何...如何...如何...`(如"如何识别问题,如何做成工具,如何翻译工作")
- - `越...越...越...`(如"越理解工具,越容易提升效率;越提升效率,越容易输出")
+ `de-ai-polish` 负责正文句子和段落内部的语言表达,不负责文章的信息架构。二级、三级标题及其他 Markdown ATX 标题属于 WeChat Article Writer 或原写作流程的职责范围。
- 改写:将部分项合并为名词短语或动宾短语,打破统一句式。如"怎样收集信息,怎样组织判断,怎样沉淀经验"→"怎么收集信息、组织判断,怎么沉淀经验"(合并+缩减)。
+ 因此默认执行以下边界:
- **改写**:打破工整结构,改为陈述句或混合结构,避免三个以上相同结构的并列。
+ - 保留源稿全部标题行的文字、层级、编号和顺序;不新增、删除、改名、升降级或重排标题;
+ - 内部段落功能标注、临时分组和问题归纳只用于分析,不能变成成稿里的新标题或编号;
+ - 正文存在隐藏列表时,在原有标题框架内通过合并、承接、因果、时间或场景重组处理,不为每个分析分组另设小标题;
+ - 标题本身若有明显模板腔,在报告中标记并建议交给 WeChat Article Writer 处理,本 Skill 不直接修改;
+ - 用户若另行要求调整标题体系,先完成去 AI 正文修订,再把标题任务交给相应写作 Skill,不把两项职责混成一次改写。
- #### 7. AI过渡语
+ ## 使用模式
- **必须检测的过渡语**:
+ ```text
+ /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`。
- #### 8. 自我陈述
+ 不要一次加载无关参考文件。`SKILL.md` 负责流程,细节以对应 reference 为准。
- **必须检测的表述**:
+ ## 启动闸门
- - `我更愿意`、`我更倾向于`
- - `我给自己定`、`我设定了`
- - `我想强调`、`我想指出`
- - `我期待`、`我希望`
+ ### 1. 判定场景
- **渐进式自我陈述**:
+ | scene | 默认力度 | 重点 | 保护范围 |
+ |---|---|---|---|
+ | `legal_document` | 克制 | 姿态、过程、格式 | 最宽 |
+ | `wechat_public_comment` | 较强 | 模板、节奏、语义稀释 | 标准 |
+ | `chat_reply` | 最小 | 谄媚、协作痕迹 | 标准 |
+ | `general` | 中等 | 全类 | 标准 |
- - `我越来越觉得`、`我越来越认为`、`我越来越倾向于`、`我现在越来越`
- - 整篇文章中"越来越"出现超过2次
- - 改写:直接陈述观点,删除"我越来越"前缀。最多保留一处"我逐渐意识到"。
+ 法律文书中的正式语体、程序术语和固定结构默认保留。
- #### 9. 导语式口癖
+ ### 2. 判定 voice 模式
- **必须检测的表述**:
+ | voice_mode | 使用条件 | 允许行为 |
+ |---|---|---|
+ | `cleanup_only` | 没有作者样本或用户未要求匹配声音 | 只清理和澄清;不得注入人设 |
+ | `provided_sample` | 用户提供并授权本次使用的样本 | 提取十维 profile 后匹配 |
+ | `local_anchor` | 用户明确要求使用本机个人声音,且配置与对应文件存在 | 按显式 ID 或本机默认 anchor 的深层 profile 校准 |
- - `表面上看`
- - `更关键的是`、`更值得写的是`、`更重要的是`
- - `更大的变化在于`、`更实质的变化是`、`更X的是`/`更X的在于`("更"字引导的递进式宣言)
- - `从经验看`、`在实践中`
- - `这当然成立`、`毫无疑问`
- - `接下来会`、`接下来我们`
+ 本机私有 anchor 不属于公共 Skill 内容。`default_voice_anchor_id` 只是 `local_anchor` 模式内部的缺省选择,不得把普通 `cleanup_only` 请求自动升级为个人声音。不得把样本正文、作者 profile、高辨识短语或本机注册表复制到公开配置、测试 fixture、日志或评测元数据中。
- **频次表述重复**:
+ ### 3. 写入运行计划
- - `很多时候`(整篇文章出现超过2次)、`往往`、`通常`(过度重复)
- - 改写:第一处保留,后续替换为"多数情况下"/"常常"/"一般而言",或直接删除。
+ <!-- skill-lint:constraint SCENE-DECLARED-BEFORE-REWRITE -->
+ <!-- skill-lint:constraint VOICE-MODE-DECLARED-BEFORE-REWRITE -->
- **模糊归因**:
+ `fix` 模式在改写前创建候选外 `run-plan.json`:
- - `行业报告显示`、`观察者指出`、`专家认为`、`多个来源`(无具体出处)
- - 改写:删除模糊归因直接陈述,或提供具体来源"根据XX年XX的报告"。
+ ```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。
- #### 10. 口号化隐喻
+ ## 完整工作流
- **必须检测的表述**:
+ ### Step 1:通读、保护与作者证据
- - 信号、叙事、换挡、战场
- - 组合拳、闭环、模板、生态
- - 把……搬进、拖进……
+ 完整通读全文,不得只用正则或 grep 检测。先理解文章要解决的问题、核心判断、目标读者和现有语气。
- #### 11. 过度情绪化
+ 在任何改写前生成双快照:
- **必须检测的词汇**:
+ ```bash
+ 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
- #### 12. 过度强调知名度
- **必须检测的表述**:
+ 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`。不得把一般知识改成“我发现”,也不得编造真实案例或写作经历。
- #### 13. 无序列表
+ 不要把全文反复出现的主题词、核心概念或普通术语登记成要求出现次数完全相同的 `protected_span`,例如文章主题本身的“抽象泄露”。这类词要保持名称一致并保留必要定义,但删除重复段落时允许出现次数下降。若在改写后发现快照误把通用词锁死,不得为了过门禁机械补回;应废弃该次候选,从只读源稿重新选择真实字节不变量并建立新快照,同时记录重启原因。
- **检测标准**:列表是否在"堆积观点"而非"说明步骤";整篇文章无序列表出现超过2-3次应改为段落。
+ 标题整行属于结构保护项。标题内即使命中模板词,也只记录 finding,不在本流程中改写。
- **可接受场景**:操作步骤、检查清单、核心框架列举。
+ ### Step 2:标注段落功能
- **内联标题垂直列表**:
+ 给每段标一个主功能:`FACT / EXPERIENCE / JUDGMENT / MECHANISM / EXAMPLE / BOUNDARY / TRANSITION / SUMMARY`。
- - `- **用户体验:** 用户体验通过新界面得到显著改善`(粗体标题+冒号的机械列表)
- - 改写:改为段落式表达或正常列表格式。
+ 重点检查:
- **表情符号和粗体过度使用**:
+ - 连续三段是否都在转场或总结,没有新增事实和机制;
+ - 每段首句是否用评价词宣布“这一项更重要”;
+ - 下一段是否承接上一段对象,还是依靠框架提示重新启动;
+ - 观点是否有来源,推断是否被写成事实。
- - `🚀 **启动阶段:**`、`💡 **关键洞察:**`、过度使用 `**OKRs**` 等粗体
- - 改写:删除表情符号和过度粗体。
+ 功能标注只作为改写中间表示,不写入交付正文,也不得转写成新的二级、三级标题或编号。
- #### 14. 引号使用
+ 在扫描和改写前,再建立候选外的**论证脊柱账本**。逐段记录不能被上位总结替代的唯一信息:
- **检测过度使用**:
+ ```text
+ 源稿锚点:可定位短片段
+ 唯一载荷:该段新增的对象、区分、因果环节、例外、反方、比较、风险放大因素或认识边界
+ 在全文中的作用:它把上一段推进到哪里
+ 处理:逐项保留 / 合并但保留全部载荷 / 可删除的重复
+ 改稿落点:最终段落位置
+ ```
- - 引号密度过高(整篇文章大量使用引号)
- - 为普通词汇加引号(非术语、非引用)
- - 用引号表达"反讽"或"强调"
- - 半角英文引号 `"..."`
- - 半角单引号 `'...'`
- - 过度使用「」
+ 以下内容默认进入脊柱账本:提出核心区分的段落;把一个对象推进到下一条件或后果的中间环节;“风险并不均匀/为什么某一层更危险”一类分布判断;反例、例外、反方与跨领域比较;互不替代的多个放大因素;解释作者为何得出结论的材料或认识边界。
- **AI写作特有的引号误用模式(必须检测)**:
+ 更短、更整齐的上位总结不能替代这些载荷。若源稿先区分风险分布,再解释中间层为何更容易取信,随后列出三个放大因素,改稿不能只留下“法律风险更高”。改写后的每个 `逐项保留` 项都必须有可定位落点;找不到落点就回到源稿恢复机制,而不是在报告中解释已经概括。论证脊柱账本只约束正文,不进入读者正文。
- 以下类型的引号通常不需要,应去除:描述性短语(`"可调用的能力"`)、比喻性描述(`"Skill 的外壳"`)、口语化表达(`"能不能一键跑起来"`)、动作/状态描述(`"换一个 Skill"`)、属性列举(`"可组织、可迭代"`)、问题表达(`"Skill 很火"`)、价值判断(`"工作标准"`)。
+ ### Step 3:两轮独立扫描
- **正确使用引号的场景**:引用原文、核心术语定义(首次出现)、避免歧义、特殊概念区分。
+ 开始前先声明本轮覆盖范围和未覆盖范围。
- **检测标准**:
+ #### 词汇与模板层
- - 如果去掉引号后意思仍然清晰,通常不需要引号
- - 如果是普通词汇(名词、动词、形容词)的描述性用法,不需要引号
- - 如果是比喻、口语、动作描述,不需要引号
- - 整篇文章中应尽量减少引号密度
- - 优先保留:核心术语定义、原文引用
+ 读取 `references/pollution-patterns.md`,扫描姿态、对比、过渡、大词、模糊频次、黑话、强加口语、格式和过程残留。频次只触发复核,不自动决定修改。
- #### 15. 评价式陈述与过度概括
+ #### 结构与段落层
- **必须检测的模式**:
+ 独立扫描:
- - `把.*讲得很清楚`、`把.*说得很明白`
- - `更尖`、`更锐利`、`更深刻`(评价性形容词修饰抽象概念)
- - `更硬的定义`、`更.*的.*`(过度修饰的形容词结构)
- - `被.*卡住`、`被.*阻挡`(被动句式+过度概括)
- - `一旦把视角从.*就更容易看清`(视角转换程式化)
- - `更具体一点`、`更准确地说`(AI式过渡语)
+ - 连续相同虚词、疑问词、被动式和短段;
+ - 每两三段固定出现的短句金句;
+ - 同一对象的同义词轮换;
+ - 显式列表被改成隐藏列表;
+ - `最典型 / 最容易 / 也容易 / 类似的还有`等伪装排比;
+ - 一组分析例子是否被编辑者逐项扩成同长度、同功能、同收束方式的段落;
+ - 同一语义关系是否只换了主语、动词或转折词后跨段、跨节重复,例如反复写“工具能完成表层任务,但判断仍需由人作出”;
+ - 标题承诺“N 层、N 种、N 步”后,正文结构是否被错误打散。
- **改写**:直接陈述内容,删除评价性修饰和过渡语。"被两件事卡住"→"两件事挡在路中间","更具体一点"→直接进入具体内容。
+ ### Step 4:先判定列举功能,再决定保护或重组
- #### 16. 比较性与断定性表述
+ 不要把所有“有多个项目”的正文都归为功能性列举。先回答两个问题:读者是否需要逐项执行、核对、比较或追踪?项目的顺序、数量或独立边界是否承担文章承诺?
- **必须检测的模式**:
+ 以下结构默认保留显式序号和平行句式:
- - `它更像一种`、`更像一个.*`
- - `它其实是`、`这里其实`、`其实是第二类`
- - `天然会`、`天生就`、`自然而然就`
- - `会更清楚`、`会更.*`(过度使用的"会更"模式)
- - `就.*了`、`就.*能`(过于绝对的断言)
+ - 分类、层级、步骤、清单、责任分配;
+ - 法条、合同条款和固定格式;
+ - 为核对输入、输出、主体或条件而设置的平行结构。
- **否定式断定性表述**:
+ 若多个项目只是共同证明一个判断,读者不需要逐项操作,它们属于**分析型例证组**,不能因为“怕遗漏”就自动扩成连续的“一是、二是、三是”同构段落。按以下顺序处理:
- - `事实并不是这样`、`事情并不是这样`、`并不是.*而是`、`其实并不是`
- - 改写:删除否定前缀,直接陈述核心内容。"但情况并非如此"或直接进入事实。
+ 1. 先找源稿已经存在的关系:共同条件、相互影响、冲突、时间先后、风险分配、审查路径或责任主体;
+ 2. 在候选外填写 `references/expression-transformations.md` 的“关系证据卡”,除关系两端各自的锚点外,还必须抄录**关系本身的源稿锚点**;
+ 3. 关系本身的锚点必须在同一处源稿中同时提到两端,或明确让同一个具体变量约束两端。只有 A 的材料和 B 的材料、没有原文连接句时,关系不成立;
+ 4. “必要推论”只允许换一种说法复述源稿已经存在的关系,不能凭专业常识补出时间顺序、程序路径或共同目标。模型自身的法律常识、行业惯例和“通常会怎样”不算源稿材料;
+ 5. 用通过证据卡的关系组织至少两个例子,让后一段承接前一段留下的对象或问题;
+ 6. 若源稿没有足够材料支持关系,只把例子压缩为诚实的一句或一段列举,不虚构客户、案件、谈判过程、审查条件、因果后果或生活场景;
+ 7. 不要求每个例子拥有等长说明、相同段首和相同结论。
- **改写方向**:
+ 关系层不得成为内容扩写许可。不得为了让两个条款“连起来”,新增源稿没有出现的交易联系、履行地点、付款里程碑、程序路径、经营限制、技术使用后果或其他专业分析变量。用户若同时要求补充专业内容,应交给上游写作/研究流程;本 Skill 只在报告中标记 `AUTHOR_MATERIAL_NEEDED`。
- - "它更像一种" → 直接说是什么
- - "它其实是" → 直接陈述事实
- - "天然会" → 用"通常会"、"往往"等弹性表达
- - "会更清楚" → 直接陈述效果
- - 整体策略:去掉前缀,直接陈述核心内容
+ 关系证据卡、材料充足度、标题或导航保护、扫描范围和评测结论都属于候选外信息。它们只能改变正文的处理结果,不能成为正文内容。最终稿不得出现“按源稿”“源稿的导航仍保留”“材料不足以相连”“不是若干项检查任务”等面向编辑者或评测者的解释;材料不足时,直接保留独立例子或压缩列举,把 `AUTHOR_MATERIAL_NEEDED` 只写入报告。
- #### 17. 模糊频次词与客观让步姿态
- **模糊频次词(虚假普遍性)**:
+ “换词重复、同功能段落、连续同构、能力边界候选、门禁或阈值”等评测语言也不得进入正文。它们是扫描概念,不是文章概念。
- - `经常`、`常常`、`常常会` — AI 用这些词制造"普遍现象"的假象
- - `很容易` + 抽象判断(如"讨论很容易变窄")— 模糊频次 + 模糊后果的组合
- - **改写方向**:用具体频次替代("最近几次聊到 X" 替代 "经常谈 X"),或直接删除频次修饰;模糊后果补充具体指向("变窄" → "局限在产品层面")
+ “都属于合同风险”“都要结合具体合作”“都需要判断”“都发生在合作偏离或履行阶段”只是宽泛同类项,不是可写入的关系。真实关系必须满足至少一项:源稿明确用同一个具体变量同时约束两端;一端会改变另一端的解释、效果或处理顺序;源稿明确给出两端的冲突或相互作用。若只有一组关系通过证据卡,就只使用这一组,不为满足数量或段落节奏继续配对。
- **评价性断语(客观让步姿态)**:
+ 两端分别有锚点仍不够。例如源稿分别讨论违约金和管辖,不能因此补成“违约发生后进入诉讼,管辖继续影响程序”;源稿分别讨论知识产权使合作难以继续、解除条件影响退出,也不能自动合成“围绕合作继续或退出”的共同关系。除非源稿本身把两端放进同一关系句,否则让它们在同一段各自成立即可。
- - `太绝对`、`太武断`、`话说得太死`、`说过头了`、`容易被反驳`
- - `这个判断太X`、`这种说法太Y` — AI 先立靶子再打倒的程式化让步
- - **改写方向**:用个人立场替代评价性断语("我不这么看" 替代 "这个判断太绝对"),或直接跳过让步,陈述自己的判断
+ 一个实用判断是:删去某一项会不会破坏分类或操作完整性?会,通常是功能性列举;只会减少一个论据,通常是分析型例证组。这个判断优先于项目数量和原稿是否已有序号。
- **改写对照**:
+ 不要为避免“排比”把“一是、二是、三是”改成“最典型、最容易、也容易”。如果内容本来就是列表,恢复序号;如果作者希望叙事,则必须按真实场景、因果或时间重组,不能只改段首。
- | 原文 | 改写 | 说明 |
- |------|------|------|
- | 经常听到一个判断 | 最近几次都会碰到一个判断 | 具体频次替代模糊词 |
- | 讨论很容易变窄 | 讨论就容易局限在产品层面 | 补充"窄在哪" |
- | 这个判断太绝对,也容易被反驳 | 说 X,我不这么看 | 个人立场替代客观评价 |
+ 恢复正文中的显式序号不等于新增标题。原稿没有小标题时,不得把每一项升级为 `##` 或 `###`;原稿已有标题时,标题行原样保留。
- ## 工作流程
+ 保护列举形式不等于认可分类逻辑。若各项不在同一分类尺度、粒度不一致,或两套“N 分法”被强行宣称一一对应,标记 `STRUCTURE_REVIEW` 并说明错位;除非用户同时授权论证重构,否则去 AI 流程只报告,不擅自发明新分类。
- ### 启动闸门:场景判定
+ ### Step 5:执行最小充分改写
- 去 AI 味的力度、容忍度和保护范围因场景而异。开始通读前,先判定本次属于哪类场景,并据此调整后续 Step 2-5 的力度与重点。若用户未指明,默认按“通用”处理。
+ 在既有标题框架内按问题选择操作:
- <!-- skill-lint:constraint SCENE-DECLARED-BEFORE-REWRITE -->
- 在开始改写前创建本次 `run-plan.json`,按 `assets/stability/delivery-run-plan.json` 的结构显式记录:
+ 1. 删除没有独立信息的姿态句;
+ 2. 合并同义判断和连续短段;
+ 3. 把抽象评价改成对象、条件和后果;
+ 4. 恢复被误伤的显式列举;
+ 5. 把分析型例证从逐项同构改为由真实关系推动的段落;
+ 6. 基于用户提供的材料重建经验段;
+ 7. 仅在必要时重写整句或整段。
- - `scene`:`legal_document` / `wechat_public_comment` / `chat_reply` / `general`
- - `author_sample_used`:本轮是否使用经用户确认的作者样本
- - `protected_spans`:本轮必须逐字保留的字符串、类别和稳定 ID;即使为空也必须显式写 `[]`
+ 不要把禁词替换成固定同义词。不要为了长短句变化拆坏条件、例外和结论之间的联系。具体操作读取 `references/expression-transformations.md`。
- 不得在改写完成后倒填场景或 Protected Spans。
+ 不得把“重写整段”扩大为重做章节导航。正文改得再自然,只要标题行被新增、删除、改名、升降级或重排,就属于越界修复。
- | 场景 | 默认力度 | 重点扫描的污染类 | Protected Spans 宽度 |
- |---|---|---|---|
- | **法律文书**(判决/意见/合同/代理词/法律意见书) | 克制 | 姿态污染 / 过程泄漏 / 格式污染 | 最宽 |
- | **公众号·公开评论** | 激进 | 模板污染 / 节奏污染 / 语义稀释 | 标准 |
- | **口语·即时回复**(chat/status/站会) | 最小 | 谄媚 / 协作痕迹 | 标准 |
- | **通用**(未指明) | 按公众号力度 | 全类 | 标准 |
+ ### Step 6:按 voice 模式校准
- 场景判定约束后续三件事:① 改写力度(克制/激进/最小);② Protected Spans 宽度(法律文书最宽,见 Step 1);③ 重点扫哪几类污染(其余污染类仍按默认处理,不跳过,只是优先级靠后)。法律文书场景下,正式语体、程序术语、固定程式表达默认保留,不当作 AI 味处理。
+ - `cleanup_only`:保留源稿已有语气,不新增第一人称、反问、比喻、对话感和短句配额。
+ - `provided_sample`:读取授权样本,提取十维 profile 和反例;只匹配适合当前场景的维度。
+ - `local_anchor`:读取指定的本机私有 anchor;学习判断来源、不确定性、段落动力和功能性列举,不复制原句、事实或场景专属主语。
- ### Step 1: 阅读理解
+ 作者样本不能弥补内容不足。Voice Calibration 只调整表达,不制造事实深度。
- **必须完整通读全文**,理解核心观点、文章风格和上下文语境。不得仅通过正则/grep 匹配来检测——正则只能覆盖已知模式的精确形式,会遗漏大量语义等价但形式不同的变体。
+ 声音校准也不得提高判断强度。逐项比较源稿与改稿的确定性:`我不这么看 / 我仍有保留 / 可能 / 未必 / 取决于`不能被改成`这个判断错了 / 下得太早 / 必然 / 决定 / 一定会`;源稿没有频率范围时,不新增“已经不算少见、越来越多、通常如此”。VoiceAnchor 提供的是判断方式,不是把文章立场写得更响亮的许可证。
- 在任何改写前,先为源 Markdown 生成候选外临时快照;快照路径不得与文章同名覆盖:
+ 启用 `provided_sample` 或 `local_anchor` 时,改写后运行新增重合门禁。它只拦截相对源稿新出现的长连续重合,不把源稿本来已有的共同表述算成复刻,也不在默认输出中打印私有短语:
```bash
- python3 scripts/protected_markdown_gate.py snapshot \
- --input <源文件.md> \
- --output <临时目录>/de-ai-protected-lines.json
-
- python3 scripts/delivery_gate.py snapshot \
- --input <源文件.md> \
- --run-plan <临时目录>/run-plan.json \
- --output <临时目录>/de-ai-delivery-manifest.json
+ python3 scripts/voice_anchor_copy_gate.py \
+ --source <源文件.md> \
+ --final <最终文件.md> \
+ --sample <作者样本或本机 anchor.md> \
+ --min-chars 14
```
- **通读时同步划定 Protected Spans(禁改项)**:标记必须原样保留、后续 Step 2-4 不得触碰的范围。默认覆盖:
-
- <!-- skill-lint:constraint PROTECTED-SPANS-PRESERVED -->
- - 法条、司法解释、规章的编号与引述(如《民法典》第 143 条、(2023)最高法民申 12 号)
- - 当事人、机构、律所、公司全称
- - 程序术语(管辖、异议、上诉期、举证责任、开庭传票等)
- - 直接引语、引证、合同条款编号
- - 数值、日期、比例、金额、期限
- - URL、文书编号、案号
- <!-- skill-lint:constraint PRESERVE-MARKDOWN-IMAGE-LINES -->
- - **整段 markdown 图片语法 `![alt](path)` 及其所在行**——包括 alt 文本、URL、文件名/本地路径、所在行缩进与换行。后续 Step 2-6 不得修改、删除、合并图片语法所在行;图片语法整段永远原样保留。
-
- 判定原则:宁可多保留,不可误改。若某 Protected Span 表面像 AI 味(如公司全称带“有限公司”被误判为宣传性),仍保留原样,只在备注里提示用户复核。场景为“法律文书”时,Protected Spans 范围取最宽。
-
- ### Step 2: 识别AI化表述
-
- 以 Agent 通读全文的方式识别 AI 化表述。前文的核心检测规则(§总则 + §一~§二)是**参考框架**,不是穷举清单。Agent 应当:
-
- **进入本步之前,先声明扫描范围**:本次覆盖了哪些 §(§总则、§一、§二 的具体小节),本次未覆盖的 § 也明确列出。让用户一眼看到检测的边界在哪。
-
- **识别过程不得触碰 Step 1 划定的 Protected Spans**:即使 Protected Span 内部出现疑似 AI 模式(对比句式、宣传语等),也不列入 finding、不改写;最多在交付备注里提示用户复核。
-
- 1. **类型归纳**:先按“低 AI 污染类型学”给疑似问题标主类型:姿态污染 / 模板污染 / 语义稀释 / 节奏污染 / 概念污染 / 过程泄漏 / 格式污染。不要一开始就做词表替换。
- 2. **词汇层扫描**:通读全文,识别所有疑似 AI 化的词与短语——无论是否出现在清单中。**重点扫描以下热点区域**:
- - **节标题**:标题中的"不在X""只是Y"等模式常被忽略
- - **加粗行和引用块**:AI 倾向把最工整的对比句、宣言式断言放在 `**粗体**` 或 `> 引用` 中
- - **段落首句和末句**:AI 的过渡语和总结句最常出现在这些位置
- 3. **结构层扫描**:词汇扫完**不要宣布完成**。独立走一遍结构扫描,专门识别 AI 倾向的句式骨架。**强制扫描**以下结构模式:
- - **连续 3+ 相同虚词引导的并列**:`是 X。是 Y。是 Z。` / `生成 X,生成 Y,生成 Z` / `先把 X。先把 Y。先把 Z。` / `我们要的是 X,是 Y,是 Z`
- - **连续 3+ 疑问词引导的并列**:`能不能 X?能不能 Y?能不能 Z?` / `怎样 X,怎样 Y,怎样 Z` / `如何 X,如何 Y`
- - **连续 3+ 被动排比**:被 X、被 Y、被 Z / 能够被复核、被采纳、被传递
- - **连续 3+ 短段(单句段落成串)**:每段都独立成段、内容结构相似、节奏整齐划一
- - **"X 是 X 是 X" 嵌套**:同一动词多次出现引导相同结构的并列
- 4. **再对照清单**:补充通读时可能遗漏的频次超标(如 `越来越` `真正` `不只` 等超过 2 次的词)
- 5. **向上溯源**:清单中的每条规则代表一类模式。识别到未列出的表述时,判断它是否属于某个已知模式家族的变体(对比句式→递进结构→程式化转折→工整排比→程度副词堆叠→否定宣言→分离式对比→同义循环)
-
- **禁止的做法**:仅用 `grep`/正则匹配清单中的关键词,然后声称检测完成。正则匹配只能作为频次统计的辅助工具,不能替代通读理解。**词汇层扫完不能宣布完成——必须再走一遍结构层扫描。**
-
- **为什么结构层必须独立走**:词汇层 flag(如「不是 X 而是 Y」「其实」「真正」)容易锚定,agent 容易把全部注意力放在词替换上。结构层 flag(连续问号、连续短段、连续虚词引导的并列)不会出现在词级 grep 结果里——必须按位置、按节奏、按并列项数单独扫一遍。词扫得再彻底,结构不扫等于没扫。
-
- ### Step 3: 判断是否修改
-
- 不是所有匹配都需要修改。判断标准:是否影响表达自然度、是否符合文章风格、是否有修辞目的。
-
- ### Step 4: 重新表述句子
-
- **核心原则:重新表述整个句子,不要只删除词汇或替换同义词。**
-
- 错误(×):`"它更像一种可维护的模块"` → `"这是一种可维护的模块"`(只删词,结构没变)
- 正确(✓):`"它更像一种可维护的模块"` → `"这种设计便于后续维护"`(重构句子)
-
- **同义词替换是无效改写**:把"窄"换成"局限"、把"小"换成"有限"、把"这不是"换成"那不是",句式和语气都没有变化,读者仍然能感受到 AI 味。必须在理解原句核心意思的前提下,换一种全新的表达结构。
-
- | 原文 | 无效改写(×) | 有效改写(✓) | 说明 |
- |------|-------------|-------------|------|
- | 格局一开始就小了 | 格局一开始就窄了 | 讨论就没抓到重点 | 换了语义场,换了句式 |
- | 这不是我理解的 AI | 那不是我关注的 | 我关注的角度不太一样 | 去掉否定宣言,换成个人立场 |
- | 视野就窄了 | 视野就局限了 | 但只看到这些还不够 | 彻底换一种表达 |
- | 你越X,越Y;越Y,越Z | 你越X就越Y,越Y就越Z | 理解工具,效率会先提上来。有了余量,输出自然就多了 | 长级联拆成短句 |
+ ### Step 7:修复伪影复扫
- ### Step 5: 注入个人风格(可选)
+ 改写后单独执行一轮反向检查:
- 在去除 AI 化表述后,可选地注入个人风格特征。**目标比例:技术准确性 60% / 个人化 40%**。本步可选,纯技术/法律文书若无需个人化可跳过。
+ - 是否把清楚列表改成假排名或隐藏列表;
+ - 是否从旧禁词逃到新口癖;
+ - 是否强加第一人称、比喻、口语或短句金句;
+ - 是否编造作者经历、感受、讨论或判断变化;
+ - 是否复制 voice anchor 原句、高辨识短语或事实;
+ - 是否为了“自然”损坏专业准确性、必要重复和段落逻辑;
+ - 是否把分析型例证组逐项扩成等长、同功能、同收束方式的段落;
+ - 是否为建立关系层新增了源稿没有的变量、审查条件、因果或后果;关系证据卡是否能定位到两端源稿锚点;
+ - 是否出现三个以上功能相同、句式近似的段落开头;
+ - 是否跨段、跨节反复使用同一个语义关系骨架,只替换了任务名和转折词。
+ - 是否把源稿的保留、可能性或未知改成更强的裁断、频率和必然后果。
+ - 是否把内部分析分组写成了新标题,或改动了原有标题的文字、层级、编号和顺序。
+ - 是否把“源稿、导航保留、材料不足、关系证据卡、扫描或交付”等候选外过程写进了读者正文;证据不足必须表现为克制处理,而不是向读者解释修订过程。
+ - 是否保留或新增“先承认一个前提”一类通用框架启动语,而没有直接进入事实或判断。
+ - 是否通过省略 AI 主语、把限制改成“另一项工作/难点在于/只对应”,让同一能力边界逃过复扫。
+ - 是否把多处重复判断压成“X 的是 A,不是 B”“工具退场/走到边界,留下判断与责任”等短金句;压缩不是去重,结尾只保留一个由前文自然抵达的完整结论。
+ - 最后一节是否在解释价值、后续任务和责任后,又用同一组名词压缩总结一次;先给末节逐段标 `JUDGMENT / MECHANISM / CONSEQUENCE / SUMMARY`,只允许一个 `SUMMARY`,其他段落必须提供新的对象或机制。
+ - 是否保留“AI 最危险/可怕/重要的时候,是……”等脱离新增机制的传播金句;源稿已有也不自动受保护,重复前文时应删除。
+ - 是否把“入口顺滑”换成“更低的入口/低摩擦入口”等抽象入口隐喻;应直接写“不必从空白文档开始、启动成本下降、可以更早讨论”等实际变化。
+ - 同一篇正文是否跨三段以上反复使用“入口/门槛/进入/回到内部/穿透/退场”等空间图式;中心概念最多保留一至两处必要解释,其余改成事实、审查动作和后果。
+ - 论证脊柱账本中的每项唯一载荷是否都能在最终稿定位;是否用一个上位摘要替代了风险分布、中间机制、反例或多个放大因素。
- **两条路径(按是否有作者样本选择)**:
+ 发现修复伪影时回到 Step 2—5,不得继续同义替换。
- - **有作者样本 → Voice Calibration**:若用户提供了目标作者的写作样本(建议 ≥500 字),按 `references/personal-style-guide.md` 的"Voice Calibration 流程"提取 voice profile(七维度:句长分布 / 词选层级 / 段落开头 / 标点习惯 / 口头禅与过渡 / 观点密度 / 语气倾向),改写时按 profile 匹配。**样本优先于下面的默认特征。**
- - **无样本 → 默认 voice**:按下面的正向特征注入,细节查 `references/personal-style-guide.md`"默认 voice"节。
+ 对“工具能力 → 转折或限制 → 人的判断/经验/责任”这类高频骨架,再运行启发式复检。脚本同时观察显式主语,以及“初稿/外观/措辞完整/填空/规则复述/建议自洽”等隐式能力端。
- **样本边界**:只使用用户提供或确认可用于本次任务的作者样本。Voice Calibration 只学习表达特征,不冒充作者身份、不复制样本原句或高辨识短语、不把样本事实写进目标文本。若样本含敏感信息,只抽象成 voice profile,不在交付正文中复述。
+ 原始候选只用于扩大召回,不是删除配额。紧跟“第 N 层/第 N 种/第 N 步”等显式导航标签的说明项单独列为 `functional_navigation_item`,不计入普通正文硬阈值;这些段落本来就承担逐项区分功能。豁免只保护分类结构,不保护同义复唱:若五项都以同一个“表面可做—仍需人类判断”收束,仍须人工改写为各自的对象、条件、机制或后果。
- **默认正向特征**(无样本时使用):
- 1. **开头的真实感**:用个人感受/具体场景/平实判断开头,不用"本文将探讨…"
- 2. **弹性表达**:保留"可能""往往""某种程度"等,不封死结论
- 3. **有分寸的口语**:"说实话""也许"可以,"搞定""跑偏"不行
- 4. **自嘲式幽默**:意外转折、反常识可以,炫耀式自夸不行
- 5. **自然对比**:"当然…但是…"可以,"并非…而是…"不行
- 6. **句子节奏**:长短句搭配,不刻意工整
+ 公众号评论对普通正文使用四道硬门禁:全文计数候选不超过 6,单节不超过 2,相邻同功能候选最多 1 个,最后一节最多 1 个。不要为了降计数,把包含具体对象、判断来源、条件和后果的段落压成无主语摘要;独立机制应保留,重复的是段落功能和收束方向,不是文章讨论“错误、限制或判断”本身。脚本失败必须继续修订,不能用报告中的人工归并覆盖;脚本通过后仍须人工检查功能性导航项是否真的各有机制。
- **参考文件**(读取以获取详细指南):
- - `references/personal-style-guide.md`:Voice Calibration 流程 + 默认 voice 特征
- - `references/expression-transformations.md`:表达方式转化对照表
- - `references/sentence-rhythm-guide.md`:句子节奏指南
- - `references/quality-scoring.md`:质量评分系统
+ ```bash
+ python3 scripts/semantic_repetition_gate.py \
+ --file <最终文件.md> \
+ --max-count 6 \
+ --max-per-section 2 \
+ --max-final-section 1 \
+ --max-adjacent 1
+ ```
- ### Step 6: 标点符号修正(代码强制执行)
+ ### Step 8:标点修正
- **必须作为最后一步执行。** AI 修改文本后往往会遗留英文标点,纯靠 LLM 提醒修正效果不可靠,因此使用脚本强制转换。
+ 只在正文改写完成后运行:
```bash
python3 scripts/fix_punctuation.py <文件路径>
```
- 脚本会自动处理:
- - 英文引号 `"` → 中文引号 `""`(交替状态机)
- - 中文语境中的 `,` → `,`、`;` → `;`、`?` → `?`、`!` → `!`
- - 中文语境中的 `:` → `:`、`()` → `()`
- - 中文字符后的 `.` → `。`
+ 脚本必须跳过 YAML、代码块、行内代码、URL、Markdown 链接和 Markdown 图片整行。图片行发生任何变化都视为失败。
- 脚本会自动跳过以下区域不做转换:
- - YAML front matter(`---` 之间的元数据)
- - **整段 markdown 图片语法**(`![alt](path)` 整段,包括 alt 文本、括号、URL 全部不动)
- - **整段 markdown 链接语法**(`[text](url)` 整段)
- - 围栏代码块和行内代码
- - URL 地址
+ ### Step 9:评分与交付门禁
- > **图片门禁(强制)**:标点脚本必须识别并跳过图片所在**整行**,包括 alt 文本内的中文标点、同一行其他内容、缩进和换行都不得被改写。若脚本只跳过 URL 或 `![...](...)` 片段,视为脚本 bug,必须修复实现而非放宽规则。
+ 读取 `references/quality-scoring.md`,按自然度、节奏感、专业度、个性度和精炼度评分。解释口径:
- ### Step 7: 交付前评分门禁
+ - 节奏感评价信息推进是否自然,不奖励固定长短句序列;
+ - 个性度在 `cleanup_only` 下评价是否保住源稿声音,在 voice 模式下评价 profile 匹配;
+ - 总分不能覆盖修复伪影、虚构作者材料或功能性列举受损。
- Step 4-6 完成后,先对真实最终 Markdown 运行受保护区域门禁:
+ <!-- skill-lint:constraint QUALITY-SCORE-GATE-PASSED -->
+ 生成绑定最终文件 SHA-256、scene、voice mode、anchor ID 和分数的 `score-receipt.json`,再运行:
+
```bash
python3 scripts/protected_markdown_gate.py verify \
--manifest <临时目录>/de-ai-protected-lines.json \
--final <最终文件.md>
- ```
- 仅退出码 0 且最后一行 JSON 包含 `passed_constraint_ids: ["PRESERVE-MARKDOWN-IMAGE-LINES"]` 时,才继续评分。退出码非 0 时必须回到造成变化的步骤修复,不得交付。
-
- **例外规则**:当前门禁没有默认例外。只有用户在本次任务中明确授权移动、删除或改写某一图片行时,才可先完成该项授权变更,再以授权后的 Markdown 重新执行 Step 1 的 `snapshot` 建立新基线;不得跳过 checker、手改 manifest 或用口头说明覆盖失败结果。
-
- 门禁通过后,按 `references/quality-scoring.md` 的 5 维(自然度 / 节奏感 / 专业度 / 个性度 / 精炼度,总分 10)对最终文本评分:
-
- <!-- skill-lint:constraint QUALITY-SCORE-GATE-PASSED -->
- - **总分 < 7.0** → 回到 Step 4 重新表述问题句,再评分。
- - **单维度硬伤**:自然度 < 1.5 或个性度 = 0 → 即使总分达标也回炉。
- - **场景调整**:法律文书场景下专业度 < 1.5 即回炉;其他场景不降低总分、自然度和个性度的全局硬阈值。精炼度当前没有独立硬阈值。
- - **有作者样本时的 voice profile 门禁**:若最终文本明显偏离已提取 profile 的主要稳定维度,或复制样本原句 / 高辨识短语、引入样本事实、复现 profile 标记的反例,必须回到 Step 4/5 重修。
-
- 评分后按 `assets/stability/delivery-score-good.json` 的结构生成候选外临时 `score-receipt.json`:写入真实最终文件 SHA-256、scene、五维分数、总分、是否使用作者样本及 voice profile 检查结果。五维范围、求和方式与硬阈值以 `config/quality-score-rubric.json` 为机器可执行单点真相;`snapshot` 会绑定该文件 hash,防止任务中途悄然改尺。随后运行:
+ python3 scripts/heading_preservation_gate.py verify \
+ --manifest <临时目录>/de-ai-heading-lines.json \
+ --final <最终文件.md>
- ```bash
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,且后者精确报告 `SCENE-DECLARED-BEFORE-REWRITE`、`PROTECTED-SPANS-PRESERVED`、`QUALITY-SCORE-GATE-PASSED` 全部通过,才可交付。评分回执只能证明评分步骤、候选绑定和阈值被执行,不能证明主观评分本身绝对正确。
+ 只有图片保护、标题保护、交付绑定以及假排名、编辑过程泄漏、框架启动语和压缩金句逃逸回归门禁均退出 0;启用 voice 时新增重合门禁退出 0;语义骨架复检和人工关系层复扫没有未处理项,才可交付。
- 评分时可用"直接度""信任读者"两个辅助视角定位扣分原因(见 `references/quality-scoring.md`"作为交付门禁使用"节),不单独打分。评分过程与结果默认不写入交付正文,只在交付备注或用户要求时给出。
+ ## Detect 输出格式
+
+ 每条 finding 至少包含:
+
+ ```text
+ 锚点:原文位置或短片段
+ 段落功能:该句本应承担什么
+ 主污染类型:七类之一
+ 问题:为什么像模板、隐藏列表或修复伪影
+ 读者影响:会造成何种理解或信任问题
+ 处理:删除 / 合并 / 直接陈述 / 补足 / 恢复结构 / 作者补料
+ ```
+
+ 不要只报“命中某词”。保留项写明功能和理由。
+
+ ## 完成边界
+
+ - 脚本门禁只能证明候选绑定、保护项和评分步骤得到执行,不能证明主观评分正确。
+ - 标题保护门禁只证明 ATX 标题行的文字、层级、编号和顺序未变,不证明原有标题体系本身合理;标题结构优化属于其他写作 Skill。
+ - 分析型例证与功能性列举的区别依赖文章任务,不能只靠序号或正则判断。
+ - 语义骨架和长连续重合门禁只能召回已知风险,不能替代通读,也不能证明没有语义模仿或事实污染。
+ - 正则回归只能拦截已知修复伪影,不能替代通读。
+ - 缺少作者材料时明确报告 `AUTHOR_MATERIAL_NEEDED`,不要声称已经获得真情实感。
+ - 未执行真实改写或没有最终文件时,不生成虚假评分回执。