作者在干净环境(含 Windows 中文用户名路径)一条命令装出可用的工作目录,建起第一本书;写章八阶段的每一步都有宿主可调的 CLI 通道,finalize→next 主循环可全程经 CLI 跑通。
对应实施计划 0.3 §2「M5 安装器与多本书」,上游依据:multi-agent-adaptation-spec v3.5 §8(init/update)、story-repo-spec 0.9 §2.0(工作目录层)、M1-M4 review follow-up F1(宿主 CLI 缝清单)。
src/host-shells/generate.js + scripts/build-host-shells.mjs --check 已进 CI)。边界收口任务已归档,292 测试绿。src/installer/index.js 是占位空文件。persistDraftOutline / persistCreateBook / persistVolumeReview / persistRepair(src/state-machine/persist.js)、assembleReviewInput / runReviews(src/review/index.js)、finalizeChapter(src/finalize/index.js)只能进程内调用——真宿主(AI 会话)无法驱动写章后半段,M4 真模型 smoke 因此推迟 beta(registry smoke_status: deferred-beta)。bin/webnovel-writer.js 写死 repoPath = process.cwd()(M1 design 注释「M3 后续处理」,M3 未做)。装出的工作目录里跑 CLI 会把 .cache 建在工作目录而非书仓库,M5 必须先解决。books.jsonl 读侧 + 扫描重建自愈已在 M4(src/session/index.js,含 writeBooksRegistry 自愈回写);写侧(建书登记/换书)归 M5(源码注释明示)。AGENTS.md 模板已有(v7/templates/AGENTS.md,含 <!-- WEBNOVEL:START/END --> 标记块);书仓库指路 AGENTS.md(spec §2.1「建书时自动生成」)尚无实现——persistCreateBook 不写它。{ <host>: { 'skills/webnovel-writer/SKILL.md', 'agents/<角色>.md|.toml' } },无 hook 接线;claude-code 的 SessionStart hook 注入(multi-agent spec §5.5)需要 M5 在装出的 .claude/ 里接线。webnovel-writer <命令> 调用形式;spec §5.9 要求命令引用语法做成平台上下文变量。src/runtime/node-version.js,bin 已接。js-yaml(spec §2.2),.webnovel/ 自带脚本时需一并解决其可用性。.github/workflows/v7-ci.yml):双平台 × 双 Node 版本,node --test + drift check + --version 冒烟;无安装器链路用例。init / update(multi-agent spec §8)init:环境检测(Node 门槛复用现有函数;按 registry 顺序探测已装 agent CLI)→ 生成工作目录布局:
AGENTS.md(公约数层,标记块管理;块外用户内容保留).webnovel/(Node 脚本 + 角色定义 + 模板哈希清单 + books.jsonl 占位)——工作目录自包含,脚本离线可跑.claude/、.codex/ 等,由 M4 生成器按条件块编译;claude-code 含 SessionStart hook 接线)update:模板哈希追踪——哈希未变的文件直接更新;用户改过的提示并跳过(不静默覆盖),非交互默认跳过并列清单,--force 显式覆盖;AGENTS.md 只更新标记块内内容init 幂等(等价于 update 语义或明确提示).webnovel/ 内脚本;SKILL.md 写章流程同步接 F1 通道(review-input→两审→save-review→finalize,「继续」吃 next --json DTO)books.jsonl 写侧:建书登记(字段含 书名/目录/当前/最后打开)、换书(改「当前」标记)、书单列出;与 M4 读侧/自愈共用一个模块,不双写格式book.yaml → 书仓库直启(兼容开发/测试);cwd 含 .webnovel/ → 按 books.jsonl 当前书解析 repoPath,无当前书给人话指引;两者都不是 → 人话提示「请从工作目录启动」。init 等工作目录层命令不受此约束AGENTS.md:并入建书落盘(persistCreateBook),内容按 spec §2.1(误启动/单独 clone 时指回工作目录)assembleSessionContext,两宿主路径注入逐字一致)next --json:输出完整状态机 DTO({ok, gitHealth, 序, state, needsAI, message, dto});不带 flag 保留现有人读 messagereview-input <章号>:组装 ReviewInput 并落盘供宿主读取save-review <章号> --file=<两审json>:读文件 → schema 校验 → 合并 → 落审稿单与评审报告(复用 runReviews 的校验/合并/落盘路径)persist-outline / persist-book / persist-volume-review / persist-repair:AI 态产物回流,--file=<json> 进;persist-book 同时完成 books.jsonl 登记 + 指路 AGENTS.md(B1/B3)finalize <章号> --payload=<定稿包json路径>:调 finalizeChapter,定稿后刷新缓存--file/--payload 文件路径,不走 stdin(Windows 中文管道编码雷区);出错人话报错、退出码非零、永不带栈崩溃finalize→next 端到端经 CLI(子进程 spawn bin,非进程内调用)跑通:细纲→草稿→机检→审稿→定稿→next 报下一章init 装出的布局逐项存在且内容正确:AGENTS.md(标记块)、.webnovel/(脚本可 node 直跑、books.jsonl、哈希清单)、检测到的平台壳;报告输出含支持等级与下一步指引update:未改文件被更新;手改文件被跳过且列出;AGENTS.md 块外内容保留;--force 可覆盖finalize→next 端到端经 CLI 子进程跑通,next 报「起草第 N+1 章」不重抄deferred-beta),M5 只负责让它可行.webnovel/)并在报告指引 --hosts 补装——忠于 spec「按检测生成」,不掩盖探测失败