计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
de-ai-polish【效率与协作】检测并修订中文文章正文中的模板腔、姿态腔、隐藏排比、分析型例证同构、重复语义骨架、假排名、固定节拍和其他 AI 化表达,同时保护作者事实、既有标题层级、必要功能性列举、法律术语、Markdown 图片与既有声音。文章完成初稿后、用户要求“去 AI 腔/更像真人/按作者样本改写/检查排比或口吻”时必须使用;无作者样本时只做最小清理,不得凭空注入第一人称、比喻、短句金句或经历,也不得借去 AI 之名重做文章结构。
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
去 AI 化不是禁词替换,也不是给文本注入“公众号人设”。按以下优先级处理:
判断一句话时先问它承担什么功能,再问它是否像 AI。词表只用于召回,不能替代通读。
de-ai-polish 负责正文句子和段落内部的语言表达,不负责文章的信息架构。二级、三级标题及其他 Markdown ATX 标题属于 WeChat Article Writer 或原写作流程的职责范围。
因此默认执行以下边界:
/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。references/personal-style-guide.md。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 为准。
| scene | 默认力度 | 重点 | 保护范围 |
|---|---|---|---|
legal_document | 克制 | 姿态、过程、格式 | 最宽 |
wechat_public_comment | 较强 | 模板、节奏、语义稀释 | 标准 |
chat_reply | 最小 | 谄媚、协作痕迹 | 标准 |
general | 中等 | 全类 | 标准 |
法律文书中的正式语体、程序术语和固定结构默认保留。
| voice_mode | 使用条件 | 允许行为 |
|---|---|---|
cleanup_only | 没有作者样本或用户未要求匹配声音 | 只清理和澄清;不得注入人设 |
provided_sample | 用户提供并授权本次使用的样本 | 提取十维 profile 后匹配 |
local_anchor | 用户明确要求使用本机个人声音,且配置与对应文件存在 | 按显式 ID 或本机默认 anchor 的深层 profile 校准 |
本机私有 anchor 不属于公共 Skill 内容。default_voice_anchor_id 只是 local_anchor 模式内部的缺省选择,不得把普通 cleanup_only 请求自动升级为个人声音。不得把样本正文、作者 profile、高辨识短语或本机注册表复制到公开配置、测试 fixture、日志或评测元数据中。
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 均在本机存在;cleanup_only 或请用户重新提供样本,不得假装已经读取;完整通读全文,不得只用正则或 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
把以下内容写入 protected_spans 并逐字保护:
同时为需要“作者在场”的关键判断填写 references/personal-style-guide.md 中的作者证据卡。材料不足时标记 AUTHOR_MATERIAL_NEEDED。不得把一般知识改成“我发现”,也不得编造真实案例或写作经历。
不要把全文反复出现的主题词、核心概念或普通术语登记成要求出现次数完全相同的 protected_span,例如文章主题本身的“抽象泄露”。这类词要保持名称一致并保留必要定义,但删除重复段落时允许出现次数下降。若在改写后发现快照误把通用词锁死,不得为了过门禁机械补回;应废弃该次候选,从只读源稿重新选择真实字节不变量并建立新快照,同时记录重启原因。
标题整行属于结构保护项。标题内即使命中模板词,也只记录 finding,不在本流程中改写。
给每段标一个主功能:FACT / EXPERIENCE / JUDGMENT / MECHANISM / EXAMPLE / BOUNDARY / TRANSITION / SUMMARY。
重点检查:
功能标注只作为改写中间表示,不写入交付正文,也不得转写成新的二级、三级标题或编号。
在扫描和改写前,再建立候选外的论证脊柱账本。逐段记录不能被上位总结替代的唯一信息:
源稿锚点:可定位短片段
唯一载荷:该段新增的对象、区分、因果环节、例外、反方、比较、风险放大因素或认识边界
在全文中的作用:它把上一段推进到哪里
处理:逐项保留 / 合并但保留全部载荷 / 可删除的重复
改稿落点:最终段落位置
以下内容默认进入脊柱账本:提出核心区分的段落;把一个对象推进到下一条件或后果的中间环节;“风险并不均匀/为什么某一层更危险”一类分布判断;反例、例外、反方与跨领域比较;互不替代的多个放大因素;解释作者为何得出结论的材料或认识边界。
更短、更整齐的上位总结不能替代这些载荷。若源稿先区分风险分布,再解释中间层为何更容易取信,随后列出三个放大因素,改稿不能只留下“法律风险更高”。改写后的每个 逐项保留 项都必须有可定位落点;找不到落点就回到源稿恢复机制,而不是在报告中解释已经概括。论证脊柱账本只约束正文,不进入读者正文。
开始前先声明本轮覆盖范围和未覆盖范围。
读取 references/pollution-patterns.md,扫描姿态、对比、过渡、大词、模糊频次、黑话、强加口语、格式和过程残留。频次只触发复核,不自动决定修改。
独立扫描:
最典型 / 最容易 / 也容易 / 类似的还有等伪装排比;不要把所有“有多个项目”的正文都归为功能性列举。先回答两个问题:读者是否需要逐项执行、核对、比较或追踪?项目的顺序、数量或独立边界是否承担文章承诺?
以下结构默认保留显式序号和平行句式:
若多个项目只是共同证明一个判断,读者不需要逐项操作,它们属于分析型例证组,不能因为“怕遗漏”就自动扩成连续的“一是、二是、三是”同构段落。按以下顺序处理:
references/expression-transformations.md 的“关系证据卡”,除关系两端各自的锚点外,还必须抄录关系本身的源稿锚点;关系层不得成为内容扩写许可。不得为了让两个条款“连起来”,新增源稿没有出现的交易联系、履行地点、付款里程碑、程序路径、经营限制、技术使用后果或其他专业分析变量。用户若同时要求补充专业内容,应交给上游写作/研究流程;本 Skill 只在报告中标记 AUTHOR_MATERIAL_NEEDED。
关系证据卡、材料充足度、标题或导航保护、扫描范围和评测结论都属于候选外信息。它们只能改变正文的处理结果,不能成为正文内容。最终稿不得出现“按源稿”“源稿的导航仍保留”“材料不足以相连”“不是若干项检查任务”等面向编辑者或评测者的解释;材料不足时,直接保留独立例子或压缩列举,把 AUTHOR_MATERIAL_NEEDED 只写入报告。
“换词重复、同功能段落、连续同构、能力边界候选、门禁或阈值”等评测语言也不得进入正文。它们是扫描概念,不是文章概念。
“都属于合同风险”“都要结合具体合作”“都需要判断”“都发生在合作偏离或履行阶段”只是宽泛同类项,不是可写入的关系。真实关系必须满足至少一项:源稿明确用同一个具体变量同时约束两端;一端会改变另一端的解释、效果或处理顺序;源稿明确给出两端的冲突或相互作用。若只有一组关系通过证据卡,就只使用这一组,不为满足数量或段落节奏继续配对。
两端分别有锚点仍不够。例如源稿分别讨论违约金和管辖,不能因此补成“违约发生后进入诉讼,管辖继续影响程序”;源稿分别讨论知识产权使合作难以继续、解除条件影响退出,也不能自动合成“围绕合作继续或退出”的共同关系。除非源稿本身把两端放进同一关系句,否则让它们在同一段各自成立即可。
一个实用判断是:删去某一项会不会破坏分类或操作完整性?会,通常是功能性列举;只会减少一个论据,通常是分析型例证组。这个判断优先于项目数量和原稿是否已有序号。
不要为避免“排比”把“一是、二是、三是”改成“最典型、最容易、也容易”。如果内容本来就是列表,恢复序号;如果作者希望叙事,则必须按真实场景、因果或时间重组,不能只改段首。
恢复正文中的显式序号不等于新增标题。原稿没有小标题时,不得把每一项升级为 ## 或 ###;原稿已有标题时,标题行原样保留。
保护列举形式不等于认可分类逻辑。若各项不在同一分类尺度、粒度不一致,或两套“N 分法”被强行宣称一一对应,标记 STRUCTURE_REVIEW 并说明错位;除非用户同时授权论证重构,否则去 AI 流程只报告,不擅自发明新分类。
在既有标题框架内按问题选择操作:
不要把禁词替换成固定同义词。不要为了长短句变化拆坏条件、例外和结论之间的联系。具体操作读取 references/expression-transformations.md。
不得把“重写整段”扩大为重做章节导航。正文改得再自然,只要标题行被新增、删除、改名、升降级或重排,就属于越界修复。
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
改写后单独执行一轮反向检查:
JUDGMENT / MECHANISM / CONSEQUENCE / SUMMARY,只允许一个 SUMMARY,其他段落必须提供新的对象或机制。发现修复伪影时回到 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
只在正文改写完成后运行:
python3 scripts/fix_punctuation.py <文件路径>
脚本必须跳过 YAML、代码块、行内代码、URL、Markdown 链接和 Markdown 图片整行。图片行发生任何变化都视为失败。
读取 references/quality-scoring.md,按自然度、节奏感、专业度、个性度和精炼度评分。解释口径:
cleanup_only 下评价是否保住源稿声音,在 voice 模式下评价 profile 匹配;生成绑定最终文件 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;语义骨架复检和人工关系层复扫没有未处理项,才可交付。
每条 finding 至少包含:
锚点:原文位置或短片段
段落功能:该句本应承担什么
主污染类型:七类之一
问题:为什么像模板、隐藏列表或修复伪影
读者影响:会造成何种理解或信任问题
处理:删除 / 合并 / 直接陈述 / 补足 / 恢复结构 / 作者补料
不要只报“命中某词”。保留项写明功能和理由。
AUTHOR_MATERIAL_NEEDED,不要声称已经获得真情实感。