diff --git a/docs/book-play-options.md b/docs/book-play-options.md new file mode 100644 index 0000000..3cbdeac --- /dev/null +++ b/docs/book-play-options.md @@ -0,0 +1,64 @@ +# 本局游玩选项 + +> 状态:已定,未实现。 +> 记录:2026-10-11。 + +创作收口后点「保存定稿」,保存成功再弹出本局选项。选项跟书走,写在 `books/{id}.json`,不跟模型档案,也不进全局 `settings.json`。 + +换模型是临时的,这本书的楼层是固定的。选项若跟模型走,切模型时上下文会突然展开或收起。全局一个开关则短篇试玩和长书只能共用一套策略。 + +## 何时出现 + +```text +创作收口 → 点「保存定稿」→ 定稿写入成功 → 弹出「本局游玩选项」 +``` + +保存失败不弹。关掉弹窗等于沿用这本书上已有的值;新书没有写过时,各项用下表默认。 + +同一张面板以后可以从这本书再打开,用来改已保存的选项。改动从下一轮模型调用生效,不要求重存一份定稿。 + +## 存哪一层 + +| 东西 | 落点 | +|------|------| +| 开关、间隔、以后的卫星开关 | 这本书(`books/{id}.json`) | +| 已经写好的总结段落 | 这条游玩线的历史里,随 run 存档 | +| 当前选用的模型 | 不读、不写这项 | + +一本书可以有多条游玩线。开关是书级的,各条线共用;每条线自己的总结段落不互相覆盖。 + +关掉总结后,已经写过的段落留在书里,只是不再送进模型。再次打开时从上次停下的楼层接着写,不把旧总结再总结一遍。 + +## 第一项:历史滚动总结 + +游玩时,每隔 N 层楼,把更早的原文楼层换成一段新总结。已有总结原样保留,程序不得把它们再送去改写。 + +| 字段 | 默认 | 含义 | +|------|------|------| +| `historySummary.enabled` | `false` | 新书关闭。打开后才按间隔写总结并送进上下文 | +| `historySummary.everyFloors` | `6` | 每隔多少层替换更早的原文。可调范围 4~8;一回合往往是一整场,不宜每层都总结 | +| `historySummary.keepRawFloors` | `4` | 始终保留的最近原文层数。可调范围 2~4 | + +打开后,送进模型的历史段顺序是: + +```text +稳定设计产物 +→ 已冻结的总结段落(旧段不改写) +→ 最近 keepRawFloors 层原文 +→ 变量与本轮用户输入 +``` + +关闭时维持现在的做法:`对话.历史` 按 projection `summary` 保留最近约 20 段原文,不调用总结。 + +这和 `docs/briefs/dictate-only-creation.md` §10.4 的「写大总结 / 清空旧楼层」不是同一件事。那边是游玩中手动两步,且清空会删楼层。本项只替换模型看到的更早楼层,书上的原文楼层仍留着。 + +## 以后加在同一张弹窗里 + +新的本局开关加一行,仍然只写这本书。不为此另开页面,也不按模型分叉。 + +当前预留、尚未定义行为的例子: + +- 是否启用生图 worker 及其他卫星 worker +- 壳生图(背景、立绘):以后再说,见 `docs/briefs/shell-image-todo.md` + +卫星项未实现前,弹窗只显示「历史滚动总结」。