让 v7 第一次"能被 AI 宿主端到端跑起来":落地状态机单入口 SKILL.md、两审角色单源、宿主壳生成器,把 M1-M3 已备好的脚本面与 DTO 缝接上 AI 协作层。AI 永远只吃 DTO、只吐结构化输出,永不接触文件结构(实施计划 §1.5 核心原则 1)。
用户决策(2026-06-27):
v7/src/{storage,cache,commands,state-machine,prep,mechanical-check,finalize} 已成型;无 roles/、skills/、references/、adapters/(全绿地);v7/src/installer/ 是占位(安装器属 M5)。finalize 定稿原子 commit、state-machine/dto.js(序0/1/4/6 DTO);两审编排在 v7 是绿地,ReviewInput 无现成缝。setting/timeline/continuity/character/logic/requirement/leak/evidence/unregistered_threadstructure/pacing/commercial/motivationcritical/high/medium/low;critical 自动 blocking=true;unregistered_thread(D3)恒 blocking=falsepython webnovel.py ... state get-entity 调 v6 runtime + 直接读文件——违反 v7 铁律。v7 两审角色是重构,不是拷贝。genre-hook-payoff-library.md craft 内容架构无关可留,但带 v6 skill 名"webnovel-write Step 1 内置合同"需清。工作目录/.webnovel/books.jsonl(机器域,作者不手编);有 hook 宿主自动注入,无 hook 宿主由状态机入口读同一文件行为等价;书单可由扫描含 book.yaml 子目录重建(spec §0/§2.0)。assembleReviewInput(ctx, {chapterNum, draftPath}):从 M1 读接口 + M2 备料 + 细纲组装两审共享的 ReviewInput DTO(AI 不见文件路径)。runReviews(ctx, reviewInput, {mode}):mode='complete'(独立 subagent,各自新鲜上下文)/'degraded'(单上下文顺序);输出必须含诚实模式声明(降级时"审稿隔离度低于完整两审模式")。ReviewIssue(severity/category/location/description/evidence/fix_hint/blocking)+ 阻断规则(critical→blocking;unregistered_thread→恒非阻断;category 取值受两审分域约束)。工作区/审稿.md(草稿 + 两审意见 + 待确认新专名 + 章摘要)+ 工作区/评审报告/ 原始输出。unregistered_thread,恒非阻断,只出候选)。state-machine/dto.js:为 AI 态(序0/1/4/6)补产物回流落盘函数——建书(book.yaml+总纲+卷纲)、修复确认(写回)、卷复盘(卷摘要+下卷卷纲+伏笔机会)、细纲(工作区/细纲.md)。CharacterContext DTO 组装器(供两审/写章消费,无路径)。ChapterBrief 不另造:M2 备料产物 工作区/本章写作材料.md 即 chapter brief,再建独立 DTO 是冗余(无消费者)。readBooksRegistry(workdir):读 .webnovel/books.jsonl;损坏/缺失 → 扫描含 book.yaml 子目录重建书单。assembleSessionContext(workdir):组装"当前在写哪本 / 共几本 / 全书近况入口"注入文本。roles/事实审查.md + roles/编辑审.md:单源任务书,吃 ReviewInput DTO(不调脚本、不读文件),输出 §8 schema;维度对齐 spec(事实审查含 v7 新增四项,编辑审四维)。skills/<状态机入口>/SKILL.md:状态机单入口,平台条件块(有无 subagent/hook);降级路径编译进生成物(无 subagent 平台生成顺序执行版 + 兼容声明)。scripts/build-host-shells(Node ≥22):读 roles/+skills/+adapters/registry.json → 各平台壳;--check = drift check(同输入必同输出),进 CI。adapters/registry.json(三级分级)+ package validator(registry schema / 逐宿主 support.md 存在 / description ≤ Codex 8k 预算 / 生成物无本机绝对路径)。AGENTS.md 公约数层(<!-- WEBNOVEL:START/END --> 标记块)+ adapters/{claude-code,codex}/support.md(官方链接+核验日期+支持情况+降级策略+smoke 命令)。references/。references/taxonomy/genre-index.csv + references/csv/题材与调性推理.csv(CSV 权威);v6 重复的 references/genre-profiles.md、老 skills/.../genre-tropes.md、anti-trope-*.md 不作为并行表迁入——独有内容折叠进 CSV,否则丢弃。references/csv/爽点与节奏.csv(CSV 权威);老 markdown(genre-hook-payoff-library.md、pacing-control.md)重复部分不并行迁。references/reading-power-taxonomy.md(唯一源)。设定集/→定稿/设定/、正文/→定稿/正文/、.webnovel/state.json 等)python webnovel.py/CSV 的 适用技能、大模型指令、跨 CSV 推荐检索表 等 v6 运行时列)references/迁移报告.md:先列真源选定表(每个知识体:选了谁/弃了谁/为什么),再逐文件记"改了什么 + 为什么"。node --test 绿;drift check + package validator + 两审编排 + DTO/落盘 + SessionStart 全有测试。assembleReviewInput 产 DTO → runReviews 完整/降级双模式,降级模式输出含兼容声明;审稿单落盘 工作区/审稿.md + 评审报告/(测试覆盖)。critical→blocking=true;unregistered_thread→恒 blocking=false;事实审查/编辑审 category 越界被拒(测试覆盖)。books.jsonl 正常读注入;损坏/缺失时扫描重建;无 hook 等价路径产出同一注入文本(测试覆盖)。build-host-shells --target all 产三平台壳;--check 同输入同输出(CI 必跑);validator 校验 registry/support.md/description 长度/无绝对路径(测试覆盖)。roles/*.md 不含任何 python/脚本调用/文件路径读取,只声明吃 ReviewInput DTO + 输出 §8 schema(评审 + grep 断言)。适用技能/大模型指令 列)/"自由评文笔"反模式;迁移报告.md 含真源选定表 + 逐文件变更(评审 + grep 断言)。init/update、books.jsonl 写入/换书对话、模板哈希追踪(全属 M5;M4 只做 books.jsonl 读侧 + 扫描重建)。/migrate(M7)。