用途:本技能用于从零开始的“分支书”项目,即章节(段落)之间由 frontmatter 的 choices 连接,章节与 choices 即故事的唯一事实来源。项目根目录需有 story.md;新建项目先用 story-init 技能。若把已有线性书改成互动版,属于 adaptation 技能,改编项目建立后可在此撰写与修订章节。
主要能力:规划选择图(结构、分支点、汇合点、结局);撰写或修改 choices;撰写分支上、汇合点或结局处的章节;修订分支书并处理 unreachable-chapter、state-differs-by-path 等发现;用 story build . --format twee 或 --format ink 构建为可玩故事,输出到 dist/。
用法要点:choices 中 text 为链接文字,to 为章节 id;编号最小的章节为起点;一旦某章有 choices,链接就只由 choices 决定,无 choices 即结局,仅指向一处需写单个 choice(text: Continue)。规划时先用 story add chapter 建立大纲章节并手动添加 choices,再用 story links . 检查可达性,用 story build 检验是否有指向缺失章节的 choice。撰写每个段落前运行 story context chapter-NN --path .,分支段落只能使用通向它的路径上的内容;汇合点只能写所有入径都为真的内容,随路径变化的细节不要写入汇合点正文,可由 Twine 或 ink 中的 flag 承载。修订时检查可达性、结局、循环与路径连续性,运行 story continuity .;重编号用 story move chapter、story split、story merge,仅对无 choices 章节使用 split/merge。构建时若无 ifid:,会从 story id 推导并警告,分享前应补上。ink 构建会转义正文中的 ink 语法,flag 与条件文本不应写在章节里,而应在定稿后手动写入 adaptations/interactive/{story-id}.ink 的工作副本。
维护:增删、重编号或重写章节及 choices 后运行 story reindex .、story wordcount . --write、story check .。若未安装 story,可用捆绑的 node ../story-maintenance/scripts/story.js 加同样参数(用绝对路径,从本来运行 story 的目录执行)。
限制:不得虚构用户未同意的分支、结局或选择;删除章节或场景须先快照并 --dry-run 列出将删除内容,再获用户明确批准;不得写只在一条入径为真的汇合点正文;不得用汇合点正文并不为真的对象状态条目来消除 state-differs-by-path;不要把 ink 逻辑写入章节正文;Twine 宏需在作者选定故事格式(Harlowe、SugarCube、Chapbook)后才写入章节。story add 不会写 choices,需手动添加。