story-deslop · diff
v1.0.0 to v1.0.0
69 added, 202 removed. Audit A to A.
---
name: story-deslop
version: 1.0.0
- description: "网文去AI味。检测并清除文本中的AI写作痕迹,让文字回归自然、非模板化。触发方式:/story-deslop、/去AI味、「去AI味」「这篇太AI了」「网文去AI味」。"
+ description: "网文去AI味。从表达、叙事用笔、故事因果三层诊断并修复文本,保留作者文风与已定剧情。触发方式:/story-deslop、/去AI味、「去AI味」「这篇太AI了」「网文去AI味」。"
metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}}
---
# story-deslop:网文去AI味
- **文风裁决**:正文写作、改写或审稿前先读 [references/style-resolution.md](references/style-resolution.md),加载本书文风并形成 `style_resolution`;无作者记忆也执行。当前请求、本书文风和 active 偏好按维度覆盖通用 references;同一裁决交给后续执行者。
+ **文风裁决**:先读 [references/style-resolution.md](references/style-resolution.md),加载本书文风,复用调用方的 `style_resolution` 与作者偏好;单独调用时按当前请求与本书文风裁决。同一裁决交给后续执行者。
- **改写重点:保留剧情功能,删掉空转解释与套话,按人物声线恢复自然节奏。**
+ **改写重点:表达自然、笔墨有重心、故事有依据;诊断与执行都按作者范围。**
---
> Agent 兼容性:只检查当前运行时的 canonical 目录:Claude `.claude/agents/{agent}.md`、OpenCode `.opencode/agents/{agent}.md`、Codex `.codex/agents/{agent}.toml`、Antigravity `.agents/agents/agent-name/agent.md`(`agent-name` 为目标 agent 名),不得因其他端文件存在而误判。Claude 用 `subagent_type`,OpenCode 用 `subagent` 工具的 `agent` 参数,Codex 用同名 `agent_type`,Antigravity 用 `invoke_subagent` + `TypeName`。运行时未暴露 custom-agent registry / `invoke_subagent`、返回未知 agent,或检测到 `.zcode/`(ZCode 3.3.4 不执行项目 custom agents)时降级 solo/direct:报告里一句白话告诉作者「这次由我直接改」,`Fallback: project custom agents unavailable -> solo` 原文只写进报告最后一行「技术备注:」。
>
- > Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 34` 不一致时(标记缺失、字段缺失/非整数、小于或大于 34)**照常按文件存在性检查并 spawn**,同时用一句白话提示作者「写作助手是旧版,运行 /story-setup 后新开对话」,`Notice: agents bundle 版本不匹配(项目 {N},本版 34)` 原文写进技术备注行;大于 34 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有 agent 文件缺失、或运行时不暴露 custom agent 时才降级 solo/direct,`Fallback: ... -> solo` 同样只进技术备注行。
-
- ## 核心哲学
-
- ### 原则 1:改味优先,别当改错
-
- AI味按风格问题处理:检查书面腔、机械对仗和重复解释,保留自然、可读且承担信息的表达。
-
- ### 原则 2:改最少,效果最大
-
- 去AI味不等于重写。目标是改最少的字,让整段文字的"味"变过来。能改一个词就不改一句,能删一句就不重写一段。没有问题的句子尽量保留原句;人名、地名、数字、章节名、专有名词优先保留。
-
- **过度去AI味保护**:
- - **不得整段删除正文内容**。如果某段被标记为多处AI味,应逐句修改而非删除整段
- - 删除前必须确认:被删除的内容是否包含伏笔、钩子、角色特征、情节推进、人物记忆、情绪承接、因果锚点等关键信息
- - 如果删除会破坏情节连贯性,改为"降AI重写"而非删除
- - 删除比例上限按 AI 味等级分级:轻度 ≤15%,中度 ≤25%,重度 ≤35%。重度文本可通过“合并重复描写+重写降AI”产生更大字符差,但仍不得整段删除或删掉剧情功能。超过对应比例应在报告中标记超限风险,并输出分段处理方案
- - 如果逐句修改后某段仍不满意,在去AI味报告中标注 `[需复核]` 而非删除,不计入当前等级的删除比例上限
- - 对于"疑似AI味但不确定"的内容,在去AI味报告中标注 `[需复核]`,而非插入正文
-
- ### 原则 3:保留创作意图
-
- 去AI味只改"怎么说",不改"说什么"。剧情、人设、情节走向一概不动;不新增原文没有的情节、设定、关系或时间线。原文逻辑问题单独标记,不借润色改剧情。
-
- ### 原则 4:按文风保留有功能的语气与停顿
-
- 去AI味不是把文字全部磨成句号。质问里的 `?`、爆发峰值的少量 `!` 可以保留;犹豫、未尽、打断或拖长用动作、短句、换行、逗号或句号重排。默认不保留 `……` / `——`;本书明确选择并登记的功能性停顿保留,也要清理无功能的 `!!!` 和随机标点堆砌。
-
- ### 边界:去AI味只处理读感与叙事功能
-
- 去AI味治读感,不承诺任何分数结果。若用户贴出工具报告,只把能对应到正文的问题转成具体修改点;不写“0% AI / 100% 真人”,不注水、故意错字或打乱标点。去AI味仍以原文剧情边界为准,不把表达修复变成新增情节或新增事件链。
-
- ### 作者习惯
-
- 若作者记忆 state 已存在,改写前用 `scripts/author_memory_commit.py query --workspace {工作区} --book-root {书目录} --kind prose_style [--genre {题材}] [--workflow 去AI味]` 获取匹配的 active 文风条目(`--workspace` 必传;`--genre` 填本书题材类型),把输出的 `lines`(≤2KB)交给 inline/spawn 执行者作为自然倾向,不逐条展示或最大化命中,不牺牲连贯、节奏和字数;当前请求、原文剧情功能和本 skill 保护规则优先。用户明确声明长期文风习惯时,改写后按 [references/author-memory.md](references/author-memory.md) 用 `record` 写入并按其「回执怎么告诉作者」转告;只记作者明确说的,一次性要求、反复修改、检测器 findings 和助手自己的结果不记录。`omitted_ids` 非空时,按 `omitted_summaries` 原话告诉作者哪些习惯没带上。
-
- ---
-
- ## 自然文本基准
-
- 去AI味需要知道自然网文文本的特征。下表用于定位常见表达问题,具体取舍按本书文风:
-
- ### 自然文本特征(与AI味对比)
- | 维度 | 自然文本 | AI味文本 |
- |------|----------|--------|
- | 段落长度 | 随 beat 长短不一:爽点/转折压短,推理/氛围/情绪链放长 | 通篇同一长度,整齐均匀 |
- | 句内节奏 | 叙述以逗号长句为主(逗号之间 8-12 字、整句 20-30 字,见 anti-ai-writing.md 规则 3) | 要么长句臃肿,要么通篇碎句像提纲 |
- | 对话标签 | 标签低频且不公式化,多用动作/上下文引出;普通"说"可保留 | 几乎每句都有"说道/问道/笑道" |
- | 情绪表达 | 直写有上下文支撑,反应带后果 | 空转的情绪总结句,或给每个情绪词配微动作 |
- | 比喻 | 贴合人物视角(如"像哈士奇护食") | 套用万能画面(如"如寒冰般") |
- | 语气词 | "嘤""嘶""靠""行吧" | 几乎没有 |
- | 省略 | 省去已清楚的信息,保留必要指代 | 重复解释已知信息 |
- | 排比 | 偶尔1-2个,从不连续3+ | 连续3-5个排比是标配 |
- | 结尾 | 动作/对话收尾 | 总结/升华/感慨收尾 |
-
- ### 自然表达替换参考
- > 以下是替换方向;只沿用原文已有信息,不把示例动作照加进正文。
-
- - 替代"深吸一口气"→ 直接删;若确有功能,改成角色当下动作
- - 替代"眼中闪过一丝..."→ "他垂下眼" / "眯起眼"
- - 替代"嘴角勾起一抹..."→ "他嘴角一扯" / "乐了"
- - 替代"仿佛..."→ 优先直接白描;确需比喻时只留少数生活化、角色化比喻
- - 替代"不禁..."→ 直接写动作
- - 替代"缓缓开口"→ "说" / 用动作引出对话
-
- ---
-
- ## 检测流程
+ > Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 35` 不一致时(标记缺失、字段缺失/非整数、小于或大于 35)**照常按文件存在性检查并 spawn**,同时用一句白话提示作者「写作助手是旧版,运行 /story-setup 后新开对话」,`Notice: agents bundle 版本不匹配(项目 {N},本版 35)` 原文写进技术备注行;大于 35 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有 agent 文件缺失、或运行时不暴露 custom agent 时才降级 solo/direct,`Fallback: ... -> solo` 同样只进技术备注行。
- 去 AI 味只有一条管线:确定性检测器 → 按分级选 Gate → 一次定点改写 → 复扫。长篇写作的章末检测与按需审查、story-review 的确定性预检用的是同一套检测器与 Gate,本 skill 是它的独立入口。
+ ## 执行边界
- ### Phase 1:AI味扫描
+ - 未限定范围的独立去味,完整检查表达、用笔、故事三层。三层是检查对象,不按词频分轻中重;每层可以没有问题。用户明确只查词句、某段或指定 Gate 时,尊重范围。
+ - 普通去味可修表达、恢复已有承接、调整已定内容的详略;允许删除整段无功能内容,保护伏笔、因果、人物选择、情绪体验与揭露顺序。需要改变事件、动机、结果或新增成立条件时,按故事层区分设计提案和已授权重写。不能用新微动作、粗话、证据或冲突制造“真人感”。
+ - 文风裁决只影响表达,不改变事实与信息边界。准确直写、心理活动、带立场的叙述和有功能的停顿均可保留,不机械套 Show/Tell、句长或删减率。
+ - 用户只要检测或标注时,只出诊断,不修改正文;用户要求改稿或已经授权的重写,完成该范围的实际修改。作者报告用白话、原文位置与阅读后果,不把 Gate、类别名、脚本字段当评价。
+ - 不推断作者身份或承诺检测分数。用户提供外部检测报告时,只提取能对应到正文的具体问题。
- **先认篇幅**:目标是单个 `正文.md`(同目录常有 `小节大纲.md` 或 `设定.md`)按短篇处理,门禁 F/G 保留短篇卖点(主观审判句、火葬场预告、心死式章尾);`正文/` 下逐章文件或章节片段按长篇处理。拿不准问作者一句。
+ ### 作者偏好边界
- 对用户提交的文本做快速扫描,标记AI味浓重的位置。报告写给作者:问题用白话说并附原文,脚本名、检测器类别名、Gate 字母不进报告。
+ 只接收调用方已有的作者偏好,不查询或记录作者记忆;独立调用时不加载记忆文件。偏好作为自然倾向,不逐条追求命中,不牺牲连贯、节奏和字数;当前请求、原文剧情功能和本 skill 保护规则优先。
- <!-- author-report -->
- ```md
- ## AI味检测报告
+ ## 去味流程
- ### 整体评估
- - AI味等级:{轻度/中度/重度}
- - 主要问题:{1-3 个白话描述}
+ ### Phase 1:读原文与三层扫描
- ### 问题标记
- | 位置 | 类型 | 原文 | 问题 |
- |------|------|------|------|
- | 第X段 | 套话 | "眼中闪过一丝..." | 典型AI高频词 |
- | 第Y段 | 句式 | "...,带着..." / 连续3句排比 | AI惯用句式,过于工整 |
- | 第Z段 | 情绪空转 | "一丝悲伤涌上心头" | 只总结情绪,没有落点 |
- | 第M段 | 节奏 | 段段4-6句、长度均匀 | 整段同节奏 |
- | 第N段 | 重复描写 | 同一动作连续拆写 | 相邻段重复同一瞬间 |
- | 第P段 | 解释腔 | "她不知道的是…" / "之所以…是因为" | 叙述者跳出角色解释、剧透或下结论 |
- | 第Q段 | 动作清单 | "伸手拿起…取过…放下…转身…" | 像监控录像,缺人物的感受 |
- ```
+ 从正文路径确定书目录和篇幅:单个 `正文.md` 一般是短篇,`正文/` 下逐章文件一般是长篇;优先采用作者与项目的明确说明。按开头的文风裁决读本书要求,通读本次正文,按需查相关前文和已定设计,不整读无关全书。资料缺失时继续有依据的部分,标明未知。
- > 类型 → Gate 速查(选 Gate 用,不写进表):套话 = A,句式 = B,情绪空转 = C,节奏 = D,对话腔调 = E,结尾升华 = F,解释腔 = G,重复描写 = C/D,动作清单 = D/E。
+ 默认完整读取以下三份方法后扫描;明确限定范围时按 [references/deslop-gates.md](references/deslop-gates.md) 选择需要的方法:
- > 评价只输出 AI味等级(轻度/中度/重度)与问题标记;不做「上乘 / 新人投稿属上乘 / 性价比高」这类横向市场判断——skill 没有平台投稿分布数据,这类措辞是无依据的越权担保。
+ | 方法 | 检查什么 |
+ |---|---|
+ | [references/expression.md](references/expression.md) | 先治理电报体与短碎句,再查词句、声口和机械复现 |
+ | [references/narrative-focus.md](references/narrative-focus.md) | 场景作用、详略、关键过程与细节功能 |
+ | [references/story-logic.md](references/story-logic.md) | 行为、因果、立场、变化、后果与知情顺序 |
- **确定性句式预检(文件模式)**:本地文件的「AI味扫描」先运行本 skill 自带脚本,只报告不修改。下列 `node scripts/...` 命令从本 skill 根运行,正文参数使用绝对路径:
+ 本地正文先运行确定性预检,只报告不改写。下列命令均从本 skill 根执行,正文参数使用绝对路径:
```bash
node scripts/check-ai-patterns.js --check --fail-on=blocking <正文文件...>
```
- - 检测器 blocking=必须修,advisory=建议看;脚本不逐词统计整份禁用词表,findings 条数不能直接当定档密度。轻/中/重仍按「诊断与分级」六指标核定。
- - severity=blocking 的类别(`not-is-comparison` / `em-dash` / `voice-contrast` / `negation-parade` / `reverse-not-is` / `trailer-ending` / `trailer-summary`)是写作/去 AI 味时优先处理的问题:章尾预告与章尾状态总结(`trailer-ending` / `trailer-summary`)归 Gate F,其余 blocking 并入 Gate B。
- - 其他 findings(碎句号、长段落、微动作、套式反应细节、动作清单、抽象总结、套词、比喻密度、解释链、公文腔、过度精炼、低连接密度、引号强调滥用、`formulaic-parallelism` 工整并列)只作读感提示;完整类别和修法见 `references/anti-ai-writing.md`。其中工整并列会扫描台词,必须读语境判断,不能因为 hook 对台词低误报豁免就跳过。
- - 处理方式:删重复铺垫、直接写实质内容;需要改写时沿用原文已有选择、台词、物件或后果,不另配身体反应。
- - 若用户只要检测,保留报告不改文。若执行去 AI 味,只改确实损害读感且无叙事功能的问题;功能性写法标 `[需复核]` 并保留。
-
- ---
-
- ### Phase 2:诊断与分级
-
- 用户明确指定 Gate 时,直接使用该范围;未指定时按下表定档、选处理策略:
-
- | AI味程度 | 特征 | 处理策略 |
- |----------|------|----------|
- | 轻度 | 少量禁用词,偶有书面腔 | 只过 Gate A + B |
- | 中度 | 多处禁用词 + 句式套路 + 心理描写抽象 | 过 Gate A + B + C + D + G |
- | 重度 | 全文AI味明显,节奏/对话/结尾/解释腔都有问题 | 完整 7 Gate + 重点段落重写 |
+ 脚本命中是定位线索,零命中不代替三层扫描。blocking 按本书裁决优先处理,advisory 回到语境判断,不为归零机械改稿;完整词条仅在需要定位某种表达时查 [references/banned-words.md](references/banned-words.md)。
- **定档只看这六项**(阈值是参考值,按题材放宽,如古风的对话标签天然偏多):
+ ### Phase 2:定位问题与确定改法
- | 指标 | 计算方式 | 轻度 | 中度 | 重度 |
- |------|----------|---------|---------|---------|
- | 禁用词密度 | 命中次数 / 千字 | ≤5 | 6-15 | >15 |
- | 连续排比段数 | 连续相同句式结构的段落数 | ≤2 | 3-4 | ≥5 |
- | 空转情绪句 | 无落点的情绪总结句数 / 总段落数 | ≤10% | 10-25% | >25% |
- | 对话标签密度 | "说道/问道/笑道" 等 / 对话句数 | ≤30% | 30-50% | >50% |
- | 平均段落句数 | 总句数 / 总段落数 | ≤3 | 3-5 | >5 |
- | 重复描写密度 | 同一信息/动作/情绪连续多段拆写的处数 / 千字 | ≤1处/千字 | 2-3处/千字 | ≥4处/千字 |
+ 每个实际问题记录原文位置、造成的阅读后果、所缺依据和最小改法。区分三种处置:可以直接修复;需要设计但尚未授权;资料不足不能定论。无需凑齐问题数量,也不用表层命中数决定后两层是否检查。
- - **怎么定档**:任一项到重度,或四项及以上到中度,按重度;有一项到中度,按中度;六项都在轻度,按轻度。
- - **要紧处加一档**:本次处理的这段文字里,开头约 500 字、高潮那场戏、最后约 500 字出现重复描写,「重复描写密度」这一项按高一档算(轻→中,中→重)。短篇按全篇、长篇按本章算开头和结尾。
- - **禁用词怎么数**:banned-words.md 的条目作为连续字符串出现一次算一处,同一处只算一次;`.deslop-whitelist` 里的词是命中片段的一部分时不算(免得误报世界观术语)。
- - 按指标定档后,可按题材语境往下调至多一档,并在报告里写明理由;不往上调。
+ 先判断故事的成立条件,再安排场景用笔,最后处理词句。若剧情缺口暂不能改,继续完成独立可修部分,在报告中保留缺口;不要添加表情或总结句假装因果已经修好。作者已授权的剧情重写直接执行,不重复询问同一授权。
- **改写顺序**(只排所选 Gate 的先后,不扩大范围):先去泛化与套话(禁用词、抽象情绪、工整对仗、解释腔),再去书面腔,最后回自然节奏、对话差异与结尾落点;做法与范例见 [references/anti-ai-writing.md](references/anti-ai-writing.md)。
+ 仅检测时到此交付,使用下表,保持正文不变;改稿时表中内容作为执行依据,交付统一走 Phase 5。
- ---
+ <!-- author-report -->
+ ```md
+ ## 检查结果
+ - 表达:{实际问题、未发现明显问题或本次未检查}
+ - 用笔:{实际问题、未发现明显问题或本次未检查}
+ - 故事:{实际缺口、未发现明显问题、资料不足的范围或本次未检查}
- ### Phase 3:逐项清除
+ | 位置与原文 | 读起来有什么问题 | 建议怎样处理 |
+ |---|---|---|
+ | {可定位的原文} | {具体损失或断点} | {可直接改的内容,或需要设计的最小选项与影响} |
- #### Agent 调用:narrative-writer(去AI味执行)
+ {资料不足时写清无法核实什么;没有就省略。}
+ ```
- 「诊断与分级」完成后,按以下顺序选择执行路径:
+ ### Phase 3:按授权改稿
- 1. **已在 narrative-writer 子代理内**:按选定 Gate 范围 inline 执行,不再 spawn(嵌套 spawn 会被静默降级)。
- 2. **未在子代理内且按顶部顺序找到 `narrative-writer` agent**:按当前运行时调用;Antigravity 用 `invoke_subagent(TypeName: "narrative-writer")`,Claude/OpenCode/Codex 用各自字段。prompt 照 [references/agent-calls.md](references/agent-calls.md) 填,只在交给写手时读。
- 3. **agent 不存在或 spawn 失败**:主会话 inline 执行。
+ 1. 已在 narrative-writer 内,按本次范围直接执行,不嵌套 spawn。
+ 2. 主会话找到当前运行时的 narrative-writer,按顶部兼容说明调用;只在此时读 [references/agent-calls.md](references/agent-calls.md),传递实际诊断、原文依据、文风和授权范围。
+ 3. 文件缺失、运行时未暴露 custom agent 或 spawn 失败时,由主会话直接改。
- #### Gate 规则入口
+ 实际执行者按三份方法落改。用笔调整同时处理过详和过略:压缩无功能过程,演出已有的交锋和判断;缺少成立依据就按故事层处理,不凭空补条件。涉及本次要求的视角切换,也核对每项感知/认知的来源,不添加观察经历来保全信息。
- 实际执行者逐项清除前读 [references/deslop-gates.md](references/deslop-gates.md) 的删除保护、所选 Gate 细则与「写法抽查」;inline 与 agent 使用同源规则。按上文「改写顺序」排所选 Gate 的先后,不另起一次全篇去味。
+ ### Phase 4:回读与文件收尾
- ### Phase 4:确定性收尾(文件模式)
+ 对照改前原文、已定设计和授权,回读完整场景:事实、人物选择、因果、情绪承接、空间方向和悬念是否保住,详写重心是否恢复,有没有引入新套式或新的剧情依据。三层各自复核;信息齐全却仍逐项播报、对白仍像提纲时,表达检查不算完成,脚本不能替代这一遍。
- 当输入是正文文件路径,且「逐项清除」已落盘修改后,**先**做句式/段落复扫,**再**做机械标点兜底(破折号要按功能改写,故先于机械替换报出):
+ 文件改稿落盘后,先句式/退化复扫。只有本次获准整理整份文件标点时,才执行下面的标点写入命令;指定段落或定点 Gate 的任务仅在范围内人工整理标点,不能让全文件工具改动范围外内容。扫描到范围外问题只作提示:
```bash
node scripts/check-ai-patterns.js --check --fail-on=blocking <正文文件...>
node scripts/check-degeneration.js --check <正文文件...>
node scripts/normalize-punctuation.js <正文文件...>
```
- 作用边界:
- - `check-ai-patterns.js` 只报告不改写:severity=blocking 的类别优先改正文并复扫;advisory 先通读判断,确属提纲感、解释腔或模板腔再改,功能性写法标 `[需复核]`。
- - 退出 1 表示命中当前 `--fail-on` 范围;退出 2 是命令或文件错误。退化脚本此处默认有任意 finding 即退出 1,须按每条 severity 分流,不能把 advisory 当 blocking。
- - `check-degeneration.js` 报告模型退化(逐字复读/打转、末尾截断、占位符、工程词泄漏 `细纲`/`情节点` 等),每条带 `severity: blocking|advisory`。blocking 是退化信号,去AI味改不掉,应回去重新生成那一段再 deslop;advisory(tier2 章节/歧义词)只提示。
- - `normalize-punctuation.js` 机械兜底:保留书级白名单获准的停顿,清除其余残留的 `……`、漏网破折号 `——`/`—`、双连字符 `--` 和独立行 `---`;默认不改变引号风格,也不把有功能的 `?` / 少量 `!` 改成句号。
- - 知乎盐言短篇可保留 `「」`;只有用户或项目明确要求时,才给标点脚本加 `--quote-mode ascii` 或 `--quote-mode yan`。
+ - 句式脚本只报告;退出 1 表示命中 `--fail-on` 范围,退出 2 是命令或文件错误。每条按严重度和文风判断,功能性写法可以保留并说明。
+ - 退化脚本默认任意 finding 即退出 1,要读每条 severity;blocking 的逐字复读、打转、截断、占位符或工程词泄漏需重新生成受损段,再核对已有事实;advisory 只作提示。
+ - 标点脚本保留书级白名单获准停顿,清除其余省略号、破折号、双连字符及独立分隔线;保留功能性问号和少量感叹号,默认不变引号。仅作者或项目明确要求时才加 `--quote-mode ascii` 或 `--quote-mode yan`。白名单登记按文风裁决文件执行,不因脚本报警自行放行。
- ---
+ 完成一次改稿与复扫;仅为新发现的具体问题继续修补,全文扫描最多三轮。没有新问题即停,达到上限仍未解决的列入报告。脚本不可用时如实说明,继续可完成的语义检查,不宣称已通过。
- **视角改写复核(仅本次要求切换视角时)**:交付前回读原文,逐项核对新增的感知/认知句。原文只说明事件发生,不等于人物已经看见或知道;不得自行补观察时点。没有原文依据的“进门时发现”“后来看到”等句子删去,或只呈现原有、当前场景可见的物件状态;不可得的信息暂不叙述。这个检查先于交付,不能用句式脚本通过代替。
+ ### Phase 5:交付实际结果
- ### Phase 5:输出润色结果
+ 报告分别说明三层实际处理情况,设计缺口尚存时不能称全文问题已清除。数量与字数只报告实际核对的数据,不以删除比例或“AI味等级下降”代替质量判断。只有用户要求另存报告时才新建报告文件。
<!-- author-report -->
```md
- ## 去AI味结果
- - AI味:{轻度/中度/重度} → 改后 {轻度/已基本去除};主要问题:{1-3 个白话描述}
- - 改了 {N} 处:{最多的 2-4 类,如「删掉"眼中闪过一丝"一类套话 6 处;拆开连续排比 3 处」}
- - 字数:{N0} → {N1}({删/增}{百分比}){;超过本档删减上限时写明已分段处理}
-
- ### 改前改后
- {逐段展示,每处一句说明为什么改;超过 30 处时只展示前 10 处 + 末 5 处,其余按问题类型计数}
+ ## 改稿结果
+ - 表达:{改了什么;哪些有效写法保留;不在范围内写本次未检查}
+ - 用笔:{哪处压缩、哪处展开,以及原因;不在范围内写本次未检查}
+ - 故事:{已修的承接/已授权的设计修改;仍需设计或无法核实的部分;不在范围内写本次未检查}
- ### 需要你看一眼
- {标 [需复核] 的地方:原文 + 为什么没动或拿不准;没有就写"无"}
+ ### 代表性改动
+ {少量原文与改后对照,说明读者体验有什么变化;没有发生的修改不列。}
- ### 润色后全文
- {文件模式(默认;章节/正文文件、批量与长篇去AI):直接改写落盘,写明改了哪个文件,本节只回 ≤200 字代表性片段,不向父会话返回全文。文本模式(仅限交互式贴入、无文件路径的零散片段):完整输出润色后的文本。}
+ ### 尚需处理
+ {原文位置、缺什么、最小设计选项及会影响的后文;已经授权的修改应先执行,不在此重复求确认。没有则省略。}
- 下一步:{一句话,如「要我接着处理下一章吗?」}
- 技术备注:{降级或版本提示的原文;没有就删掉这一行}
+ {文件模式:给修改文件路径,只附 ≤200 字代表片段,不回全文;交互贴入且无文件路径的零散片段:给改后全文。}
+ 技术备注:{仅确有降级、版本提示或未运行的检查时保留;否则删此行}
```
- **字数硬约束**:删除比例不得超过「诊断与分级」对应上限(轻度 ≤15%、中度 ≤25%、重度 ≤35%)。超限时分段输出并在报告里标记,不得整段删除正文。
-
- **收敛终止**:
- 1. 同一段连续两轮去 AI 后没有新改动 → 停止该段处理
- 2. 全文上限 3 轮重扫;第 3 轮仍有 ≥10 处改动 → 在报告里标 `[需复核]`,移交人工
- 3. 每轮结束按已选 Gate 复核;有未解决问题则在上述轮次上限内继续,没有则停
-
- ---
-
- ## 使用场景
-
- | 场景 | 操作 |
- |------|------|
- | 用户贴一段文字说"太AI了" | 执行完整检测 + 润色流程 |
- | 用户说"帮我润色" | 先检测AI味,再润色 |
- | 用户说"检查下有没有AI味" | 只做检测,不做修改 |
- | 用户写作中要求 `仅标注 / 只检测 / 不要改` | 嵌入式提醒模式:执行「AI味扫描」和「诊断与分级」,跳过「逐项清除」「确定性收尾」「输出润色结果」;输出问题标记表,不修改原文,不写文件 |
-
- ---
-
- ## 参考资料
-
- 按需加载以下文件:
-
- | 文件 | 何时加载 |
- |------|----------|
- | [references/banned-words.md](references/banned-words.md) | 检测和替换禁用词时 |
- | [references/deslop-gates.md](references/deslop-gates.md) | 逐项清除前:删除保护与所选 Gate 的细则、示例 |
- | [references/agent-calls.md](references/agent-calls.md) | 交给 narrative-writer 去味时:prompt 模板 |
- | [references/anti-ai-writing.md](references/anti-ai-writing.md) | **去AI味完整指南**:预防+改写顺序+范例 |
- | [scripts/normalize-punctuation.js](scripts/normalize-punctuation.js) | 文件模式落盘后做确定性标点收尾;默认保留引号风格 |
- | [scripts/check-ai-patterns.js](scripts/check-ai-patterns.js) | 文件模式预检与复扫;各规则对台词豁免不同,破折号与部分工整并列也查引号内;只报告不改写 |
- | [scripts/check-degeneration.js](scripts/check-degeneration.js) | 文件模式「确定性收尾」复扫,只报告不改写 |
- | [references/author-memory.md](references/author-memory.md) + [scripts/author_memory_commit.py](scripts/author_memory_commit.py) | 读取或更新跨会话作者文风习惯时 |
+ ## 按需参考
- ---
+ | 文件 | 何时读取 |
+ |---|---|
+ | [references/deslop-gates.md](references/deslop-gates.md) | 调用方指定定点问题或 Gate 时,确定范围与分工 |
+ | [references/banned-words.md](references/banned-words.md) | 表达层需要检索词句信号时 |
+ | [references/agent-calls.md](references/agent-calls.md) | 交给 narrative-writer 执行时 |
## 流程衔接
- **流水线:** 通用
- **位置:** 润色(共享收尾)
-
- | 时机 | 跳转到 | 命令 |
- |---|---|---|
- | 继续写作 | story-long-write / story-short-write | `/story-long-write` 或 `/story-short-write` |
- | 发现结构问题 | story-long-analyze / story-short-analyze | `/story-long-analyze` 或 `/story-short-analyze` |
- | 准备做封面 | story-cover | `/story-cover` |
+ 表达和用笔修改按本流程完成;需要继续设计剧情时,携带具体缺口与已知约束进入 `/story-long-write` 或 `/story-short-write`,不把作者创作问题送去拆解他人作品。完整审稿可用 `/story-review`;这些跳转不替代本次已授权的改稿。