Novel Architect — 商业连载网文创作 Skill
版本 3.0.0。目标是让 Agent 以“脚本状态守卫 + 模型文学判断”的混合方式,稳定完成中文商业连载网文的开书、续写、审校、修稿和长线维护。
0. 总原则
把本 skill 当成可自主执行的工作流,不要把 CLI 命令清单转交给用户。
- 用户负责提供高层创作目标、题材、平台、偏好、限制和重大方向选择。
- Agent 负责读取本
SKILL.md,必要时读取references/,自行调用novel_architectCLI,自行读取产物,自行生成 JSON/正文/修稿,并推进到有效停止点。 - Python CLI 是确定性工具层,负责项目状态、索引、账本、门禁、信号、hash 和文件落盘;它不是给用户手动执行的说明书。
- 模型负责文学判断和创作输出:market pack、beat 选择、正文写作、model signal、修稿、反馈诊断。
- 只有在缺少 shell/文件工具、项目路径不明且无法推断、或需要真正的创作方向取舍时,才询问用户。
有效停止点只有这些:章节 gate.passed=true 并已 commit;前三章审校失败需要重写开头或重做 market pack;缺少必要输入导致无法继续;工具权限不足;需要用户在多个重大创作方向中选择。
1. 运行命令约定
在能导入 novel_architect 的工作区执行命令。优先使用项目仓库根目录下的:
uv run python -m novel_architect <command> ...
如果当前环境没有 uv 但包已安装,使用:
python -m novel_architect <command> ...
如果 console script 可用,也可以使用:
novel-architect <command> ...
执行前先确定项目路径:用户给出路径则使用该路径;用户只说“这本书/继续写”时,先检查常见 projects/<书名>/ 目录和 project.json;多个候选项目无法判断时再问用户。
review、save-first3-review 等命令返回非 0 通常表示门禁未过,不代表程序崩溃。此时读取输出 JSON、gate.json 或 repair.json,修复后重试。
2. Agent 自主执行契约
必须自己执行的动作
当任务涉及开书、续写、审校、修稿、改纲、重建、反馈诊断或状态检查时,Agent 必须自己调用 CLI、读取输出、写入文件并继续流程。
不要只回复:
请运行 python -m novel_architect prepare ...
应当实际运行命令,检查产物,再继续下一步。只有环境没有 shell/文件权限时,才给用户命令。
导出的 prompt 都是 Agent 工作项
这些命令会导出 prompt 或 input 文件。Agent 需要读取它们并亲自生成对应 JSON/文本,再调用保存命令或更新文件。
| 导出命令 | 产物 | Agent 下一步 |
|---|---|---|
market-open | editorial/market_pack_prompt.md、market_pack_input.json | 生成严格 JSON,调用 market-save |
beat-candidates | editorial/chXXXX/beat_competition_prompt.md、beat_competition_input.json、beat_options.json | 选择/生成最强方案,调用 beat-select,再 apply-beat-selection |
export-signal-prompts | 12 个 signal prompt JSON | 逐个生成 model signal JSON,调用 save-model-signal |
first3-review | data/reviews/first3_review_prompt.md、first3_review_input.json | 生成含 review_input_hash 和 8 个分数的 verdict,调用 save-first3-review |
feedback-diagnose | data/feedback/chXXXX_diagnosis_prompt.md、input | 生成诊断;如需保存,将诊断写入反馈 JSON 的 diagnosis 后调用 save-feedback |
export-title-review-prompt / export-intro-review-prompt | 书名/简介审校 prompt | 生成诊断,必要时更新 market_pack.json、书名/简介候选或开书资料 |
不要让用户把这些 prompt 粘给另一个模型,除非用户明确要求这种人工协作模式。
3. 任务入口速查
| 用户意图 | Agent 应执行的主流程 |
|---|---|
| 开一本新书 | init → market-open → market-save → 补强真相源 → first-10-retention / save-first10-plan → 前三章试生产 |
| 继续写下一章 | status → prepare → beat competition → 写正文 → review → model signals → review → 修稿循环 → commit |
| 修复本章 | 读取 editorial/chXXXX/repair.json 和 gate.json → 改正文 → review → 必要 model signals → 再 review → 通过后 commit |
| 前三章审校 | 第 1-3 章已提交后运行 first3-review → 生成 verdict → save-first3-review |
| 改纲/改设定 | 修改 src/*.json 真相源 → rebuild → status → 必要时重跑受影响章节 review |
| 卷级/批量体检 | batch-review、volume-review、benchmark、status |
| 平台反馈回流 | save-feedback → feedback-diagnose → 生成诊断 → 更新后续滚动规划/market pack/章节 notes |
| 拆书建模 | learn --sample-dir <dir>,再把结论转成可执行的题材/节奏/章节规划调整 |
gen-prompt 只用于用户明确要求“导出给外部写作模型/Claude Code 的独立提示词”时。普通续写不要用 gen-prompt 替代 prepare → beat → writing_task → review → commit 主流程。
4. 开书流程
开新书时,不要直接开始写第 1 章。先建立市场定位和真相源。
4.1 初始化项目
python -m novel_architect init --project <project_dir> --title <title> --genre <genre> --platform <platform> --premise <premise> --core-hook <core_hook> --protagonist <name>
初始化会生成 project.json、src/、manuscript/、data/、editorial/ 等目录。初始化只提供骨架,不代表开书策划完成。
4.2 生成并保存 market pack
运行 market-open,读取导出的 prompt/input,自行生成严格 JSON,再运行 market-save。
market pack 必须至少包含:
target_platformgenre_lanetarget_readerreader_desirescore_sell_pointsanti_sell_pointstitle_candidatesintro_candidatesfirst_10_chapter_retention_planplatform_notesauthor_constraints
前 10 章计划中每章必须有 chapter、hook、visible_payoff、drop_off_risk。不要写“加强冲突”“提高爽感”这种不可执行空话。
4.3 补强真相源
src/ 是人工确认真相源。开书后检查并补强:
src/blueprint.json:前提、核心钩子、核心冲突、主角目标。src/characters.json:角色身份、欲望、恐惧、弱点、弧线、slug。src/character_voice_bible.json:角色声纹规则、禁用口吻、行动偏好、情绪泄漏点。结构为{"schema_version":1,"characters":{"角色名":{...}}};如果文件还是 skeleton 或角色needs_completion=true,先补全再正式写正文。src/world.json:世界/行业/力量规则,只保留服务冲突和爽点的设定。src/taboos.json:绝对不能碰的桥段、AI 味、题材反模式。src/volumes.json:卷级目标和滚动章纲。不要一次性把整本每章写死。src/genre_config.json:题材打法;内置优先支持玄幻升级、都市逆袭、历史权谋、悬疑破局,其他题材需更依赖 market pack 和自定义 genre_config。
修改真相源后运行:
python -m novel_architect rebuild --project <project_dir>
python -m novel_architect status --project <project_dir>
不要手动修改 data/ 里的账本或派生状态来“修好”剧情;长期语义修正写入 src/ledger_overrides.json 或对应 src/*.json,再重建。
4.4 前十章留存计划
使用 first-10-retention 导出/生成计划;必要时自行细化后用 save-first10-plan 保存。前十章是入口漏斗,规划应具体到每章的 hook、可见收益、弃读风险和不能做什么。
5. 续写下一章标准流程
每章必须走完整闭环。不要直接根据聊天上下文写正文。
5.1 状态检查
先运行:
python -m novel_architect status --project <project_dir>
确定当前完成章数、gate 状态、索引健康和待处理风险。不要依赖聊天记忆判断下一章号。
5.2 PREPARE
python -m novel_architect prepare --project <project_dir> --query "<本章高层创作要求>"
产物:editorial/chXXXX/writing_task.json。这是写作阶段的自包含任务包,必须读取。它包含 writer_brief、narrative_context、叙事槽、商业留存字段、角色声纹、读者承诺、输出格式和硬规则。
第 4 章以后,prepare 会检查前三章专项审校。正常新书不得使用 --force-after-first3-fail;该参数只用于旧项目迁移或调试。
5.3 Beat competition
第 1-10 章必须执行 beat competition;第 10 章以后默认也建议执行,除非用户明确要求快速草稿。
python -m novel_architect beat-candidates --project <project_dir> --chapter <n>
读取导出的 prompt,生成或选择一个策略最强的方案,保存并应用:
python -m novel_architect beat-select --project <project_dir> --chapter <n> --file <selection.json>
python -m novel_architect apply-beat-selection --project <project_dir> --chapter <n>
选择标准:可见爽点最清楚、敌人损失最具体、角色按钮最鲜明、章尾追更理由最强、弃读风险最低。应用后重新读取最新 writing_task.json。
5.4 WRITE
根据 writing_task.json 写正文并保存到 manuscript/第XXX章-标题.md。标题必须有点击感,不要只保存为 第XXX章.md。
正文必须严格遵守 writing_task.output_format.field_template:
# 第XXX章-标题## 章节信息## 本章大纲## 正文## 记忆回写
关键要求:
- 正文不少于 2000 字,目标 2000-2500 字。
- 使用中文弯引号
“”。 - 第一段承接上章钩子;第 1 章则快速建立压迫、主角欲望和可见机会。
- 每章必须有普通读者 5 秒内能复述的可见爽点。
- 专业流程/术语必须转译成钱、权、脸面、身份、关系、秘密、战力、资源或安全得失。
- 角色对白必须体现
character_voice_bible,禁止所有人同一种战略总结口吻。 - 如制造新的读者期待,必须在记忆回写中填写新增读者承诺;如兑现期待,必须填写兑现 ID 和可见证据。
5.5 REVIEW 第一轮
python -m novel_architect review --project <project_dir> --chapter <n>
如果返回非 0,读取 editorial/chXXXX/gate.json 和 repair.json,不要跳过。
5.6 模型信号评估
导出信号 prompt:
python -m novel_architect export-signal-prompts --project <project_dir> --chapter <n>
前 10 章、卷首、卷末、高潮、转折、发布前章节:12 个 signal 都要生成并保存 model signal。
稳定期最低也要覆盖:
reader_pullvisible_payoffblockbustertitle_hookcharacter_voicedomain_translationstory_logicstate_guard
保存每个模型信号:
python -m novel_architect save-model-signal --project <project_dir> --chapter <n> --signal <signal_type> --file <signal.json>
模型信号必须输出严格 JSON。若评分低于 7,不得写 pass。模型 pass 不能覆盖 heuristic warn/fail;最终采用 strictest merge。
5.7 REVIEW 第二轮与修稿循环
保存 model signals 后重新运行:
python -m novel_architect review --project <project_dir> --chapter <n>
只有 gate.json 中 passed=true 才能提交。若 passed=false,读取 repair.json,改正文后重复 review/model-signal/review,直到通过或到达有效停止点。
5.8 COMMIT
python -m novel_architect commit --project <project_dir> --chapter <n>
只在 gate 通过后执行。commit 会推进状态、重建索引、更新账本、处理 reader promise 创建/兑现/逾期。不要跳章提交;不要手动改 gate.json 或 signals 来强行通过。
6. 前三章专项门禁
新书第 1-3 章是试生产阶段。第 1、2、3 章分别完成 prepare → beat → write → review → model signals → review → commit 后,必须执行:
python -m novel_architect first3-review --project <project_dir>
读取 data/reviews/first3_review_prompt.md 和 first3_review_input.json,生成 verdict JSON,再保存:
python -m novel_architect save-first3-review --project <project_dir> --file <first3_verdict.json>
允许继续第 4 章必须同时满足:
verdict == "continue"bulk_continue_allowed == true- 原样包含当前
review_input_hash - 8 个评分全部存在:
title_intro_click_score、first_chapter_hook_score、protagonist_desire_score、conflict_speed_score、first_payoff_speed_score、enemy_or_pressure_score、setting_clarity_score、continuation_score - 所有评分都是 1-10 数字,且全部
>= 7
如果结果是 rewrite_opening,先修前三章;如果是 redo_market_pack,先重做 market pack、书名/简介/前十章计划。不要用 --force-after-first3-fail 正常推进新书。
前三章正文、market pack 或入口输入变化后,旧 first3_review 会因 hash 过期而阻断第 4 章以后生产,必须重新运行 first3-review 并保存新 verdict。
7. 门禁与 12 个信号
review 生成 12 个信号、verdict、gate、repair。每次 review 都重新运行 heuristic signal;新鲜 model signal 保存为 .model.json 变体参与 strictest merge;final signal 取更严格结果。
| 信号 | 检测内容 | 失败处理 |
|---|---|---|
anti_ai | AI 套话、抽象密度、空段落、直引号 | hard,必须修 |
story_logic | POV、信息来源、力量/商业逻辑、信息倾泻 | hard,必须修 |
state_guard | 钩子、代价、敌人线、必需元素、禁区、逾期 reader promise | hard/quality,必须修 |
emotion | 情绪弧线、关系动态、后效 | quality,失败不可提交 |
blockbuster | 压迫/反制/兑现/代价四段爽点弧线 | quality,失败不可提交 |
visible_payoff | 钱/权/脸面/身份/关系/秘密/能力/资源/安全得失 | quality,失败不可提交 |
reader_pull | 开场钩子、中段悬念、章尾追更、成瘾循环 | quality,失败不可提交 |
title_hook | 章节标题点击感、标题/文件名一致性、章末钩子 | quality,失败不可提交 |
character_voice | 角色声纹差异、禁用口吻、对白归属 | quality,失败不可提交 |
domain_translation | 专业设定是否转译成普通读者可见得失 | quality,失败不可提交 |
novelty | 结构/章法/结尾模式重复 | market,失败也会阻塞 |
continuity | 钩子、代价、敌人线程承接 | market,失败也会阻塞 |
简单规则:只看 gate.passed。passed=true 才能 commit;passed=false 就修。
8. 长线维护
- 每章:完整执行
prepare → beat → write → review → model signals → review → repair → commit。 - 每 3 章:运行
status,检查 active/overdue reader promises、gate 变化、索引健康。 - 每 5 章:运行
batch-review --start <a> --end <b>,检查连续弱项和重复模式。 - 每 10 章或关键节点:运行
volume-review、benchmark,滚动更新volumes.json和后续 5-10 章规划。 - 每卷结束:检查卷目标、敌人损失、读者承诺兑现、下一卷钩子。
- 发布后:用
save-feedback记录数据和评论,用feedback-diagnose转成下一轮实验建议。样本很小时不要过拟合单条评论。
9. 真相源与目录规则
项目结构:
projects/<书名>/
├── project.json
├── src/ # 真相源,人工确认设定和规划
├── manuscript/ # 正文章节 .md
├── data/ # 派生状态,可重建,不手动改
├── editorial/ # 每章 brief / writing_task / signals / gate / repair
└── exports/
重要规则:
src/与manuscript/是 truth input。data/、editorial/是运行时/派生产物;不要手动改它们来绕过门禁。- 改设定、改卷纲、改角色时修改
src/*.json,再rebuild。 - 改正文时修改
manuscript/第XXX章-标题.md,再review。 - 长期人工账本修正写入
src/ledger_overrides.json,再rebuild。
10. 禁止事项
不要做以下事情:
- 不要把 CLI 工作转交给用户手动执行。
- 不要没有
prepare就直接写正式章节。 - 不要跳过 beat competition 写前 10 章。
- 不要
gate.passed=false还 commit 或继续下一章。 - 不要为正常新书使用
--force-after-first3-fail。 - 不要只保存 heuristic review 就认为商业质量足够;关键章节必须做 model signal。
- 不要手动改
gate.json、signals 或data/ledgers来制造通过。 - 不要让章节没有标题或只叫
第XXX章.md。 - 不要让记忆回写长期填“无”,尤其是 reader promise。
- 不要把专业流程写成会议纪要、授权记录、复核清单,而不转译成读者可见得失。
- 不要承诺逐字模仿某位作者或某本现成作品的语言风格。
11. 需要读取的参考文件
按需读取,避免把全部资料一次性塞入上下文。
| 文件 | 何时读取 |
|---|---|
references/pipeline-spec.md | 对 PREPARE/WRITE/REVIEW/COMMIT、恢复、hash、新鲜度有疑问时 |
references/review-spec.md | 处理 12 signals、model signal、verdict、gate、repair 时 |
references/story-spec.md | 不确定章节格式、章节模式、节奏变体、记忆回写字段时 |
references/state-spec.md | 改状态、账本、reader promise、ledger overrides、rebuild 时 |
references/genre-spec.md | 题材打法、genre_config、题材 marker、内置 playbook 时 |
references/learning-spec.md | 拆书建模和样本结构学习时 |
references/longrun-spec.md | batch/volume/benchmark 和长篇稳定性检查时 |
如果实现行为、README 和 references 冲突,以当前 Python CLI 行为为准,并在维护任务中同步文档。
12. 常用命令清单
python -m novel_architect --help
python -m novel_architect init --project <dir> --title <title> --genre <genre> [--platform <platform>] [--premise <text>] [--core-hook <text>] [--protagonist <name>]
python -m novel_architect market-open --project <dir> [--platform <platform>] [--genre-hint <genre>] [--seed-idea <idea>] [--author-intent <intent>] [--constraint <text>] [--stdout]
python -m novel_architect market-save --project <dir> --file <market_pack.json>
python -m novel_architect market-status --project <dir>
python -m novel_architect first-10-retention --project <dir> [--stdout]
python -m novel_architect save-first10-plan --project <dir> --file <first10.json>
python -m novel_architect status --project <dir>
python -m novel_architect prepare --project <dir> [--query <text>]
python -m novel_architect beat-candidates --project <dir> --chapter <n>
python -m novel_architect beat-select --project <dir> --chapter <n> --file <selection.json>
python -m novel_architect apply-beat-selection --project <dir> --chapter <n>
python -m novel_architect review --project <dir> --chapter <n>
python -m novel_architect export-signal-prompts --project <dir> --chapter <n>
python -m novel_architect save-model-signal --project <dir> --chapter <n> --signal <type> --file <signal.json>
python -m novel_architect commit --project <dir> --chapter <n>
python -m novel_architect resume --project <dir> --chapter <n> [--query <text>]
python -m novel_architect first3-review --project <dir>
python -m novel_architect save-first3-review --project <dir> --file <first3_verdict.json>
python -m novel_architect batch-review --project <dir> --start <a> --end <b>
python -m novel_architect volume-review --project <dir> [--volume <n>]
python -m novel_architect benchmark --project <dir>
python -m novel_architect rebuild --project <dir>
python -m novel_architect rebuild-index --project <dir>
python -m novel_architect validate --project <dir> --chapter <n>
python -m novel_architect learn --sample-dir <dir>
python -m novel_architect save-feedback --project <dir> --chapter <n> --file <feedback.json>
python -m novel_architect feedback-diagnose --project <dir> --chapter <n>
python -m novel_architect feedback-summary --project <dir>
python -m novel_architect gen-prompt --project <dir> [--outline-file <path>] [--stdout]