分布式模块化小说创作
> 核心思路:主Agent 将重型思考委派给两个专业子Agent(规划师、整合师),自己只做机械调度——派发规划→直接管写手→派发整合。子Agent 不能嵌套派发其他Agent,所以写手集群由主Agent 直接调度(没有中间层)。线性模式为不派子Agent 的主控直写路径;金字塔模式为子Agent 分工路径。机械步骤全由确定性脚本执行。
【默认路径(线性模式,推荐 ≤30章 短中篇)】
阶段0 剧情方向提案 → 阶段1 设定构建 → 阶段2+3+4 主控直写 → 阶段5 主控直写正文 → 阶段6 脚本装配+终检
(主Agent,出5方向) (主Agent) (主Agent,不派子Agent) (主Agent,批量写) (脚本+主Agent)
【🆕 线性模式(用户说「线性」「不怕时间长」「缓存优先」时启用,不限章数)】
阶段0-6 全部由主Agent 单会话顺序完成,不派任何子Agent,逐模块串行直写
目标:prompt 前缀稳定 → 缓存命中率最大化 → API 成本最低。用时间换钱。
(适合:长篇但不赶时间、预算敏感、能接受单Agent长跑的场景;≤30章 默认走此路径)
【金字塔模式(>30章自动启用)】
主Agent
├─→ 阶段0 剧情方向提案(主Agent 亲自:发散 5 个约500字剧情大致方向 → 用户锁定 → 写需求.md)
├─→ 派发 规划子Agent(独立完成阶段1-2:设定→大纲;多大纲模式含方案锁定)
├─→ 主Agent 直管 细纲子Agent 集群(阶段3+4:一个细纲单元一个子Agent,两段式:
│ Phase A 细纲+模块规划表 → 主控统一分配模块号+写模块索引 → Phase B 模块规格书)
├─→ 主Agent 直接调度写手(阶段5:按模块索引派发,管理状态传递)
│ └─ 模块写手(一个模块 = 一个写手,独立完成该模块全部章节,主Agent 直派)
└─→ 派发 整合子Agent(独立完成阶段6:装配+接缝+一致性+终检)
两层架构:主Agent(派发规划/细纲/整合 + 管写手)→ 执行子Agent(规划师 / 细纲师们 / 写手们 / 整合师)
【多大纲模式(用户说「多大纲」「大纲方案」「方案选择」时启用,可与线性/金字塔叠加)】
阶段0 剧情方向提案 → 阶段1 设定构建 → 阶段2 生成 N 个候选大纲方案 → 用户选 1 个 → 锁定 → 阶段3-6 按既有流程
(线性:主控生成方案并让用户选;金字塔:规划子Agent 生成方案 → 回报清单 → 主控转交用户选择 → 回传锁定)
叙事结构层级:大纲(全书=主线+支线)→ 细纲(一条完整主线/主线的一个阶段/一条支线)→ 模块(主线的一个情节/一条支线,一个写手独立完成)→ 章节(模块内最小单位)。🆕 多大纲模式下,大纲层先生成多个候选方案(默认3个,存 大纲方案/),用户选定后把选中方案复制为 剧情大纲.md 锁定,后续层级不变。
一、模式选择规则
- ≤30章 → 默认线性模式(主控直写,脚本兜底)
- >30章 → 自动金字塔模式(主Agent 委派规划/整合 + 直管写手)
- 用户说「金字塔」「分布式」「质量优先」 → 强制金字塔,无视章数
- 🆕 用户说「线性模式」「线性」「不派子代理」「缓存优先」「不怕时间长」「单Agent直写」 → 强制线性模式,无视章数:主Agent 单会话顺序完成阶段0-6,不派任何子Agent,逐模块串行直写,以 prompt 前缀稳定换取缓存命中率最大化。不限章数,可跑长篇。可与多大纲模式叠加(「多大纲+线性」)
- 用户说「多大纲」「大纲方案」「多方案」「方案选择」 → 强制多大纲模式:阶段2 生成 ≥2 个候选大纲方案(默认3个)供用户选择,选定后锁定为
剧情大纲.md再继续阶段3-6。可与线性/金字塔叠加(如「多大纲+线性」「多大纲+金字塔」) - 用户说「要报告」「生成报告」 → 报告模式:写手自检报告 + 日志使用报告 均生成(默认不生成,仅用户显式要求时生成)
- 用户说「免报告」「不要报告」 → 明确关闭报告(默认行为,防歧义)
- 🆕 用户说「套路化」「套路模板」「模板化写书」「穿越系统流」「换地图流」 → 套路化模板风格:按
references/风格库.md「套路化模板(穿越系统流)」预设执行——主角硬模板(穿越者/普通人/无父无母无社交/未成年/系统)+ 事件循环结构(卷入事件→千难万险→解决→战后总结必看面板→日常回→下事件)+ 三分内容七分水 + 阴谋≤2层 + 角色用完即淡化 + 敌人同层次 + 层次到顶换地图。可与线性/金字塔/多大纲叠加(如「套路化+线性」「套路化+多大纲」) - 单Agent长篇质量下滑 → 切换本技能,剩余剧情模块化
- 只聊设定不动笔 → ❌ 不触发,用普通创作
二、全局硬性规则(所有阶段必须遵守)
- 工作空间即项目根:所有文件直接写在工作空间顶层目录,不套子文件夹。
<PROJ>= 当前工作空间路径。主Agent 初始化目录骨架,子Agent 直接往里读写。脚本路径用<SKILL_DIR>/scripts/xxx.py,产出路径用<PROJ>/xxx.md。🆕 路径铁律(最高优先级):所有 Write/Edit 工具的file_path参数必须是以<PROJ>开头的绝对路径(如<PROJ>/设定集.md、<PROJ>/章节/模块01_第1-2章.md),禁止使用纯文件名(如设定集.md)或相对路径(如./设定集.md、references/xxx.md)。子Agent 的当前工作目录未必是<PROJ>,使用短路径会导致文件写到外面、后续 Agent 找不到。违反一次 → 该阶段全部文件重写。主控派发子Agent 时 prompt 中必须显式声明此规则。 - UTF-8 编码:写入任何文件必须指定 UTF-8。Write 工具默认 UTF-8,优先使用;Python 用
open(path, 'w', encoding='utf-8');读取时用encoding='utf-8-sig'容错。给子Agent的 prompt 中必须显式声明此规则。 - 子Agent用完即删:金字塔模式下,任何子Agent 完成任务且产出验证通过后,主控必须立即
shutdown_request终止。同一子Agent 不可跨任务复用——模块间派新写手、重写时先删旧再派新。跨会话限制:SendMessage/TeamDelete仅当前会话团队上下文可用;跨会话遗留的子Agent 进程随会话终止,仅剩磁盘 json 元数据,清理时需rm -rf~/.workbuddy/teams/下对应目录(逐目录删,每目录<50文件以避 安全删除 守卫)。线性模式下不适用(不派子Agent)。 - 正文格式规范(写手必须遵守,整合师必须复查):
- !!!全文禁止中文破折号——(叙事和对话都不行),改写为逗号/句号/省略号。这是头号污染源,写错一次整模块返工。警告在references/写手铁律.md第二节首行(写手 Read 必达)
- 对话格式:所有角色对话必须用中文双引号""括起来。必要时对话前加冒号:引导(如角色首次开口、大段独白、心理活动转有声自语等场景)。对话提示语("XX说""XX道")后统一用冒号接引号,不用逗号。禁止无引号的裸对话、禁止用英文引号""替代中文引号""
- 禁止单独成行的---、***、___、===(markdown 分割线);章节之间空行分隔
- 称呼密度:叙事段落指代主角以代词(他/她)为主,每段代词出现次数 ≥ 该段主角名字出现次数 / ratio(默认 ratio=1,即代词应多于名字);但段落开头的第一次指代必须用主角名字,不得用他/她;对话段落按口语习惯
- 每章正文末尾单独一行标注__模块边界__(整合阶段由脚本移除)
- 每章必须以 markdown 标题开头:格式## 第N章:章节名(中文冒号)。禁止只在段首写纯文本行第N章 xxx(拼接后不被识别为标题、且 格式检查 统计会漏判),禁止仅靠__模块边界__分章而无标题行。整合师装配前必须确认 1–N 章每章均有## 第N章标题行,缺失则补(可用脚本扫描^#{1,6}\s*第(\d+)章严格校验)。 - 主控上下文保护:金字塔模式下,主Agent 绝不读取章节正文全文。主Agent 只读:大纲单元清单与接口状态、模块规划表、模块索引、各自检报告(如生成)、整合质量报告。一切正文级检查(接缝、一致性、润色)全部由整合子Agent 执行。线性模式下此规则不适用——主控直接创作正文,可以读写正文全文。
- 模块 = 写手任务单元:一个模块由一个写手子Agent 独立完成该模块全部章节(模块 2-5 章,规格书自带完整叙事弧,写手同一上下文内保证模块内叙事连续)。🆕 默认全并行调度(2026-08 修订):模块规格书【前置状态】字段已含完整状态接口,全部模块一次性并发派发(每波 ≤25),各写手以规格书预期前置状态开工,不做串行等待;接缝一致性由整合阶段统一检测(接缝检测.py + 因果/状态核对)。仅当某模块规格书【前置状态】缺失或过粗(<5项或无角色/势力状态)时,该模块才降级为串行接力(用上一模块实际后置状态)。🆕 静态规则下沉:文笔硬规范/格式铁律/创作约束/命令序列全部集中在
references/写手铁律.md,写手 Read 一次,主控派发 prompt 只写任务+路径(不重复粘贴,省 ~1500 token/模块)。 - 写手并发上限:每波并发写手 ≤25 个(含并行模块写手)。超过 25 个回报同时涌入会导致主控上下文被淹没,丢轮次、丢进度。该上限由主Agent 上下文容量决定,非硬件 CPU/内存——写手单次回报的正文+报告远超派发指令,上下文膨胀速度与并发数成指数关系。运行中若出现回报丢失/进度卡死,自动降级(25→20→15→10→5),每级间隔 1 波验证;降级后项目不再回升高限(除非下个项目手动重置)。写手集群总量超 25 时分多波派发,波间间隔 ≥1 分钟让上下文释放。🆕 汇报协议:写手只报摘要(字数/通过状态/后置状态),不贴命令输出原文——这是并发上限可从 20 提到 25 的关键。
- 文件路径可靠性:Windows 中文路径下 Python
glob.glob()可能返回幽灵文件。文件存在性验证与列表以 bashls/find为准。装配正文.py默认吸入 章节/ 内所有 .md 文件(含_*开头的散落文件/草稿/临时产物),因此装配前必须确保 章节/ 仅含规范模块文件模块*_第*章.md(_*散落文件移出或删除),或用显式文件列表传参。装配后__模块边界__与分割线由脚本自动剥离,无需 grep 残留检查(见 第九节);破折号残留以 格式检查.py 为准。 - 每章字数:写作要求 4000 字,检查门禁 2000 字(两档分离,2026-08 修订):
- 写作要求:每章按 4000 字 创作(风格档案的区间仅作为弹性期望,中心值一律 4000)。写手 prompt 与模块规格书的「字数目标」字段按此填写。要求定高、门禁定低,是为了让写手一次写足,避免在 2000 上下反复扩写补字数。
- 检查门禁:每章正文非空白字符数(统计字数.py 口径)硬性下限 2000 字,不适用容差,由check_chapter.py(阈值 2000)与生成报告.py --min-chars 2000强制执行。不足 2000 字的章节视为不合格,必须退回补写或扩写,不得以「剧情在此处自然结束」为由豁免。
- 两档关系:写手按 4000 写、产出 3000-4000 都算达标(检查只看 ≥2000);低于 2000 才算不合格。检查阈值不得随写作要求上调——门禁永远 2000,这是防误杀的保护垫。 - 世界观构建复杂度要求:世界观构建不得停留在「某某大陆 + 几大势力」的表层。必须覆盖以下至少 4 个维度,每个维度有具体细节(非一句话带过):
- 地理/空间:不少于 3 个有命名的具体地点,含空间关系与交通/移动方式
- 历史/时间:不少于 2 个关键历史事件节点,含事件起因/过程/后果/当代影响
- 社会/势力:不少于 3 个有名有实体的势力,含目标/资源/关系网/内部结构
- 规则体系:力量/魔法/科技体系含至少 3 个层级或分支,每层有明确能力边界与代价
- 经济/资源:明确的资源流通逻辑(货币/灵石/能源等),含稀缺性与争夺关系
- 文化/信仰:至少 1 套信仰体系或文化传统,含仪式/禁忌/日常体现
- 剧情逻辑一致性强制检测:整合阶段必须对以下逻辑维度逐项检测,不可仅靠脚本格式检查:
- 因果链完整性:每个重大事件必须有前因(谁为什么做)和后果(对后续产生什么影响);不得出现"莫名其妙就发生了"的事件
- 角色行为一致性:角色决策必须与其已建立的性格、知识水平、当前处境自洽;不得为了推进剧情而让角色做出不符合其智商的降智行为
- 信息对称性:角色只能基于其已知信息行动;写手不得将自己知道的全局信息赋予角色(除非角色通过剧情合理获知)
- 时间线一致性:事件发生顺序、时间间隔、同时发生的事件之间的因果关系不得矛盾
- 🆕 数值一致性(系统流项目必检):正文所有数值(等级/经验/属性/积分/货币/冷却/数量)必须与
references/数值台账.md及设定集数值规则表逐条验算一致,收支有来源有去向;任一矛盾 🔴 退回重写。机制详见references/风格库.md系统流预设
- 🆕 文笔质量底线(所有风格共享,写手必须遵守、整合师必须抽查):风格库的「文笔倾向」只定方向,本条定可客观检查的底线。详细检查项见
references/写手铁律.md第一节「文笔质量硬规范」(含第10条 真实人声规范——4大死亡气味/对话7原则/自检5步法,自references/创作方法论.md第三节浓缩注入;含第11条 章头钩子规范与第12条 修辞密度纪律,2026-08 增补),核心包括:- 感官描写:每章 ≥ 2 种感官(视觉/听觉/触觉/嗅觉/味觉)
- 场景落地:每个新场景开头用 ≥ 1 句环境/物象细节落地,禁"他们来到X地"式概括
- 对白质感:不同角色对话用词/句长可分辨;禁翻译腔填充对白("哦,是这样啊"等);对话标签克制
- 句式节奏:长短句交替,禁连续 5 句以上同长度
- AI套话清单(目标 0 处,硬性门禁 <3 处/章)(脚本客观验证,非人工抽查):完整清单见
scripts/cliche.txt(唯一源)——不禁/不由得/不由自主/下意识地/缓缓开口/淡淡地说/微微一笑/嘴角上扬/嘴角勾起/眸子闪过/深邃的眼眸/眉头微蹙/仿佛…一般/如同…似的/宛如…一样/一股…涌上心头/心中一阵/这是……?/难道说……? + AI高频描写套话(2026-08 增补:银铃般/如遭雷击/心脏猛地一/指尖泛白/眼底闪过/勾起一抹/一丝不易察觉/难以言喻/莫名地/脑海中闪过/空气仿佛凝固/时间仿佛静止 等 21 条,同门禁) + 章末收束句组(暗暗发誓/目光坚定/长舒一口气 等)+ 章末氛围腔组(过了一会儿,/不知过了多久 等,2026-08 增补)。检查方式:报告模式 生成报告.py --full 自动检查;默认模式 写手用 格式检查.py --cliche-file 自查 + 整合师抽查(见 写手铁律.md 第四节)。失败判定只按「AI套话」组 ≥3 处计(格式检查.py 已实现),章末收束句/氛围腔命中仅警告。另有三类句式级 AI 腔靠人工禁令把关(状态闭合/意象点题/双重否定总结,正则无法稳定区分正常用法)与 推测式表意句,见 写手铁律.md 第三节第9条 + 第一节第5/9条 - 🆕 叙事视角纪律(限知 POV,2026-08 增补):叙述层只能写主角能感知的东西——他人内心/态度/动机、替主角解读听不懂的内容("像一个交代又像一个安排")、超认知词汇 均禁止。判据与判例见 写手铁律.md 第一节第9条;整合师按 阶段6 逻辑一致性专项检测「视角纪律」项逐段判读,越界 🔴 退回改写
- 🆕 章末切点(模块内章节强制):非模块末章章末 = 叙事切点(断在动作/对话/悬念半途),下一章开头直接接续,读起来像一章拆两章;禁止"坚定信念/内心独白/情绪收束"式章末(暗暗发誓/目光坚定/长舒一口气/释然/而这只是开始…)。详见 写手铁律.md 第三节第9条
- 🆕 章头钩子(2026-08 增补,与章末切点构成"章首-章尾"双闸):每章前三句内必须出现进行中动作/冲突/悬念/张力对话至少其一;六大禁用开场(天气空镜/醒来式/简历介绍/世界观说明/流水账铺垫/回顾前情)。判据与判例见 写手铁律.md 第一节第11条;整合师 Step 6.4.5 抽查,禁用开场 🔴 退回改写
- 🆕 修辞密度纪律(2026-08 增补,防"修辞通胀"):一段 ≤1 比喻(全章上限 ≈ 字数÷500)、禁三连排比("不是A,不是B,而是C")、单句成段 ≤3 次/章只留给重击点、浓烈情绪段 ≤ 章幅 10%、环境描写连续 ≤3 句须有动作/对话切入。判据见 写手铁律.md 第一节第12条;整合师 Step 6.4.5 抽查,零星超量 🟡 直接删改、大面积堆砌 🔴 退回
- 心理描写:用动作/表情/环境折射,禁大段直白独白(连续 ≥ 3 句"他想……他觉得……"视为不合格)
- 信息倾倒禁令:设定融入场景与对话,禁连续 ≥ 4 句纯设定介绍
- 动词精准:用具体动词(踹/拧/揪)替代万能动词(打/弄/搞)
- 写手 Read
references/写手铁律.md获得全部硬规范(prompt 不再重复粘贴);自检报告用生成报告.py --full生成(含「文笔质量检查」表 + AI套话自动检查)——自检报告默认不生成,仅用户说「要报告」时生成;不生成报告时 AI套话检查改由写手格式检查.py --cliche-file scripts/cliche.txt自查(命令见 写手铁律.md 第四节);整合师 Step 6.4.5 必须抽查(每模块 ≥ 1 章,每章 ≥ 800 字片段)
- 🆕 使用日志(全流程强制,一行 bash 埋点):项目关键事件必须落日志——项目启停、各阶段开始/完成、子Agent 派发/终止、质检结果、退回重写、并发降级、错误。统一由
scripts/日志记录.py确定性写入<PROJ>/日志/events.jsonl(JSONL,一行一事件),禁止手工拼 JSON、禁止跳过埋点。事件名必须对齐脚本文件头约定(阶段开始/阶段完成/质检结果/退回重写/并发降级…),自由文本事件名会导致汇总漏统。日志使用报告(日志/使用报告.md)默认不生成——仅用户说「要报告」时,交付前运行日志记录.py <PROJ> summary生成(KPI 自动核算)随 输出/ 一并交付;日志/(含 events.jsonl)始终保留,是交付物,清理中间产物时不得删除。 - 🆕 创作方法论注入(2026-08 专家知识融合):
references/创作方法论.md是叙事结构/角色设计/去AI感/质量评分的唯一方法论源,各阶段 Agent 按职责 Read 对应小节,主控派发 prompt 中显式声明(不内联全文,防 token 超限):- 阶段1 设定构建 → Read 第二节(角色设计:三维角色/Wound→Lie→Want/Need/声线卡/反派镜像/单维度禁令)
- 阶段2 剧情大纲 → Read 第一节(结构框架选择/Save the Cat 节拍映射/三个不可逆点/钩子7类型/伏笔登记预警)
- 阶段3 细纲 → Read 第一节(场景节拍/MRU)
- 阶段5 模块创作 → 已由 写手铁律.md 第一节第10条浓缩覆盖,写手无需重复 Read(完整版备查)
- 阶段6 整合 → Read 第三、四节(AI味打分/5维加权评分/7大痛点节点检查),终稿必须产出 5维评分表(写入 整合质量报告.md)
分工边界:创作方法论.md 管"怎么写得好"(判断级),写手铁律.md 管"什么是红线"(脚本可检),风格库.md 管"用哪种声音写"——三者互补不重复。
三、项目目录结构
工作空间即项目根。所有文件直接写在当前工作目录下,不套 <小说名>/ 子文件夹。主Agent 和所有子Agent 共享同一个工作空间,路径统一、无需传递子目录名。
<工作空间>/ ← 当前工作空间 就是项目根,所有 Agent 共用
├── 剧情方向.md ← 🆕 阶段0产出:5 个剧情大致方向(每个约500字)+ 差异对照,供用户锁定
├── 需求.md ← 🆕 阶段0产出:原始需求 + 选定方向(后续所有子Agent 的需求统一读此文件)
├── 设定集.md ← 阶段1核心产出(硬约束+参考信息+接口协议)
├── references/ ← 阶段1细分参考(世界观/角色档案/时间线/术语辞典等;🆕 系统流项目另含 数值台账.md)
├── 大纲方案/ ← 🆕 多大纲模式专用:候选大纲方案(方案A/B/C…),选定后复制为 剧情大纲.md
├── 剧情大纲.md ← 阶段2产出:主线+支线+主线阶段划分(多大纲模式下 = 已锁定的选定方案)
├── 细纲/ ← 阶段3产出:细纲_主线阶段N_<名>.md / 细纲_支线X_<名>.md
│ (细纲 = 一条完整主线或主线的一个阶段 / 一条支线)
├── 模块/ ← 阶段4产出
│ ├── 模块索引.md ← 全部模块的一览表+叙事线归属+调度分组
│ ├── 模块01_<名称>.md ← 每模块一个独立规格文件(模块 = 主线的一个情节 / 一条支线)
│ └── ...
├── 章节/ ← 只放正文:模块01_第X-Y章.md(一个模块 = 一个写手一次完成)
├── 报告/ ← 可选(仅「要报告」时存在):自检报告 模块01_自检报告.md、模块进度.md
├── 模块进度.md ← 🆕 线性模式进度锚点(缓存纪律第4条,断点续跑用;金字塔默认模式亦作状态存档)
├── 日志/ ← 🆕 使用日志(规则13):events.jsonl(结构化事件流,始终存在);使用报告.md(KPI 汇总,仅「要报告」时由 日志记录.py summary 生成)
└── 输出/
├── 完整正文.md
└── 整合质量报告.md
叙事结构层级(核心):大纲(全书=主线+支线)→ 细纲(主线阶段/支线)→ 模块(主线情节/支线情节,一个写手独立完成)→ 章节(模块内最小叙事单位)。每一层都是叙事语义单元,不是机械分块。
工作空间协作约定:
- <PROJ> = 当前工作空间路径(即 C:\Users\...\WorkBuddy\<时间戳>\),所有子Agent 的 prompt 中直接传入此路径
- 子Agent 收到 <PROJ> 后在此目录下直接读写,不自行创建子目录
- 主Agent 在阶段0创建上述目录骨架,后续 Agent 只往里写文件
- 禁止写入技能目录(~/.workbuddy/skills/...)
四、主控执行流程
> 规划/细纲/整合子Agent 的 prompt 模板见 references/规划子Agent.md、references/细纲子Agent.md、references/整合子Agent.md。写手模板见 references/阶段5-模块创作.md。🆕 方法论库见 references/创作方法论.md(结构框架/角色设计/去AI感/5维评分,各阶段按 规则14 注入点 Read)。
金字塔模式(主Agent 委派规划/细纲/整合 + 直管写手)
| 步骤 | 动作 | 说明 |
|---|---|---|
| 0 | 接收用户创作请求 + 剧情方向提案 + 初始化工作空间 | 提取概念、风格、规模要求。🆕 第一步:剧情方向提案——按 references/阶段0-剧情方向提案.md,发散 5 个不同的剧情大致方向(每个约 500 字)写到 <PROJ>/剧情方向.md,呈现给用户锁定 1 个(或按反馈重生成/微调),把「原始需求 + 选定方向」写入 <PROJ>/需求.md(UTF-8)。第二步:初始化——在工作空间顶层创建目录骨架(设定集.md、references/、细纲/、模块/、章节/、输出/;报告模式另建 报告/;多大纲模式另建 大纲方案/)。<PROJ> = 当前工作空间路径。随后立即运行 日志记录.py init(规则13,自动建 日志/ 并写 项目启动 事件) |
| 1 | 派发 规划子Agent(🆕 阶段1-2:设定+大纲) | prompt 见 references/规划子Agent.md,传入 <PROJ> + <PYTHON> + <SKILL_DIR>。🆕 用户需求不内联在 prompt 里,改为「Read <PROJ>/需求.md」——prompt 只写任务+路径+读文件指令,防 400 input length too long(实测内联全部需求+硬性规则会超限)。🆕 规划子Agent 职责止于大纲:阶段3-4 由细纲子Agent 按单元承担(步骤2.5),因此大纲必须按 阶段2 增强模板写足信息量(阶段末状态接口/伏笔计划/设定释放计划/预期模块数/全书伏笔总表)。多大纲模式:额外要求阶段2 生成 N 个候选大纲方案(默认3个,写 <PROJ>/大纲方案/方案A_<名>.md 等),完成后先回报方案清单,暂不锁定 |
| 1.5 | 方案选择(仅多大纲模式) | 规划子Agent 回报各方案的一句话简介+核心差异后必须停止一切工作等待锁定(不得提前锁定;若提前收尾见 十一 速查表处理)→ 主控呈现给用户 → 用户选定方案 → 主控 SendMessage 回传「选定方案X」(消息保持简短 ≤200 字,不内联规则/路径清单;需附带长内容时写指令文件到 <PROJ>/ 再让 agent 读)→ 规划子Agent 将选中方案复制为 <PROJ>/剧情大纲.md 并做最终回报(含单元清单),🆕 阶段3-4 不由规划子Agent 继续做。用户对方案不满意可要求重生成/微调 |
| 2 | 等待规划完成并清理 | SendMessage 回报产出清单(含所有文件绝对路径 + 🆕 单元清单:各主线阶段/支线的名称+章节范围+预期模块数)。🆕 产出完整性核验(防提前收尾):主控用 bash ls 逐项核验全部必须产出——<PROJ>/设定集.md、<PROJ>/剧情大纲.md、<PROJ>/references/ 至少 1 个文件;🆕 另核验大纲信息量:剧情大纲.md 含 全书伏笔总表 且每阶段有 阶段末状态/主要事件序列/设定释放计划/预期模块数(grep 关键词抽查);只完成部分产出(如只写了 references/)不算完成。缺失/路径错误 → 先 SendMessage 简短续工(「读 X 文件继续完成 Y」,≤200 字);续工仍失败 → shutdown 旧 agent + 派新 agent,新 prompt 声明已有产出路径让其接力。验证通过后 → shutdown_request 终止规划子Agent |
| 2.5 | 🆕 直管细纲子Agent 集群(阶段3+4,两段式) | prompt 见 references/细纲子Agent.md。① 按大纲单元清单逐单元派发细纲子Agent(一个单元 = 一个细纲子Agent,每波 ≤10,独立单元并行;衔接靠大纲「阶段末状态」接口,接口太粗则降级串行接力);② Phase A:各单元写 细纲/细纲_<单元>.md + 模块/规划_<单元>.md(模块规划表)→ 回报后等待;③ 主控统一编号:收齐全部规划表 → 按章节顺序分配全局模块号(起始章号升序)→ 按依赖关系分并行组(同单元依赖链同组串行,跨单元独立模块不同组可并行)→ 写 <PROJ>/模块/模块索引.md → SendMessage 回传各单元号段(≤200 字,号段长写文件让其 Read);④ Phase B:各单元写模块规格书 → 最终回报;⑤ 逐单元核验:细纲章节覆盖率 100%(grep ^## 第)、模块规格齐全且 ≥800 字、前置→后置衔接、单元间首尾衔接(对照大纲接口)→ 通过即 shutdown_request 清理该单元 agent。失败单元先清理再重派(最多2次) |
| 3 | 直接调度写手集群 | 读 <PROJ>/模块/模块索引.md → 🆕 一次性并发派发全部模块写手(一个模块 = 一个写手,独立完成模块全部章节,每波 ≤25,各写手以规格书预期前置状态开工)→ 收集结果 → 完成即清理该写手。仅规格书【前置状态】缺失/过粗的模块降级为串行接力(注入上一模块实际后置状态)。详见 references/阶段5-模块创作.md(prompt 精简版:静态规则走 写手铁律.md) |
| 4 | 等待全部章节完成 | 所有模块写手完成并清理 → <PROJ>/章节/ 齐全(报告模式另需 报告/ 齐全) |
| 5 | 派发 整合子Agent | prompt 见 references/整合子Agent.md,传入 <PROJ> + 模块索引路径 + 设定集路径 + 章节/(+ 报告模式下的报告目录) |
| 6 | 等待终稿并清理 | SendMessage 回报产出路径。🆕 路径核验:ls <PROJ>/输出/完整正文.md <PROJ>/输出/整合质量报告.md 确认落在 <PROJ> 下。验证无误后 → shutdown_request 终止整合子Agent |
| 7 | 呈现结果 + 清理中间产物 | 报告模式先运行 日志记录.py <PROJ> summary 生成 日志/使用报告.md(规则13),再交付 输出/完整正文.md + 整合质量报告.md(+ 日志/使用报告.md);默认模式直接交付 输出/ 两份。完成后删除 章节/、报告/(如生成)、模块/、细纲/ 中间目录,只保留 设定集.md、references/、剧情大纲.md、输出/、日志/;需求.md 与 大纲方案/(多大纲模式)建议保留留档(换案/溯源用),如需清理一并删除 |
🆕 主控日志埋点清单(规则13 落地,每条一行 bash,线性模式同样适用——主控自己埋点):
# 阶段0(必做;断点续跑时 init 自动改写 项目续跑 事件,不覆盖旧日志)
$PY "$SKILL/scripts/日志记录.py" "$PROJ" init --set mode=<线性/金字塔/多大纲+金字塔/报告模式> chapters=<总章数> style=<风格>
# 派发 / 终止子Agent(线性模式无此两类事件)
$PY "$SKILL/scripts/日志记录.py" "$PROJ" log --phase 阶段N --agent 主控 --event 子Agent派发 --set target=规划师
$PY "$SKILL/scripts/日志记录.py" "$PROJ" log --phase 阶段N --agent 主控 --event 子Agent派发 --set target=细纲师-主线阶段1
$PY "$SKILL/scripts/日志记录.py" "$PROJ" log --phase 阶段N --agent 主控 --event 子Agent终止 --set target=写手-模块03
# 退回重写 / 并发降级 / 错误(发生时立即落)
$PY "$SKILL/scripts/日志记录.py" "$PROJ" log --phase 阶段5 --agent 主控 --event 退回重写 --set module=05 reason=字数不足 count=1
$PY "$SKILL/scripts/日志记录.py" "$PROJ" log --phase 阶段5 --agent 主控 --event 并发降级 --set from=25 to=20
# 项目交付前(仅「要报告」时执行,生成 日志/使用报告.md,KPI 自动核算;默认不生成)
$PY "$SKILL/scripts/日志记录.py" "$PROJ" summary
写手/规划师/细纲师/整合师的埋点已分别写入 references/写手铁律.md 命令序列与各子Agent prompt 模板,主控不代劳。
流水线完成后工作空间清理:金字塔模式全流程结束后,主Agent 自动删除中间产物目录(章节/、模块/、细纲/),仅保留用户可交付的产出:设定集.md、references/、剧情大纲.md、输出/、日志/(含 events.jsonl,属交付物;报告模式下 报告/ 亦被清理,但 日志/使用报告.md 随 日志/ 保留)。需求.md 与 大纲方案/(多大纲模式)建议保留留档。线性模式下同样适用。
主Agent 不再做的:不构建设定、不生成大纲/细纲、不拆分模块、不做接缝检测。由规划子Agent(设定+大纲)、细纲子Agent(细纲+模块拆分,按单元)和整合子Agent 各自负责。
主Agent 亲自做的:
- 阶段0:🆕 剧情方向提案(发散 5 个约500字剧情大致方向 → 用户锁定 → 写 剧情方向.md 与 需求.md)→ 在工作空间顶层创建目录骨架,确定 <PROJ>(= 当前工作空间路径)
- 派发规划子Agent → 收设定+大纲 → 清理
- 🆕 多大纲模式:把规划子Agent 回报的方案清单转交给用户选择,回传锁定指令(线性模式下由主控自己生成方案+呈现选择)
- 🆕 按大纲单元清单派发细纲子Agent(一单元一Agent,每波≤10)→ 收齐模块规划表后统一分配全局模块号、写模块索引 → 回传号段 → 逐单元核验细纲+模块规格 → 完成即清理
- 按模块索引机械派发写手(每模块一个写手,独立完成模块全部章节;🆕 默认全模块并发派发,仅规格书前置状态不足的模块串行接力;完成即清理)——与细纲调度同为保留在主Agent 的机械劳动
- 派发整合子Agent → 收终稿 → 清理
- 处理用户中断("重写模块5"→ 先清理旧写手,再重派该模块写手)
🆕 线性模式(主Agent 单会话顺序直写,默认路径)
定位:≤30章 的默认路径,也是「缓存命中率最大化」的专用路径——一切调度决策服务于保持主 Agent 的 prompt 前缀稳定,使 API 端 prompt cache 持续命中,长篇场景下成本大幅低于金字塔模式(子Agent 各自独立上下文,缓存从零起)。代价是总耗时最长(无并行),故仅适合不怕时间长的场景。
| 阶段 | 执行者 | 关键动作 | 产出 |
|---|---|---|---|
| 0 | 主Agent | 🆕 剧情方向提案(5 方向 → 用户锁定 → 需求.md)+ 目录骨架 + 日志记录.py init --set mode=线性 |
剧情方向.md + 需求.md + 目录骨架 |
| 1-4 | 主Agent | 主控直写:设定→大纲→细纲→模块规格书(多大纲模式照常生成方案供选择) | 设定集/剧情大纲/细纲/模块/ |
| 5 | 主Agent 逐模块串行 | 按模块索引顺序:模块01 全部章节 → 脚本自检 → 模块02 → ……(见下方缓存纪律) | 章节/*.md |
| 6 | 主Agent + 脚本 | 装配正文.py → 主Agent 终检(接缝天然由同一上下文保证,重点查格式/字数/套话/逻辑) | 输出/ |
| 7 | 主Agent | 清理中间产物 | 保留交付物 |
- 用户说「快速模块化」= 自动模式,跳过所有确认点直接跑完。
- 模式判定(线性/金字塔/多大纲的触发词与章数规则)统一见「一、模式选择规则」与「六、模式选择决策树」,此处不再重复——避免多处维护导致口径漂移。
- 任何确认点被用户否决 → 按「七、重写与回溯」处理。
缓存纪律(线性模式专属,全部硬性):
- 静态文件一次读入:设定集、剧情大纲、写手铁律.md、风格档案在阶段5开工前一次性读入上下文,此后不再重复读取——重复 Read 同一大文件会在上下文中追加新内容而非命中,前缀膨胀且无增益。模块规格书按当前模块读一份即可,写完即过,不回读。
- 上下文零污染:创作中途不读取与当前模块无关的大文件、不执行会产生大段输出的命令。脚本自检输出保持简短(统计字数.py / check_chapter.py / 格式检查.py 输出本身即为摘要级,直接使用;禁止把正文 cat 回上下文)。
- 逐模块串行,不跳模块:严格按模块索引顺序推进。上一模块的实际叙事状态就在当前上下文里,无需读取或注入前置状态文件——这正是线性模式接缝质量的优势来源。
- 进度锚点落盘:每完成一个模块,向
<PROJ>/模块进度.md追加一行(模块号/章数/字数/质检结果/一句话后置状态)。该文件仅用于断点续跑,主控不回读它。 - 阶段间不停顿:不设确认点,一路跑到阶段6(用户中途插入指令除外)。每次往返对话都在延长前缀,减少交互轮次本身就是缓存优化。
- 断点续跑协议:会话中断后重入时,按顺序重读 需求.md → 设定集 → 剧情大纲 → 模块索引 → 模块进度.md → 当前模块规格书,重建前缀后从断点模块继续。重建会损失部分缓存,属正常代价;续跑事件由
日志记录.py(init自动改写为 项目续跑)落日志。 - 上下文水位管理:超长篇(>100章)上下文接近上限时,主动执行「锚点落盘 → 收尾当前模块 → 建议用户开新会话续跑」,不在上下文临界点强行续写(质量崩坏风险 > 缓存收益)。
- 质量不降档:线性模式仍是单Agent 长跑,每章 4000 字要求 / 2000 字门禁、格式检查、AI套话自检、文笔质量硬规范全部照常执行(脚本逐模块跑,见 第九节自动调用链)。长上下文质量下滑风险靠脚本门禁 + 用户抽查兜底;用户发现质量下滑可随时说「切金字塔」,剩余模块转金字塔模式(已有细纲/模块/章节 全部复用,不重做)。
五、子Agent 调度规范
金字塔模式下,主Agent 派发两类子Agent:专业子Agent(规划师、细纲师、整合师)和写手子Agent。线性模式下不派任何子Agent。
专业子Agent 派发(规划/细纲/整合)
- 创建方式:Agent 工具,
subagent_type: general-purpose,run_in_background: true。model省略(继承主控)。 - 顺序派发:规划 → 细纲集群(多Agent 并行,见
references/细纲子Agent.md)→ 整合(规划与细纲、细纲与写手、写手与整合之间严格串行;细纲集群内部按波并行)。 - prompt 自包含:使用
references/规划子Agent.md、references/细纲子Agent.md、references/整合子Agent.md的模板。 - 独立完成:专业子Agent 不派发任何下属Agent,全部工作自己完成。
- 完成通知:完成后 SendMessage 给主控(recipient: main),含产出路径 + 关键指标(细纲师按两段式协议分两次回报)。
- 完成即清理:主控收到产出并验证无误后,立即对该子Agent 发送
shutdown_request终止,不留空闲代理(细纲师在 Phase A 结束后处于等待态而非完成态,主控回传模块号后其继续 Phase B,最终核验后才终止)。 - 失败处理:未汇报或产出缺失 → 检查文件系统 → 重新派发。连续失败2次 → 通知用户并清理该子Agent。
写手子Agent 派发(主Agent 直接调度)
写手集群由主Agent 直接管理(因为子Agent 不能嵌套派发)。调度规范:
- 创建方式:同专业子Agent(模型继承主控)。
- 模块调度:读模块索引 → 🆕 一次性并发派发全部模块写手(一个模块 = 一个写手,写完模块全部章节,每波 ≤25,各写手以规格书预期前置状态开工,见 Section 六决策树)。仅规格书【前置状态】缺失/过粗的模块降级串行。
- prompt 模板:
references/阶段5-模块创作.md的精简版模块写手模板(静态规则走references/写手铁律.md,不重复粘贴)。 - 🆕 状态存档(2026-08 修订,默认全并行):写手完成模块后,主控从自检报告(报告模式)或写手回报摘要(默认模式)提取【实际后置状态】存档(写入
报告/模块进度.md或单独文件;默认无 报告/ 目录时可写在<PROJ>/模块进度.md),供整合阶段核对接缝使用。默认全并行时不做状态接力注入;仅降级串行的模块才注入上一模块实际后置状态。 - 完成即清理:每个写手完成后,主控验证章节(报告模式另验证自检报告)无误,立即
shutdown_request终止该写手。下一个模块派发全新写手,不复用。 - 🆕 并行规则(2026-08 修订):全部模块默认一次并发派发(每波 ≤25,以规格书预期前置状态开工);仅规格书【前置状态】缺失/过粗(<5项或无角色/势力状态)的模块需等前置模块完成后派发(注入实际后置状态)。
- 进度跟踪:维护
报告/模块进度.md。 - 失败处理:模块写手失败 → 先清理该写手 → 重派重写(连续失败 2 次)→ 拆小(单章/半章场景)→ 累计失败 3 次通知用户。
| Agent | 负责 | 产出 | 参考文件 |
|---|---|---|---|
| 规划子Agent | 阶段1-2 | 设定集、大纲(主线+支线+阶段接口信息)、多大纲方案 | references/规划子Agent.md |
| 🆕 细纲子Agent(一个单元一个) | 阶段3-4(按单元) | 细纲_<单元>.md、模块规划表、模块规格书 | references/细纲子Agent.md |
| 写手子Agent | 阶段5 | 每模块完整章节正文(+ 报告模式 自检报告) | references/阶段5-模块创作.md |
| 整合子Agent | 阶段6 | 完整终稿+质量报告 | references/整合子Agent.md |
六、模块调度策略
模式选择决策树
用户说「多大纲」「大纲方案」「方案选择」?
├─ 是 → 多大纲模式:阶段2 生成 N 个候选大纲方案(默认3个)→ 用户选 1 → 锁定为 剧情大纲.md
│ (再按下列规则叠加线性/金字塔,仅影响阶段2 的产出形态与交互,阶段3-6 流程不变)
└─ 否 → 用户说「线性」「不派子代理」「缓存优先」「不怕时间长」?
├─ 是 → 线性模式:主Agent 单会话顺序直写阶段0-6,逐模块串行,缓存命中率最大化(第四节缓存纪律)
└─ 否 → 全书章节数 ≤ 30?
├─ 是 → 线性模式:主控直写全部阶段(默认路径,脚本兜底)
└─ 否 → 金字塔模式(主Agent 派发规划师→直管写手→派发整合师):
> 金字塔模式下,写手调度由主Agent 直接执行。以下决策树供主Agent 参考。
写手调度决策树
【决策树 — 跨模块调度】🆕 2026-08 修订:默认全并行
检查全部模块规格书的【前置状态】字段是否完整(≥5项,含角色/势力状态)?
├─ 是(默认情况)→ 全部模块一次并发派发(每波 ≤25),各写手以规格书预期前置状态开工
│ → 模块完成后主控提取【实际后置状态】存档 → 整合阶段统一核对状态接缝
└─ 否(某模块前置状态缺失/过粗)→ 该模块降级串行:等前置模块完成后派发(注入实际后置状态)
→ 其余模块仍按并行处理;模块总量 >25 时分波派发(波间间隔 ≥1 分钟)
【模块 = 写手任务单元】
每个模块:1 个写手,一次写完该模块全部章节(2-5章)。
模块内不拆批、不换写手——换写手必须重读规格+状态,增加 token 且破坏连续性。
| 单次创作规模 | 建议模块数 | 建议调度 | 建议模式 |
|---|---|---|---|
| 短篇(<30章) | 5-10 | 串行 | 线性模式(主控直写,不派子Agent) |
| 中篇(30-60章) | 10-20 | 混合(组间并行) | 线性模式优先;金字塔模式仅当质量要求极高 |
| 长篇(60-200章) | 20-50 | 按阶段分组,组间并行组内串行;每模块一个写手 | 金字塔模式;🆕 预算敏感/不赶时间 → 线性模式 |
| 超长篇(>200章) | >50 | 按阶段切分,每阶段独立走完整流程 | 金字塔模式;🆕 预算敏感/不赶时间 → 线性模式(按阶段分段续跑,见 缓存纪律第7条) |
> 🆕 2026-08 起金字塔模式默认「全并行」派发(见 规则6 与上方写手调度决策树):本表「建议调度」列仅反映模块间依赖分组与线性模式下的串行直写节奏,实际派发一律按「一次性并发派发全部模块写手(每波 ≤25)」,仅规格书【前置状态】缺失/过粗的模块降级串行。
模块粒度:由该模块的叙事语义决定章节数——一个模块 = 主线的一个情节(触发→发展→冲突/转折→收束)或一条支线。剧情密度高(多事件/多转折)的情节分配更多章节,线性推进的情节减少章节。不做硬性字数凑整——模块篇幅以「一个完整情节写通顺」为唯一标准。仅当模块内包含明显独立的子剧情线时拆分子模块(每个子模块仍=一个情节单元)。
写手粒度:一个模块 = 一个写手任务,写手一次写完模块全部章节(2-5章)。模块内不拆批不换人。这比模块内分批换写手减少约 1/2 调度往返,且模块内叙事连续由同一写手上下文保证。
🆕 并行风险(2026-08 修订):默认全并行(各写手用规格书预期前置状态),不做串行等待;并行模块的实际状态偏差 → 整合阶段对接缝重点检测(接缝检测.py + 因果/状态核对)。仅规格书前置状态缺失/过粗的模块降级串行(用上一模块实际后置状态)。
规格书详细度:每模块规格书建议 ≥800 字。必须覆盖:模块时间线(接前/启后)、章节起止、核心冲突、角色出场清单、金手指状态(如有)、关键伏笔。须附「本章不能踩的坑」(如不能杀人、不能用多视角、不能破坏人设等)。规格书太短(<400字)会导致写手输出同质化、设定漂移。
七、重写与回溯
重写原则:最小成本——能重写单模块不动相邻,能改规格不重写正文。重写前先清理相关旧子Agent(shutdown_request)。
金字塔模式下,重写指令由主Agent 直接处理:
- 模块重写 → 主Agent 先清理旧写手,再重派该模块写手
- 细纲重写 → 主Agent 先清理该单元的旧细纲子Agent,再重派该单元细纲子Agent(Phase A 重做细纲,模块规格书受影响则连 Phase B 一起)
- 大纲重写 → 主Agent 先清理旧规划子Agent,再重派规划子Agent 回阶段2;大纲变更影响的细纲单元 → 重派对应细纲子Agent(模块规格书随细纲重建)
- 接缝/整合修复 → 主Agent 先清理旧整合子Agent,再通知/重派整合子Agent
| 问题 | 处理路径 |
|---|---|
| 局部质量 | 主Agent 重派该模块写手:定位模块→单模块重写→仅处理相邻接缝 |
| 接缝 | 主Agent → 整合子Agent:定位接口→相邻1-2个模块重写或修补 |
| 细纲 | 🆕 主Agent → 该单元细纲子Agent:定位主线阶段/支线→该单元细纲重写(Phase A)→检查该单元模块规格书(Phase B 受影响模块重写) |
| 设定 | 更新设定集→已创作标记「待修复」;未创作更新前置/后置状态 |
| 大纲 | 🆕 主Agent → 规划子Agent:回阶段2更新大纲→受影响的细纲单元重派细纲子Agent→从阶段3重走 |
| 世界观 | 主Agent → 规划子Agent:回阶段1更新设定集→全流程重走 |
八、质量KPI
> 🆕 下表中可由事件流核算的指标(模块自检通过率、AI套话 <3 处通过率、退回重写次数、线性模式子Agent 使用数等)由 日志记录.py summary 从 日志/events.jsonl 自动核算并写入 日志/使用报告.md(报告模式下生成),主控不再人工统计;需人工判定的指标仍见 输出/整合质量报告.md。默认(免报告)模式下,自检通过率/AI套话等以整合师抽查与 日志/events.jsonl 质检事件为据。
| 维度 | 指标 | 目标 |
|---|---|---|
| 细纲 | 章节覆盖率 | 100% |
| 细纲 | 单元间(阶段/支线)接缝严重问题 | ≤1 |
| 模块 | 自检通过率(脚本项)(报告模式核算) | ≥95% |
| 模块 | 内容完整性(剧情通顺即达标) | ≥95% |
| 模块 | 每章字数≥2000字(硬性门禁) | 100% |
| 模块 | 红线触碰率 | 0% |
| 模块 | 模块弧线完整率(触发→收束) | 100% |
| 整合 | 接缝严重问题 | ≤1 |
| 整合 | 设定硬约束违反 | 0 |
| 整合 | 伏笔断裂 | ≤1 |
| 整合 | 因果链断裂 | ≤1 |
| 整合 | 角色行为OOC/降智 | ≤1 |
| 整合 | 信息对称性违反 | 0 |
| 整合 | 🆕 数值一致性违反(系统流项目) | 0 |
| 🆕 整合 | 套路化模板四检违反(主角模板符合性/同层次原则/作用完成淡化/战后必看面板,套路化模板项目) | 0 |
| 🆕 整合 | 全书 5 维加权总分(情节25/角色25/文风20/节奏15/连续性15,见 创作方法论.md 第四节) | ≥7.5(A级,⭐⭐⭐ 必要条件) |
| 🆕 整合 | 7 大痛点节点检查(卷末/阶段末/终稿)暴露未处理项 | 0 |
| 🆕 写手 | 文笔质量自检表填写率(报告模式核算) | 100% |
| 🆕 写手 | AI套话 <3 处通过率(目标 0 处;报告模式:生成报告.py 自动检查,读 scripts/cliche.txt;默认:写手 格式检查.py --cliche-file 自查 + 整合师抽查) | 100% |
| 🆕 整合 | 文笔抽查覆盖模块数 | 100%(每模块 ≥ 1 章) |
| 🆕 整合 | 文笔抽查 🔴 项(AI套话 ≥ 3 处)退回重写率 | 100% |
| 整合 | 最终质量等级 | ≥⭐⭐ |
| 🆕 线性模式 | 子Agent使用数 | 0 |
| 🆕 线性模式 | 模块进度锚点落盘率(缓存纪律第4条) | 100% |
| 🆕 线性模式 | 重复读取静态文件次数(缓存纪律第1条,阶段5期间) | 0 |
九、脚本工具(<技能目录>/scripts/)
金字塔模式下,脚本由规划/写手/整合各Agent 自行调用。线性模式下,主Agent 自己调用。
| 脚本 | 用途 | 用法 |
|---|---|---|
统计字数.py |
确定性字数统计:非空白字符数(含标点),非字节数(UTF-8 中文=3字节,不能用作字数)。输出 总字符/汉字/行数 | python scripts/统计字数.py <文件或目录> |
check_chapter.py |
🆕 逐章字数校验:按 ## 第N章 标题逐章统计非空白字符,任一章 < 2000 → 输出 SHORT 章列表 + NOT_OK;全部达标输出 ALL_OK。多章模块的 2000字/章 硬性门禁以此为准(统计字数.py 只给模块总字数,发现不了"总字数够但单章不足") |
python scripts/check_chapter.py <正文.md>(末尾 ALL_OK / NOT_OK 供流水线判断) |
格式检查.py |
格式质检:markdown分割线、全文破折号、称呼密度、边界标记、超长叙事句、AI套话+章末收束句/氛围腔(--cliche-file 时启用,清单同源 scripts/cliche.txt;AI套话 ≥3 处计失败)。退出码 0 = 无 失败项(警告不阻断),非 0 = 有 失败项(破折号/分割线/AI套话≥3,必须修复) |
python scripts/格式检查.py <正文> --name "<主角名>" [--max-sent-len N] [--cliche-file scripts/cliche.txt] |
格式修复.py |
格式自动修复:删分割线、替换全文破折号、补边界标记(线性模式核心) | python scripts/格式修复.py <正文> [--dry-run] |
生成报告.py |
(可选,报告模式)生成预填版自检报告(字数+格式检查自动填入,写手只补后置状态);--full 生成完整版(含文笔质量检查表+AI套话自动检查(默认读同目录 cliche.txt,只统计「AI套话」组,口径与 格式检查.py 一致)+自我评分,强模型写手用);字数门禁按章计算:模块级下限 = 每章下限 × 章数(--chapters 自动解析),低于直接判定为失败。默认不调用,仅「要报告」时使用 |
python scripts/生成报告.py --body <正文> --module NN --name <名> --type <类型> --chapters "第X-Y章" --target <字数> --out <报告> [--full] |
接缝检测.py |
接缝检测材料打包:接口区块+边界两章+检查表合成单文件 | python scripts/接缝检测.py <项目根> <前模块号> [后模块号] |
装配正文.py |
机械装配:文件先按 (模块编号, 起始章节号, 文件名) 数值三键预排序(数值比较非字符串,已修过两位数章节乱序bug),再按 ## 第N章 标题做章节级全局重排拼接正文(支线章散布在主线模块之间也能按章号正确归位)、移除 __模块边界__ 边界标记、规整连续空行 |
python scripts/装配正文.py <chapters目录> -o <输出文件> ⚠️ 会吸入目录内所有 .md 文件(含 _* 草稿/污染文件),运行前确保 章节/ 仅含规范模块文件 模块*_第*章.md,或用显式文件列表传参。装配后章节标记 __模块边界__ 由脚本自动剥离,无需额外检查残留 |
日志记录.py |
🆕 使用日志(规则13 唯一写入入口):init 项目启动(断点续跑自动改写 项目续跑,不覆盖旧日志)/ log 追加事件到 日志/events.jsonl(始终执行)/ summary 生成 日志/使用报告.md(KPI 自动核算,仅报告模式调用)。所有 Agent 共用,一行 bash 埋点,事件名对齐脚本文件头约定 |
python scripts/日志记录.py <PROJ> init --set mode=金字塔 chapters=500;python scripts/日志记录.py <PROJ> log --phase 阶段5 --agent 写手-模块03 --event 质检结果 --set module=03 chars=8500 chapters=4 cliche=0 format=pass verdict=pass;python scripts/日志记录.py <PROJ> summary(报告模式) |
🆕 数据文件:scripts/cliche.txt — AI套话+章末收束句+章末氛围腔清单唯一源(每行一个正则模式,# 注释,# --- 分类名 --- 分组标记)。格式检查.py / 生成报告.py 都读它,改清单只改这一个文件。
线性模式自动调用链(写完每章/每模块后立即执行;脚本输出保持简短摘要,不回贴正文,见 缓存纪律第2条):
1. 格式修复.py → 自动修复常见格式问题(分割线、破折号、边界标记)
2. 统计字数.py → 模块总字数统计 + check_chapter.py 逐章校验,每章按 4000 字写作(要求),任一章低于 2000 字硬性门禁必须返回补写(剧情完整性不等于字数豁免,2000 是门禁、4000 是要求,见 规则9)
3. 🆕 AI套话自检:报告模式用 生成报告.py --full 自动检查套话(读 scripts/cliche.txt);默认模式用 格式检查.py --cliche-file scripts/cliche.txt 自查 → AI套话命中 ≥ 3 处必须改写后重跑
4. 格式检查.py → 格式终检(修复后应全部通过)
5. (报告模式)生成报告.py → 自动填写自检报告模板(强模型用 --full,主控只补后置状态 + 文笔质量检查表打勾;AI套话由脚本自动检查)
6. 🆕 日志记录.py log → 落质检结果事件(规则13,KPI 数据源)
7. 装配正文.py → 全部完成后缝合(自动输出章号连续性诊断:缺章/重复章号)
8. (报告模式)🆕 日志记录.py summary → 项目收尾生成 日志/使用报告.md
原则:凡是脚本能确定性完成的(统计、拼接、格式检查、格式修复、报告框架生成),绝不交给 LLM 手工执行。线性模式下这一原则强制遵守,不允许跳过脚本步骤。
十、快速命令参考
> 完整命令表见 references/commands.md,按需读取。常用命令:
>
> | 指令 | 动作 |
> |------|------|
> | "模块化写小说" | 启动6阶段流程 |
> | 🆕 "线性模式" / "线性" / "不派子代理" / "缓存优先" / "不怕时间长" / "直接写" | 主Agent 单会话顺序直写阶段0-6,逐模块串行,缓存命中率最大化(≤30章默认路径,可与多大纲叠加) |
> | 🆕 "切金字塔" | 线性运行中切换到金字塔模式,已产出的设定/大纲/细纲/模块/章节全部复用,剩余模块转子Agent 调度 |
> | "分布式模式" / "金字塔模式" | 主Agent 委派规划/整合 + 直管写手 |
> | "多大纲模式" / "大纲方案" / "方案选择" | 阶段2 生成 N 个候选大纲方案(默认3个)供选择,选定后锁定为 剧情大纲.md 再继续;可与线性/金字塔叠加 |
> | "要报告" / "生成报告" | 报告模式:生成写手自检报告 + 日志使用报告(默认不生成) |
> | 🆕 "套路化" / "套路模板" / "穿越系统流" / "换地图流" | 套路化模板风格:主角硬模板(穿越/普通人/无父无母/未成年/系统)+ 事件循环 + 三分内容七分水 + 战后必看面板 + 阴谋≤2层 + 配角用完即淡化 + 敌人同层次 + 到顶换地图(详见 风格库.md 套路化模板预设) |
> | "继续创作" | 检查现有文件,从断点继续 |
> | "模块报告" / "整合报告" | 查看状态/质量 |
> | "重写模块 [N]" | 单模块重写(重派该模块写手) |
> | "模块进度" | 查看各模块完成状态 |
> | "设置模块数 [N]" | 强制模块数 |
> | 🆕 "创作日志" / "使用报告" | 运行 日志记录.py summary 生成/查看 日志/使用报告.md(KPI 自动核算;报告模式交付时自动生成,用户可随时补生成) |
后续可将产出接入「分布式模块化小说漫画化」技能做漫改。
十一、实战经验速查
以下基于 500 章《都市修仙洪荒录》的实际创作过程提炼,快速定位常见问题。
| 症状 | 根因 | 解法 |
|---|---|---|
| 主控收不到写手回报,进度卡死 | 并发写手过多,上下文淹没 | 默认每波 ≤25;出现回报丢失则自动降至 25→20→15→10→5,每级间隔 1 波验证;稳定后可下个项目尝试恢复。根治:写手只报摘要不贴命令输出(见 写手铁律.md 第五节) |
| 完整正文混入草稿/脚本内容 | 装配正文.py 吞了 章节/ 里 _* 污染文件 |
装配前清空 污染文件;或用显式 glob 模块*_第*章 |
| 写手自检报告说"过了"但没跑脚本 | 无命令输出佐证 | 主控用文件系统核验报告存在性 + 抽查 统计字数/格式检查 结果;报告模式写手必须交付 生成报告.py --full 生成的报告,默认模式主控核验正文 + 写手回报摘要(见 写手铁律.md 第五节) |
| glob 找到的文件与 ls 不一致 | Windows 中文路径 glob 幽灵文件 | 文件验证以 bash ls/find 为准 |
| shutdown_request 返回 "Not in a team" | 跨会话,子 Agent 进程已死 | 进程已随会话终止;残留 json 用 rm -rf 清 teams/ 目录 |
| 一次删太多文件被系统拒绝 | 安全删除 > 50 触发守卫 | 逐目录删,每批 < 50 |
| 某章字数不足 2000 | 写手图省事压缩场景,或剧情推进过快 | check_chapter.py 检出 SHORT 章(或 统计字数 低于 2000)→ 直接退回,在章末钩子前/场景中嵌入 300-500 字扩写(对话/心理/环境描写)→ 重跑 check_chapter.py 确认 ALL_OK 才放行 |
| 接缝处世界观/法则体系矛盾 | 都市→修仙、修仙→洪荒跃迁处只靠脚本检测过 | 世界观测迁接缝必须人工逐句读边界章节 |
| 规格书太短导致写手输出同质化 | 规格书 < 400 字,信息不够 | 每模块 ≥ 800 字,含「不能踩的坑」 |
| 破折号反复出现 | prompt 警告不够醒目 | prompt 首行用 !!! 级警告,写手写完先搜索 —— |
| 对话无引号/用英文引号/裸对话 | 写手 prompt 未强调对话格式 | prompt 铁律明确要求中文引号 "" + 必要时冒号 :;写完自查无引号包裹的对话段落 |
| 拼接后大量章节无标题行 / 翻到第8章看到第10章内容 | ① 早期模块是散文流只靠 __模块边界__ 分章(被剥离后无标识);② 写手把章节名写在段首纯文本行 第6章 仓库扩容 而非 ## 第6章:仓库扩容;③ 拆分模块文件名含两位数章节(如 第10-11章)用字符串排序被排到 第8-9章 之前 |
① 本作硬性规则已要求每章用 ## 第N章:标题;② 装配正文.py 的 sort_key 已改为 (模块号, 起始章号, 文件名) 数值排序(修过);③ 装配后脚本扫描 ^#{1,6}\s*第(\d+)章 严格校验每章都有标题行 |
| 写手自检报告说"格式检查 过了"但主控核验 FAIL | 写手没真跑脚本或贴假输出 | 主控独立跑 统计字数/check_chapter.py/格式检查 核验磁盘,不轻信回报;存在性守卫:写手先检查目标文件是否已达标再决定是否重写,避免覆盖已合格内容 |
| 派发写手报 "400 input length too long" | 长 prompt 触发模型输入 token 上限 | 用压缩 prompt:shell 变量压缩路径(PY/SKILL/PROJ)、静态规则走 写手铁律.md、单行 bullet 合并规则,再传给 Agent |
| 派发时报 "No active team found" | 旧 team 跨会话被清理 | 先 TeamCreate 重建团队(名称会被系统重命名),再用新 team_name 派发 |
| 剧情逻辑断裂(事件无因无果) | 写手只按规格书事件列表执行,未建立因果链 | 整合阶段因果链检测:追溯每个关键事件的前因后果,断裂处退模块重写 |
| 角色行为OOC/降智 | 写手为推进剧情强行让角色做出不合理的决策 | 整合阶段角色行为一致性检测:对照设定集性格关键词逐角色核查关键决策 |
| 🆕 设定集/大纲/细纲/模块文件找不到,整合师报"文件不存在" | 子Agent 用纯文件名(设定集.md)或相对路径写文件,落到了子Agent 的 cwd 而非 <PROJ> |
主控派发 prompt 必须含「路径铁律」:Write/Edit 的 file_path 必须以 <PROJ> 开头的绝对路径;规划子Agent 完成后主控用 ls <PROJ>/设定集.md <PROJ>/剧情大纲.md、细纲子Agent 完成后用 ls <PROJ>/细纲/细纲_<单元>.md 核验存在性,缺失则重派 |
| 🆕 章节文笔干瘪/AI 腔重("不禁""微微一笑""仿佛……一般"泛滥) | 写手 prompt 只有风格硬规范(密度/钩子),无可客观检查的文笔质量项 | 阶段5 prompt 必须含「文笔质量硬规范」12 项(写手铁律.md 第一节);写手写完用 格式检查.py --cliche-file scripts/cliche.txt 查套话(写手铁律.md 第四节);报告模式自检报告填「文笔质量检查」表,默认模式写手脚本自查;整合师 Step 6.4.5 抽查,🔴 退回重写 |
| 🆕 每章结尾都是"坚定信念/内心独白"式收束,章与章各自独立 | 章末钩子被理解成"情绪收束点",写手统一用"暗暗发誓/目光坚定"收尾,模块内章节无叙事流动 | 章末改为「叙事切点」:非模块末章断在动作/对话/悬念半途,下一章开头直接接续(读起来像一章拆两章);规格书「章末钩子」必须写切点型 + 注明下一章开头如何接续;写手铁律.md 第三节第9条 + 命令序列 格式检查.py --cliche-file 章末收束句/氛围腔自查;整合师接缝检测/文笔抽查加「章末切点」项,收束式 🔴 退回改写 |
| 🆕 章末氛围腔("过了一会儿,凉了""鱼腥,和灰""没有躲,也没有出去") | 写手用"留白节奏"假装氛围,收尾不含情节信息,读着像 AI 写诗 | 三类句式人工禁令:状态闭合/意象点题/双重否定总结 + 小动作+情绪外化两连句(写手铁律.md 第三节第9条);cliche.txt 增「章末氛围腔」组(过了一会儿,/不知过了多久 可正则抓);整合师 Step 6.4.5 抽查,命中 🔴 退回改写 |
| 🆕 每章开头都是天气/醒来/简历介绍式缓起开场 | 章末切点只管章尾,章头无闸门,写手习惯"先铺垫后进题" | 章头钩子规范(写手铁律.md 第一节第11条):前三句内必须有进行中动作/冲突/悬念/张力对话,六大禁用开场;写手每章自查前 3 句;整合师 Step 6.4.5 抽查「章头钩子」项,禁用开场 🔴 退回改写 |
| 🆕 比喻连用、三连排比、单句成段刷屏、抒情段占比过高("修辞通胀") | 写手把修辞当文笔,密度失控;比喻三原则只管质量不管数量 | 修辞密度纪律(写手铁律.md 第一节第12条):一段 ≤1 比喻(全章 ≈ 字数÷500)、禁三连排比、单句成段 ≤3 次/章只留给重击点、浓烈情绪段 ≤ 章幅 10%;整合师 Step 6.4.5 数比喻抽查,零星超量 🟡 直接删改、大面积堆砌 🔴 退回 |
| 🆕 "银铃般""眼底闪过""空气仿佛凝固"等假细节描写泛滥 | AI 高频描写词不在原套话清单,脚本抓不到 | cliche.txt 2026-08 增补 21 条 AI 高频描写套话(并入「AI套话」组同门禁 <3 处/章);格式检查.py / 生成报告.py 读同源清单自动生效,无需改脚本 |
| 🆕 对话盲读分不清谁在说话 | 写手没按角色档案区分声部,所有角色用同一套用词 | 文笔硬规范第 3 项要求同模块 ≥ 2 角色对话能盲读区分;整合师抽查时遮名字读 3 句核对 |
| 🆕 大段设定介绍打断叙事 | 写手图省事直接倒设定,未融入场景 | 文笔硬规范第 7 项禁连续 ≥ 4 句纯设定介绍;整合师抽查发现 → 退回改写为对话/事件触发 |
| 🆕 写手 prompt 过长、每模块重复粘贴相同规范 | 静态规则内联在 prompt 里 | 静态规则全部下沉 references/写手铁律.md(文笔规范/铁律/命令序列)+ 设定集硬约束(含风格硬规范),prompt 只写任务+路径变量(PY/SKILL/PROJ)+前置状态。省 ~1500 token/模块 |
| 🆕 写手回报贴大段命令输出淹没主控 | 汇报协议要求贴输出原文 | 只报摘要(字数/通过状态/后置状态);报告模式命令输出由 生成报告.py --full 自动落盘报告,默认模式写手跑完脚本后只报结果。并发上限由此从 20 提至 25 |
| 🆕 多大纲模式下 细纲/模块/整合 找不到大纲 | 候选方案只写在 大纲方案/ 下,未锁定 |
选定后必须把方案复制为 <PROJ>/剧情大纲.md;阶段3-6 只认 剧情大纲.md,大纲方案/ 仅存档对比 |
| 🆕 用户对全部候选大纲都不满意 | 方案差异维度不够,方向雷同 | 生成方案时至少覆盖 2 个差异维度(主角身份/主线冲突/节奏/结局走向等),方案间核心冲突与主角处境必须显著不同;用户否决后按反馈方向重生成 |
| 🆕 规划子Agent 只完成部分产出(如只写完 references/ 三件套)就报 completed | prompt 内联需求+规则太长,子Agent 误解任务边界,做完一个子阶段误当全部完成 | 主控按「产出完整性清单」逐项核验(设定集/剧情大纲/references,见 第四节 步骤2);缺失 → SendMessage 简短续工(≤200 字,只写「读哪个文件+继续做什么」);续工再失败 → shutdown 旧 agent + 派新 agent,新 prompt 声明已有产出路径让其接力,不重写已核验过的文件 |
| 🆕 细纲子Agent 并行导致单元间衔接断裂(阶段N末状态与阶段N+1开头对不上) | 大纲「阶段末状态」接口写得太粗,各单元各自发挥 | 大纲必须写足接口信息(阶段2 增强模板+质检强制);断裂处 → 先 SendMessage 让下一单元细纲子Agent 按大纲接口修订开场(≤200 字);大纲接口确实缺失 → 退规划子Agent 补大纲,或降级为串行接力(把上一单元实际细纲末状态注入下一单元 prompt) |
| 🆕 模块号冲突/跳号/与章节顺序不符 | 细纲子Agent 在 Phase A 未经主控统一编号就自己编了模块号 | 强调两段式协议:Phase A 只写模块规划表不编号,等主控回传号段才写规格书;主控核验索引中模块号按起始章号升序且无重复 |
| 🆕 某单元细纲/模块规格缺失或覆盖率不足 | 该单元细纲子Agent 未完成或提前收尾 | 主控逐单元核验(细纲 ^## 第 计数 vs 大纲章数、模块规格文件数 vs 规划表);缺失 → 先清理旧 agent → 重派该单元(最多2次)→ 仍失败通知用户 |
| 🆕 续工 SendMessage 内容过长触发 "400 invalid parameter value" | 消息里塞了完整路径+规则清单,超模型输入上限 | 续工消息保持简短(≤200 字):只写「读 <PROJ>/xxx.md + 继续做什么」;需要传递长内容时,写指令文件到 <PROJ>/ 再让 agent Read,不在消息里内联 |
| 🆕 规划/细纲/整合子Agent 派发 prompt 过长(400 input length too long) | 用户需求+全部硬性规则内联在 prompt | 阶段0 把用户需求写 <PROJ>/需求.md;prompt 只写任务+路径+「Read 需求.md / 参考文件」;静态规则走 reference 文件,不重复粘贴。同一子Agent 派发 prompt 控制在 ~1500 token 内 |
十二、常见问题(FAQ)
> 高频答疑详见 references/FAQ.md(面向使用者「会问什么」的 29 条快答,按模式/字数/格式/调度/脚本/断点续跑/交付/报错分类)。此处只列最高频几条,避免与「十一、实战经验速查」(内部症状排查表)重复。
- 线性 / 金字塔 / 多大纲怎么选? 线性:≤30 章默认,或说「线性/不派子代理/缓存优先/不怕时间长」强制,不限章数;金字塔:>30 章自动,或说「金字塔/分布式/质量优先」强制;多大纲:说「多大纲/大纲方案/方案选择」时叠加,阶段2 出 N 个候选大纲供选。
- 每章写多少字? 写作要求 4000,门禁 2000。低于 2000 判不合格必须补写,门禁永不随要求上调。
- 为什么全文禁止「——」? 头号格式污染源,写错整模块返工,统一改逗号/句号/省略号。
- AI 套话门禁多少? AI套话组 ≥3 处/章 计失败(目标 0);章末收束句/氛围腔只警告。清单唯一源
scripts/cliche.txt。 - 最后交付什么 / 清理删什么? 交付
输出/完整正文.md+整合质量报告.md(报告模式另加日志/使用报告.md)。清理删章节/、模块/、细纲/;保留 设定集、references/、剧情大纲.md、输出/、日志/。 - 报 400 input length too long? prompt 太长:需求写
需求.md,prompt 只写任务+路径+读文件,静态规则走 references,单次派发 ~1500 token 内。