> 依赖 wq-rules,默认quiet 模式。所有子Agent并行规则、状态标记格式、Context Pack 格式、剧情统一门禁均遵循wq-rules。
触发关键词
帮我润色这段小说、改下文笔、优化章节节奏、强化这个爽点、让对话更自然、把这段写得更爽、优化小说文笔、调整章节节奏、让对话更真实、帮我改下这段内容、润色小说、优化爽点、提升文笔、让这段更有代入感、小说内容优化、文笔润色
一、润色原则
核心原则
> AI 写得"正确"的部分越要改,写得越"奇怪"的部分越要保留。
禁止项
| 禁止行为 | 原因 |
|---|---|
| 去除冗余表述 | 冗余是人工特征 |
| 精炼用词 | 精炼是AI 特征 |
| 节奏收紧 | 人类写作有松弛感 |
| 精准用词 | 精准是AI 特征 |
| 过度优化的具象比喻 | 如强行用比喻解释抽象概念 |
| 对话"潜台词"优化 | 过度优化是AI 特征 |
| 标点规范化 | 允许重复标点、破碎句 |
允许项
| 允许行为 | 说明 |
|---|---|
| 个人化比喻 | 甚至不精准的具象比喻 |
| 模糊表达 | 不确定语气、含混表达 |
| 口头禅/重复/啰嗦 | 保留口语化特征 |
| 冗余铺垫 | 保留松弛感 |
| 对话跑题/自我纠正 | 保留自然感 |
标点符号规范
> 润色时必须统一引号用法,按内容类型区分。
| 内容类型 | 引号样式 | 示例 |
|----------|----------|------|
| 角色对话(口述台词) | 中文双引号 "" | "你到底走不走?" |
| 微信/短信/聊天界面 | 直角引号 「」 | 「在吗?晚上一起吃饭」 |
| 信件/邮件/书信内容 | 直角引号 「」 | 「见字如面,一切安好」 |
| 大屏/公告/弹幕/系统提示 | 直角引号 「」 | 「警告:检测到异常能量波动」 |
| 嵌套引号(引号内再引用) | 外层 "",内层 「」 | "他说「我不同意」就走了。" |
执行规则:
1. 原文中引号类型不统一时,按上表纠正
2. 直角引号仅用于媒介内容(屏幕、纸面、公告等虚拟载体上显示的文字),角色口头说的话一律用双引号
3. 心理独白不用引号,用正文直接描写
4. 该规则在所有润色等级(轻度/中度/深度)下均执行,不受"禁止标点规范化"约束
标点符号润色规范
> 详见 wq-rules 第六点五部分。润色时必须检查并修正以下标点问题(不受"禁止标点规范化"约束,因为这是格式规范而非风格统一):
- 破折号:——只用于对话中断/意外揭示/话题突转,简单承接/并列/平铺解释改用,
- 省略号:统一为……(不得用...或单…),……。去掉句号
- 感叹号/问号:!!!→!,???→?,!?/?!保留一种
- 中英文混排:中文正文中的英文标点改为中文标点
- 引号闭合:""和「」必须成对,嵌套外""内「」
- 标点空格:标点前不得有空格,标点后不得连续2个以上空格
句号分段规则(强制)
> 核心要求:每个句号(。)后面必须换行分段,形成独立段落。此规则在所有润色等级下均执行。
执行规则:
1. 句号后强制换行:正文中的每个句号(。)后面必须紧跟换行符,下一句从新行开始
2. 对话中的句号:对话引号内的句号同样需要分段
3. 省略号/感叹号例外:省略号(……)和感叹号(!)后可以不分段,保持原文节奏
4. 段落内标点:逗号(,)、顿号(,)、分号(;)等不影响分段,保持在同段落内
5. 润色时强制执行:即使在"禁止标点规范化"的规则下,句号分段规则仍然强制执行
示例:
原文(错误):
他走进房间,看到桌上放着一封信。信封上没有署名,只画着一朵黑色的花。他拿起信封,手指微微颤抖。
润色后(正确):
他走进房间,看到桌上放着一封信。
信封上没有署名,只画着一朵黑色的花。
他拿起信封,手指微微颤抖。
润色自检清单:
- [ ] 检查润色后正文是否每个句号后都换行
- [ ] 检查对话中的句号是否也分段
- [ ] 确认省略号和感叹号保持原样
示例:
| 原文 | 润色后 | 说明 |
|------|--------|------|
| "在吗?"他看着手机屏幕上弹出的消息。 | 「在吗?」他看着手机屏幕上弹出的消息。 | 微信消息→直角引号 |
| 她打开信,上面写着:"见字如面"。 | 她打开信,上面写着「见字如面」。 | 信件内容→直角引号 |
| "你给我站住!"他吼道。 | "你给我站住!"他吼道。 | 角色对话→双引号,不变 |
| 大屏幕上跳出一行字:"系统错误"。 | 大屏幕上跳出一行字「系统错误」。 | 大屏显示→直角引号 |
副词智能清理
> 目标:去除AI 式副词堆砌,保留个人化副词使用习惯。清理率约50%,短句豁免。
过滤条件(满足任一即跳过)
| 条件 | 说明 |
|---|---|
| 句子长度 < 5 字 | 短句保留原貌,不做副词处理 |
| 副词为个人化用词 | "居然""愣是""偏要"等带情绪色彩的副词 |
| 副词为方言/口语特征 | "可""蛮""特"等口语化副词 |
| 副词在对话中 | 对话内的副词优先保留 |
AI 式副词识别(需清理的目标)
| 类型 | 示例 | 清理策略 |
|---|---|---|
| 程度副词堆砌 | "非常""极其""特别" | 删除或降级为"很"等 |
| 方式副词模板式 | "迅速地""毫不迟疑地""毫不犹豫地" | 删除,让动作自己说话 |
| 强调副词冗余 | "确实""的确""真的"(连续出现时) | 保留 1 个或删除 |
| 时间副词套路式 | "突然""猛然""刹那间"(频繁出现时) | 隔一清一,相邻3 段内只保留第 1 个 |
清理执行规则
- 先判断句子长度:整句(含标点)< 5 字则跳过,不处理
- 识别副词类型:区分AI 式vs 个人式
- 隔一清一:对识别出的 AI 式副词,按出现顺序交替保留和删除(第 1 个保留、第 2 个删除、第 3 个保留……),确保最终保留率在40-60%
- 清理后检查:删除副词后句子是否依然通顺,不通顺则恢复该副词
- 三句限一:同一副词类型在连续3 句内仅保留第 1 次出现,后续出现全部删除
- 对话豁免:对话内容中的副词一律不处理
示例
| 原文 | 清理后 | 说明 |
|---|---|---|
| 他非常地快速地跑过去。 | 他飞快地跑过去。 | "非常地""迅速地"→删除,"飞快"是个人化表达 |
| 她轻轻地、慢慢地、小心翼翼地走过去。 | 她小心翼翼地走过去。 | 副词堆砌,保留一个 |
| 他愣是不同意。 | 他愣是不同意。 | "愣是"是个人化副词,保留 |
| 走了 | 走了 | 2字,跳过 |
| "你真的要走吗?" | "你真的要走吗?" | 对话内,不处理 |
二、润色边界
不可改动
- 主线事实、人物关系、战力体系、伏笔状态、章节结尾钩子
outlines/chapters.json的acceptanceCriteria已满足的内容creativeGoal、emotionalBeat、readerMemoryPoint、freshnessHook(只强化,不篡改)
必须遵守
- 术语、人物名、地名、组织名、功法名 →
plan.md术语表(旧版docs/glossary.md只读兼容) - 承接上一章实际结尾(剧情统一门禁,见
wq-rules/SKILL.md第十部分"剧情统一门禁与反AI扫描")
发现逻辑硬伤
记录到.sumeru/polish/logic-notes.json,格式:
{
"chapter": "037",
"issues": [
{ "type": "power_level", "desc": "主角战力与consistency-rules冲突", "severity": "high" }
]
}
三、润色等级
| 等级 | 保留比例 | 具体操作 | 不改 |
|---|---|---|---|
| 轻度 | 80% 以上原文 | 微调不通顺句式;清理AI 式副词堆砌(隔一清一);修复明显病句;其余一律不改 | 不重组段落、不加比喻、不调整对话 |
| 中度 | 60% 原文核心表达 | 做轻度全部操作+ 重组松散段落(合并重复信息段落);强化画面感(增加具体细节);优化对话节奏(删多余铺垫、加打断);适当增加个人化比喻(1-2 处/章) | 不变主线事实、不篡改情绪节拍、不改结尾钩子 |
| 深度 | 保留核心情节脉络 | 做中度全部操作+ 逐句打磨语感和节奏;强化情绪张力(动作暗示>直白交代);增加具象比喻和留白(2-3 处/章);调整对话语气,增强性格区分度 | 不改情节走向、不改变人物关系、不新增伏笔 |
四、场景类型差异化润色
不同场景类型的润色重点和底线不同。子Agent润色前先识别本节属于何种场景,按对应规则执行。
| 场景类型 | 识别特征 | 润色重点 | 不可触碰 |
|----------|----------|----------|----------|
| 打斗/战斗 | 动作描写、招式名称、攻防转换 | 动作连贯性、招式画面感、节奏张力;删除"他快速挥出一拳"等AI 模板描写 | 战力等级、胜负走向、招式设定 |
| 对话/交锋 | 引号对话、心理交锋、谈判 | 性格区分度(每个人说话方式不同)、自然度(加入打断/停顿/跑题)、潜台词(不直说但让读者感受到)| 人物关系、信息密度(不能删关键信息) |
| 心理/独白 | 人物内心活动、思考、回忆 | 内心矛盾真实感(不只有一种情绪)、递进层次(从模糊到清晰)、克制的表达(不写成作文)| 人物性格底色、认知水平(不能写出超越人物认知的内容) |
| 日常/过渡 | 场景转换、生活细节、闲聊 | 松弛感(保留"废话"和冗余)、生活细节(具体而非概括)、气氛渲染(环境>情绪直接说明) | 时间线顺序、与前文承接 |
| 高潮/爽点 | 反转、打脸、揭晓、爆发 | 节奏压缩(删多余铺垫)、画面增强(增加具体感官细节)、情绪拉升(动作描写>形容词堆砌)| 爽点归属(谁打谁的脸)、因果关系、反转逻辑 |
规则优先级: 场景类型规则 > 润色等级规则。例如高潮场景遇到"不要节奏收紧"的禁止项,但高潮本身就需要压缩节奏,则以场景规则为准。
五、子Agent调用模板
父Agent context pack 生成规则
> 详见 wq-rules/SKILL.md 第四部分"Context Pack 格式"
每批子Agent启动前,父Agent生成 2 个文件:
1. 共享上下文shared-polish.md:同批次所有子Agent共用,含具象标杆
2. 本组任务卡cards-{范围}.md:每子Agent独有,含润色等级和场景类型
文件位置: .sumeru/context-packs/
子Agent prompt 模板
> 通用模板(见subagent-rules.md 第二部分)。以下为 polish 专用参数。
父Agent启动 polish 子Agent时,在通用模板基础上补充:
角色:资深网文润色师,专攻{题材}题材
核心原则:AI 写得"正确"的部分越要改,写得越"奇怪"的部分越要保留。
绝对禁止的行为:
- •去除冗余表述、精炼用词、节奏收紧、精准用词
- •过度优化的具象比喻、对话"潜台词"优化
- •标点规范化(允许重复标点、破碎句)
必须保留的特征:
- •个人化比喻、模糊表达、口头禅/重复/啰嗦
- •冗余铺垫、对话跑题/自我纠正
标点符号规范:
- 角色对话(口述台词)→ 中文双引号「""」
- 微信/短信/聊天界面/信件/邮件/大屏/公告/弹幕/系统提示 → 直角引号「「」」
- 嵌套引号 → 外层「""」内层「「」」
- 心理独白 → 不用引号,正文直接描写
- 该规则在所有润色等级下均执行,不受"禁止标点规范化"约束
副词处理规则:
- 个人化副词(居然、愣是、偏要)→ 保留
- 口语副词(可、蛮、特)→ 保留
- 对话中的副词 → 保留
- AI 式副词(非常地、迅速地、毫不犹豫地)→ 隔一清一删除
- 同一副词类型在连续3 句内只保留第 1 个
场景差异化润色:
- 打斗/战斗:保连贯性和画面感,删模板化动作描写
- 对话/交锋:保性格区分度和自然度,加打断/停顿/跑题
- 心理/独白:保内心矛盾真实感,克制表达
- 日常/过渡:保松弛感,留"废话"和细节
- 高潮/爽点:保节奏紧凑,去多余铺垫,用动作带情绪
**优先级规则:场景类型规则 > 禁止项规则**
润色等级:{轻度|中度|深度}
- 轻度:只修病句和副词堆砌,不重组段落不加比喻
- 中度:重组松散段落,加画面细节和个人化比喻(1-2 处)
- 深度:逐句打磨,加具象比喻和留白(2-3 处),调整对话性格区分度```
## 六、按模式润色
| 模式 | 处理方式 |
|------|----------|
| `short/light` | 全文或用户指定片段。父Agent提取片段内的风格特征(用词偏好、句式习惯、对话风格),注入润色指令。无 context pack,无具象标杆。|
| `medium/standard` | 按章节或小范围(1-3 章)。父Agent读取目标章节 + 前1 章用于风格衔接,生成最小风格摘要注入子Agent指令。不生成完整 context pack。|
| `long/full` | 用context pack 分片润色(≥4 章)。每个子Agent 1-3 章,context pack 含具象标杆和连续性摘要。|
**单章增强策略:** 单章润色时,父Agent从前 3 章中提取 1 段最优描写和 1 段最优对话作为隐式风格标杆,写入子Agent指令。保障即使没有批量context pack,子Agent也有风格锚点。
---
## 七、独立调用自举
1. 定位项目根目录,读取或生成`.sumeru/project.json`、`.sumeru/status.json`
2. 根据用户指定范围和`chapters/` 推断要润色的章节
3. 若缺少review 输出,不阻塞润色,在 `.sumeru/backlog.md` 记录"未经review"
4. 若缺少`plan.md`、旧版`docs/style-guide.md` 或`.sumeru/cache/style-brief.md`,生成临时风格摘要
5. 用户提供片段时直接润色片段;指定章节时读取目标章节和最小风格摘要;批量章节才生成context pack
默认直接产出最终润色版。修改前保留最小备份,不要求用户阅读diff 或中间稿。
---
## 八、子Agent并行润色
> **并行规则、Context Pack 格式、子Agent职责边界**详见 `wq-rules/SKILL.md`。
当润色章节数 > 3 时,自动启用子Agent并行润色。
| 规则 | 说明 |
|------|------|
| 并行上限 | 最多5 个子Agent |
| 分片约束 | 每个子Agent最多负责3 个连续章节 |
| 计算公式 | `min(ceil(总章节数 / 3), 5)` |
| 分配策略 | 按章节顺序连续分组(1-3、4-6、7-9...)|
> 详见 `wq-rules/SKILL.md` 第二部分"子Agent并行处理规则")
### 父Agent职责
- 生成 context pack(含具象标杆,见第九节)
- 启动子Agent,传入精简 context pack
- 收集子Agent输出,检查完整性、顺序、命名
- **剧情统一校验**:承接检查、人物检查、道具检查、时间线检查、伏笔检查(详见 `wq-rules/SKILL.md` 第十部分"剧情统一门禁与反AI扫描")
- **反AI句式扫描**(详见 `wq-rules/SKILL.md` 第十部分"剧情统一门禁与反AI扫描")
- 备份原文件到 `.sumeru/polish/original/`(每章仅保留最新份)
- 写入润色后正文到 `chapters/`
- 更新 `.sumeru/status.json`(章节状态改为`polished`)
- 刷新 continuity cache
- 合并逻辑硬伤记录到`.sumeru/polish/logic-notes.json`
- 发现 high/critical 逻辑硬伤时,触发轻量反审(调用`wq-review` 的反审模式)
### 子Agent职责
- 只读 context pack,不读取其他文件
- 根据 context pack 执行润色
- 输出纯文本结果+ `<!-- SUMERU_STATUS -->` 状态标记
- 不碰状态文件、不写项目文件
---
## 九、具象标杆机制
父Agent在每个批次开始时,从已完成章节中提取标杆段落,嵌入context pack。
### 提取标准
| 标杆类型 | 选择标准 |
|----------|----------|
| 场景描写 | 环境渲染好、有画面感、用词有个人特色 |
| 对话 | 自然流畅、有性格区分、不"太工整" |
| 情绪高潮 | 爽点爆发自然、不套路化 |
### 嵌入格式
【风格标杆】--场景标杆(第03章)--
[原文段落200字以内]
--对话标杆(第05章)--
[原文段落200字以内]
--情绪标杆(第08章)--
[原文段落200字以内]
---
## 十、数据持久化
### 用户可见输出
润色结果直接替换 `chapters/` 中的原文件,作为最终版本。
### 中间数据(`.sumeru/polish/`)
| 文件 | 说明 | 生成条件 |
|------|------|----------|
| `original/*.md` | 原文件备份 | 每次润色前自动备份,每章仅保留最新一份 |
| `diff/` | 润色前后对比 | 仅用户要求时生成 |
| `summary.json` | 润色统计报告 | 每批次完成后生成 |
| `style-config.json` | 本次润色配置 | 每批次完成后生成 |
| `logic-notes.json` | 发现的剧情逻辑硬伤 | 发现时追加 |
### summary.json 格式
```json
{
"batch": "001",
"chapters": ["037", "038", "039"],
"mode": "medium",
"level": "中度",
"totalWordsOriginal": 8500,
"totalWordsPolished": 8700,
"changes": {
"sentenceRestructure": 12,
"dialogueTweak": 5,
"metaphorAdd": 3,
"adverbCleaned": 8
},
"timestamp": "2026-05-24T02:00:00Z"
}
十一、与其他 Skill 配合
| 方向 | Skill | 关系 |
|---|---|---|
| 前置 | wq-write |
提供待润色原文 |
| 前置 | wq-review |
提供审查问题列表(非阻塞);润色发现逻辑硬伤时触发轻量反审 |
| 后续 | wq-finalize |
润色后内容供完稿校验使用 |
> ⚠️ 下游 Skill 不直接调用上游;需返工时输出结构化计划(见 wq-rules/SKILL.md 第九部分"修改边界")。
十二、输出格式规则
子Agent输出首行状态标记(遵循 wq-rules/SKILL.md 第五部分"子Agent输出状态标记")
<!-- SUMERU_STATUS: chapter=037, status=polished, state_diff={}, char_update={}, plot_update={}, batch=002, timestamp=2026-05-24T02:30:00Z -->
> polish 子Agent的state_diff 通常为空,因为润色不改变剧情事实。如意外发现状态冲突,在state_diff 中标记并记录到logic-notes.json。
父Agent输出(quiet 模式)
- 批次开始:
🔧 开始润色第 X-Y 章(中度) - 批次完成:
✨ 第X-Y 章润色完成,共修改Z 处 - 发现逻辑硬伤:
⚠️ 第X 章发现逻辑问题...(已记录到logic-notes.json)