🎯 用户入口(User Entry): /webnovel-init → /webnovel-plan → /webnovel-write
/webnovel-init(初始化)
Read
genre-tropes.md
genre-profiles.md
交互收集 7 步
题材/角色/金手指
世界观/创意约束
Write
state.json
设定集/*.md
总纲.md
idea_bank.json
/webnovel-plan(规划)
Read
state.json(genre)
总纲.md
设定集/*.md
summaries/(跨卷)
卷纲 → 时间线
→ 拆章纲
节拍表/CBN/CPNs/CEN
Write
节拍表.md
时间线.md
详细大纲.md
设定集(增量)
/webnovel-write(写章)
Step 1→6
上下文→起草→审查
→润色→提交→备份
Write
正文/第NNNN章.md
commit.json
→ 5路投影
📚 Layer 1: 知识层(Knowledge)— CSV 表 + 参考文档
题材与调性推理.csv
路由表(Route)
8 行流派
裁决规则.csv
裁决表(Reasoning)
7 题材
命名规则.csv
基础表(Base)
人设与关系.csv
基础表(Base)
写作技法.csv
基础表(Base)
场景写法.csv
基础表(Base)
金手指与设定.csv
基础表(Base)
桥段套路.csv
动态表(Dynamic)
爽点与节奏.csv
动态表(Dynamic)
CSV_CONFIG
per-table 注册
search_cols / output_cols
poison_col / role
🧠 Layer 2: 裁决层(Reasoning)— story_system_engine.py
_route()
Read: 题材与调性推理.csv
匹配题材 → 推荐表
_collect_tables()
Read: 基础表 + 动态表
BM25 检索
_load_reasoning()
Read: 裁决规则.csv
别名匹配(修仙→东方仙侠)
fallback 到原始 genre
_apply_reasoning()
冲突裁决排序
毒点加权
反模式注入
📜 Layer 3: 合同层(Contract)— .story-system/
写前合同(story-system --persist)
MASTER_SETTING
Write: 题材/调性/禁忌
VOLUME_BRIEF
Write: 卷目标/节奏
CHAPTER_BRIEF
Write: reasoning 裁决
chapter_focus(参考)
REVIEW_CONTRACT
Write: 必须节点/禁区
写后真源(chapter-commit)
CHAPTER_COMMIT
Write: accepted / rejected
events + deltas + summary
anti_patterns.json
Write: 题材毒点集合
🔍 Layer 4: 上下文层(Context)— 写前组装
context-agent(Step 1 子代理)
load-context
Read: contracts
summaries / protagonist
rules / loops / memory_pack
genre_profile_excerpt
Read 章纲原文
大纲/第X卷-详细大纲.md
(最高权重)
按需深查
query-entity
query-rules
get-timeline
get-reader-signals
输出: 写作任务书
五段格式
消费 reasoning 裁决
内化 Anti-AI 铁律
辅助查询
context_manager
纯 JSON 组装器
Read: contracts / state
runtime / guidance
knowledge_query
时序查询
entity_state_at_chapter
relationships_at_chapter
reference_search
CSV BM25 检索
per-table search_cols
⚙️ Layer 5: 提交层(Commit)— 写后事实入口
data-agent(Step 5.1 子代理)
Read 正文
正文/第NNNN章.md
查询实体
get-core-entities
recent-appearances
提取事实
Write: extraction_result
fulfillment_result
disambiguation_result
摘要生成
summary_text
100-150字 + 钩子
chapter-commit CLI(Step 5.2)
Read 4份 artifacts
tmp/*.json
判定 accepted / rejected
blocking_count = 0
missed_nodes = 空
pending = 空
Write commit.json
→ 触发投影链
💿 Layer 6: 投影层(Projection)— EventProjectionRouter → 5 Writers
state_projection
Write: state.json
entity_state
chapter_status
(committed / rejected)
index_projection
Write: index.db
entity_deltas
relationships
summary_projection
Write: summaries/
chNNNN.md
剧情摘要
memory_projection
Write: memory_
scratchpad.json
长期记忆事实
vector_projection
Write: vector_db
event → text → embed
delta → text → embed