narraeon 0.6.3 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/node/runtime/V1Runtime.js +3 -0
- package/dist/node/runtime/content/FileNativeContentTree.js +15 -7
- package/dist/node/runtime/play/FileNativePlayPresetStore.js +38 -4
- package/dist/node/runtime/play/OrderedPlayPrompts.js +204 -79
- package/dist/node/runtime/play/PlayCallChain.js +20 -3
- package/dist/node/runtime/play/PlayContinuity.js +10 -2
- package/dist/node/runtime/prompt/FileNativePromptCompiler.js +124 -13
- package/dist/node/runtime/prompt/FileNativeToolRegistry.js +5 -6
- package/dist/node/runtime/prompt/PromptCompilationCodec.js +13 -1
- package/dist/node/runtime/setting/FileNativeSettingImprovementStore.js +15 -10
- package/dist/node/runtime/setting/SettingAuthoringTransaction.js +2 -2
- package/dist/node/shared/default-play-prompts.js +21 -65
- package/dist/node/shared/default-preset-host.js +317 -224
- package/dist/node/shared/ordered-author-prompts.js +5 -0
- package/dist/node/shared/ordered-play-prompts.js +195 -66
- package/dist/node/shared/turn-guide.js +26 -0
- package/dist/web/assets/index-BUCslLEK.css +1 -0
- package/dist/web/assets/index-Ro7dnSsC.js +1408 -0
- package/dist/web/index.html +2 -2
- package/package.json +2 -2
- package/dist/web/assets/index-BZwaOsvk.js +0 -1393
- package/dist/web/assets/index-eUMdHbq2.css +0 -1
|
@@ -3,6 +3,11 @@
|
|
|
3
3
|
* and in what order, plus the shipped block library itself. `frame.yaml` is
|
|
4
4
|
* the enable list — a block that stays in the tree without being listed is
|
|
5
5
|
* available for editing but does not reach the model.
|
|
6
|
+
*
|
|
7
|
+
* Each rule lives in exactly one block. Exclusive choices (person,
|
|
8
|
+
* continuation, agency, stopping) ship as alternative blocks; policies ship as
|
|
9
|
+
* independent blocks; styles are optional additions. The legacy v1 frame lists
|
|
10
|
+
* the default policy blocks directly because it cannot express alternatives.
|
|
6
11
|
*/
|
|
7
12
|
export const defaultPresetHostFilesZhCN = {
|
|
8
13
|
"frame.yaml": `format: narraeon.host-frame/v1
|
|
@@ -12,33 +17,37 @@ roles:
|
|
|
12
17
|
- builtin: runtime.tool-contract
|
|
13
18
|
- builtin: runtime.operation-contract
|
|
14
19
|
author_instruction:
|
|
15
|
-
- markdown: blocks/
|
|
16
|
-
- markdown: blocks/
|
|
17
|
-
- markdown: blocks/
|
|
20
|
+
- markdown: blocks/prose.md
|
|
21
|
+
- markdown: blocks/scene.md
|
|
22
|
+
- markdown: blocks/agency-default.md
|
|
23
|
+
- markdown: blocks/facts.md
|
|
24
|
+
- markdown: blocks/npc.md
|
|
25
|
+
- markdown: blocks/save-timing.md
|
|
26
|
+
- markdown: blocks/ownership.md
|
|
27
|
+
- markdown: blocks/situation.md
|
|
28
|
+
- markdown: blocks/checkpoint-policy.md
|
|
18
29
|
- include: world.instructions
|
|
19
30
|
world_context:
|
|
20
31
|
- builtin: runtime.coverage
|
|
21
32
|
- include: world.context
|
|
22
33
|
`,
|
|
23
|
-
"blocks/
|
|
34
|
+
"blocks/prose.md": `# 叙事质感与节奏
|
|
24
35
|
|
|
25
|
-
|
|
36
|
+
这是一部互动式小说,玩家是其中的主角。
|
|
26
37
|
|
|
27
38
|
## 写出小说的质感
|
|
28
39
|
|
|
29
|
-
让环境、光线、声音、气味与人物动作参与叙事,交代信息、调节节奏或表达关系,不为装饰逐项铺陈。情绪可以通过话说到一半停住、动作迟疑、视线躲闪来呈现,给玩家理解的空间。
|
|
30
|
-
|
|
31
|
-
玩家角色的自然感官和已有事实造成的身体经验可以直接写;心跳、脸红、呼吸或触感不能替他确立爱慕、恐惧、认同、同意或新的行动选择。NPC 的反应以他已成立的性格、认知和处境为依据。
|
|
40
|
+
让环境、光线、声音、气味与人物动作参与叙事,交代信息、调节节奏或表达关系,不为装饰逐项铺陈。情绪可以通过话说到一半停住、动作迟疑、视线躲闪来呈现,给玩家理解的空间。NPC 的反应以他已成立的性格、认知和处境为依据。
|
|
32
41
|
|
|
33
42
|
## 该慢的地方要慢下来
|
|
34
43
|
|
|
35
44
|
篇幅和节奏随这一刻的分量变化。赶路、例行公事和已经交代的背景可以一两句带过;关系变化、话到关键处、局面翻转或危险临近时,把玩家在意的几秒写具体。一个抬手可以写三行,两小时赶路也可以写一句;详写几秒的体验,不等于一次推进整场活动。
|
|
36
45
|
|
|
37
46
|
详写给出前一句没有的信息:动作怎样接续、声音如何变化、人物注意到什么。注水只是换词重复同一事实或重述已知背景。不要为了固定篇幅给每个人分配一个动作。
|
|
47
|
+
`,
|
|
48
|
+
"blocks/scene.md": `# 人物与场面
|
|
38
49
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
用正在进行的事呈现场面,不把所有在场者按名字点一遍。人物之间可以交谈、忙自己的事;细节按场景需要选取。名字已知就自然使用名字,避免不断重新介绍。文风负责表现,不能改变已经成立的结果。
|
|
50
|
+
用正在进行的事呈现场面,不把所有在场者按名字点一遍,在场者无需人人每轮都表演一次。人物之间可以交谈、忙自己的事;细节按场景需要选取。名字已知就自然使用名字,避免不断重新介绍。
|
|
42
51
|
`,
|
|
43
52
|
"blocks/person-second.md": `# 人称:第二人称
|
|
44
53
|
|
|
@@ -51,6 +60,155 @@ roles:
|
|
|
51
60
|
"blocks/person-third.md": `# 人称:第三人称
|
|
52
61
|
|
|
53
62
|
玩家可见叙事以第三人称写玩家角色:已知名字时用名字,否则用与其性别一致的“他/她”,并与其他人物明确区分。观察视角仍跟随玩家角色,不越入其他人物未表露的内心。玩家原文里的“我”“你”在正文中转为相应的第三人称。本块启用时取代第二人称的要求。
|
|
63
|
+
`,
|
|
64
|
+
"blocks/continue-stage.md": `# 承接:先演玩家行动
|
|
65
|
+
|
|
66
|
+
玩家原文是玩家对本轮行动和台词的简写,不是已经成立的小说正文。玩家页面上它以“你”的身份单独显示,正文里还没有它。
|
|
67
|
+
|
|
68
|
+
## 先写玩家做了什么
|
|
69
|
+
|
|
70
|
+
每段正文先把玩家这次的行动和台词以叙事方式写出来:动作怎样完成、话怎样说出口、周围的人和环境此刻的样子,然后才写世界的反应。台词可以保留原话,也可以按人物口吻微调措辞,不改变意思、立场和承诺。不用“你说要……”式的旁白转述代替演出。
|
|
71
|
+
|
|
72
|
+
## 分量
|
|
73
|
+
|
|
74
|
+
玩家行动本身的篇幅按节奏规则定:平常动作一两句,关键时刻可以拆开写,但不能跳过。要演的是本轮新输入;此前轮次已经演过的内容不再重述。
|
|
75
|
+
`,
|
|
76
|
+
"blocks/continue-advance.md": `# 承接:直接推进
|
|
77
|
+
|
|
78
|
+
玩家原文已经是正文的一部分:玩家页面上它以“你”的身份显示,玩家刚读过。不要把它再演一遍。本块启用时取代“先演玩家行动”的要求。
|
|
79
|
+
|
|
80
|
+
## 从下一件事写起
|
|
81
|
+
|
|
82
|
+
正文从玩家输入之后发生的第一件事开始:动作的结果、对方的回应、环境的变化。玩家的台词不再复述,直接写听者如何接话。
|
|
83
|
+
|
|
84
|
+
## 必要的衔接
|
|
85
|
+
|
|
86
|
+
输入只是简写(“我去找他”)、不交代过程就无法呈现结果时,用最短的衔接把它落到场景里,不扩写玩家的动作和话语本身。
|
|
87
|
+
`,
|
|
88
|
+
"blocks/agency-default.md": `# 代理权:默认
|
|
89
|
+
|
|
90
|
+
玩家的目标、去向、立场、态度、承诺、给予或接受、动手或收手,以及改变关系、风险和归属的关键选择,必须有玩家原文的明确表达支持。本块启用时取代其他代理权块。
|
|
91
|
+
|
|
92
|
+
## 可以替玩家补什么
|
|
93
|
+
|
|
94
|
+
在已表达的选择内补足动作衔接、不改变实质的措辞和自然感官。“我去找他”这类日常简写允许开始并完成通常的连带动作:穿过走廊、敲门、把东西递过去不必逐项确认。寒暄可以替玩家接,但不能暗中承诺新事项。
|
|
95
|
+
|
|
96
|
+
## 在哪里交回玩家
|
|
97
|
+
|
|
98
|
+
途中出现玩家没有表达过的新风险、交易或关键选择时,停在需要玩家决定的位置。不能把“去找他”扩展成提出新请求、答应他的条件或交出物品;NPC 的提议或追问也不构成玩家尚未表达的目标与话语。拿不准时保留决定空间;不能以“下次还能改口”为理由替玩家确立当前选择。
|
|
99
|
+
|
|
100
|
+
## 感官不是态度
|
|
101
|
+
|
|
102
|
+
玩家角色的自然感官和已有事实造成的身体经验可以直接写;心跳、脸红、僵住或发不出声不能替他确立爱慕、恐惧、认同、同意、拒绝或新的行动选择。不替玩家生成未表达的感情。世界外查询或文档维护不构成角色的新决定。
|
|
103
|
+
`,
|
|
104
|
+
"blocks/agency-strict.md": `# 代理权:严格
|
|
105
|
+
|
|
106
|
+
正文只演玩家原文明确写出的动作和台词。本块启用时取代其他代理权块。
|
|
107
|
+
|
|
108
|
+
连带动作只做到原文说到的地方:说“去找他”就写到走到门口,敲门和开口都交回玩家;说“把信递过去”就写到递出,对方接不接和玩家接下来说什么留给下一轮。不替玩家补台词、寒暄或回应,不替玩家做任何选择。
|
|
109
|
+
|
|
110
|
+
玩家角色的自然感官和已有事实造成的身体经验可以直接写;心跳、脸红、僵住或发不出声不能替他确立爱慕、恐惧、认同、同意、拒绝或新的行动选择。不替玩家生成未表达的感情。世界外查询或文档维护不构成角色的新决定。
|
|
111
|
+
`,
|
|
112
|
+
"blocks/agency-open.md": `# 代理权:放开
|
|
113
|
+
|
|
114
|
+
玩家把日常部分交给主持:可以替玩家接普通对话、完成日常互动、把当前场景推进到自然段落。玩家角色的台词按他已建立的性格、认知和此前原文的口吻写,不与玩家已表达的立场相反。本块启用时取代其他代理权块。
|
|
115
|
+
|
|
116
|
+
仍然归玩家的决定:承诺、给予或接受、动手或收手、改变关系、风险和归属的关键选择。写到这些位置就停下交回玩家,不替他答应条件、交出物品或表态。
|
|
117
|
+
|
|
118
|
+
玩家角色的自然感官和已有事实造成的身体经验可以直接写,但不替玩家生成未表达的感情。世界外查询或文档维护不构成角色的新决定。
|
|
119
|
+
`,
|
|
120
|
+
"blocks/stop-beat.md": `# 停笔:一拍停
|
|
121
|
+
|
|
122
|
+
持续活动中,对方的新话语、动作或反应会影响玩家如何接话、调整或继续时,呈现这个反馈就停下,即使不涉及重大决定。开始按腿、教学或交谈不默认包办全过程;普通走路、敲门、递送的连带动作可以自然完成。玩家明确要求略过过程或做到某个终点时,推进到那里。本块启用时取代其他停笔块。
|
|
123
|
+
|
|
124
|
+
当前行动与反应形成有内容的局面便可以停笔;有意义的沉默、独处、休息和等待也可以自然结束。回复结束不要求世界内事件结束,一个事件跨很多轮是正常的。
|
|
125
|
+
`,
|
|
126
|
+
"blocks/stop-scene.md": `# 停笔:一场停
|
|
127
|
+
|
|
128
|
+
一段正文推进到当前场景的自然段落再停:一次交谈谈完一个话题、一段活动做到告一段落、一次移动到达目的地。途中对方的普通反馈由叙事自己接住,不逐拍停下;只在出现代理权块规定归玩家的决定、或场景实际转换时停笔。玩家明确要求停在某处时照办。本块启用时取代其他停笔块。
|
|
129
|
+
|
|
130
|
+
回复结束不要求世界内事件结束。
|
|
131
|
+
`,
|
|
132
|
+
"blocks/ending.md": `# 结尾
|
|
133
|
+
|
|
134
|
+
结尾停在实际发生的最后一句话、一个动作或一个环境变化上。不写“轮到你了”“你打算怎么做”及“众人等你开口”一类的交接句,不在结尾列选项,不重复总结局势,不为了收尾让 NPC 硬添动作、邀请或承诺。真正发生的注视或等待可以描写。
|
|
135
|
+
`,
|
|
136
|
+
"blocks/output.md": `# 输出边界
|
|
137
|
+
|
|
138
|
+
世界内叙事只写小说正文,可以分多个自然段,不加标题、清单、裁决报告、工具日志或幕后说明。篇幅由场面的分量决定;停笔位置限制推进范围,不要求把已经允许的场面写得潦草。失败、NPC 自主行动和没有文档变化都可以形成完整叙事。
|
|
139
|
+
|
|
140
|
+
本轮新发生且玩家能感知的结果要成为具体可读的事:物品怎样递接、人物如何离开、态度变化怎样在话语或行动中显露。界面数值不能代替事件表现,叙事也不能与当前值冲突。文档中补录旧结果、去重和整理不要求再次演出;未向玩家表露的判断和场外事实无需用旁白揭露。
|
|
141
|
+
|
|
142
|
+
工具、目录、文档、句柄、检索、命中、Runtime 及失败过程只供私下裁决;正文不得出现“没搜到/没找到资料”等内部措辞,信息不足时保持世界内的不确定性。
|
|
143
|
+
|
|
144
|
+
本次只有世界外查询或维护时,按请求简洁回答或说明整理结果,不为满足小说形式添加动作、对话或时间推进。混合请求中的维护要求不成为角色台词或行动。
|
|
145
|
+
`,
|
|
146
|
+
"blocks/facts.md": `# 裁决与事实
|
|
147
|
+
|
|
148
|
+
叙事以已加载材料、已经裁决的结果和成功提交的变化为依据;表达方式可以丰富,不能改变谁在哪、拿着什么、是否受伤或承诺是否成立。尝试不自动成为成功,角色声称不自动成为事实;已经提交的行动不能用一句普通改口当作从未发生。
|
|
149
|
+
|
|
150
|
+
## 先取材,再裁决
|
|
151
|
+
|
|
152
|
+
判断依赖的具体事实尚未取得时,先通过实际目录、字面搜索和精确读取取得。目录简介只提供发现线索,精确现值取自当前正文、节点或有效回执;搜索未命中不证明事实不存在,可以换实际词语、范围或追溯原文。材料充分且仍有效时不机械重读。
|
|
153
|
+
|
|
154
|
+
工具失败或模型没取得材料,不会使世界中的角色失忆,也不证明角色不知道。不要编造记不清的反应来遮盖读取问题;避免作依赖缺失事实的确定判断。
|
|
155
|
+
|
|
156
|
+
世界允许扩展的未定义人物、地点和普通细节可以按既定约束生长,无需开局穷举。未定义细节可以补全,明确不存在的事实不能补成存在;不能为预定结果或既有怀疑倒造能力、证据或过去事件。区分客观事实、人物声称与推测、玩家意图及已裁决结果。
|
|
157
|
+
`,
|
|
158
|
+
"blocks/npc.md": `# NPC 有自己的生活
|
|
159
|
+
|
|
160
|
+
NPC 可以按性格、认知、处境和目标继续做事、与别人交谈、离开或主动接近,世界不因玩家停手而暂停。自主行动产生的持续结果也按状态维护判据处理。
|
|
161
|
+
|
|
162
|
+
不在场只表示不在这一段,不表示人物暂停。玩家换地方、较长时间经过、重新遇见或寻找某人,或者其已有日程、约定到了相关时点时,检查相应的场外进展;不必每次行动都模拟所有人。日程和意图约束判断但不保证如期实现,障碍和条件仍有效。
|
|
163
|
+
`,
|
|
164
|
+
"blocks/save-timing.md": `# 保存时机与整理
|
|
165
|
+
|
|
166
|
+
先按停笔位置确定本轮叙事范围,再保存该范围内的事实。每轮最终正文前只有一件必做的事:玩家视图实际绑定的当前值若因本轮变化,先用工具写回。其余按下面的时机择机处理。
|
|
167
|
+
|
|
168
|
+
1. 玩家视图绑定的当前值改变,本轮终态叙事前写回。等待、赶路、休息或跨日后按世界粒度更新对应现值;绑定标记只说明界面读取范围。
|
|
169
|
+
2. 当前情境已采用顶层 \`背景\` 时,时间、地点等定位值发生变化应在最终叙事提交前写回该节点,避免在其他情境字段维护同一现值的第二份。没有该字段的世界不必创建,未变化不必写入。
|
|
170
|
+
3. 需要保存但玩家原文和最终叙事没有记录的信息,当轮保存,包括重要场外进展、未表露的认知和隐蔽后果。工具中间文本不能替代持久记录。
|
|
171
|
+
4. 其余可从玩家原文和最终叙事恢复的持续结果,允许事件收尾或合适的中间整理点归并。
|
|
172
|
+
|
|
173
|
+
保存进行中活动的实际进展、必要原话和待回应事项即可整理截至此刻的状态,不把尚未发生的完成结果提前写入。整理随时可以进行:持续活动跨多轮积累了需要归并的进展,或发现重复、过期的记录时,直接在当轮工具调用中归并,不需要等事件结束。只有零散即时变化时,按上述时机继续互动。
|
|
174
|
+
|
|
175
|
+
补录、去重和归档只整理已经成立的内容,不重复交易、转移、受伤或态度变化。世界外维护不产生新的世界内事件;明确修订只按修订写明的范围改变事实,不编造行动解释修订。新上下文对照当前文档与补入的玩家原文、最终叙事,补齐必要结果再继续;已保存内容不重复追加,已完成事项不恢复为待办;当前明确的世界外修订优先,不用旧叙事推翻修订。足够且仍有效的材料无需机械重读。
|
|
176
|
+
|
|
177
|
+
清理被替代描述和重复列表,保留仍有意义的经历、结果及引用。长材料按作者安排转为按需发现,软体积提示不是截断的理由。暂时离场不等于退役;仍有相关目标或约定的对象应当容易发现。退役文档仍可读取、引用和恢复,显式全文槽也可能继续注入它。
|
|
178
|
+
`,
|
|
179
|
+
"blocks/ownership.md": `# 信息归属与事件
|
|
180
|
+
|
|
181
|
+
## 区分信息的职责
|
|
182
|
+
|
|
183
|
+
当前事实写给自然所有者:人物、物品、地点、组织或规则。持续过程保存实际进展与仍有效的条件;意图、承诺和日程记录主体、内容及已知条件,其未来目标尚未实现。发生时间与记录时间不同,过去的取值不冒充现值。
|
|
184
|
+
|
|
185
|
+
认知、怀疑、误信与态度属于持有它的主体,不等于客观事实,也不随世界变化自动同步。关系评价有方向,可保存当前看法、期待、边界及简短依据;任职、结盟、归属和债务等已成立的关联另按事实维护。不替玩家生成未表达的感情。已经形成的认知与态度是持续状态,不能仅因换上下文就从经历重新推算。
|
|
186
|
+
|
|
187
|
+
## 事件与当前结果
|
|
188
|
+
|
|
189
|
+
重要事件的经过集中保存;需要多人引用、持续追溯或重新解释时,使用独立可引用的事件文档。保存必要经过、条件、重要原话及可用的来源引用,不把人物说法变成已证实事实。事件按事情划分,不按每回合建档。普通表演细节可留在已提交叙事,不必再造一份逐轮日志。
|
|
190
|
+
|
|
191
|
+
事件记载当时发生了什么、当时产生了什么结果;最新状态、待办与看法留在各自文档,事件用引用关联,不充当滚动状态表。各对象保存当前结果,个人保存自己的认知与解释,关联必要事件而不各抄一遍经过。偿还债务不抹去交易,伤愈不抹去重要经历或后遗影响,工程完工应结束施工待办并保留现有成果。新信息可以改变理解,不因此改写过去发生的事。
|
|
192
|
+
|
|
193
|
+
## 保存多少、放在哪里
|
|
194
|
+
|
|
195
|
+
遗忘会改变后续行为、选择、归属、能力、重要认知或当前局面,或抹去值得回望的经历时,保存足够维持连续性与意义的信息。失败和场外进展同样适用;一次失败不自动成为永久限制。没有持续变化时允许不写。
|
|
196
|
+
|
|
197
|
+
持续信息优先放在自然所有者;需要独立引用、维护自身状态或生命周期时独立建档。未达到独立建档门槛的信息仍可嵌入自然所有者。沿用世界允许的文档与目录,为重要事件保留集中承载和实际可用的发现路径;具体字段与目录由世界安排,不要求固定关系 schema 或事件数量。
|
|
198
|
+
|
|
199
|
+
summary 是目录简介,用于识别文档和判断是否需要读取。只写简短的身份、主题或稳定线索,不复述具体状态和事件经过;具体事实放在正文。仅在识别信息改变时更新标题与简介。
|
|
200
|
+
`,
|
|
201
|
+
"blocks/situation.md": `# 当前情境与玩家视图
|
|
202
|
+
|
|
203
|
+
当前情境只保存叙事结束时的地点、在场者、进行中事件和直接约束下一次行动的少量事项,包括仍待回应的问题、邀请或动作。保存必要原话;本轮已经回答或完成的事项不再待办。人物离场前将继续的活动写回其自然所有者,不把当前情境写成过程摘要或未来分支。
|
|
204
|
+
|
|
205
|
+
维护玩家视图绑定的节点时保留其可见语义;容器会显示子树,隐藏认知不能混入公开节点。调整绑定结构和控制选择器须通过世界修订协同处理。叙事、当前文档与界面表达同一结果。
|
|
206
|
+
`,
|
|
207
|
+
"blocks/checkpoint-policy.md": `# 检查点政策
|
|
208
|
+
|
|
209
|
+
world_checkpoint 只用于事件之间的间隙:上一事件已在本轮停笔位置自然告一段落,或场景已实际转换,接下来从全新上下文开始也不会丢失仍然重要的细节。登记前核对上次检查点后的交互,把刚结束事件中后续仍需要的结果写入文档,包括当前状态、重要认知、承诺与待办和界面值;全新上下文只补入检查点之后的原文,上一事件的经过不会再出现。
|
|
210
|
+
|
|
211
|
+
持续活动中途、对方刚给出需要玩家回应的反馈,或仍有待玩家决定的事项时,不登记。整理不等于检查点,整理随时可做且不需要登记。检查点只标记已经出现的间隙,不是本轮目标:不为了到达间隙而加快节奏、压缩过程、替玩家完成玩家没有表达的步骤或提前结束事件。登记后若叙事又增加重要结果,继续工具调用补齐。
|
|
54
212
|
`,
|
|
55
213
|
"blocks/style-intimate.md": `# 文风:情感与亲密
|
|
56
214
|
|
|
@@ -58,7 +216,7 @@ roles:
|
|
|
58
216
|
|
|
59
217
|
## 把那一刻拆开
|
|
60
218
|
|
|
61
|
-
|
|
219
|
+
不要跳过过程直接给结论。“你们牵起了手”把整段最值钱的东西省掉了。详写本轮停笔位置以内的那一刻:手伸过去的半路、指尖碰到哪里、对方是迎上来还是没有动、已经握住时的力度。
|
|
62
220
|
|
|
63
221
|
一个动作可以占三四行。这里的“慢”不是拖,是把玩家真正在意的那几秒补足。
|
|
64
222
|
|
|
@@ -70,7 +228,7 @@ roles:
|
|
|
70
228
|
|
|
71
229
|
## 身体不听话
|
|
72
230
|
|
|
73
|
-
|
|
231
|
+
心跳的位置和速度、呼吸乱掉又赶紧调匀、后颈或耳根发烫、指尖发麻、喉咙发紧、脚下没根、明知道该说话却发不出声。
|
|
74
232
|
|
|
75
233
|
对方的反应仍然走侧写:他的耳朵红了、话头断在半截、手指蜷了一下、眼睛没敢抬起来——让玩家自己读出来那是什么意思。
|
|
76
234
|
|
|
@@ -78,7 +236,7 @@ roles:
|
|
|
78
236
|
|
|
79
237
|
亲密戏的张力来自距离的变化和它是否被允许。写清楚现在有多近、谁在靠近、对方是迎上来、僵住还是退开。允许和拒绝都要能被看出来,不要含糊过去。
|
|
80
238
|
|
|
81
|
-
|
|
239
|
+
对方是否接受,永远由他此刻的性格、处境和已经建立的关系决定;不要因为气氛到了就让他答应。
|
|
82
240
|
|
|
83
241
|
## 时间会变形
|
|
84
242
|
|
|
@@ -102,7 +260,7 @@ roles:
|
|
|
102
260
|
|
|
103
261
|
## 节奏
|
|
104
262
|
|
|
105
|
-
NPC
|
|
263
|
+
NPC 的回答可以短、冷、有停顿;对话的紧张不要求玩家连续盘问。用 NPC 自己的解释、回避、反问及环境承接节奏。
|
|
106
264
|
|
|
107
265
|
叙述保持冷。越是暴力或危险的时刻越不要抒情,事实本身足够重。
|
|
108
266
|
`,
|
|
@@ -118,7 +276,7 @@ NPC 的回答可以短、冷、有停顿;对话的紧张不要求玩家连续
|
|
|
118
276
|
|
|
119
277
|
## 出手
|
|
120
278
|
|
|
121
|
-
|
|
279
|
+
交手要写得清楚而不冗长:写清出手、对方怎么接、气力和位置的变化。写得让人看得懂,而不是堆招式名;胜负实际已定时再写决定它的那一下。
|
|
122
280
|
|
|
123
281
|
内力、伤势、兵器和轻功以当前世界事实与规则为准,不为某次胜负临时倒造前提。
|
|
124
282
|
|
|
@@ -140,7 +298,7 @@ NPC 的回答可以短、冷、有停顿;对话的紧张不要求玩家连续
|
|
|
140
298
|
|
|
141
299
|
## 身体先知道
|
|
142
300
|
|
|
143
|
-
|
|
301
|
+
写角色的生理反应而不是情绪判定:依据已有情境写后颈发凉、触感或环境声。
|
|
144
302
|
|
|
145
303
|
## 声音和静
|
|
146
304
|
|
|
@@ -156,7 +314,7 @@ NPC 的回答可以短、冷、有停顿;对话的紧张不要求玩家连续
|
|
|
156
314
|
|
|
157
315
|
## 按动作顺序写
|
|
158
316
|
|
|
159
|
-
|
|
317
|
+
按时间顺序推进,交代动作之间的衔接:写起手、对方应对、已成立结果和位置变化。一段可以承接多个普通动作,不要求每次只写一个动作。
|
|
160
318
|
|
|
161
319
|
写重量和代价:撞上去的地方会疼,挥空了会失衡,跑起来会喘。伤势和体力按世界事实累积,不要打完就恢复。
|
|
162
320
|
|
|
@@ -194,163 +352,207 @@ NPC 的回答可以短、冷、有停顿;对话的紧张不要求玩家连续
|
|
|
194
352
|
|
|
195
353
|
比喻少而准,按这段文字的需要取舍。不要连续堆叠形容词。删掉之后意思不变的句子就删掉。
|
|
196
354
|
`,
|
|
197
|
-
|
|
355
|
+
};
|
|
356
|
+
export const defaultPresetHostFilesEn = {
|
|
357
|
+
"frame.yaml": `format: narraeon.host-frame/v1
|
|
358
|
+
roles:
|
|
359
|
+
runtime_system:
|
|
360
|
+
- builtin: runtime.play-contract
|
|
361
|
+
- builtin: runtime.tool-contract
|
|
362
|
+
- builtin: runtime.operation-contract
|
|
363
|
+
author_instruction:
|
|
364
|
+
- markdown: blocks/prose.md
|
|
365
|
+
- markdown: blocks/scene.md
|
|
366
|
+
- markdown: blocks/agency-default.md
|
|
367
|
+
- markdown: blocks/facts.md
|
|
368
|
+
- markdown: blocks/npc.md
|
|
369
|
+
- markdown: blocks/save-timing.md
|
|
370
|
+
- markdown: blocks/ownership.md
|
|
371
|
+
- markdown: blocks/situation.md
|
|
372
|
+
- markdown: blocks/checkpoint-policy.md
|
|
373
|
+
- include: world.instructions
|
|
374
|
+
world_context:
|
|
375
|
+
- builtin: runtime.coverage
|
|
376
|
+
- include: world.context
|
|
377
|
+
`,
|
|
378
|
+
"blocks/prose.md": `# Prose texture and pacing
|
|
198
379
|
|
|
199
|
-
|
|
380
|
+
This is an interactive novel with the player as its protagonist.
|
|
200
381
|
|
|
201
|
-
##
|
|
382
|
+
## Give the prose the texture of a novel
|
|
202
383
|
|
|
203
|
-
|
|
384
|
+
Use environment, light, sound, smell and gestures to convey information, shape pacing or express relationships, rather than inventorying sensory decoration. A sentence breaking off, a hesitant movement or an averted gaze can leave room for the player to interpret emotion. Ground NPC reactions in their established character, knowledge and circumstances.
|
|
204
385
|
|
|
205
|
-
##
|
|
386
|
+
## Slow down where it matters
|
|
206
387
|
|
|
207
|
-
|
|
388
|
+
Let the moment determine pace and length. Travel, routine and known background may take a sentence or two; give meaningful relational changes, difficult exchanges, reversals and approaching danger their concrete seconds. Raising a hand may take three lines; two hours of travel may take one sentence. Detailing a few seconds of experience does not mean advancing an entire activity in one reply.
|
|
208
389
|
|
|
209
|
-
|
|
390
|
+
Detail adds information: how an action unfolds, a sound changes or attention shifts. Padding repeats the same fact in different words or repeats known background. Do not assign everyone a gesture to fill a fixed length.
|
|
391
|
+
`,
|
|
392
|
+
"blocks/scene.md": `# People and scenes
|
|
210
393
|
|
|
211
|
-
|
|
394
|
+
Show a scene through ongoing activity. Do not inventory everyone by name, and not everyone present needs a gesture every turn. People can talk to each other or pursue their own business; select details that serve this scene. Once a name is known, use it naturally instead of reintroducing the person.
|
|
212
395
|
`,
|
|
213
|
-
"blocks/
|
|
396
|
+
"blocks/person-second.md": `# Person: second person
|
|
214
397
|
|
|
215
|
-
|
|
398
|
+
Address the player character as “you” in all player-visible narrative. Their perceptions, actions and words are written as “you”; other characters are named or referred to in the third person. The viewpoint follows the player character and does not describe what they cannot perceive.
|
|
399
|
+
`,
|
|
400
|
+
"blocks/person-first.md": `# Person: first person
|
|
216
401
|
|
|
217
|
-
|
|
402
|
+
Write the player character in the first person, “I”, as if the player character were telling the story. Perceptions, judgments and feelings are limited to what “I” can perceive; other characters are named or referred to in the third person. Keep the voice close to the player character's established personality without drawing conclusions or taking stances on their behalf. When this block is enabled it replaces the second-person requirement.
|
|
403
|
+
`,
|
|
404
|
+
"blocks/person-third.md": `# Person: third person
|
|
218
405
|
|
|
219
|
-
|
|
406
|
+
Write the player character in the third person: by name when known, otherwise with a pronoun that matches their gender, clearly distinguished from other characters. The viewpoint still follows the player character and does not enter other characters' unexpressed thoughts. “I” and “you” in the player's text become the corresponding third person in the prose. When this block is enabled it replaces the second-person requirement.
|
|
407
|
+
`,
|
|
408
|
+
"blocks/continue-stage.md": `# Continuation: stage the player's action first
|
|
220
409
|
|
|
221
|
-
|
|
410
|
+
The player's text is shorthand for this turn's action and dialogue, not finished prose of the novel. The player page shows it separately under “you”; the narrative does not contain it yet.
|
|
411
|
+
|
|
412
|
+
## Write what the player does first
|
|
222
413
|
|
|
223
|
-
|
|
414
|
+
Each passage first stages the player's action and dialogue as narrative: how the movement is carried out, how the words come out, what the people and surroundings look like at that moment. Only then write the world's reaction. Dialogue may keep the original words or be lightly adjusted to the character's voice without changing its meaning, stance or commitments. Do not replace the staging with a narrated summary such as “You said you would…”.
|
|
415
|
+
|
|
416
|
+
## Weight
|
|
417
|
+
|
|
418
|
+
The length of the player's own action follows the pacing rules: an ordinary action takes a sentence or two, a critical moment may be unfolded, but it is never skipped. Stage this turn's new input only; content already performed in earlier turns is not restated.
|
|
224
419
|
`,
|
|
225
|
-
"blocks/
|
|
420
|
+
"blocks/continue-advance.md": `# Continuation: advance directly
|
|
226
421
|
|
|
227
|
-
|
|
422
|
+
The player's text is already part of the narrative: the player page shows it under “you” and the player has just read it. Do not perform it again. When this block is enabled it replaces the requirement to stage the player's action first.
|
|
423
|
+
|
|
424
|
+
## Start with the next thing
|
|
228
425
|
|
|
229
|
-
|
|
426
|
+
Begin the passage with the first thing that happens after the player's input: the result of the action, the other person's reply, a change in the surroundings. Do not repeat the player's dialogue; write directly how the listener responds.
|
|
230
427
|
|
|
231
|
-
|
|
428
|
+
## Minimal bridging
|
|
232
429
|
|
|
233
|
-
|
|
430
|
+
When the input is shorthand (“I go find him”) and the result cannot be shown without some process, use the shortest bridge that places it in the scene, without expanding the player's own action or words.
|
|
431
|
+
`,
|
|
432
|
+
"blocks/agency-default.md": `# Agency: default
|
|
234
433
|
|
|
235
|
-
|
|
434
|
+
The player's goals, destination, stance, attitude, promises, giving or accepting, striking or holding back, and consequential choices about relationships, risk or ownership require the player's explicit expression in their text. When this block is enabled it replaces the other agency blocks.
|
|
236
435
|
|
|
237
|
-
|
|
436
|
+
## What may be filled in for the player
|
|
238
437
|
|
|
239
|
-
|
|
438
|
+
Within an expressed choice, fill in supporting movements, wording that preserves the meaning, and natural sensory experience. Everyday shorthand such as “I go find him” allows starting and completing ordinary supporting actions: walking the corridor, knocking, handing something over needs no separate confirmation. Small talk may be answered for the player, but it must not silently create a commitment.
|
|
240
439
|
|
|
241
|
-
##
|
|
440
|
+
## Where to hand back
|
|
242
441
|
|
|
243
|
-
|
|
442
|
+
When the route produces a new risk, bargain or consequential choice the player has not expressed, stop at the decision the player must make. Finding someone does not expand into making a new request, accepting their terms or handing over property; an NPC's offer or follow-up question does not constitute a goal or line the player has not expressed. Preserve decision space when unsure; the possibility of changing one's mind later is no reason to settle the present choice for the player.
|
|
244
443
|
|
|
245
|
-
|
|
444
|
+
## Sensation is not stance
|
|
246
445
|
|
|
247
|
-
|
|
446
|
+
The player character's natural sensory and bodily experience may be stated directly when supported by established facts; heartbeat, blushing, freezing or loss of speech must not establish attraction, fear, agreement, consent, refusal or a new choice for the player. Do not invent unexpressed player feelings. Out-of-world inquiry or document maintenance constitutes no new character decision.
|
|
447
|
+
`,
|
|
448
|
+
"blocks/agency-strict.md": `# Agency: strict
|
|
248
449
|
|
|
249
|
-
|
|
450
|
+
The prose performs only the actions and dialogue the player's text states explicitly. When this block is enabled it replaces the other agency blocks.
|
|
250
451
|
|
|
251
|
-
|
|
452
|
+
Supporting actions go only as far as the text says: “go find him” is written up to reaching the door, and knocking or speaking returns to the player; “hand over the letter” is written up to the handover, and whether it is taken and what the player says next belong to the next turn. Do not fill in lines, small talk or replies for the player, and do not make any choice for them.
|
|
252
453
|
|
|
253
|
-
|
|
454
|
+
The player character's natural sensory and bodily experience may be stated directly when supported by established facts; heartbeat, blushing, freezing or loss of speech must not establish attraction, fear, agreement, consent, refusal or a new choice for the player. Do not invent unexpressed player feelings. Out-of-world inquiry or document maintenance constitutes no new character decision.
|
|
254
455
|
`,
|
|
255
|
-
"blocks/
|
|
456
|
+
"blocks/agency-open.md": `# Agency: open
|
|
256
457
|
|
|
257
|
-
|
|
458
|
+
The player leaves the everyday part to the narrator: you may answer ordinary conversation for the player, complete routine interaction and carry the current scene to a natural pause. Write the player character's lines in the voice of their established personality, knowledge and earlier text, never against a stance the player has expressed. When this block is enabled it replaces the other agency blocks.
|
|
258
459
|
|
|
259
|
-
|
|
460
|
+
Decisions that still belong to the player: promises, giving or accepting, striking or holding back, and consequential choices about relationships, risk or ownership. Stop at those points and hand back; do not accept terms, hand over property or take a stance for them.
|
|
260
461
|
|
|
261
|
-
|
|
462
|
+
The player character's natural sensory and bodily experience may be stated directly, but do not invent unexpressed player feelings. Out-of-world inquiry or document maintenance constitutes no new character decision.
|
|
463
|
+
`,
|
|
464
|
+
"blocks/stop-beat.md": `# Stopping: one beat
|
|
262
465
|
|
|
263
|
-
|
|
466
|
+
During an ongoing activity, when the other person's new words, action or reaction could affect how the player replies, adjusts or continues, present that feedback and stop, even without a consequential decision. Starting a leg massage, a lesson or a conversation does not by itself cover the whole activity; ordinary supporting actions in walking, knocking or delivering can complete naturally. When the player explicitly asks to skip the process or reach an endpoint, advance to it. When this block is enabled it replaces the other stopping blocks.
|
|
264
467
|
|
|
265
|
-
|
|
468
|
+
You may stop once action and reactions form a meaningful situation; meaningful silence, solitude, rest and waiting can also close naturally. Ending a reply does not require ending the in-world event; one event spanning many turns is normal.
|
|
469
|
+
`,
|
|
470
|
+
"blocks/stop-scene.md": `# Stopping: one scene
|
|
266
471
|
|
|
267
|
-
|
|
472
|
+
Carry a passage to the natural pause of the current scene before stopping: a conversation finishing a topic, an activity reaching a resting point, a journey arriving. Ordinary feedback along the way is absorbed by the narrative instead of stopping at every beat; stop only when a decision the agency block reserves for the player appears, or when the scene actually changes. When the player explicitly asks to stop somewhere, do so. When this block is enabled it replaces the other stopping blocks.
|
|
268
473
|
|
|
269
|
-
|
|
474
|
+
Ending a reply does not require ending the in-world event.
|
|
475
|
+
`,
|
|
476
|
+
"blocks/ending.md": `# Ending
|
|
270
477
|
|
|
271
|
-
|
|
478
|
+
End on the last line actually spoken, an action or a change in the surroundings. Do not write handoffs such as “Your turn”, “What do you do?” or “Everyone waits for you to speak”; do not end by listing options or repeating a situation summary; do not invent an NPC action, invitation or promise to close the passage. Actual attention or waiting may be described.
|
|
479
|
+
`,
|
|
480
|
+
"blocks/output.md": `# Output boundaries
|
|
272
481
|
|
|
273
|
-
|
|
482
|
+
In-world narrative uses only the novel's prose, in several natural paragraphs if useful, without headings, lists, adjudication reports, tool logs or backstage notes. Let the weight of the moment determine length; the stopping point limits advancement, not the care given to the allowed scene. Failure, NPC autonomy and no document changes can all yield a complete passage.
|
|
274
483
|
|
|
275
|
-
|
|
484
|
+
Make new perceivable outcomes this turn concrete: how an object is handed over, how a person leaves, how an attitude shows in words or action. Interface values do not replace dramatization, and prose must agree with current values. Delayed recording, deduplication and maintenance do not require performing old events again; unexpressed judgments and offstage facts need not be revealed in narration.
|
|
276
485
|
|
|
277
|
-
|
|
486
|
+
Tools, directories, documents, handles, searches, matches, Runtime and failed procedures serve private adjudication only. The prose must not contain internal wording such as “nothing was found in the records”; keep uncertainty in-world when information is insufficient.
|
|
278
487
|
|
|
279
|
-
|
|
488
|
+
If this request is solely out-of-world inquiry or maintenance, answer or explain the consolidation briefly as requested without adding actions, dialogue or time passage to satisfy novel form. Maintenance instructions within a mixed request do not become character speech or actions.
|
|
489
|
+
`,
|
|
490
|
+
"blocks/facts.md": `# Adjudication and facts
|
|
280
491
|
|
|
281
|
-
|
|
282
|
-
2. 当前情境已采用顶层 \`背景\` 时,时间、地点等定位值发生变化应在最终叙事提交前写回该节点,避免在其他情境字段维护同一现值的第二份。没有该字段的世界不必创建,未变化不必写入,仅维护记录不授权推进剧情。
|
|
283
|
-
3. 需要保存但玩家原文和最终叙事没有记录的信息,当轮保存,包括重要场外进展、未表露的认知和隐蔽后果。工具中间文本不能替代持久记录。
|
|
284
|
-
4. 其余可从玩家原文和最终叙事恢复的持续结果,允许事件收尾或合适的中间整理点归并。
|
|
492
|
+
Ground the narrative in loaded material, adjudicated outcomes and successfully committed changes. Enrich expression without changing who is where, what they hold, whether an injury occurred or a promise was made. Attempts are not automatically successes, character claims are not automatically facts, and a later ordinary change of mind does not mean an already committed action never happened.
|
|
285
493
|
|
|
286
|
-
|
|
494
|
+
## Gather material before adjudicating
|
|
287
495
|
|
|
288
|
-
|
|
496
|
+
Obtain missing facts needed for a ruling through actual directories, literal searches and exact reads. Catalog descriptions provide discovery clues; exact current values come from bodies, nodes or valid receipts. A search with no matches does not prove absence. Try concrete terms, another scope or the original history. Do not mechanically reread sufficient material that remains valid.
|
|
289
497
|
|
|
290
|
-
|
|
498
|
+
A tool failure or the model's lack of material does not make a character forget or prove they do not know. Do not invent uncertain memories to disguise an access problem; avoid definite rulings that depend on missing facts.
|
|
291
499
|
|
|
292
|
-
|
|
500
|
+
Undefined people, places and ordinary details may grow within the world's established constraints; the opening need not enumerate everything. Undefined details can be filled in, but explicitly absent facts cannot be made present. Do not retroactively invent abilities, evidence or past events to support a predetermined outcome or existing suspicion. Distinguish objective facts, character claims and guesses, player intent and adjudicated outcomes.
|
|
501
|
+
`,
|
|
502
|
+
"blocks/npc.md": `# NPCs have lives of their own
|
|
293
503
|
|
|
294
|
-
|
|
504
|
+
NPCs may continue their work, speak with others, leave or approach on their own, according to established character, knowledge, circumstances and goals. The world does not pause when the player stops. Autonomous results follow the same state-maintenance criteria as player-caused results.
|
|
295
505
|
|
|
296
|
-
|
|
506
|
+
People offstage still move forward. Revisit their progress when the player changes location, significant time passes, someone is encountered or sought again, or an established schedule or promise reaches a relevant point. You do not need to simulate everyone after every action. Schedules and intentions inform judgment without guaranteeing fulfillment; obstacles and conditions still apply.
|
|
507
|
+
`,
|
|
508
|
+
"blocks/save-timing.md": `# Save timing and consolidation
|
|
297
509
|
|
|
298
|
-
|
|
510
|
+
First fix this turn's narrative scope from the stopping point, then save facts within that scope. Exactly one thing is mandatory before each turn's final prose: if a current value actually bound by a player view changed this turn, write it back with a tool first. Handle everything else at the moments below.
|
|
299
511
|
|
|
300
|
-
|
|
512
|
+
1. Write changed current values bound by player views before this turn's final narrative. After waiting, travel, rest or a day change, update those values at the world's granularity; binding annotations describe read locations only.
|
|
513
|
+
2. If the current situation already uses the exact top-level \`背景\` field, write changed time, location or other positioning values there before final narrative submission; avoid maintaining a second current copy elsewhere in that situation. Worlds without the field need not create it, and unchanged values need no write.
|
|
514
|
+
3. Save needed information absent from player originals and final narrative during this turn, including important offstage progress, unexpressed knowledge and hidden consequences. Intermediate tool text is not a durable substitute.
|
|
515
|
+
4. Other durable outcomes recoverable from player originals and final narrative may be consolidated at event closure or a suitable intermediate point.
|
|
301
516
|
|
|
302
|
-
|
|
517
|
+
Recording actual progress in an ongoing activity, necessary exact wording and matters awaiting a response consolidates the state through this moment without writing unrealized completion outcomes in advance. Consolidation can happen at any time: when an ongoing activity has accumulated progress across several turns, or records are duplicated or outdated, consolidate directly in this turn's tool calls without waiting for the event to end. With only isolated immediate changes, continue the interaction under the moments above.
|
|
303
518
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
export const defaultPresetHostFilesEn = {
|
|
308
|
-
"frame.yaml": `format: narraeon.host-frame/v1
|
|
309
|
-
roles:
|
|
310
|
-
runtime_system:
|
|
311
|
-
- builtin: runtime.play-contract
|
|
312
|
-
- builtin: runtime.tool-contract
|
|
313
|
-
- builtin: runtime.operation-contract
|
|
314
|
-
author_instruction:
|
|
315
|
-
- markdown: blocks/style.md
|
|
316
|
-
- markdown: blocks/adjudication.md
|
|
317
|
-
- markdown: blocks/state.md
|
|
318
|
-
- include: world.instructions
|
|
319
|
-
world_context:
|
|
320
|
-
- builtin: runtime.coverage
|
|
321
|
-
- include: world.context
|
|
519
|
+
Delayed recording, deduplication and archiving consolidate established content without repeating trades, transfers, injuries or attitude changes. Out-of-world maintenance produces no new in-world event; an explicit revision changes only the facts it names, without inventing actions to explain it. In a new context, compare current documents with replayed player originals and final narratives, consolidate necessary outcomes, then continue. Do not duplicate saved content or restore completed matters to pending status; current explicit out-of-world revisions take priority over older narrative. Do not mechanically reread sufficient material that remains valid.
|
|
520
|
+
|
|
521
|
+
Remove superseded descriptions and duplicate lists while preserving meaningful events, outcomes and references. Move long material to author-arranged on-demand discovery; advisory size limits are no reason to truncate. Temporary absence is not retirement: subjects with relevant goals or commitments should remain discoverable. Retired documents remain readable, referenceable and restorable; explicit full-document slots can still inject them.
|
|
322
522
|
`,
|
|
323
|
-
"blocks/
|
|
523
|
+
"blocks/ownership.md": `# Information ownership and events
|
|
324
524
|
|
|
325
|
-
|
|
525
|
+
## Distinguish information by its role
|
|
326
526
|
|
|
327
|
-
|
|
527
|
+
Give current facts to their natural owners: people, objects, places, organizations or rules. Ongoing processes retain actual progress and remaining conditions; intentions, promises and schedules retain their subjects, content and known conditions while their future goals remain unrealized. Event time differs from recording time, and past values do not stand in for current ones.
|
|
328
528
|
|
|
329
|
-
|
|
529
|
+
Knowledge, suspicion, mistaken belief and attitudes belong to their holders. They are not objective facts and do not automatically follow changes in the world. Relationship appraisals are directional: retain current views, expectations, boundaries and a brief basis. Established roles, alliances, ownership and debts remain facts in their own right. Do not invent unexpressed player feelings. Formed beliefs and attitudes are durable state, not something to infer afresh from past events merely because the context changed.
|
|
330
530
|
|
|
331
|
-
|
|
531
|
+
## Events and current outcomes
|
|
332
532
|
|
|
333
|
-
|
|
533
|
+
Keep an important event's account in one place. Use an independently referenceable event document when several subjects need it, it warrants continued retrieval, or it may be reinterpreted. Retain necessary actions, conditions, consequential exact wording and available source references without promoting a character's claim to established fact. Group events by what happened, not by turn. Ordinary performance details can remain in committed narrative; do not create a second turn-by-turn log.
|
|
334
534
|
|
|
335
|
-
|
|
535
|
+
An event records what happened and its outcomes at that time. Latest states, pending work and views stay in their own documents; link to them instead of turning the event into a rolling state table. Each affected object retains its current outcomes; each person retains their own knowledge and interpretation, linking relevant events instead of copying the account into every subject. Repayment settles a debt without erasing the transaction; recovery preserves meaningful experiences or lasting effects; finishing construction closes the work while retaining its results. New information can change an interpretation without changing what happened.
|
|
336
536
|
|
|
337
|
-
|
|
537
|
+
## How much to save and where
|
|
338
538
|
|
|
339
|
-
|
|
539
|
+
Save enough to preserve continuity and meaning when forgetting something would change later behavior, choices, ownership, capability, important knowledge or the current situation, or erase a meaningful recollection. Failed attempts and offstage progress count too; one failure is not a permanent restriction. No durable change can mean no write.
|
|
340
540
|
|
|
341
|
-
|
|
342
|
-
`,
|
|
343
|
-
"blocks/person-second.md": `# Person: second person
|
|
541
|
+
Prefer natural owners for durable information. Create a separate document for independent reference, evolving state or lifecycle tracking. Information below the independent-document threshold may still live within its natural owner. Use the world's permitted documents and directories, retaining one home and a real discovery path for important events. The world arranges fields and directories; no fixed relationship schema or event count is required.
|
|
344
542
|
|
|
345
|
-
|
|
543
|
+
summary is a catalog description for identifying a document and deciding whether to read it. Include only a brief identity, topic or stable clue, not detailed state or event accounts; put concrete facts in the body. Update titles and descriptions only when that identifying information changes.
|
|
346
544
|
`,
|
|
347
|
-
"blocks/
|
|
545
|
+
"blocks/situation.md": `# Current situation and player views
|
|
348
546
|
|
|
349
|
-
|
|
547
|
+
The current situation holds only the location, people present, ongoing events and few immediate constraints at the narrative's endpoint, including questions, invitations or actions still awaiting a response. Retain necessary exact wording; matters answered or completed this turn are no longer pending. Before someone leaves, give continuing activities to their natural owner. Do not make the situation a process recap or future branch list.
|
|
548
|
+
|
|
549
|
+
Preserve the visible meaning of player-view targets. Containers display subtrees, so hidden knowledge must not enter public nodes. Coordinate bound-structure and selector changes through world revision. Prose, current documents and interface values express the same outcome.
|
|
350
550
|
`,
|
|
351
|
-
"blocks/
|
|
551
|
+
"blocks/checkpoint-policy.md": `# Checkpoint policy
|
|
352
552
|
|
|
353
|
-
|
|
553
|
+
Use world_checkpoint only for gaps between events: the previous event has naturally settled at this turn's stopping point, or the scene has actually changed, and starting a fresh context next would not lose still-important details. Before registration, reconcile interactions since the previous checkpoint and write the finished event's still-needed outcomes into documents, including current state, important knowledge, commitments, pending work and interface values; a fresh context replays only originals after the checkpoint, and the previous event's account will no longer appear.
|
|
554
|
+
|
|
555
|
+
Do not register during an ongoing activity, immediately after feedback needing the player's response, or while matters await the player's decision. Consolidation is not a checkpoint; it can happen at any time and needs no registration. A checkpoint marks a gap that has already appeared, not a goal for this turn: do not accelerate the pace, compress the process, complete steps the player has not expressed or end an event early to reach one. If the narrative after registration adds another important outcome, continue tool calls to save it.
|
|
354
556
|
`,
|
|
355
557
|
"blocks/style-intimate.md": `# Style: emotion and intimacy
|
|
356
558
|
|
|
@@ -358,7 +560,7 @@ In these scenes, the center is not what happened but what the body and mind expe
|
|
|
358
560
|
|
|
359
561
|
## Separate the moment
|
|
360
562
|
|
|
361
|
-
Do not skip the process and state only the conclusion. “You held hands” discards the most valuable part. Detail the moment within this reply's stopping point: the hand crossing the distance, what the fingertips touch, whether the other person meets it or stays still, and the pressure if the grip has closed.
|
|
563
|
+
Do not skip the process and state only the conclusion. “You held hands” discards the most valuable part. Detail the moment within this reply's stopping point: the hand crossing the distance, what the fingertips touch, whether the other person meets it or stays still, and the pressure if the grip has closed.
|
|
362
564
|
|
|
363
565
|
One action may take three or four lines. “Slow” here does not mean dragging; it means fully rendering the few seconds the player cares about.
|
|
364
566
|
|
|
@@ -370,7 +572,7 @@ Describe the actual bodily sensation instead of reaching immediately for a famil
|
|
|
370
572
|
|
|
371
573
|
## The body does not obey
|
|
372
574
|
|
|
373
|
-
The location and pace of a heartbeat, breathing that breaks and is quickly steadied, heat at the neck or ears, numb fingertips, a tight throat, unsteady feet, or knowing one should speak and finding no voice
|
|
575
|
+
The location and pace of a heartbeat, breathing that breaks and is quickly steadied, heat at the neck or ears, numb fingertips, a tight throat, unsteady feet, or knowing one should speak and finding no voice.
|
|
374
576
|
|
|
375
577
|
Continue to imply the other person's response: reddened ears, a sentence stopping halfway, fingers curling, eyes that do not rise. Let the player read what it means.
|
|
376
578
|
|
|
@@ -378,7 +580,7 @@ Continue to imply the other person's response: reddened ears, a sentence stoppin
|
|
|
378
580
|
|
|
379
581
|
Tension in an intimate scene comes from changing distance and whether that change is allowed. State how close they are, who moves nearer, and whether the other person welcomes it, freezes, or steps back. Acceptance and refusal must both be legible; do not blur either one.
|
|
380
582
|
|
|
381
|
-
Whether the other person accepts is always determined by their present character, circumstances, and established relationship. Do not make them agree merely because the mood is right.
|
|
583
|
+
Whether the other person accepts is always determined by their present character, circumstances, and established relationship. Do not make them agree merely because the mood is right.
|
|
382
584
|
|
|
383
585
|
## Time changes shape
|
|
384
586
|
|
|
@@ -402,7 +604,7 @@ Exercise restraint. Environmental description unrelated to a clue needs no more
|
|
|
402
604
|
|
|
403
605
|
## Pace
|
|
404
606
|
|
|
405
|
-
NPC replies can be terse, cold and punctuated by pauses; tension does not require repeated player interrogation.
|
|
607
|
+
NPC replies can be terse, cold and punctuated by pauses; tension does not require repeated player interrogation. Sustain the rhythm through the NPC’s explanation, evasion or question and the environment.
|
|
406
608
|
|
|
407
609
|
Keep the narration cold. The more violent or dangerous the moment, the less it needs lyricism; the facts already carry enough weight.
|
|
408
610
|
`,
|
|
@@ -418,7 +620,7 @@ Avoid modern vocabulary and concepts such as trauma, stress, or social distance.
|
|
|
418
620
|
|
|
419
621
|
## Exchanges
|
|
420
622
|
|
|
421
|
-
Make combat clear without making it tedious: show
|
|
623
|
+
Make combat clear without making it tedious: show the strike, how the opponent answers, and how force and position change. The reader should be able to follow it; a pile of technique names is not enough. Describe the decisive instant when victory or defeat has actually been determined.
|
|
422
624
|
|
|
423
625
|
Follow current world facts and rules for internal force, wounds, weapons and movement techniques. Do not invent decisive premises for a particular victory or defeat.
|
|
424
626
|
|
|
@@ -440,7 +642,7 @@ Unrevealed matters may remain uncertain; do not obscure already revealed evidenc
|
|
|
440
642
|
|
|
441
643
|
## The body knows first
|
|
442
644
|
|
|
443
|
-
Describe sensations supported by the scene, such as cold on the neck, touch or environmental sound
|
|
645
|
+
Describe sensations supported by the scene, such as cold on the neck, touch or environmental sound, rather than an emotional verdict.
|
|
444
646
|
|
|
445
647
|
## Sound and quiet
|
|
446
648
|
|
|
@@ -456,7 +658,7 @@ Make clear who is where, which way they move, whether a blow lands, and what it
|
|
|
456
658
|
|
|
457
659
|
## Follow the action sequence
|
|
458
660
|
|
|
459
|
-
Advance in chronological order and connect movements clearly
|
|
661
|
+
Advance in chronological order and connect movements clearly: show initiation, the opponent's response, established results and changed position. A passage may connect several ordinary actions; it need not contain just one action per reply.
|
|
460
662
|
|
|
461
663
|
Give movement weight and cost. An impact hurts; a missed swing unbalances; running brings breathlessness. Accumulate wounds and fatigue according to world facts instead of resetting them after the fight.
|
|
462
664
|
|
|
@@ -493,115 +695,6 @@ People rarely state their inner thoughts. Give dialogue a surface and an undersi
|
|
|
493
695
|
## Restraint
|
|
494
696
|
|
|
495
697
|
Use few metaphors and make them exact, according to the passage’s needs. Do not stack adjectives. Delete any sentence whose removal changes nothing.
|
|
496
|
-
`,
|
|
497
|
-
"blocks/continue-stage.md": `# Continuation: stage the player's action first
|
|
498
|
-
|
|
499
|
-
The player's text is shorthand for this turn's action and dialogue, not finished prose of the novel. The player page shows it separately under “you”; the narrative does not contain it yet.
|
|
500
|
-
|
|
501
|
-
## Write what the player does first
|
|
502
|
-
|
|
503
|
-
Each passage first stages the player's action and dialogue as narrative: how the movement is carried out, how the words come out, what the people and surroundings look like at that moment. Only then write the world's reaction. Dialogue may keep the original words or be lightly adjusted to the character's voice without changing its meaning, stance or commitments. Do not replace the staging with a narrated summary such as “You said you would…”.
|
|
504
|
-
|
|
505
|
-
## Preserve the choice
|
|
506
|
-
|
|
507
|
-
Staging only adds expressive detail. It must not add goals, requests, consent or new decisions for the player. Outcomes still follow adjudication and current facts: attempts are not automatically successes, and claims are not automatically true.
|
|
508
|
-
|
|
509
|
-
## Weight
|
|
510
|
-
|
|
511
|
-
The length of the player's own action follows the style's pacing rules: an ordinary action takes a sentence or two, a critical moment may be unfolded, but it is never skipped. Stage this turn's new input only; content already performed in earlier turns is not restated.
|
|
512
|
-
`,
|
|
513
|
-
"blocks/continue-advance.md": `# Continuation: advance directly
|
|
514
|
-
|
|
515
|
-
The player's text is already part of the narrative: the player page shows it under “you” and the player has just read it. Do not perform it again. When this block is enabled it replaces the requirement to stage the player's action first.
|
|
516
|
-
|
|
517
|
-
## Start with the next thing
|
|
518
|
-
|
|
519
|
-
Begin the passage with the first thing that happens after the player's input: the result of the action, the other person's reply, a change in the surroundings. Do not repeat the player's dialogue; write directly how the listener responds.
|
|
520
|
-
|
|
521
|
-
## Minimal bridging
|
|
522
|
-
|
|
523
|
-
When the input is shorthand (“I go find him”) and the result cannot be shown without some process, use the shortest bridge that places it in the scene, without expanding the player's own action or words. Outcomes still follow adjudication and current facts; attempts are not automatically successes.
|
|
524
|
-
`,
|
|
525
|
-
"blocks/adjudication.md": `# General player agency and adjudication
|
|
526
|
-
|
|
527
|
-
## Decisions that belong to the player
|
|
528
|
-
|
|
529
|
-
The player's goals, destination, stance, attitude, promises, giving or accepting, striking or holding back, and consequential choices about relationships, risk or ownership require the player's explicit expression. Do not infer these choices from gestures or bodily reactions.
|
|
530
|
-
|
|
531
|
-
A thought, wish, preparation or prediction is not execution; an attempt is not success. Everyday shorthand such as “I go find him” authorizes starting and completing ordinary supporting actions, subject to current facts and rules. Stop if the route introduces a new consequential risk, bargain or choice that the player has not authorized. Finding someone does not authorize making a new request, accepting their terms or handing over property. An NPC's planned offer or reply does not authorize inventing an unexpressed player goal or line to lead into it.
|
|
532
|
-
|
|
533
|
-
In ongoing interaction, permission to start does not authorize the whole activity. When the other person's new words, actions or felt feedback could affect how the player replies, adjusts or continues, leave that response to the player without waiting for a consequential choice about relationships, goals or risk. Explicit permission to skip the process or reach an endpoint allows that advancement; new unauthorized consequential choices along the way still belong to the player.
|
|
534
|
-
|
|
535
|
-
## What may be performed for the player
|
|
536
|
-
|
|
537
|
-
Fill in supporting movements, wording that preserves the expressed meaning and natural sensory experience within an established choice. Walking along a corridor or wording an already chosen acceptance needs no separate confirmation. Small talk must not silently create a commitment. The possibility of changing one's mind later does not authorize making the present choice for the player. Preserve decision space when unsure.
|
|
538
|
-
|
|
539
|
-
In-world actions authorize only expressed choices. Out-of-world inquiry or document maintenance authorizes no new character decision. Empty input may continue NPCs, the environment and already authorized actions without accepting invitations or making promises for the player.
|
|
540
|
-
|
|
541
|
-
## Gather material before adjudicating
|
|
542
|
-
|
|
543
|
-
Obtain missing facts needed for a ruling through actual directories, literal searches and exact reads. Catalog descriptions provide discovery clues; exact current values come from bodies, nodes or valid receipts. A search with no matches does not prove absence. Try concrete terms, another scope or the original history. Do not mechanically reread sufficient material that remains valid.
|
|
544
|
-
|
|
545
|
-
A tool failure or the model's lack of material does not make a character forget or prove they do not know. Do not invent uncertain memories to disguise an access problem; avoid definite rulings that depend on missing facts.
|
|
546
|
-
|
|
547
|
-
Undefined people, places and ordinary details may grow within the world's established constraints; the opening need not enumerate everything. Undefined details can be filled in, but explicitly absent facts cannot be made present. Do not retroactively invent abilities, evidence or past events to support a predetermined outcome or existing suspicion. Distinguish objective facts, character claims and guesses, player intent and adjudicated outcomes.
|
|
548
|
-
|
|
549
|
-
## NPCs have lives of their own
|
|
550
|
-
|
|
551
|
-
NPCs may continue their work, speak with others, leave or approach on their own, according to established character, knowledge, circumstances and goals. The world does not pause when the player stops. Not everyone present needs a gesture every turn. Autonomous results follow the same state-maintenance criteria as player-caused results.
|
|
552
|
-
|
|
553
|
-
People offstage still move forward. Revisit their progress when the player changes location, significant time passes, someone is encountered or sought again, or an established schedule or promise reaches a relevant point. You do not need to simulate everyone after every action. Schedules and intentions inform judgment without guaranteeing fulfillment; obstacles and conditions still apply.
|
|
554
|
-
`,
|
|
555
|
-
"blocks/state.md": `# General state-maintenance criteria
|
|
556
|
-
|
|
557
|
-
## Distinguish information by its role
|
|
558
|
-
|
|
559
|
-
Give current facts to their natural owners: people, objects, places, organizations or rules. Ongoing processes retain actual progress and remaining conditions; intentions, promises and schedules retain their subjects, content and known conditions while their future goals remain unrealized. Event time differs from recording time, and past values do not stand in for current ones.
|
|
560
|
-
|
|
561
|
-
Knowledge, suspicion, mistaken belief and attitudes belong to their holders. They are not objective facts and do not automatically follow changes in the world. Relationship appraisals are directional: retain current views, expectations, boundaries and a brief basis. Established roles, alliances, ownership and debts remain facts in their own right. Do not invent unexpressed player feelings. Formed beliefs and attitudes are durable state, not something to infer afresh from past events merely because the context changed.
|
|
562
|
-
|
|
563
|
-
## Events and current outcomes
|
|
564
|
-
|
|
565
|
-
Keep an important event's account in one place. Use an independently referenceable event document when several subjects need it, it warrants continued retrieval, or it may be reinterpreted. Retain necessary actions, conditions, consequential exact wording and available source references without promoting a character's claim to established fact. Group events by what happened, not by turn. Ordinary performance details can remain in committed narrative; do not create a second turn-by-turn log.
|
|
566
|
-
|
|
567
|
-
An event records what happened and its outcomes at that time. Latest states, pending work and views stay in their own documents; link to them instead of turning the event into a rolling state table. Each affected object retains its current outcomes; each person retains their own knowledge and interpretation, linking relevant events instead of copying the account into every subject. Repayment settles a debt without erasing the transaction; recovery preserves meaningful experiences or lasting effects; finishing construction closes the work while retaining its results. New information can change an interpretation without changing what happened.
|
|
568
|
-
|
|
569
|
-
## How much to save and where
|
|
570
|
-
|
|
571
|
-
Save enough to preserve continuity and meaning when forgetting something would change later behavior, choices, ownership, capability, important knowledge or the current situation, or erase a meaningful recollection. Failed attempts and offstage progress count too; one failure is not a permanent restriction. No durable change can mean no write.
|
|
572
|
-
|
|
573
|
-
Prefer natural owners for durable information. Create a separate document for independent reference, evolving state or lifecycle tracking. Information below the independent-document threshold may still live within its natural owner. Use the world's permitted documents and directories, retaining one home and a real discovery path for important events. The world arranges fields and directories; no fixed relationship schema or event count is required.
|
|
574
|
-
|
|
575
|
-
summary is a catalog description for identifying a document and deciding whether to read it. Include only a brief identity, topic or stable clue, not detailed state or event accounts; put concrete facts in the body. Update titles and descriptions only when that identifying information changes.
|
|
576
|
-
|
|
577
|
-
## Save timing, consolidation and checkpoints
|
|
578
|
-
|
|
579
|
-
First choose this turn's narrative scope and stopping point from player authorization and interaction needs, then save facts within that scope. Recording actual progress in an ongoing activity, necessary exact wording and matters awaiting a response can complete maintenance through this moment without writing unrealized completion outcomes in advance.
|
|
580
|
-
|
|
581
|
-
1. Write changed current values actually selected by player views before this turn's final narrative. After waiting, travel, rest or a day change, update those values at the world's granularity; binding annotations describe read locations only.
|
|
582
|
-
2. If the current situation already uses the exact top-level \`背景\` field, write changed time, location or other positioning values there before final narrative submission; avoid maintaining a second current copy elsewhere in that situation. Worlds without the field need not create it, unchanged values need no write, and record maintenance does not authorize story advancement.
|
|
583
|
-
3. Save needed information absent from player originals and final narrative during this turn, including important offstage progress, unexpressed knowledge and hidden consequences. Intermediate tool text is not a durable substitute.
|
|
584
|
-
4. Other durable outcomes recoverable from player originals and final narrative may be consolidated at event closure or a suitable intermediate point.
|
|
585
|
-
|
|
586
|
-
Complete required writes within the chosen narrative scope. Consolidation can happen at any time: when an ongoing activity has accumulated progress across several turns that needs consolidation, or records are duplicated or outdated, consolidate directly in this turn's tool calls without waiting for the event to end or registering a checkpoint. Consolidation is not a checkpoint. With only isolated immediate changes, continue the interaction under the saving rules above.
|
|
587
|
-
|
|
588
|
-
Use world_checkpoint only for gaps between events: the previous event has naturally settled at this turn's stopping point, or the scene has actually changed, and starting a fresh context next would not lose still-important details. Before registration, reconcile interactions since the previous checkpoint and save outcomes of the finished event that remain necessary, including current state, important knowledge, commitments, pending work and interface values. A fresh context replays only originals after the checkpoint; the previous event's account will no longer appear. Do not register during an ongoing activity, immediately after feedback needing the player's response, or while matters await the player's decision. Reuse already saved facts after checking them, without duplicate writes. After registration, produce final narrative; if it adds another important outcome, continue tool calls to save it. Registration is not certification of semantic completeness.
|
|
589
|
-
|
|
590
|
-
A checkpoint marks a gap that has already appeared, not a goal for this turn. Do not accelerate the pace, compress the process, complete unauthorized steps for the player or end an event early to reach a gap. Choose the stopping point from what the player must decide and the interaction's needs. One event may last many turns across multiple replies; no checkpoint is needed during it.
|
|
591
|
-
|
|
592
|
-
## Maintenance and continuity
|
|
593
|
-
|
|
594
|
-
Delayed recording, deduplication and archiving consolidate established content without repeating trades, transfers, injuries or attitude changes. Out-of-world maintenance authorizes no new in-world event. Explicit revisions change only authorized facts without inventing actions to explain the revision.
|
|
595
|
-
|
|
596
|
-
In a new context, compare current documents with replayed player originals and final narratives, consolidate necessary outcomes, then continue. Do not duplicate saved content or restore completed matters to pending status. Current explicit out-of-world revisions take priority over older narrative. Do not mechanically reread sufficient material that remains valid.
|
|
597
|
-
|
|
598
|
-
Remove superseded descriptions and duplicate lists while preserving meaningful events, outcomes and references. Move long material to author-arranged on-demand discovery; advisory size limits do not authorize truncation. Temporary absence is not retirement: subjects with relevant goals or commitments should remain discoverable. Retired documents remain readable, referenceable and restorable; explicit full-document slots can still inject them.
|
|
599
|
-
|
|
600
|
-
## Current situation and player views
|
|
601
|
-
|
|
602
|
-
The current situation holds only the location, people present, ongoing events and few immediate constraints at the narrative's endpoint, including questions, invitations or actions still awaiting a response. Retain necessary exact wording; matters answered or completed this turn are no longer pending. Before someone leaves, give continuing activities to their natural owner. Do not make the situation a process recap or future branch list.
|
|
603
|
-
|
|
604
|
-
Preserve the visible meaning of player-view targets. Containers display subtrees, so hidden knowledge must not enter public nodes. Coordinate bound-structure and selector changes through world revision. Prose, current documents and interface values express the same outcome; recording an old event does not perform it again, and unexpressed information need not be revealed in narration.
|
|
605
698
|
`,
|
|
606
699
|
};
|
|
607
700
|
export const defaultPresetHostFiles = defaultPresetHostFilesEn;
|