叙事与记忆
这一页讲故事怎么写出来、写完怎么给你建议,以及长篇游戏如何记住前面发生过的事。其中“叙事”和“对话叙事”是两种互相替代的讲故事方式,一局游戏只用其中一个。
| 插件 | 一句话 |
|---|---|
叙事(narrator) | 小说式叙事,每轮写一段场景。 |
对话叙事(chat-mode-narrator) | 以人物对白为主的叙事,适合聊天式玩法。 |
行动建议(guide) | 每段故事后回顾前情,点明眼下的抉择,给出可选的行动。 |
回复变体(branch-reply) | 给同一轮故事多写几种说法,由你挑一个。 |
故事记忆(memory) | 记住剧情、场景、人物关系和主角状态。 |
历史压缩(history-compaction) | 把很早的对话缩成摘要,让长篇游戏不超出模型的长度限制。 |
先选一种讲故事的方式
narrator 和 chat-mode-narrator 做的是同一件事:根据你的行动写出下一段故事。它们不能同时启用,选一个就行。
叙事(narrator) | 对话叙事(chat-mode-narrator) | |
|---|---|---|
| 读起来像 | 一段 200 到 400 字的小说正文 | 一场对话,人物轮流开口 |
| 适合 | 探索、调查、冒险等长篇故事 | 恋爱、日常、角色扮演等重视聊天的玩法 |
| 对应玩法包 | 传统故事模式、低成本 | 对话模式 |
| 建议搭配 | 无 | 场景舞台(scene-stage)和行动建议(guide) |
怎么选:
- 不确定时,沿用世界推荐的玩法包。世界已经替你选好了。
- 想读故事,重视描写和推理,选“叙事”。
- 想和角色一来一往地说话,并看到立绘和舞台,选“对话叙事”。
- 想省模型费用,选“低成本”玩法包。它用“叙事”,不含行动建议这类额外的模型调用。
NOTE
两种叙事插件都会在地点变化时填写 cues.scene,氛围变化时填写 cues.mood,按上下文的情绪列表填写;未变化的提示省略。查询角色无匹配时,模型会收到未找到错误及最接近的名字,可改名重查或保留未知事实。工具结果的 staged 提示表示回合结束时才提交,仍可能被拒绝;叙事无需等待、复述或为同一改动重复调用工具。
两种叙事插件都可以单独使用。“场景舞台”和“行动建议”分别补充舞台画面和行动选项,缺少它们仍能讲故事。
启用行囊时,两种叙事都可用 check-bag 查询携带物品,用 change-inventory 在写正文前结算购买、交易、赠送或消耗,先付款。工具拒绝时,交易不发生。没有行囊时不提供这些工具,叙事照常进行。
叙事(narrator)
根据你的最新行动继续讲故事,描写场景、人物反应和结果。每轮写一段,通常在悬念、提问或一个未完成的动作处收尾。它只写正文,不列选项,行动建议交给“行动建议”。
你会看到什么
聊天区里的故事正文。
什么时候启用
核心插件(kind: core),是默认的讲故事方式。“传统故事模式”和“低成本”玩法包都包含它。
可以调什么
| 设置 | 作用 | 默认 |
|---|---|---|
| 视角 | 由谁讲述故事、旁白如何称呼你的角色:玩家角色的第一人称(我)、第二人称(你)、第三人称(角色名),全知旁白,或主持人(DM)对玩家说话。人物对白保持各自的人称。 | 玩家角色·第二人称(你) |
世界可以在 pluginSettings 里给这个设置定一个默认值,你自己的设置优先。
注意
正文边写边显示,写完后检查旁白的人称。人称不对时,会让模型改写,最多多花两次模型调用:已经显示的草稿会被清掉,换成改写的文字,最后显示的是检查通过的正文。全知旁白不能用“我”或“你”称呼人物;主持人视角不检查人称。
故事按段落写成:每段是旁白、对白或动作,对白和动作写明是谁。舞台据此给每段配上说话人的名牌。名字对不上任何角色时,名牌照写这个名字。
你扮演的角色
叙事给模型的角色卡是你当前扮演的角色,人称检查也以它为准(全知旁白和主持人视角不围绕玩家角色)。一局里有多个玩家角色时(你同时扮演几个角色),其他玩家角色和配角一起列在角色资料里,带 [player] 标签。只有一个玩家角色时和以前完全一样。座位绑定两个或更多角色时,输入框上方会显示当前角色选择;舞台模式在自由输入上方显示。当前角色怎么决定、怎么切换,见座位。
对话叙事(chat-mode-narrator)
让故事更像角色对话。每一段都标明是谁在说话,舞台上的名牌和“正在说话”标记跟着说话人走。
你会看到什么
聊天区里按说话人分段的故事正文。立绘和舞台由“场景舞台”显示,见舞台。
什么时候启用
可选插件。“对话模式”玩法包包含它。
可以调什么
| 设置 | 作用 | 默认 |
|---|---|---|
| 视角 | 同“叙事”。 | 玩家角色·第二人称(你) |
| 对话占比 | 回复中人物对白和内心反应的大致占比,范围 30 到 90。 | 70 |
| 回复长度 | 短、中、长。 | 中 |
世界可以预置这些设置。例如“遥风学园・春日薄荷”把对话占比设为 80,回复长度设为短。
搭配
- 建议搭配“场景舞台”提供在场角色,搭配“行动建议”提供场景提示。没有它们时照常讲故事,退化为不带舞台的纯对白叙事。
- 不能和“叙事”同时启用。
你扮演的角色
和“叙事”一样:角色卡和人称检查跟随你当前扮演的角色,其他玩家角色带 [player] 标签列在角色资料里。见叙事 · 你扮演的角色。
行动建议(guide)
每段故事之后,回顾相关前情,说明你眼下要回应的抉择,再给出 3 到 4 句可以直接用的行动。
你会看到什么
- 传统故事模式:聊天区里故事下方多出一个建议块,有前情摘要、当前抉择和几个行动按钮。
- 对话模式:行动同时出现在舞台的选项栏里。
点一个行动,它只会填进底部输入框,不会直接发送。你可以改写,也可以写自己的行动,再自己发送。
什么时候启用
可选插件。“传统故事模式”和“对话模式”玩法包包含它,“低成本”不含。每轮多一次模型调用,用的是“插件”用途的模型,见连接模型。
搭配
需要一个讲故事的插件(“叙事”或“对话叙事”)。
回复变体(branch-reply)
同一轮故事可以重新生成,得到几种不同的说法,你选一个采用。被采用的版本,会在之后的故事里代替这一轮原来的写法。
你会看到什么
聊天区里故事下方出现“回复候选”块。每个候选是一个选项,点击即可采用,当前回合也可以按数字键。每个候选下面还有“草稿”和“发送”两个次要动作,块里有“重生成”,可以再要一批新说法。
重新生成用的是“快速”用途的模型。没有可用的模型时,只保留原文,不会凑数。
什么时候启用
可选插件。“对话模式”玩法包包含它;“Emberback Relay”“提灯古冢・初次远征”等世界把它列为推荐或必选。
搭配
不依赖某个具体的讲故事插件,用“叙事”或“对话叙事”都可以。
故事记忆(memory)
每轮结束后,自动把故事里的重点记下来,之后写故事时再带上。长篇游戏里,它让模型记得线索、承诺和人物关系。
玩家状态以源回合的行动角色为准,没有行动角色时取主座位的当前角色;回忆匹配只排除主座位当前角色的姓名,其他玩家角色的姓名仍参与匹配。
你会看到什么
右侧的“核心记忆”面板,按块列出当前记住的内容。默认有四块:剧情状态、角色关系、当前场景、玩家状态。游戏刚开始时面板是空的,要等第一轮结束后才会填上。
每轮都会完整重写每个记忆块,保存的是“现在的状态”。另外每轮最多记下 3 条新的事实,只增不改。你之后的输入提到相关内容时,相关的旧事实会被找回来。
什么时候启用
核心插件(kind: core)。“传统故事模式”“对话模式”“低成本”三个玩法包都把它列为推荐。
整理记忆要多调用一次模型,在后台进行,不会让你等待。它用“记忆”用途的模型,见连接模型。更新失败时,本轮剧情仍会保存,下一回合再试。
NOTE
记忆由模型总结而来,可能漏掉只提了一句的细节,也可能理解偏。必须准确的状态,比如属性和物品,请看它们自己的面板,不要只靠记忆。
世界作者可以预置什么
世界可以用自己的记忆块替换默认的四块,让记忆按题材记录线索、遗物、倒计时之类的内容。文件是 data/memory-blocks.json,写一个对象:id 为 world,blocks 列表里每项有 label、displayName、extractionHint,可选 icon 和 maxChars。别的维度或插件已经在记的数据,不要再建一块。
“雾港・裂潮纪”就带了这样一个文件。字段细节见世界数据参考。
历史压缩(history-compaction)
故事越来越长,早期对话会占满模型能看的长度。这个插件把较早的对话整理成分段摘要,最近的几轮原样保留。
你会看到什么
通常看不到。原来的消息仍保存在存档里,只是模型看到的是摘要。模型没写完就停下的摘要算一次失败,不会用半截摘要替换原来的对话。连续三次压缩失败时,应用会告诉你故事的记忆没能浓缩。
什么时候启用
核心插件(kind: core),没有玩法包需要列出它。压缩用的是“快速”用途的模型。没有可调的设置。
NOTE
摘要会丢掉措辞和小细节,也可能把精确数值变成大概的数字。要精确记住的内容,交给“故事记忆”。
接下来
故事界面也提供宿主的自动推进与停止控制。是否请求继续由故事提供者决定;下面的群像组合会按所选策略建议继续,由宿主执行已提交故事的建议。
群像对话与角色演员
对话叙事仍可单独游玩。启用可选的角色演员(character-agent)与回合策略(turn-policy)后,回合前函数只准备名单,故事 agent 按顺序逐个委托角色,把成功台词/动作和衔接旁白合成一条故事。即使策略建议 parallel,本组合仍串行;每位演员增加模型调用,director 再增加一次。角色失败只减少它的贡献;全部失败、没有合适人选或策略不可用时独自叙事并交回玩家。真实模型的措辞质量和语义遵守程度仍需实际体验评估。
回合策略只提供一个服务,在插件自己的“策略”设置里选算法。只有这个提供方时自动解析;多个提供方时在编排面板选择服务。
| 策略 | 行为 |
|---|---|
| mention | 当前行动或最后一段点名的在场人物,保留在场顺序;交回玩家。 |
| list | 逐行配置姓名/别名顺序,已知但不在场者跳过,余者按名字排序;空配置保留在场顺序。 |
| random | 当前行动尚未发言的在场人物,无放回抽样;旧段落的说话者仍可参加。 |
| manual | “选择演员”行动的 actors 字段每行一个准确名字/别名,按提交顺序去重,最多合计 32 个;正文可附演员指示。 |
| director | 函数借用规划器的文本槽(包括浏览器请求绑定),单次生成名单和建议;无 gateway 或可用槽时退回 mention 并记理由,模型调用失败则独自叙事。 |
list/random 在主持人的导演指示、主持人/旁观者推进或系统推进后可以建议继续,普通玩家言行交回玩家。manual 不重放历史名单;未知、歧义、原始 ID 或不在场名字使整批无效,故事会请玩家改正并交回控制。旁观者不能提交选择演员。名额和自动推进上限见设置。
角色演员只获得所选公开档案、有界亲历故事和刻意提供的当前简报;没有历史不代表可以编造往事。intent 不写进故事、导出或舞台提示。沉默或失败不等于离场。演员没有行囊写工具,替代演员的写服务仍遵守操作提交规则。
共享简报只收录当前言行和明确建立的场景旁白,不重放上一幕的私下交谈或全知叙述。策略仍可读取历史来选人;每位演员的亲历历史由运行器单独提供。舞台的在场资料同时供规划器选人和叙事器描写,不复制进演员简报。
已有叙事器支持主持人视角,无需新插件。世界文件可写:
pluginSettings:
narrator:
perspective: dm玩家在该插件的“视角”中可以覆盖世界默认;这只改后续旁白,不替玩家决定言行。主持人口吻和人类座位身份是两个独立选择。