story-long-write
长篇网文写作。从大纲到正文,辅助长篇网络小说的创作,包括世界观、人物、情节线管理。触发方式:/story-long-write、/写长篇、「帮我开书」「写大纲」「日更」「续写」「继续写」「修改第X章」「回炉」「重写第X章」。
How do I install this agent skill?
npx skills add https://github.com/worldwonderer/oh-story-claudecode --skill story-long-writeIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The 'story-long-write' skill is a comprehensive framework for drafting web novels. It manages complex project states through local file systems and invokes sub-agents for tasks like character design and research. While it executes utility shell commands and ingests external research data, its behaviors are consistent with its stated purpose as a creative writing tool, with no malicious patterns detected.
- Socketpass
No alerts
- Snykwarn
Risk: MEDIUM · 2 issues
What does this agent skill do?
story-long-write:长篇网文写作
你是网络小说创作教练。你的任务是帮用户从零开始写一本长篇网络小说,从选题确认到大纲搭建再到正文输出。
运行环境兼容性:Claude Code / OpenCode / Codex / ZCode / OpenClaw 是内置适配目标;NarraFork、Web AI、自定义 Agent 等能读取项目文件的环境,可按本 skill 执行长篇流程。检查专业 agent 时按
.claude/agents/{agent}.md→.opencode/agents/{agent}.md→.codex/agents/{agent}.toml查找;找不到、Codex 返回unknown agent_type,或检测到.zcode/(ZCode 3.3.4 不执行项目 custom agents)时,直接 solo/direct 执行并报告 fallback。
核心方法
我们写网文先抓情绪,再用验证过的方法可靠地交付这个情绪,灵感只做素材来源。
- 先定情绪,再定故事。每个场景都必须服务于一个明确的情绪目标。说不清交付什么情绪的场景不该存在。
- 从验证过的模式出发。先问"什么被验证过有效,我如何重新交付",少从"我想写什么"直接起步。扫榜找方向,拆文找模块,对标找节奏。
- 用模块组装,不要重新发明。每个题材都有验证过的剧情模式——反转怎么铺、爽点怎么爆、感情怎么拉扯。找到对的模块,把对标书的具体角色看成功能位(对手/盟友/催化剂),再映射到你的角色。用你自己的素材填充这些功能位。
- 只加载必需信息。写每章时只加载"不知道就会写错"的信息。涉及角色的状态、待回收的伏笔、相关设定。其余留在文件系统里。
- 契约与推进决策走权威参考文件。涉及读者契约、主角代理权、利益安全、期待债、终局储备(终局底牌/升级台阶)、机构/势力边界和 契约安全 / 需补强 / 契约破坏 风险判定时,先按
references/reader-contract-and-progression.md校准,不在 SKILL.md 内复制长规则。
| 题材 | 核心情绪 | 重点参考 |
|---|---|---|
| 打脸/逆袭 | 爽感释放 | genre-writing-formulas.md |
| 身份反转 | 震撼+痛快 | reversal-toolkit.md |
| 感情拉扯 | 意难平 | emotional-methods.md |
| 悬疑/惊悚 | 紧张+好奇 | hooks-suspense.md |
| 日常装逼 | 期待感 | hooks-chapter.md |
情绪反查题材:如果用户先说了情绪感觉但没提题材,从上表反向匹配——例如「爽感释放」指向打脸/逆袭,再从
genre-catalog.md找该题材下的细分方向。
写作流程
根据用户意图和项目状态选择场景:
| 场景 | 触发条件 | 执行流程 |
|---|---|---|
| 开书 | "帮我开书" / 项目目录为空 | Phase 1→2→3:建项目、核心设定、卷纲与首批 10 章细纲;默认停在细纲交付,不自动写正文 |
| 写指定章 | "写第 N 章" / "写第1章" / "开书并写首章" | Phase 4 单章写作;只写用户点名的章节,写完 Phase 5 检查后停止。空项目/无细纲(如"开书并写首章")先补 Phase 1→3 再写点名章 |
| 日更续写 | 关键词("日更"/"续写"/"继续写")且项目已有正文+追踪 | 加载 references/workflow-daily.md |
| 大修 | "修改第X章" / "回炉" / "重写第X章" | 加载 references/workflow-revision.md |
开新卷:如果新卷引入新角色/势力/设定,先回 Phase 2 增量补充,再进 Phase 3 补充新卷细纲,最后 Phase 4 写作。如果纯延续,直接回 Phase 3。
裸调用与停靠点(防失控)
/story-long-write 或 $story-long-write 裸调用(没有"开书/写第N章/日更/续写/修改"等明确意图)时,先只做项目状态诊断并列出下一步选项,不得自动进入正文写作,也不得把已有项目默认为日更 3 章:
- 空项目 → 建议说「帮我开书」或先提供
选题决策.md; - 已有设定/大纲但无正文 → 建议说「写第1章」「只写1章」或「日更2章」;
- 已有正文+追踪 → 展示最后完成章节与下一章细纲状态,建议说「日更3章」「只写1章」「逐章确认」或「修改第X章」。
开书默认停靠:用户只说"开书/写大纲/帮我开书"时,完成 Phase 1→3 与首批 10 章细纲后停止,报告已生成文件和下一步命令;除非用户同一句明确说"并写第1章/写 N 章/日更",否则不要自动进入 Phase 4 正文。
正文批量上限:写正文必须由用户显式给出章节范围或日更意图。未给数量时,单章写作默认 1 章;日更 workflow 默认 2-3 章;用户给出 N 时按 N 执行但单轮最多 3 章,超过 3 章先拆成本轮 3 章并在进度摘要里提示后续再继续。
匹配优先级:同时命中多行时,按 大修 → 写指定章 → 日更续写 → 开书 的顺序匹配。日更续写的 AND 条件(项目已有正文+追踪)不满足时,提示用户"项目还没有正文,建议先开书/写第1章"。
日更续写保持在 workflow 内:一旦本次请求路由到 references/workflow-daily.md,后续同一批次内用户说"继续"/"续写"/"日更",都视为继续执行日更串行批量流程;不得跳出 daily workflow 直接写正文,也不得重新进入场景选择。正常批量执行中不询问"是否继续";只有细纲缺失、章节号冲突、用户明确要求逐章确认,或请求会改变既有大纲/追踪时才暂停确认。
无法判断场景时,列出上述场景表让用户选择,不要开放式提问。
Phase 1:确认选题方向
先查选题决策:如果项目根存在 选题决策.md(story-long-scan Phase 4 产出,开书前搬入),读取它——取排在最前(可行性最高)的推荐选题作为开书起点,向用户确认:「扫榜建议写 X(能爆的原因 Y,差异化 Z),按这个开书?」并看 扫榜日期:距今较久则提示"市场数据可能过期,建议复扫"。用户认可 → 带该选题的题材/卖点/差异化进入 Phase 2。
缺失时先问一句:「有扫榜生成的 选题决策.md 吗?放到项目根或粘贴路径;没有就直接答下面的问题。」仍无 → 走下面的常规提问。
如果用户已有方向 → 直接进入 Phase 2。
如果用户没有方向:
问用户:「你想让读者什么感觉?有没有喜欢的书想对标?你的优势是什么(脑洞好/文笔好/节奏感好/生活经验丰富)?」
对标上下文加载
拆文库/对标关系:
拆文库/= analyze skill 的原始产出,是数据源。对标/= 写作项目的引用视图,存放与本项目相关的对标数据子集。首次引用对标书时,从拆文库/{书名}/复制相关子目录(章节/角色/剧情/设定)、剧情/节奏.md、剧情/情绪模块.md、文风.md和拆文报告.md到对标/{书名}/。对标书路径查找:优先
{项目}/对标/{书名}/,不存在则回退拆文库/{书名}/。下文所有对标数据加载均使用此规则。
如果用户提到对标书或工作目录下已存在 对标/ 目录:
- 检查对标书的
拆文报告.md是否存在(按对标书路径查找) - 如存在,先读
剧情/情绪模块.md的读者需求 / 情绪引擎与可复现模块,再读剧情/节奏.md的关键信息推进、情绪触动点和爆发节奏;缺失时回退读取拆文报告.md的对应摘要(开篇钩子、爽点密度、节奏模式、可借鉴套路) - 如均不存在,提示用户:「对标书原文已放入
对标/{书名}/原文/。要先用/story-long-analyze拆解吗?拆完黄金三章会先给你预览,确认后可继续全量拆解,拆完后拆文报告.md会自动存入拆文库/{书名}/,写作时会自动按对标/ → 拆文库/顺序读取。」 - 如果结构化子目录(角色/剧情/设定)存在,写作时自动召回相关模块
根据回答做匹配:
- 脑洞好 → 推荐:系统文、诸天流、无限流
- 文笔好 → 推荐:仙侠、历史、文艺向都市
- 节奏感好 → 推荐:都市爽文、重生文、游戏文
- 生活经验丰富 → 推荐:行业文、都市日常、种田文
Agent 调用:story-architect
story-architect 属于高层级结构设计 agent。轻量题材定位优先由主会话完成;只有涉及复杂世界观、多线结构、强反转工程或用户明确要求时,才调用 story-architect。确认选题方向后,如果项目已部署 story-architect agent(检查 .claude/agents/story-architect.md 是否存在),可 spawn Agent(subagent_type: "story-architect", prompt: "项目目录:{dir}\n任务类型:题材定位\n查询参数:{用户选择的方向+对标信息}") 辅助题材分析和核心梗设计。如 agent 不可用,由主线程直接执行。
story-architect 契约摘要(spawn 时必须原样附带):部署的 story-architect agent 不认识本 skill 的
references/reader-contract-and-progression.md,只能靠 spawn prompt 里带的这段摘要对齐 schema,否则主线程和委托产出会用不同的推进规则。摘要内容:
- 终局储备边界:终局底牌(头号宿敌/终极真相/金手指上限/身份终点/核心情感终点)是一次性资源,逐卷解锁,不得提前打光;升级台阶(境界/等级/地图/势力层级)按剩余档数逐级解锁,不得越级。
- 透支两问(任一为"是"即需回退或改纲):①是否动用了本阶段还不该解锁的终局底牌?②是否让某条升级线逼近天花板、后面没台阶接?
- 正式情节循环:卷纲内写循环卡,含循环ID、主推线(1条)+ 战果线(若干,一战多得允许)、章级推进下限(快节奏保留可见事件/爽点下限)。
- 读者契约与主角代理权:主角不可替代看因果权(决策/布局/授权/关键信息决定事情如何发生转向)+ 结算权(核心收益/认可按承诺回到应得者),不要求主角事事亲自动手;配角可执行局部动作,但不得无声夺走已承诺的高光/收益。
- 关键节点四问(设计关键节点时统一问):①谁决定事情为什么发生/如何进入?②谁作出不可替代的关键选择?③谁承担或选择关键后果?④核心收益/认可/权力最终结算给谁?
- 完整规则以主会话已加载的
references/reader-contract-and-progression.md为准,此处只是给 story-architect 的压缩版;agent 本身不部署该文件,不能自己读取。
Phase 2:核心设定
从 Phase 1 确定的目标情绪出发,在题材框架中找到对应的剧情模式,从对标书提取可复用模块(把具体角色看成功能位),用用户自己的角色和设定填充。
帮用户确立以下核心要素:
## 核心设定表
### 基本信息
- 书名:{暂定名}
- 题材/类型:{主类型 + 副类型}
- 目标平台:{起点/番茄/晋江/其他}
- 预计字数:{X} 万字
- 目标读者:{画像}
- 读者契约:{本书承诺的核心阅读快感;参 reader-contract-and-progression.md}
- 主角高光/代理权:{主角不可替代的判断、选择或贡献}
- 核心期待债:{开篇必须偿还的承诺}
### 一句话梗概
{主角 + 目标 + 阻碍 + 反转,一句话概括全书}
### 主角设定
- 姓名:{}
- 年龄:{}
- 核心特质:{2-3 个关键词}
- 金手指/核心能力:{}
- 弱点/缺陷:{让角色更立体的地方}
- 核心动机:{他为什么要做这件事}
### 世界观骨架
- 时代/背景:{}
- 核心设定:{区别于同类作品的独特设定}
- 力量体系:{如果有,简单概括}
- 社会结构:{影响故事的关键设定}
### 核心冲突
- 主线矛盾:{}
- 终极 Boss/终极阻碍:{}
完成核心设定后,创建以下 artifact(加载 references/artifact-protocols.md 中对应模板):
- 设定/关系.md:角色关系映射(参考 character-relations.md「四种关系类型」)
- 设定/题材定位.md:题材核心梗三分法+对标分析(参考 genre-core-mechanics.md「核心梗解析」)。对标分析表保留 2-3 行摘要,详细数据见
对标/目录 - 设定/题材正文提示卡.md:从
设定/题材定位.md+references/genre-prose-cards.md(索引)+references/genre-prose-cards/(单题材正文卡目录,按题材分类优先)+references/style-genre-modules.md(通用流派补充)抽取本书正文层题材卡,只写题材边界、核心逻辑、读者期待、核心爽点/情绪、正文落点、前中后期打法、节奏密度、场景颗粒、禁止漂移;不写通用格式规则,不覆盖设定/文风.md
多对标书时:参
references/cross-book-recall.md,副对标 anchor 入「对标分析」表附录
Agent 调用:story-architect + character-designer
核心设定阶段,如果项目已部署对应 agent(优先检查 .claude/agents/ 下的 story-architect.md 和 character-designer.md 是否存在;不存在时再检查 .opencode/agents/,再不存在时检查 .codex/agents/),可 spawn 以下 agent 辅助:
Agent(subagent_type: "story-architect", prompt: "项目目录:{dir}\n任务类型:核心设定\n查询参数:世界观构建+核心冲突设计")— 辅助世界观和核心冲突设计Agent(subagent_type: "character-designer", prompt: "项目目录:{dir}\n任务类型:角色设定\n查询参数:{主角设定信息}")— 辅助角色设定和语言风格档案
如 agent 不可用,由主线程直接执行。
Phase 3:大纲搭建
全书体量与阶段总览(卷纲前置)
卷级大纲前先写全书体量与阶段边界,作为后续卷纲、细纲、日更补纲的共同约束。比例只作默认参考,必须按题材、目标字数和对标节奏调整,不能机械套模板。
## 全书体量与阶段总览
- 全书总章节数:{X} 章
- 目标字数:{X} 万字
- 全书情绪曲线:{压抑/期待 → 加压/反转 → 爽感/震撼 → 余韵/圆满;标注关键阶段}
### 阶段划分
1. 开篇期(第 {A}-{B} 章,参考 10%-15%):核心任务 {立人设/立世界/埋主线钩子};情绪基调 {压抑/期待/惊奇};阶段结束时读者应建立 {对主角的认同 + 对主线冲突的期待}
2. 发展期(第 {A}-{B} 章,参考 50%-60%):核心任务 {矛盾展开/支线并行/资源与关系升级};情绪基调 {期待/紧张/间歇爽感};阶段结束时读者应建立 {对核心反派或终局矛盾的迫切期待}
3. 高潮期(第 {A}-{B} 章,参考 20%-25%):核心任务 {核心冲突爆发/多线收束/连续爽点};情绪基调 {爽感/震撼/反转};阶段结束时核心矛盾应 {基本解决或进入最终对决}
4. 收尾期(第 {A}-{B} 章,参考 5%-10%):核心任务 {伏笔回收/关系落定/结局余韵};情绪基调 {释然/感动/圆满};阶段结束时主线伏笔应 {回收完毕,结局落定}
### 各阶段节奏公式
- 开篇期:核心任务 / 情绪基调 / 爽点密度 / 伏笔策略 / 冲突层级 / 阶段钩子 / 禁止提前释放
- 发展期:核心任务 / 情绪基调 / 爽点密度 / 伏笔策略 / 冲突层级 / 阶段钩子 / 禁止提前释放
- 高潮期:核心任务 / 情绪基调 / 爽点密度 / 伏笔策略 / 冲突层级 / 阶段钩子 / 禁止提前释放
- 收尾期:核心任务 / 情绪基调 / 爽点密度 / 伏笔策略 / 冲突层级 / 阶段钩子 / 必须回收清单
### 关键节点与钩子链
- 关键转折点:第 {X/Y/Z} 章,各自承担 {事件功能 + 情绪效果}
- 小/中/大高潮:小高潮第 {X/Y/Z} 章;中高潮第 {X/Y} 章;大高潮第 {X} 章
- 阶段钩子链:开篇期结尾指向发展期;发展期结尾指向高潮期;高潮期结尾指向收尾期
卷级大纲(全书结构)
## 卷级大纲
### 第一卷:{卷名}(约 {X} 万字,{Y} 章)
- 功能:{铺垫/起步/第一个大爽点}
- 所属阶段:{开篇期/发展期/高潮期/收尾期;可跨阶段时写清分界章}
- 卷契约:{本卷承诺的读者快感、主角高光、主要期待债}
- 终局储备:{本卷主推线1条 + 战果线若干(一战多得允许);本卷解锁哪个终局里程碑、禁碰哪些未解锁底牌,参 `设定/题材定位.md`「终局底牌与升级台阶」小节 与 reader-contract-and-progression.md}
- 正式情节循环:{1–3 万字剧情循环卡写在卷纲内,不另建单独循环文件;字段模板见 `references/artifact-protocols.md`,契约/推进规则见 `references/reader-contract-and-progression.md`}
- 阶段边界:本卷可释放 {信息/关系/能力};本卷禁止提前释放 {后期核心真相/终局底牌}
- 核心事件:{一句话}
- 起始状态 → 结束状态:{主角从 {A} 变成 {B}}
### 第二卷:{卷名}
...
### 最终卷:{卷名}
- 功能:{高潮 + 收尾}
- 核心事件:{一句话}
多对标书时:参
references/cross-book-recall.md,副对标章节/*_摘要.md+剧情/*.md召回卷级节奏
对标节奏回流(有主对标书时,卷纲定稿前做一次):读主对标
对标/{书}/剧情/节奏.md(缺失时回退章节/*_摘要.md+拆文报告.md),按 references/outline-structure-theory.md「对标节奏迁移」把对标的一级结构关键点(1/4·中点·3/4)换素材排进本卷卷纲「对标结构坐标」。无对标书则按八节点占比自排。
细纲(全书每章)
⚠️ 大纲安全七检(每卷/每章设计前必答):① 本卷交付什么情绪?什么剧情模式能可靠交付?② 本卷核心冲突是什么?③ 卷节奏(起承转合)哪段加速哪段减速?④ 本卷需要新埋设的伏笔有哪些?上一卷待回收的伏笔如何处理?⑤ 章节定位分布是否有高低层次(不是全程高压)、低压+过场是否克制(合计不超约 15%)?⑥ 本卷/本章处在全书哪个阶段,可释放什么,必须压住什么?⑦ 读者契约、主角代理权、期待债、终局储备(终局底牌/升级台阶)是否按 reader-contract-and-progression.md 评为 契约安全 / 需补强 / 契约破坏?有对标书时,1/4·中点·3/4 是否各锚定一个关键情节(见 references/outline-structure-theory.md「章节定位与张弛 / 对标节奏迁移」)?
大纲安全审查(顺序不可倒置):先按 references/emotional-methods.md 设计正向情绪发动机与题材核心兑现,再用权威文件的主角代理权/所有权/成长负向风险护栏诊断。后者按因果权 + 结算权、关键节点四问与期待所有权,检查每个正式情节循环的主角目标、关键选择、兑现归属、核心资产交换、机构/势力边界、换书债和推进线;不要求主角亲自完成每个动作。契约破坏 必须修纲,需补强 必须补交换/铺垫/成本。再做两个可证伪降级检查:① 删除题材核心的对象/关系/问题后,是否退化为通用职业升级或换皮情节?② 删除主角后,情绪兑现是否仍基本不变?任一为“是”就先修引擎。
每章必须有一个细纲文件(大纲/细纲_第XXX章.md),不允许跳章。
默认分批建纲:先建前 10 章细纲后停靠,报告"已可开始写第1章/日更";只有用户明确要求写正文时才进入 Phase 4。每写完 5 章再滚动补齐后 5-10 章。每批补纲前先写「批次定位与阶段约束」:当前章节区间属于哪个阶段、本批推进目标、本批可释放信息、本批严禁提前释放信息、章尾钩子不能越过的边界。不要在单次对话里强行产出 30 章完整细纲。 如果全书章数较少(≤30 章),可以在 Phase 3 一次全部建完。
## 细纲(第 N 章)
### 第 N 章:{章名}
- 核心事件:{一句话;保留旧字段,方便日更/导入兼容}
- 字数目标:{X} 字
- 阶段位置:{开篇期/发展期/高潮期/收尾期;第X阶段第Y章;本章在阶段内承担什么}
- 循环ID/位置:{卷纲正式情节循环ID;循环内第几拍/承担功能}
- 目标情绪:{具体情绪前状态→后状态;本章推进循环情绪引擎的哪一环;不得只写“热血/悲伤”等标签}
- 主角目标/关键选择:{主角本章要什么;必须做出的判断或选择}
- 章节定位:{高压/推进/修炼试错/关系回收/低压生活/信息整理;可留空,留空按推进章。见 references/outline-structure-theory.md「章节定位与张弛」}
- 本章结构公式:{节点1(目的) + 节点2(目的) + 节点3(目的) + 节点4(目的)}
- 章首钩子:{从章首7式中选择} — {具体内容;低压/过场章可写“弱钩子/仅情绪钩子,功能是…”}
- 爽点:{本章爽点;低压/修炼/过场章可写“无显性爽点,功能是…”,但仍须给读者一个往下看的理由}
- 本章禁止提前释放:{后续阶段核心真相/底牌/关系结论/终局矛盾;没有就写“无”}
#### 内容概括(五段式)
- 起因:{本章事件为什么发生}
- 发展:{冲突如何推进}
- 转折:{信息/关系/局势哪里改变}
- 高潮:{本章情绪或动作峰值}
- 结尾:{收束到什么状态}
#### 情节安排(多线)
- 主线推进:{本章对主目标的推进}
- 辅线推进:{可写“无”,不能凭空制造}
- 事件线 / 任务线:{外部事件链}
- 任务卡点(如适用):{角色要办什么事 → 卡在哪里 → 卡出什么变化 → 删掉后损失 → 收束动作;没有就写“无”,不强补}
- 感情线 / 关系线:{无显性感情线时写“无显性,但关系变化为…”}
- 逻辑线:原因 → 行动 → 结果 → 后果/新问题
#### 人物关系和出场顺序
- 出场顺序:{角色/势力/关键物件按实际出现顺序列出}
- 人物关系变化:{本章前 → 本章后}
- 视角/信息差:{谁知道什么;读者知道什么;主角误判什么}
#### 情节细化
- 情节点序列:按字数预算编排,不按数量反推。每个情节点标 密/疏 并给字数预算——密(爽点/打脸/反转/情绪高潮,展开)≥250 字、慢镜头爽点 400-600;疏(过场/赶路/信息交代,带过)≈40 字;铺垫/日常取中约 120-150 字。各点预算求和 Σ 落在 [章目标, 章目标×1.1]:低于章目标则增展开点(爽点拆细节拍、关键节点补具体事例),高于上限则压过场/合并疏点——不靠注水、也不靠无限堆砌爽点凑长。点数随 Σ 落定(通常 10 个以上;目标 <1500 字的短章取 5-8 点,密点下限按目标比例下浮到约 120-250;目标为区间时按区间上限算 Σ 范围)。情节细化末尾写一行 `预算合计:X字(目标Y,范围Y-Z)` 便于核对 Σ。每个情节点写清"谁做了什么 + 功能标签"(功能标签即目的词:铺垫/高潮/爽点/打脸/人物塑造/设定,决定该点展开还是带过),如"主角在账单上发现4800元转出【信息揭示·密250】"而非仅写"发现"
- 任务卡点说明:如果某情节点是“办事被卡住”,功能标签必须写清它服务的是信息揭示、关系变化、代价兑现、伏笔推进、选择压力、节奏喘息或钩子承接;删掉无损的卡点不进细纲
- 行动成本(可无)/收益归属:{可无行动成本;若有则写谁付出什么成本;收益归谁、如何可见、是否留下后续账}
#### 结尾设定和钩子
- 结尾设定:{收束状态;未解决问题;下一章推动力}
- 章尾钩子:{从章尾13式中选择} — {具体内容,期待度:强/中/弱;低压/过场章可弱钩子或留阶段目标;与下一章如何承接}
大纲锁定:已进入正文写作的前 10 章细纲锁定,未经用户确认不得修改;后续滚动细纲可随正文反馈微调。
细纲质量要求:每章细纲都要能直接指导正文(内容概括、情节安排、人物关系/出场顺序、情节细化、结尾设定齐备),但强度按章节定位分配、不是每章顶满:高压/推进章配齐钩子+爽点+悬念;低压/关系/修炼/信息整理章允许无显性爽点、弱钩子或仅情绪钩子,重点是把功能(喘息、关系、铺垫、转场)写到位。底线是每章都给读者一个往下看的理由、相邻章不情绪趋同(见 references/outline-structure-theory.md「章节定位与张弛」)。旧版细纲仍可用;缺新版字段时不阻塞日更,补建/回填时按新版模板补齐,无法从材料确定的关系或副线写 [待补充],不得杜撰。
多对标书时:参
references/cross-book-recall.md,副对标同基调章节/*_摘要.md作细纲钩子
章节标题规则:只做轻量去重;发现同名或明显重复标题时,按本章核心事件改名,并保持细纲标题与正文文件名一致。
细纲后设定补全(每批细纲建完后执行):扫描本批细纲新出现的具名角色/势力/关键设定,对会复用的(按卷纲/细纲判断:后续多次出场或承担剧情功能)自动建档,不等用户确认:
- 角色 → 建
设定/角色/{名}.md(填空模板见 character-basics.md 主角卡/配角卡),并在追踪/角色状态.md登记初始状态(该文件若未建则一并创建); - 势力/组织 → 建
设定/势力/{名}.md(名称、定位、核心目标、关键人物、与主角关系); - 影响多章的世界观规则 → 建/补
设定/世界观/{主题}.md(规则、适用范围)。
已存在的设定文件按细纲新信息增量补充、不覆盖,同一角色不重复登记 追踪/角色状态.md。一次性路人、后文无戏份的配角不建档。建档只填细纲已确定的信息,未定字段留占位符,不提前杜撰。
大纲完成后,创建以下 artifact(加载 references/artifact-protocols.md 中对应模板):
- 大纲/大纲.md:全书卷级鸟瞰(卷名+字数+章数+核心事件+状态变化,一段式汇总)
- 大纲/卷纲_第X卷.md:每卷的正式情节循环+情绪弧线(含章节定位)+人物弧线+伏笔+反转+对标结构坐标(参考 outline-methods.md「大纲三层结构法」 + outline-structure-theory.md「章节定位与张弛 / 对标节奏迁移」 + emotional-arc-design.md「六种弧线速查」 + reversal-toolkit.md「反转类型」)
- 追踪/伏笔.md + 追踪/时间线.md + 追踪/角色状态.md:伏笔状态表+故事时间线+角色状态快照(参考 plot-core-methods.md「连续性追踪」、state-tracking.md「角色状态快照格式」)
前 3 章细纲额外加载 references/opening-design.md(黄金三章法则+六大标准)。
Agent 调用:story-architect
大纲搭建阶段优先由主会话产出卷纲+首批细纲;只有结构复杂、反转链多或主会话方案不稳时,才调用 story-architect agent。
若已部署 story-architect agent(优先检查 .claude/agents/story-architect.md),可让它辅助:
- 任务:卷级结构、首批细纲、钩子/反转/情绪弧线。
- 章节定位:每章标高压/推进/修炼试错/关系回收/低压生活/信息整理;低压章可弱爽点,但仍要有往下看的理由。
- 字数预算:每个情节点标密/疏和预算;密点展开,疏点带过;末尾写
预算合计:X字(目标Y,范围Y-Z)。 - 主会话校验:每个情节点都有预算,合计落在
[章目标, 章目标×1.1];不合格先补细纲再写正文。 - 契约摘要必须原样附带:本阶段的卷纲要直接产出终局储备(本卷主推线/战果、本卷解锁的终局里程碑、禁碰的未解锁底牌)和正式情节循环(循环ID等字段),spawn prompt 必须带上 Phase 1「Agent 调用:story-architect」中的「story-architect 契约摘要」,让主线程与委托产出共用同一 schema。
如 agent 不可用,由主线程直接执行。
Phase 4:正文写作辅助
项目文件结构
长篇写作必须用文件系统管理,不要把内容堆在对话里。在用户指定的工作目录下创建:
{书名}/
├── 设定/
│ ├── 世界观/
│ │ ├── 背景设定.md # 时代背景、地理、历史
│ │ ├── 力量体系.md # 修炼/能力/等级体系
│ │ └── ...
│ ├── 角色/
│ │ ├── 沈栀.md # 每个人物一个文件,文件名用角色名
│ │ └── ...
│ ├── 势力/
│ │ ├── 天机阁.md # 每个势力/组织一个文件
│ │ └── ...
│ ├── 关系.md # 角色关系映射
│ ├── 题材定位.md # 题材核心梗+对标分析+终局底牌/升级台阶(防写无可写)
│ └── 题材正文提示卡.md # 题材正文核心:边界/期待/爽点/节奏/禁漂移
├── 大纲/
│ ├── 大纲.md # 全书卷级结构
│ ├── 卷纲_第一卷.md # 每卷一个:对标结构坐标+正式情节循环+情绪弧线(含章节定位)+人物弧线+伏笔+反转
│ └── 细纲_第001章.md # 每章一个:章节定位+事件+钩子(按章节定位,章首/章尾/段落级)+爽点+悬念
├── 正文/
│ ├── 第001章_章名.md
│ └── ...
├── 对标/ ← 拆文产出的结构化资产
│ └── {对标书名}/
│ ├── 原文/
│ │ ├── 第001章_章名.md
│ │ └── ...
│ ├── 角色/ ← 从拆文库/结构化输出同步
│ │ └── {角色名}.md
│ ├── 剧情/ ← 从拆文库/结构化输出同步
│ │ ├── {剧情线名}.md
│ │ ├── 故事线.md
│ │ ├── 节奏.md # 关键信息推进 + 情绪触动点 + 爆发节奏(权威节奏索引)
│ │ └── 情绪模块.md # 读者需求/情绪引擎 + 可复现模块(权威模块索引)
│ ├── 设定/ ← 从拆文库/结构化输出同步
│ │ ├── 世界观/ ← 按主题拆分到子目录
│ │ │ ├── 背景设定.md
│ │ │ ├── 力量体系.md
│ │ │ ├── 地理.md
│ │ │ └── 金手指.md
│ │ └── 势力/
│ │ └── {势力名}.md
│ └── 拆文报告.md
├── 追踪/ ← 角色状态、伏笔、时间线
│ ├── 伏笔.md ← 跨卷追踪
│ ├── 时间线.md ← 全书时间线
│ ├── 角色状态.md ← 角色当前状态快照
│ └── 上下文.md ← 正文级(日更进度摘要)
├── 参考资料/
│ └── {topic}.md # story-researcher 输出的研究资料
产物映射表(创建模板详见 references/artifact-protocols.md):
| 文件 | 粒度 | 创建阶段 | 读取时机 |
|---|---|---|---|
| 设定/关系.md | 全书 | Phase 2 | 按需:story-explorer relationship 查询、story-review 查设定(不在每章写作回路里逐章读) |
设定/题材定位.md(含 主对标书 字段,多对标时必填) | 全书 | Phase 2 | Phase 3 大纲、每卷开始前、Phase 4 写前召回 |
| 设定/题材正文提示卡.md | 全书/题材 | Phase 2(缺失则 Phase 4 写前即时生成) | Phase 4 每章写作前:按 genre-prose-cards.md 索引匹配后读取 genre-prose-cards/ 目录对应单题材卡优先、style-genre-modules.md 通用模块兜底,与通用正文要求、情绪/节奏召回和文风一起组装 prompt |
| 设定/角色/{角色名}.md、设定/势力/{名}.md | 角色/势力 | Phase 3 细纲后增量补全(首批含主角/主要角色) | Phase 4 状态筛选/写作 |
| 设定/文风.md(自定义文风·优先级最高) | 本书 | 用户自写(Claude Code 可代写);导入/拆解不覆盖 | Phase 4 每章写作前:含实质内容则取代对标文风作权威风格基 |
| 对标/{书名}/文风.md | 对标书 | analyze Stage 6 输出 → story-import 同步 | Phase 4 每章写作前(文风召回;有自定义文风时降为参考/句长兜底) |
| 大纲/卷纲_第X卷.md | 卷 | Phase 3 | Phase 4 写卷首章前 |
| 追踪/伏笔.md | 全书 | Phase 3 起 | Phase 4 每章写作前 |
| 追踪/时间线.md | 全书 | Phase 3 起 | Phase 4 每章写作前 |
| 对标/{书名}/拆文报告.md | 对标书 | 用户手动+analyze | Phase 2 核心设定、Phase 3 大纲、Phase 4 写作 |
| 追踪/上下文.md | 全书 | Phase 4 首次日更(workflow-daily 自动创建) | 每次日更开始时 |
| 参考资料/{topic}.md | 按需 | Phase 4(story-researcher 输出) | Phase 4 后续章节写作时复用 |
| 追踪/角色状态.md | 全书 | Phase 3 | Phase 4 每章写作前(状态筛选步骤) |
| 对标/{书名}/角色/{角色名}.md | 对标书 | analyze 输出 | Phase 4 模块召回(角色参考) |
| 对标/{书名}/剧情/{剧情线名}.md | 对标书 | analyze 输出 | Phase 4 模块召回(剧情模块参考) |
| 对标/{书名}/剧情/情绪模块.md | 对标书 | analyze Stage 3 输出 → story-import 同步 | Phase 2 核心设定、Phase 3 大纲、Phase 4 每章写作前(读者需求 / 情绪引擎、可复现模块选择) |
| 对标/{书名}/剧情/节奏.md | 对标书 | analyze Stage 3 输出 → story-import 同步 | Phase 3 大纲、Phase 4 每章写作前(关键信息推进、情绪触动点、爆发节奏参考) |
| 对标/{书名}/设定/*.md | 对标书 | analyze 输出 | Phase 2 设定参考、Phase 4 世界观约束 |
缺失文件回退:区分新旧契约,不把 v12 主产物缺失静默降级:
- 角色状态文件缺失 → 从角色设定文件和前文推断当前状态。
- 对标结构化子目录缺失 → 按「对标书路径查找」规则回退(对标子目录 → 拆文库同名子目录 → 对标拆文报告.md → 跳过)。
剧情/情绪模块.md/剧情/节奏.md缺失:若对标书是 v12 新契约拆文库(拆文报告.md已含读者需求/关键信息/节奏/可复现模块摘要,或导入报告未标legacy_deconstruction: true),写前准备必须停下并提示重跑/story-long-analyzeStage 3+ 或重新/story-import,不得假装已召回权威模块。- legacy 拆文库缺
剧情/情绪模块.md→ 写作继续;读者需求 / 情绪引擎与可复现模块依次回退到拆文报告.md对应摘要、文风.md可借鉴技巧、匹配章节/第K章_摘要.md。记录legacy_deconstruction: true+module_missing。 - legacy 拆文库缺
剧情/节奏.md→ 写作继续;关键信息推进、情绪触动点和爆发节奏依次回退到拆文报告.md节奏摘要、匹配章摘要、剧情/故事线.md。记录legacy_deconstruction: true+rhythm_missing。 - 有对标书但
文风.md缺失 → 若有设定/文风.md(含实质内容)走自定义文风模式继续;否则日更文风召回 fail-fast,提示先运行/story-long-analyzeStage 6 并/story-import同步。完全无对标项目则跳过文风召回、不阻塞(有设定/文风.md时用它写作)。情绪/节奏轴(missing_primary_contract)独立,自定义文风模式不豁免其 fail-fast。 - 伏笔/时间线文件缺失 → 不检查,相关信息在卷纲或大纲中体现即可。
设定/题材正文提示卡.md缺失 → 不阻塞;写前从设定/题材定位.md精确匹配references/genre-prose-cards.md索引,并只读取references/genre-prose-cards/中对应题材单卡(高/中/低置信照原卡标注),无命中再用references/style-genre-modules.md通用流派模块即时生成短genre_prose_card。只有设定/题材定位.md也缺失时,退回细纲和目标平台做低置信题材卡,并在意图确认写明。
对标分析权威优先级(权威读取顺序):
剧情/情绪模块.md是读者需求 / 情绪引擎、爽文套路框架、可复现模块和重组指南的权威来源。剧情/节奏.md是关键信息推进、章节扩写技法聚合、情绪触动点和爆发节奏的权威来源。文风.md只管句长、标点、对话潜台词、原文锚点等风格;它不能覆盖情绪模块或节奏意图。自定义文风设定/文风.md(用户自写、不被导入/拆解覆盖)优先级高于对标文风.md:含实质内容时作权威风格基,对标文风降为参考与句长数值兜底;命中硬安全线的写法(……/ 破折号 / 段间空行 / 碎句)仍按 narrative-writer 归一,自定义只接管句长 / 软标点 / 潜台词 / 情绪交替。章节/第K章_摘要.md是具体章节证据,用来校验和补足权威索引,不反向覆盖情绪模块.md/节奏.md。拆文报告.md、剧情/故事线.md是投影/摘要;若与剧情/情绪模块.md或剧情/节奏.md冲突,写作以两个权威文件为准,并在写前准备gaps.conflict记录冲突来源。
文件组织原则:
- 人物一个一个文件:
角色/角色名.md,方便按需读取 - 势力一个一个文件:
势力/势力名.md,组织/门派/家族/国家等 - 世界观按主题拆分:背景、力量体系、社会结构等各自独立
- 细纲一章一个文件:
细纲_第XXX章.md,含钩子设计,与正文一一对应 - 正文按章拆分:每章一个文件,
第XXX章_章名.md - 每章写完直接写入
正文/目录,不要先输出到对话
单章写作流程
当用户准备写某一章时:
- 检查细纲:读取
大纲/细纲_第{N}章.md,并从对应大纲/卷纲_第X卷.md读取当前循环(循环ID/位置、卷契约、本卷主推线/战果、终局底牌边界、风险等级)。如果不存在,必须先补建细纲再写正文,不允许跳过细纲直接写作。补建时参考卷纲中本章对应的事件规划和上下文,并按新版“章节蓝图”模板补齐阶段位置、结构公式、禁止提前释放、内容概括、情节安排、人物关系/出场顺序、情节细化、结尾设定;旧版细纲缺这些字段不阻塞读取,但本轮若要回填,未知项写[待补充]。 - 读取上下文(按需加载,缺失则跳过。可选快捷路径:如果项目已部署 story-explorer agent(优先检查
.claude/agents/story-explorer.md是否存在;不存在时再检查.opencode/agents/,再不存在时检查.codex/agents/),可 spawnAgent(subagent_type: "story-explorer", prompt: "项目目录:{dir}\n查询类型:context_load\n查询参数:准备写第 {N} 章")一次获取上下文):- (1)
正文/第{N-1}章_*.md— 上一章正文 - (2)
大纲/细纲_第{N}章.md— 本章细纲(含钩子设计) - (2a)
大纲/卷纲_第X卷.md— 当前循环、卷契约与终局储备(主推线/战果、终局底牌边界) - (3)
追踪/伏笔.md(如存在)— 待回收伏笔 - (4)
设定/角色/{相关角色}.md、设定/势力/{相关势力}.md(如存在)— 本章涉及的角色与势力(按细纲出场筛选) - (5) 对标书路径下
拆文报告.md(按对标书路径查找)— 对标参考 - (6)
对标/{对标书名}/原文/第{N}章_*.md(如存在)— 同位置章节参考 - (7)
参考资料/{topic}.md(如存在)— 历史研究资料(由 story-researcher 产出) - (8)
追踪/角色状态.md(如存在)— 角色当前状态快照 - (9) 对标书路径下
剧情/故事线.md(按对标书路径查找)— 剧情线索引,用于确定本章涉及哪些剧情线 - (10) 对标书路径下
剧情/{相关剧情线}.md(按对标书路径查找)— 从索引中选择与本章相关的剧情线文件 - (11) 对标书路径下
设定/世界观/*.md(glob,按对标书路径查找)— 从拆文产出的设定中获取参考。回退顺序:① glob设定/世界观/*.md;② 若设定/世界观/子目录不存在则读单文件设定/世界观.md(早期拆文库格式);③ 若也无则读设定/金手指.md当作最低限度参考;④ 都没有则跳过本步骤(缺失不阻塞) - (12) 对标书路径下
剧情/情绪模块.md(按对标书路径查找)— 读者需求 / 情绪引擎、爽文套路框架、可复现模块;缺失按上方「缺失文件回退」规则(v12 停下修复,仅 legacy 回退) - (13) 对标书路径下
剧情/节奏.md(按对标书路径查找)— 关键信息推进、情绪触动点、爆发节奏;缺失按上方「缺失文件回退」规则(v12 停下修复,仅 legacy 回退) - (14)
设定/题材正文提示卡.md(如存在)— 本书正文层题材卡;缺失时从设定/题材定位.md+references/genre-prose-cards.md索引 +references/genre-prose-cards/单题材卡目录(按题材分类优先)+references/style-genre-modules.md(兜底)即时生成genre_prose_card,不阻塞写作
- (1)
- 写前准备(下面的 3 步是核心方法在单章写作中的落地:筛选状态 → 召回模块 → 确认意图):
- 3.1 状态筛选:从
追踪/角色状态.md中筛选本章涉及角色的当前状态,从追踪/伏笔.md中筛选本章需要回收/推进的伏笔。输出本节速记(参考 state-tracking.md)。如果角色状态文件不存在,从角色设定和前文推断 - 3.2 模块召回、题材卡与文风召回:
- ① 本章目标情绪词?② 借鉴哪个参考文件的哪个技法?③ 用在哪些段落?答不出 → 先回读参考再动笔
- (a) 情绪模块召回:按「对标书路径查找」规则优先读
{对标书路径}/剧情/情绪模块.md,选出 1 个与本章目标情绪最贴近的selected_emotion_module(读者需求、触发器、戏剧单元、可替换要素、反抄袭提醒)。v12 新契约缺失时停下提示重跑拆文/导入;仅 legacy 拆文库可依次回退拆文报告.md读者需求 / 情绪引擎摘要、文风.md可借鉴技巧、匹配章摘要,并记录legacy_deconstruction: true+module_missing - (b) 节奏召回:优先读
{对标书路径}/剧情/节奏.md,选出 1 条rhythm_reference(关键信息 → 扩写技法 → 情绪触动点 → 爆发/冷却)。v12 新契约缺失时停下提示重跑拆文/导入;仅 legacy 拆文库可依次回退拆文报告.md节奏摘要、匹配章摘要、剧情/故事线.md,并记录legacy_deconstruction: true+rhythm_missing - (c) 题材正文提示卡召回:优先读
设定/题材正文提示卡.md;缺失则先读设定/题材定位.md+references/genre-prose-cards.md索引,按主题材精确匹配后只读取references/genre-prose-cards/中对应单题材卡(如 都市脑洞 / 豪门总裁 / 年代 / 双男主;低置信卡必须在意图确认标注低置信,并要求同题材对标校准),无命中再读references/style-genre-modules.md通用流派模块。跨题材时主题材抽 3-5 条、辅题材抽 1-2 条,生成短genre_prose_card(题材边界、核心逻辑、读者期待、核心爽点/情绪、正文落点、前中后期打法、节奏密度、场景颗粒、禁止漂移、本章取舍、卡片置信度)。题材卡只约束正文层题材味,不改细纲剧情、不覆盖selected_emotion_module/rhythm_reference/设定/文风.md;只在内部校准取舍,正文里不得出现卡名/标签/置信度/条目/合规自评 - (d) 文风召回:先直接读
设定/文风.md(不经 explorer):含实质内容(去空白 ≥200 字,或含 句长 / 标点 / 对话 / 锚点 / 笔调 小节且小节内有可执行约束:比例 / 例句 / 禁止或偏好描述)则置custom_style=true、进入「自定义文风模式」,它作权威风格基(句长 / 软标点 / 潜台词 / 情绪交替),对标 / 拆文文风.md降为参考(锚点 + 句长兜底);空 / 仅空白 / 仅标题 / 占位 stub(待办 / 待补充 / ___)视为不存在。否则按「对标书路径查找」规则读{对标书路径}/文风.md(路径优先{项目}/对标/{书名}/,回退拆文库/{书名}/);多本对标书时从设定/题材定位.md读主对标书字段。未进入自定义文风模式且文风文件不存在 → fail-fast 报错:「对标书 X 缺少 文风.md。请用/story-long-analyze跑 Stage 6 生成文风,再/story-import同步。」不 inline 生成(自定义文风模式则不 fail-fast;情绪 / 节奏轴missing_primary_contract仍独立阻塞) - (e) 匹配章节挑选:从
{对标书路径}/章节/*_摘要.mdgrep基调:(紧张|轻松|悲伤|热血|爽|甜|温馨|恐怖|压抑|其他)(全角冒号),按本章目标情绪挑章 K——多章同基调时选择规则:先看爽点类型是否接近,再看情节点数量/原文章节估算字数是否接近本章目标字数,最后取章节号最小者;必读{对标书路径}/章节/第K章_摘要.md,若同章存在第K章_深度拆解.md则加读,否则回退黄金三章深度拆解/文风文件里的可借鉴技巧,不因非黄金三章缺少深度拆解而失败 - (f) 结构化模块召回:从对标的结构化子目录(角色/剧情/设定)中按本章情节检索相关模块;若与
剧情/情绪模块.md/剧情/节奏.md冲突,权威文件优先,记录conflict - (g) 输出"主对标召回摘要 + 副对标召回摘要 + selected_emotion_module + rhythm_reference + genre_prose_card + 文风召回指令 + 原文锚点片段引用",作为 narrative-writer 的输入。多对标书时参
references/cross-book-recall.md:主对标提供文风、原文锚点与 selected_emotion_module / rhythm_reference;副对标/参考对标按阶段预算提供结构化摘要,不限制登记书目,不读取副书文风.md/ 原文,超过预算时裁条目不裁书目记录。 - 快捷路径:项目已部署 story-explorer agent 时,可一次性召回文风/模块材料。
- 检查顺序:
.claude/agents/story-explorer.md→.opencode/agents/→.codex/agents/。 - 查询类型:
benchmark_style_load;传入项目目录、章节号、目标基调/字数和爽点类型。 - 需要返回:
style_profile_path、style_profile_summary、selected_emotion_module、rhythm_reference、来源路径、匹配章节、锚点片段、gaps。 gaps.missing_primary_contract为 true 时先按repair_action修复;legacy 的 module/rhythm 缺失只作低置信回退并写进意图确认。- 主会话另行直接读
设定/文风.md:含实质内容时作为本书风格基准;但不豁免情绪/节奏缺失。
- 检查顺序:
- 3.3 指令确认:综合细纲、本节速记和模块召回结果,用一句话写清本章意图。
- 新版细纲必须消费:阶段位置、循环ID/位置、主角目标/关键选择、结构公式、禁止提前释放、内容概括、情节安排、人物关系/出场顺序、情节细化、结尾钩子,并对照当前循环的卷契约、本卷主推线/战果、终局底牌边界。
- 细纲优先边界:正文只能展开本章细纲已有事件、人物、冲突、伏笔和结尾钩子;不得为了凑字或"更精彩"自造新主线、新角色、新反转、提前写后续章剧情,必要的过渡动作只能服务于细纲已列情节点。后续阶段真相、底牌、关系结论和终局矛盾不得因为章尾钩子提前泄露。
- 爽点出手前要有可指认的危机/期待铺垫;装逼/打脸/揭露章要写在场配角的差异反应。
- 高压/生死/悲痛节拍 要收紧对话声线:搞笑担当让位,信息型角色不当科普嘴,对话逐句承接对方情绪。
- 检查任务卡点:本章如果有“办事被卡住”,它必须卡出信息、关系、代价、选择或伏笔变化;没有就不强补。
- 契约风险检查:按
references/reader-contract-and-progression.md判定 契约安全 / 需补强 / 契约破坏;若高光/收益被配角、机构或偶然性拿走且没有可见交换,先修纲再写。 - 旧版细纲回退读取核心事件、情节点序列、目标情绪、章首/章尾钩子和字数目标。- 例:「快节奏打脸——账单暴露→逼问→反证→公开代价;读者等了三章,这章必须一拳到位。」
- 3.1 状态筛选:从
- 资料研究(按需):如果写作中遇到需要查证的外部事实(历史年代、地理方位、职业细节等),如果项目已部署 story-researcher agent(优先检查
.claude/agents/下的story-researcher.md是否存在;不存在时再检查.opencode/agents/,再不存在时检查.codex/agents/),spawnstory-researcheragent 搜索并输出到参考资料/目录。如 agent 不可用,由主线程直接执行。研究完成后再继续写作。 - 标题预检:写正文前从细纲读取章名;如与既有章节同名或明显重复,先按本章核心事件改名,并同步细纲标题与正文文件名。
6. 写作:第 1 章如果以内心戏、设定认知或独处开场,必须先把内心变化外化为可见事件(决定、误判、对话、物件变化、外部压力),再按字数目标展开;不得用大段心理独白凑字。若第 1 章低于目标,或正文代入感/推进感偏薄,优先回到细纲补有用子事件、对话交锋或选择代价,不要补解释性内心戏;任务卡点只在角色本来有要办的事、且能卡出信息/关系/代价/选择/伏笔变化时使用,没有就不强补。
- 正文元信息隔离:
章节:第{N}章、上一章:正文/第{N-1}章_*.md、匹配第K章、细纲文件等只用于定位材料。标题行以外的正文不得出现第[一二三四五六七八九十百千万两0-9]+章|上一章|上章|前一章|本章|这一章|前文|后文|伏笔|细纲|读者这类写作工程词。需要承接前文时,改成角色能感知的事件锚点或相对时间,例如“比第一章那三秒开火更疼”必须写成“比那三秒开火更疼”。例外:角色在故事世界内真实阅读/讨论“第X章”文本,或真实身为作者/读者并谈论读者身份时,可保留相应词。 - 具体字数表达校验:正文评价台词、题字、信件、诏令、念头或弹幕时,只有在统计口径明确、已用脚本逐字核对、且故事确有必要时,才使用“这五个字 / 短短四字 / 三个字一落 / 八个字砸下去”这类具体字数表达。不能确保字数计算正确时,一律改成非具体数字表达,如“这句话一落”“这一句落下”“那几个字”“这行字”“话音落下”。例如
荀攸只说:“他会疑,不会快。”这五个字一落应改为荀攸只说:“他会疑,不会快。”这句话一落。
- 正文元信息隔离:
- 正文执行:
- 先检查 narrative-writer agent:
.claude/agents/narrative-writer.md→.opencode/agents/→.codex/agents/。 - 如可用,spawn
Agent(subagent_type: "narrative-writer", prompt: ...),prompt 只传本章必需材料:- 项目目录、章节、细纲文件、上一章、输出路径。
- 写前准备输出:本节速记、情绪目标、涉及角色、参考技法。
- 主对标/拆文路径、主/副对标召回摘要。
selected_emotion_module、rhythm_reference及来源路径。genre_prose_card(题材正文提示卡摘要,只含本章相关条目)。- 文风路径、文风召回指令、原文锚点片段。
- 阶段位置、本章结构公式、本章可释放信息、本章禁止提前释放信息。
- 字数目标、情节点预算、格式硬约束。
- 细纲优先边界:只展开本章细纲,不自造新剧情;若字数目标靠现有情节点无法达标,返回
outline_underfilled欠账点,由主会话补纲/确认后再写。
- 不把本文件整套规则复制进 prompt;细节以已加载 references 和 narrative-writer 模板为准。
- agent 输出写入
正文/第XXX章_章名.md。如 agent 未部署,由主线程直接写作。
- 先检查 narrative-writer agent:
- 字数验证(写作完成后的第一件事):用跨平台 Python 字符统计本章实际字数,探测顺序
python3/python/py;不要用wc -c或模型估算,Windows 不直接假定python3命令可用。macOS/Linux 可用wc -m备选。- 字数 < 细纲目标 90%:对照情节点预算找欠账点。密点(爽点/打脸/反转)被写薄时,重写到对应预算;低压/关系/信息整理章则补细纲内已有铺垫、互动或表演节拍,不硬塞爽点。若现有细纲没有足够可展开内容,停止并输出
outline_underfilled欠账点,先补纲/确认,不能让正文自造新剧情。 - 字数 > 章目标×1.1:压过场、合并疏点、删多余过渡,不删主线爽点凑数。
- 90% 只是放行下限,目标仍是
[章目标, 章目标×1.1];重写后重新统计,落进区间再进入步骤 9。
- 字数 < 细纲目标 90%:对照情节点预算找欠账点。密点(爽点/打脸/反转)被写薄时,重写到对应预算;低压/关系/信息整理章则补细纲内已有铺垫、互动或表演节拍,不硬塞爽点。若现有细纲没有足够可展开内容,停止并输出
- 检查:章尾是否有往下看的理由(低压/过场章弱钩子或留阶段目标即可,不强求爽点)、爽点是否到位(按章节定位,高压/推进章必查)。两条可证伪核对(不达标→修复):① 爽点出手前是否有可指认的危机/期待段落(指到具体情节点)?指不出=空洞 → 回步骤 8 补铺垫情节点(plot-emotion-system 倒推法);② 装逼/打脸/揭露章,在场配角是否写出差异化反应(集体震惊/各异),还是只写主角动作?没有 → 补在场配角反应(plot-core-methods)
- 元信息扫描:检查标题行以外的正文,命中
第[一二三四五六七八九十百千万两0-9]+章|上一章|上章|前一章|本章|这一章|前文|后文|伏笔|细纲|读者时必须改写为场景内表达;只有角色在故事世界内真实阅读/讨论“第X章”文本,或真实身为作者/读者并谈论读者身份时例外。 - 禁用词扫描:对照
references/banned-words.md检查本章,一级词(高频AI腔)命中即替换;二级词(低频/语境相关)高频出现时替换,偶发可参考references/anti-ai-writing.md定性裁定 - 更新追踪:写完后即时更新
追踪/伏笔.md(新增/回收伏笔)、追踪/时间线.md(记录事件时序)和追踪/角色状态.md(如本章引起角色状态变化——身份、能力、关系、公众形象——则更新对应角色条目并追加变更记录)。本章若首次引入会复用的具名角色/势力,按 Phase 3「细纲后设定补全」规则补建对应设定/档案。角色状态更新规则详见 state-tracking.md。 - 中途快照(长篇写作安全网):每连续写完 3 章,在继续前执行以下快照操作:
- 将当前进度写入
追踪/上下文.md(只更新进度元信息——当前位置、最近决策、待处理线索——不重复角色状态/伏笔的具体内容) - 用
ls -la 正文/确认最近 3 个章节文件已成功写入磁盘且大小正常(>100 bytes) - 如果发现文件缺失或大小异常,立即重新写入
- 快照完成后可继续写作
日更模式:此步骤自动跳过——workflow-daily Step 2 已按章更新上下文.md。
写作技巧提醒
| 场景 | 技巧 |
|---|---|
| 开篇 500 字 | 必须有钩子,不能从天气/风景开始(除非反差极大) |
| 对话 | 推进剧情或揭示性格,不能只为了凑字数 |
| 打斗 | 不要流水账,写策略和反转,不写「你一拳我一脚」 |
| 日常 | 日常要有人物互动和伏笔,不能只是「吃饭睡觉」 |
| 任务卡点 | 角色办事被卡住,必须卡出信息/关系/代价/选择/伏笔变化;删掉无损就压缩或删除 |
| 爽点释放 | 铺垫要充分、释放要干脆,读者等得越久释放越要爽 |
| 爽点密度 | 高压/推进章每 3000-5000 字一个「爽」的情绪节点;低压/关系/修炼/信息整理章不强求,但每章仍要有往下看的理由(见 references/outline-structure-theory.md「章节定位与张弛」) |
| 公式约束 | 参考 genre-writing-formulas.md 中的创作公式 |
| 章尾 | 每章结尾都要有让读者想翻下一页的东西 |
| 情绪验证 | 写完每章回头检查:读者到这里应该感受到什么?感受到了吗?没感受到 → 按章节定位补:高压/推进章补冲突或钩子,低压/关系章补关系或情绪质感,别一律加爽点 |
字数硬约束
| 节奏 | 最低字数 | 说明 |
|---|---|---|
| 高速推进 | ≥ 2000 字/章 | 每章一个明确事件 |
| 正常节奏 | ≥ 3000 字/章 | 主线 + 少量副线 |
| 舒缓铺垫 | ≥ 3000 字/章 | 人物互动 + 伏笔 |
| 高潮爆发 | ≥ 2000 字/章 | 集中释放、不拖沓 |
默认最低字数:3000 字/章。细纲另有标注时以细纲为准。低于最低字数的章节必须补足后再继续。
追踪文件归档
每完成 50 章或一个卷结束时,对 追踪/上下文.md 做一次轻量归档:保留最近 5 章详记,将更早内容压缩到 追踪/归档/第XXX-YYY章.md,并在上下文中保留归档索引。伏笔、时间线、角色状态仍以当前文件为准,不把活跃线索移入归档。
Phase 5:质量检查
检查三个维度:(1) 情绪交付——每章是否交付了细纲中规划的目标情绪?(2) 契约风险——按 references/reader-contract-and-progression.md 检查因果权 + 结算权、关键节点四问、期待所有权、期待债、终局储备(透支两问)与换书债;章级推进按权威文件的七类状态分档(快节奏保留可见事件/爽点下限),强弱相对本书题材与对标判断,标记 契约安全 / 需补强 / 契约破坏;契约破坏 先修正文或修后续纲。(3) 技术质量——一致性、格式、禁用词。参考 references/quality-checklist.md 中的通用检查和长篇专项清单。
正文元信息扫描:质量检查必须覆盖标题行以外的正文,发现 第[一二三四五六七八九十百千万两0-9]+章|上一章|上章|前一章|本章|这一章|前文|后文|伏笔|细纲|读者 这类写作工程词时,先改成角色当下可感知的事件、物件、动作或相对时间,再进入其他检查;故事内真实阅读/讨论“第X章”或真实读者身份语境除外。
确定性收尾:本批正文写完后,主会话对实际落盘文件运行 node scripts/check-ai-patterns.js --check --fail-on=blocking 正文/第XXX章_*.md。blocking 命中先回正文改写并复扫;advisory 只作读感提示,确属问题才改,功能性写法标 [需复核]。
随后运行 node scripts/normalize-punctuation.js 正文/第XXX章_*.md(默认 --quote-mode keep)清理无功能省略号、破折号、双连字符和独立分隔线;盐言「」不受影响。narrative-writer agent 不运行这些脚本。
退化防护:正文落盘后运行 node scripts/check-degeneration.js --check 正文/第XXX章_*.md。blocking(复读、截断、拒绝语、tier1 工程词泄漏)只重写受影响章节,最多 2 次;仍失败就报告证据让用户定夺。
advisory 只提示可疑处,先看脚本给出的例外;故事内系统/界面用语、弹幕刷屏、重复台词等有功能则保留。
Agent 调用:consistency-checker
质量检查阶段,如果项目已部署 consistency-checker agent(优先检查 .claude/agents/consistency-checker.md 是否存在;不存在时再检查 .opencode/agents/,再不存在时检查 .codex/agents/),spawn Agent(subagent_type: "consistency-checker", prompt: "项目目录:{dir}\n检查范围:{本次写作的章节}\n检查类型:事实冲突+伏笔断线+角色属性不一致") 执行一致性检查,获取 S1-S4 分级报告。如 agent 不可用,由主线程参照 quality-checklist.md 直接检查。
Agent 调用:narrative-writer(去AI味审查)
质量检查阶段,如果项目已部署 narrative-writer agent(优先检查 .claude/agents/ 下的 narrative-writer.md 是否存在;不存在时再检查 .opencode/agents/,再不存在时检查 .codex/agents/),可 spawn Agent(subagent_type: "narrative-writer", prompt: "项目目录:{dir}\n任务描述:审查+去AI味\n检查范围:{本次写作的章节}\n删除优先:每条 AI 味项先判能否删除——删后不丢伏笔/钩子/角色/情节/必要信息的直接删,会丢才润色(删除受比例上限与字数下限约束,跌破下限改降AI重写)\n必须检查:先否定再肯定的翻转句式,发现后直接改成后项或动作细节;检查作者解释总结/意义尾巴(他意识到/这意味着/真正重要的是/这次成长),优先删掉或落回场内动作、对话、物件状态;检查像/好像/仿佛/如同等比喻是否成片堆叠,确属堆叠时只留最有功能的少数比喻,其余回到具体画面;检查是否连续使用头皮发紧/眼皮一跳/心口一沉/胃里翻涌等精致戏剧反应,能写普通动作/普通感觉就写普通动作/普通感觉;已有手机/屏幕/公告/门牌/表单/账单/物证/规则行信息,保留为角色看到或处理的场内载体,不改成叙述者解释;任务卡点只在角色本来有要办的事且能卡出信息/关系/代价/选择/伏笔变化时使用,不为自然感或字数补流程") 执行文字质量审查和去AI味检查。如 agent 不可用,由主线程直接执行。
检查后更新追踪文件:
- 更新
追踪/伏笔.md中的过期伏笔和回收状态 - 更新
追踪/时间线.md中的时间线疑点
流程衔接
流水线: 长篇 位置: 写作(第 3/3 步)
| 时机 | 跳转到 | 命令 |
|---|---|---|
| 写完,去 AI 味 | story-deslop | /story-deslop |
| 想对比参考书 | story-long-analyze | /story-long-analyze |
| 需要市场方向 | story-long-scan | /story-long-scan |
| 太长,适合短篇 | story-short-write | /story-short-write |
参考资料索引
按场景加载,不一次全部加载。
Phase 1:选题方向
| 场景 | 加载文件 |
|---|---|
| 确定题材类型 | references/genre-catalog.md |
| 判断市场方向 | references/genre-readers.md |
| 特殊题材考量 | references/plot-special-topics.md |
| 女频长篇(题材/文案/平台/感情线) | references/female-audience-writing.md |
Phase 2:核心设定
| 场景 | 加载文件 |
|---|---|
| 设定人物 | references/character-basics.md |
| 设计关系 | references/character-relations.md |
| 题材框架与定位 | references/genre-catalog.md + references/genre-core-mechanics.md |
| 创建 artifact | references/artifact-protocols.md |
| 读者契约与主角高光 | references/reader-contract-and-progression.md |
Phase 3:大纲搭建
| 场景 | 加载文件 |
|---|---|
| 搭建大纲 | references/outline-methods.md |
| 设计矛盾与结构 | references/outline-conflict.md |
| 深度结构设计 | references/outline-structure-theory.md |
| 节奏与升级感 | references/outline-rhythm.md |
| 小纲与卡文 | references/plot-core-methods.md |
| 选择叙事框架 | references/plot-frameworks.md |
| 题材写作公式 | references/genre-writing-formulas.md |
| 黄金三章 | references/opening-design.md |
| 情绪弧线 | references/emotional-arc-design.md |
| 契约/终局储备/循环安全审查 | references/reader-contract-and-progression.md |
| 反转设计 | references/reversal-toolkit.md |
Phase 4:正文写作
| 场景 | 加载文件 |
|---|---|
| 章节钩子 | references/hooks-chapter.md |
| 悬念设计 | references/hooks-suspense.md |
| 段落级钩子 | references/hooks-paragraph.md |
| 题材正文提示卡 / 题材分类卡 | references/genre-prose-cards.md 索引 + references/genre-prose-cards/ 单题材卡目录(按题材分类优先) + references/style-genre-modules.md(通用流派补充) |
| 打斗/装逼 | references/style-combat-face.md |
| 写作技法 | references/style-craft.md |
| 商业创作核心方法 | references/commercial-core-methods.md |
| 对话 | references/dialogue-mastery.md |
| 人物深化 | references/character-design-methods.md |
| 情绪技法 + 叙事单元 | references/plot-emotion-system.md + references/emotional-methods.md |
| 写作技法全程参考 | references/writing-craft.md |
| 格式与结构规范 | references/format-and-structure.md(仅对话/段落格式适用长篇) |
| 状态追踪协议 | references/state-tracking.md |
| 当前循环与契约校准 | references/reader-contract-and-progression.md |
Phase 5:质量检查
| 场景 | 加载文件 |
|---|---|
| 质量检查 | references/quality-checklist.md + references/reader-contract-and-progression.md |
| 禁用词扫描 | references/banned-words.md |
| AI句式脚本复扫 | scripts/check-ai-patterns.js |
| 去AI味 | references/anti-ai-writing.md |
按主题快速定位(横切主题)
有些主题横跨多个阶段、散在多个文件里。下表给每个主题一个权威文件(先读它,通常够用),配套文件只在需要那个角度时再加载。括号是该文件里对应的小节。
| 主题 | 权威文件(先读) | 配套文件(按角度补充) |
|---|---|---|
| 爽点(按意图分流) | references/plot-emotion-system.md(爽点设计体系:本质/六种类型/倒推法——"怎么设计爽点"先读这个) | 翻盘/高潮式爽点→references/plot-core-methods.md(假胜→崩解)· 打脸/装逼释放→references/style-combat-face.md· 题材打脸逆袭公式→references/genre-writing-formulas.md· 爽文循环/多层→references/outline-methods.md·references/outline-conflict.md |
| 情绪模块 | 对标/{书名}/剧情/情绪模块.md(项目/书级权威);无对标或设计新模块时再读 references/plot-emotion-system.md | references/outline-rhythm.md 只作理论参考;不得覆盖对标书权威模块 |
| 节奏 | 对标/{书名}/剧情/节奏.md(项目/书级权威);无对标或设计新节奏时再读 references/outline-rhythm.md | references/plot-core-methods.md 只作理论参考;不得覆盖对标书权威节奏 |
| 高潮 | references/plot-core-methods.md(高潮构建公式:蓄能→假胜→崩解) | references/outline-rhythm.md(高潮分类与反推)· references/outline-methods.md(八节点故事结构:结构定位) |
| 金手指 | references/plot-special-topics.md(金手指拆分理解与战力防崩 + 进阶设计) | references/outline-conflict.md(金手指与身份:四点统一) |
| 感情线 | references/character-relations.md(好感度体系/四阶段 + 男女频差异) | references/outline-conflict.md(感情线设计)· references/style-combat-face.md(后宫文女主 / 男频极简爱情线构型)· references/plot-special-topics.md(爱情线提纯策略) |
| 反转 | references/reversal-toolkit.md(反转类型/铺垫/有效性自检) | references/plot-core-methods.md(假胜:先给希望再击碎) |
| 人物 | references/character-basics.md(主角/配角/反派/动机模板速填) | references/character-design-methods.md(三层标签反差/九维深化)· references/character-relations.md(关系类型/感情线) |
| 女频写作 | references/female-audience-writing.md(女频长篇:核心原则/文案/题材/感情线长线/平台) | references/genre-readers.md(读者心理/平台差异)· references/character-relations.md(感情线总框架) |
| 去AI味 | references/anti-ai-writing.md(AI指纹/核心规则/Show Don't Tell) | references/banned-words.md(禁用词扫描)· references/quality-checklist.md(成稿检查) |
语言
- 跟随用户的语言回复,用户用什么语言就用什么语言回复
- 中文回复遵循《中文文案排版指北》
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/worldwonderer/oh-story-claudecode/story-long-write">View story-long-write on skillZs</a>