narraeon 0.3.1 → 0.5.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/protocol/appPreferences.js +25 -0
- package/dist/node/protocol/conversationObservation.js +67 -0
- package/dist/node/protocol/v1.js +188 -34
- package/dist/node/protocol/worldExtensions.js +16 -0
- package/dist/node/protocol/worldMaintenance.js +77 -0
- package/dist/node/protocol/worldPromptDiagnostics.js +1 -0
- package/dist/node/runtime/ConversationChanges.js +24 -0
- package/dist/node/runtime/V1Runtime.js +447 -121
- package/dist/node/runtime/artifact/FileNativeArtifactStore.js +326 -12
- package/dist/node/runtime/authoring/AuthoringRequestSnapshot.js +63 -0
- package/dist/node/runtime/authoring/ModelToolConversation.js +218 -0
- package/dist/node/runtime/config/AppPreferencesStore.js +46 -17
- package/dist/node/runtime/content/ContentTreeFingerprint.js +13 -0
- package/dist/node/runtime/content/ContentWorkspace.js +43 -13
- package/dist/node/runtime/content/CurrentTreeContentLibrary.js +128 -46
- package/dist/node/runtime/content/FileNativeContentTree.js +28 -10
- package/dist/node/runtime/content/PackageFollowups.js +80 -0
- package/dist/node/runtime/extension/FrontendExtensionBundle.js +19 -14
- package/dist/node/runtime/extension/PackageScriptPermissions.js +70 -0
- package/dist/node/runtime/extension/WorldExtensionControls.js +205 -0
- package/dist/node/runtime/extension/WorldExtensionRequests.js +64 -0
- package/dist/node/runtime/model/FileNativeModelAdapters.js +21 -466
- package/dist/node/runtime/model/ModelConnectionStore.js +44 -10
- package/dist/node/runtime/model/ModelHost.js +31 -1
- package/dist/node/runtime/model/ModelHostStream.js +51 -5
- package/dist/node/runtime/play/FileNativeContinuityCorrection.js +55 -45
- package/dist/node/runtime/play/FileNativePlayPresetStore.js +256 -238
- package/dist/node/runtime/play/FileNativePlayTimelineStore.js +118 -9
- package/dist/node/runtime/play/OrderedFollowups.js +71 -0
- package/dist/node/runtime/play/OrderedPlayPrompts.js +180 -0
- package/dist/node/runtime/play/PlayCallChain.js +814 -61
- package/dist/node/runtime/play/PlayContinuity.js +88 -0
- package/dist/node/runtime/play/PlayDocumentTools.js +205 -287
- package/dist/node/runtime/play/PlayFollowupRequests.js +34 -3
- package/dist/node/runtime/play/PlayPresetWorkbench.js +45 -54
- package/dist/node/runtime/play/PlayPromptRun.js +86 -0
- package/dist/node/runtime/prompt/FileNativePromptCompiler.js +670 -93
- package/dist/node/runtime/prompt/FileNativeToolRegistry.js +37 -21
- package/dist/node/runtime/prompt/PromptCompilationCodec.js +322 -0
- package/dist/node/runtime/prompt/WorldMaintenanceReport.js +251 -0
- package/dist/node/runtime/prompt/WorldMaterialCoverage.js +83 -0
- package/dist/node/runtime/prompt/WorldPromptDiagnostics.js +185 -0
- package/dist/node/runtime/setting/FileNativeSettingImprovementStore.js +1027 -0
- package/dist/node/runtime/setting/SettingAuthoringTransaction.js +1339 -0
- package/dist/node/runtime/setting/SettingImprovementSession.js +714 -0
- package/dist/node/runtime/world/FileNativeAuthorityV3.js +88 -1
- package/dist/node/runtime/world/FileNativeWorldStore.js +292 -27
- package/dist/node/runtime/world/PlayerViewBindings.js +30 -0
- package/dist/node/runtime/world/PlayerViewRenderer.js +27 -34
- package/dist/node/runtime/world/WorldDocumentMaintenance.js +174 -0
- package/dist/node/runtime/world/WorldDocumentStore.js +166 -96
- package/dist/node/runtime/world/WorldOperationCoordinator.js +103 -2
- package/dist/node/runtime/world-revision/FileNativeWorldRevisionStore.js +696 -0
- package/dist/node/runtime/world-revision/WorldRevisionAuthoringTransaction.js +380 -0
- package/dist/node/runtime/world-revision/WorldRevisionSession.js +709 -0
- package/dist/node/runtime/world-revision/WorldRevisionWorkspace.js +494 -0
- package/dist/node/server/ConversationStream.js +109 -0
- package/dist/node/server/createServer.js +5 -1
- package/dist/node/shared/artifact-payload-contract.js +123 -0
- package/dist/node/shared/default-play-prompts.js +25 -45
- package/dist/node/shared/default-preset-host.js +114 -138
- package/dist/node/shared/default-setting-improvement-prompt.js +52 -38
- package/dist/node/shared/display-regex.js +114 -0
- package/dist/node/shared/first-party-action-choices.js +1 -6
- package/dist/node/shared/first-party-player-view.js +1 -6
- package/dist/node/shared/ordered-author-prompts.js +64 -0
- package/dist/node/shared/ordered-followups.js +42 -0
- package/dist/node/shared/ordered-play-prompts.js +73 -0
- package/dist/web/assets/index-BXfelCi9.js +1207 -0
- package/dist/web/assets/index-BYnhUxlk.css +1 -0
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/node/runtime/model/SettingAuthorStream.js +0 -21
- package/dist/node/runtime/setting/DocumentCandidateSettingImprovement.js +0 -1731
- package/dist/web/assets/index-D5VqDvjY.js +0 -1192
- package/dist/web/assets/index-Xa0s35CJ.css +0 -1
|
@@ -22,35 +22,23 @@ roles:
|
|
|
22
22
|
`,
|
|
23
23
|
"blocks/style.md": `# 通用叙事呈现
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
- 玩家可见叙事以第二人称“你”称呼玩家角色,并保持已经建立的观察视角。
|
|
28
|
-
- 玩家可见内容只写虚构世界中的体验。提示词和内部编排过程不属于虚构世界,不得出现在叙事里。
|
|
29
|
-
|
|
30
|
-
## 先接住玩家的输入
|
|
31
|
-
|
|
32
|
-
每段叙事从玩家这次输入写起:把它扩写成完整的场景文字——他具体怎么做的、说话时是什么语气神态、当时的姿态和距离——再接着写它引出的后续。玩家写的是意图速记,不是成稿;直接跳过去写结果,他会觉得自己的行动没被看见。
|
|
33
|
-
|
|
34
|
-
扩写是把那个动作演出来,不是先复述一遍再开始写,也不要用“你说要去找他”这类回指句开头。只补表达方式,不补他没有决定的事。
|
|
25
|
+
这是一部互动式小说,玩家是其中的主角。玩家可见叙事以第二人称“你”称呼玩家角色,保持已经建立的观察视角,只写虚构世界中的体验。
|
|
35
26
|
|
|
36
27
|
## 写出小说的质感
|
|
37
28
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
29
|
+
让环境、光线、声音、气味与人物动作参与叙事,交代信息、调节节奏或表达关系,不为装饰逐项铺陈。情绪可以通过话说到一半停住、动作迟疑、视线躲闪来呈现,给玩家理解的空间。
|
|
30
|
+
|
|
31
|
+
玩家角色的自然感官和已有事实造成的身体经验可以直接写;心跳、脸红、呼吸或触感不能替他确立爱慕、恐惧、认同、同意或新的行动选择。NPC 的反应以他已成立的性格、认知和处境为依据。
|
|
41
32
|
|
|
42
33
|
## 该慢的地方要慢下来
|
|
43
34
|
|
|
44
|
-
|
|
35
|
+
篇幅和节奏随这一刻的分量变化。赶路、例行公事和已经交代的背景可以一两句带过;关系变化、话到关键处、局面翻转或危险临近时,把玩家在意的几秒写具体。一个抬手可以写三行,两小时赶路也可以写一句。
|
|
45
36
|
|
|
46
|
-
|
|
37
|
+
详写给出前一句没有的信息:动作怎样接续、声音如何变化、人物注意到什么。注水只是换词重复同一事实或重述已知背景。不要为了固定篇幅给每个人分配一个动作。
|
|
47
38
|
|
|
48
|
-
|
|
39
|
+
## 人物与场面
|
|
49
40
|
|
|
50
|
-
|
|
51
|
-
- 不要点名式并列。“甲抱着胳膊,乙坐在下铺”这种把在场的人挨个交代一遍的句子,是清单换了个标点,不是描写。让此刻真正在做事的那个人占住笔墨,其余的人交给余光——没有动作的人可以整段不提。
|
|
52
|
-
- 已经知道名字的人就叫名字。“球衣少年”“大个子”这类按外貌贴的标签,只在玩家确实还不知道他是谁时用;一旦通过姓名认识了,就不要再退回标签。
|
|
53
|
-
- 具体优先于笼统,白描优先于形容词堆砌。丰富指的是层次和质感——不是把已知背景再说一遍,也不是把一句话拆成三句。
|
|
41
|
+
用正在进行的事呈现场面,不把所有在场者按名字点一遍。人物之间可以交谈、忙自己的事;细节按场景需要选取。名字已知就自然使用名字,避免不断重新介绍。文风负责表现,不能改变已经成立的结果。
|
|
54
42
|
`,
|
|
55
43
|
"blocks/style-intimate.md": `# 文风:情感与亲密
|
|
56
44
|
|
|
@@ -70,7 +58,7 @@ roles:
|
|
|
70
58
|
|
|
71
59
|
## 身体不听话
|
|
72
60
|
|
|
73
|
-
|
|
61
|
+
心跳的位置和速度、呼吸乱掉又赶紧调匀、后颈或耳根发烫、指尖发麻、喉咙发紧、脚下没根、明知道该说话却发不出声。只有符合已成立情境的自然感官才可直接写;不能借脸红、心跳、僵住或发不出声替玩家确立欲望、同意、拒绝或不行动。描写的浓度不代表关系已经升级。
|
|
74
62
|
|
|
75
63
|
对方的反应仍然走侧写:他的耳朵红了、话头断在半截、手指蜷了一下、眼睛没敢抬起来——让玩家自己读出来那是什么意思。
|
|
76
64
|
|
|
@@ -96,13 +84,13 @@ roles:
|
|
|
96
84
|
|
|
97
85
|
## 细节是证据
|
|
98
86
|
|
|
99
|
-
|
|
87
|
+
这一类场面里,物件不是布景,是可以被追究的东西:杯子放的位置、鞋底的泥、袖口磨损的程度、屋里的温度和味道。区分可观察细节、已确立证据和人物推测;普通细节可以只是环境,不能因为被描写就自动成为线索或证明。
|
|
100
88
|
|
|
101
89
|
要克制到位:与线索无关的环境描写占一句就够,别铺开。
|
|
102
90
|
|
|
103
91
|
## 节奏
|
|
104
92
|
|
|
105
|
-
|
|
93
|
+
NPC 的回答可以短、冷、有停顿;对话的紧张不要求玩家连续盘问。玩家台词只承接本次原文,NPC 开始回应后,不替玩家添加追问、反驳、指控或下一次回答。用 NPC 自己的解释、回避、反问及环境承接节奏,把新的玩家发言留给玩家。
|
|
106
94
|
|
|
107
95
|
叙述保持冷。越是暴力或危险的时刻越不要抒情,事实本身足够重。
|
|
108
96
|
`,
|
|
@@ -120,13 +108,13 @@ roles:
|
|
|
120
108
|
|
|
121
109
|
交手要写得清楚而不冗长:一招从起势到落点、对方怎么接、气力和位置的变化、胜负在哪一下定的。写得让人看得懂,而不是堆招式名。
|
|
122
110
|
|
|
123
|
-
|
|
111
|
+
内力、伤势、兵器和轻功以当前世界事实与规则为准,不为某次胜负临时倒造前提。
|
|
124
112
|
|
|
125
113
|
## 景与气
|
|
126
114
|
|
|
127
115
|
风、雪、灯、酒、马蹄、更漏——用景托气氛和时序。景要短,两三句足够,别让它盖过人。
|
|
128
116
|
|
|
129
|
-
|
|
117
|
+
情义、恩怨、承诺在这类故事里分量很重:一句应承可以顶很久,写的时候给它足够的停顿。兑现后的情义仍可通过相关的具体经历表现,不必反复宣讲誓言。
|
|
130
118
|
`,
|
|
131
119
|
"blocks/style-horror.md": `# 文风:悬疑与恐怖
|
|
132
120
|
|
|
@@ -134,13 +122,13 @@ roles:
|
|
|
134
122
|
|
|
135
123
|
## 慢慢来
|
|
136
124
|
|
|
137
|
-
|
|
125
|
+
在危险尚未显露的场景,可以从正常处留一个不对劲的小东西——数目不对、声音停在半路、门比记忆里开得大一点。不要一开始就掀底。
|
|
138
126
|
|
|
139
|
-
|
|
127
|
+
尚未揭露的事可以保留不确定;已经揭露的证据、人物认知和当前危险不能为气氛重新抹糊。视角确实受限时:让玩家看见轮廓、听见声音、闻见味道,但看不全。
|
|
140
128
|
|
|
141
129
|
## 身体先知道
|
|
142
130
|
|
|
143
|
-
|
|
131
|
+
写角色的生理反应而不是情绪判定:依据已有情境写后颈发凉、触感或环境声。不要替玩家决定害怕、停步或不敢回头,是否行动仍由玩家决定。
|
|
144
132
|
|
|
145
133
|
## 声音和静
|
|
146
134
|
|
|
@@ -156,7 +144,7 @@ roles:
|
|
|
156
144
|
|
|
157
145
|
## 一次一个动作
|
|
158
146
|
|
|
159
|
-
|
|
147
|
+
按时间顺序推进,不要在一句里塞三个同时发生的动作。在玩家已授权的行动范围内写起手、对方应对、结果和位置变化;遇到新的关键战术选择便停下,不自动替玩家打完整场。
|
|
160
148
|
|
|
161
149
|
写重量和代价:撞上去的地方会疼,挥空了会失衡,跑起来会喘。伤势和体力按世界事实累积,不要打完就恢复。
|
|
162
150
|
|
|
@@ -180,7 +168,7 @@ roles:
|
|
|
180
168
|
|
|
181
169
|
关键的情绪不直接命名。用一个动作、一件物品、一句偏题的话去承载它——他把杯子转了半圈才开口;她说的是天气。
|
|
182
170
|
|
|
183
|
-
|
|
171
|
+
情绪解读可以交给读者;交易是否完成、伤势和承诺是否成立等结果必须清楚。留白不改变事实,也不隐藏玩家行动的实际后果。
|
|
184
172
|
|
|
185
173
|
## 具体的小事
|
|
186
174
|
|
|
@@ -192,79 +180,79 @@ roles:
|
|
|
192
180
|
|
|
193
181
|
## 节制
|
|
194
182
|
|
|
195
|
-
|
|
183
|
+
比喻少而准,按这段文字的需要取舍。不要连续堆叠形容词。删掉之后意思不变的句子就删掉。
|
|
196
184
|
`,
|
|
197
185
|
"blocks/adjudication.md": `# 通用玩家代理权与裁判底线
|
|
198
186
|
|
|
199
187
|
## 哪些必须由玩家决定
|
|
200
188
|
|
|
201
|
-
|
|
189
|
+
玩家的目标、去向、立场、态度、承诺、给予或接受、动手或收手,以及改变关系、风险和归属的关键选择,必须有玩家的明确表达支持。不要从神态或身体反应替玩家推定这些选择。
|
|
202
190
|
|
|
203
|
-
|
|
191
|
+
想法、愿望、准备和预测不等于实施,尝试也不等于成功。“我去找他”这类日常行动简写可以授权开始并完成通常的连带动作;结果仍由当前世界事实与规则决定。若途中出现未授权的新风险、交易或关键选择,停在需要玩家决定的位置。不能把“去找他”扩展成答应他的条件或交出物品。
|
|
204
192
|
|
|
205
193
|
## 哪些可以替玩家演
|
|
206
194
|
|
|
207
|
-
|
|
195
|
+
在已表达的选择内补足动作衔接、不改变实质的措辞和自然感官,无需为穿过走廊或已经决定的答应逐项确认。寒暄不能暗中承诺新事项;不能以“下次还能改口”为理由替玩家确立当前选择。拿不准时保留决定空间。
|
|
208
196
|
|
|
209
|
-
|
|
197
|
+
世界内行动只授权已表达的选择;世界外查询或文档维护不授权角色的新决定。空输入可继续 NPC、环境与已有授权动作,不能代玩家接受邀请或作出承诺。
|
|
210
198
|
|
|
211
|
-
##
|
|
199
|
+
## 先取材,再裁决
|
|
212
200
|
|
|
213
|
-
|
|
201
|
+
判断依赖的具体事实尚未取得时,先通过实际目录、字面搜索和精确读取取得。目录简介只提供发现线索,精确现值取自当前正文、节点或有效回执;搜索未命中不证明事实不存在,可以换实际词语、范围或追溯原文。材料充分且仍有效时不机械重读。
|
|
214
202
|
|
|
215
|
-
|
|
203
|
+
工具失败或模型没取得材料,不会使世界中的角色失忆,也不证明角色不知道。不要编造记不清的反应来遮盖读取问题;避免作依赖缺失事实的确定判断。
|
|
216
204
|
|
|
217
|
-
|
|
205
|
+
世界允许扩展的未定义人物、地点和普通细节可以按既定约束生长,无需开局穷举。未定义细节可以补全,明确不存在的事实不能补成存在;不能为预定结果或既有怀疑倒造能力、证据或过去事件。区分客观事实、人物声称与推测、玩家意图及已裁决结果。
|
|
218
206
|
|
|
219
|
-
##
|
|
207
|
+
## NPC 有自己的生活
|
|
220
208
|
|
|
221
|
-
|
|
209
|
+
NPC 可以按性格、认知、处境和目标继续做事、与别人交谈、离开或主动接近,世界不因玩家停手而暂停。在场者无需人人每轮都表演一次。自主行动产生的持续结果也按状态维护判据处理。
|
|
222
210
|
|
|
223
|
-
|
|
211
|
+
不在场只表示不在这一段,不表示人物暂停。玩家换地方、较长时间经过、重新遇见或寻找某人,或者其已有日程、约定到了相关时点时,检查相应的场外进展;不必每次行动都模拟所有人。日程和意图约束判断但不保证如期实现,障碍和条件仍有效。
|
|
212
|
+
`,
|
|
213
|
+
"blocks/state.md": `# 通用状态维护判据
|
|
224
214
|
|
|
225
|
-
|
|
215
|
+
## 区分信息的职责
|
|
226
216
|
|
|
227
|
-
|
|
217
|
+
当前事实写给自然所有者:人物、物品、地点、组织或规则。持续过程保存实际进展与仍有效的条件;意图、承诺和日程记录主体、内容及已知条件,其未来目标尚未实现。发生时间与记录时间不同,过去的取值不冒充现值。
|
|
228
218
|
|
|
229
|
-
|
|
230
|
-
`,
|
|
231
|
-
"blocks/state.md": `# 通用状态维护判据
|
|
219
|
+
认知、怀疑、误信与态度属于持有它的主体,不等于客观事实,也不随世界变化自动同步。关系评价有方向,可保存当前看法、期待、边界及简短依据;任职、结盟、归属和债务等已成立的关联另按事实维护。不替玩家生成未表达的感情。已经形成的认知与态度是持续状态,不能仅因换上下文就从经历重新推算。
|
|
232
220
|
|
|
233
|
-
##
|
|
221
|
+
## 事件与当前结果
|
|
222
|
+
|
|
223
|
+
重要事件的经过集中保存;需要多人引用、持续追溯或重新解释时,使用独立可引用的事件文档。保存必要经过、条件、重要原话及可用的来源引用,不把人物说法变成已证实事实。事件按事情划分,不按每回合建档。普通表演细节可留在已提交叙事,不必再造一份逐轮日志。
|
|
224
|
+
|
|
225
|
+
事件记载当时发生了什么、当时产生了什么结果;最新状态、待办与看法留在各自文档,事件用引用关联,不充当滚动状态表。各对象保存当前结果,个人保存自己的认知与解释,关联必要事件而不各抄一遍经过。偿还债务不抹去交易,伤愈不抹去重要经历或后遗影响,工程完工应结束施工待办并保留现有成果。新信息可以改变理解,不因此改写过去发生的事。
|
|
234
226
|
|
|
235
|
-
|
|
236
|
-
- 正确裁决所依赖的具体事实尚未取得时,先用目录、字面搜索和精确读取查找,再作判断——**即使目录里已经看到了对应条目**。目录只注入标题、摘要和引用,不注入正文;看得到某个人物或物品的名字,不等于已经拿到它身上决定当前结果的那条事实。已注入材料不完整,也不等于世界上不存在。
|
|
237
|
-
- 确实读不到时,按世界内的不确定处理:相关角色可以没有印象、记不清或需要确认,但不得改写已经成立的世界事实。
|
|
238
|
-
- 材料仍不足以支持某个结论时保留不确定性,不补造能够改变裁决的新事实。
|
|
227
|
+
## 保存多少、放在哪里
|
|
239
228
|
|
|
240
|
-
|
|
229
|
+
遗忘会改变后续行为、选择、归属、能力、重要认知或当前局面,或抹去值得回望的经历时,保存足够维持连续性与意义的信息。失败和场外进展同样适用;一次失败不自动成为永久限制。没有持续变化时允许不写。
|
|
241
230
|
|
|
242
|
-
|
|
231
|
+
持续信息优先放在自然所有者;需要独立引用、维护自身状态或生命周期时独立建档。未达到独立建档门槛的信息仍可嵌入自然所有者。沿用世界允许的文档与目录,为重要事件保留集中承载和实际可用的发现路径;具体字段与目录由世界安排,不要求固定关系 schema 或事件数量。
|
|
243
232
|
|
|
244
|
-
|
|
233
|
+
summary 是目录简介,用于识别文档和判断是否需要读取。只写简短的身份、主题或稳定线索,不复述具体状态和事件经过;具体事实放在正文。仅在识别信息改变时更新标题与简介。
|
|
245
234
|
|
|
246
|
-
|
|
235
|
+
## 保存时机与整理检查点
|
|
247
236
|
|
|
248
|
-
|
|
237
|
+
1. 玩家视图实际绑定的当前值改变,本轮终态叙事前写回。等待、赶路、休息或跨日后按世界粒度更新对应现值;绑定标记只说明界面读取范围。
|
|
238
|
+
2. 需要保存但玩家原文和最终叙事没有记录的信息,当轮保存,包括重要场外进展、未表露的认知和隐蔽后果。工具中间文本不能替代持久记录。
|
|
239
|
+
3. 其余可从玩家原文和最终叙事恢复的持续结果,允许事件收尾或合适的中间整理点归并。
|
|
249
240
|
|
|
250
|
-
|
|
251
|
-
- 只约束眼前场面、涉及多个对象且没有单一承载文档的信息,写入当前情境。
|
|
252
|
-
- 只有当某个对象需要被独立引用、转移或追踪生命周期时,才为它单独建一份文档;否则在已有的承载文档里记录真正需要记住的归属与意义。
|
|
253
|
-
- 同一结果既改变长期状态又改变眼前局面时,分别更新对应文档和当前情境,使两处各自表达它需要承担的信息。
|
|
241
|
+
检查点前核对上次检查点后的交互及本轮收尾将确立的结果:补齐事件与当前结果,更新认知、进程、约定和界面值,结束失效待办,清理重复。先完成本轮必须保存的写入,再登记检查点并输出终态叙事。登记后的最终叙事同样被该检查点覆盖;若又增加重要结果,继续工具调用补齐。登记回执不是语义完整性认证。
|
|
254
242
|
|
|
255
|
-
|
|
243
|
+
## 整理与连续性
|
|
256
244
|
|
|
257
|
-
|
|
245
|
+
补录、去重和归档只整理已经成立的内容,不重复交易、转移、受伤或态度变化。世界外维护不授权新的世界内事件;明确修订只按授权范围改变事实,不编造行动解释修订。
|
|
258
246
|
|
|
259
|
-
|
|
247
|
+
新上下文对照当前文档与补入的玩家原文、最终叙事,补齐必要结果再继续。已保存内容不重复追加,已完成事项不恢复为待办;当前明确的世界外修订优先,不用旧叙事推翻修订。足够且仍有效的材料无需机械重读。
|
|
260
248
|
|
|
261
|
-
|
|
249
|
+
清理被替代描述和重复列表,保留仍有意义的经历、结果及引用。长材料按作者安排转为按需发现,软体积提示不授权截断。暂时离场不等于退役;仍有相关目标或约定的对象应当容易发现。退役文档仍可读取、引用和恢复,显式全文槽也可能继续注入它。
|
|
262
250
|
|
|
263
|
-
|
|
251
|
+
## 当前情境与玩家视图
|
|
264
252
|
|
|
265
|
-
|
|
253
|
+
当前情境只保存叙事结束时的地点、在场者、进行中事件和直接约束下一次行动的少量事项,包括仍待回应的问题、邀请或动作。保存必要原话;本轮已经回答或完成的事项不再待办。人物离场前将继续的活动写回其自然所有者,不把当前情境写成过程摘要或未来分支。
|
|
266
254
|
|
|
267
|
-
|
|
255
|
+
维护玩家视图绑定的节点时保留其可见语义;容器会显示子树,隐藏认知不能混入公开节点。调整绑定结构和控制选择器须通过世界修订协同处理。叙事、当前文档与界面表达同一结果;整理旧事件不要求重新演出,未表露的信息无需旁白公开。
|
|
268
256
|
`,
|
|
269
257
|
};
|
|
270
258
|
export const defaultPresetHostFilesEn = {
|
|
@@ -285,35 +273,23 @@ roles:
|
|
|
285
273
|
`,
|
|
286
274
|
"blocks/style.md": `# General narrative presentation
|
|
287
275
|
|
|
288
|
-
This is an interactive novel
|
|
289
|
-
|
|
290
|
-
- Address the player character as “you” in player-visible narrative and preserve the established point of view.
|
|
291
|
-
- Player-visible text contains only experiences inside the fictional world. Prompts and internal orchestration are not part of that world and must never appear in the narrative.
|
|
292
|
-
|
|
293
|
-
## Begin with the player's input
|
|
294
|
-
|
|
295
|
-
Start each passage with the player's current input. Expand it into complete scene prose—how the action is carried out, the player's tone and expression, posture, and distance—then continue into what it causes. The player's text is shorthand for intent, not finished prose. If you skip directly to the result, their action will feel unseen.
|
|
296
|
-
|
|
297
|
-
Expansion means staging the action, not repeating it before the scene begins. Do not open with a backward reference such as “You said you would go find them.” Add only the manner of expression, never a decision the player did not make.
|
|
276
|
+
This is an interactive novel with the player as its protagonist. Address the player character as “you”, preserve the established viewpoint, and describe only experiences within the fictional world.
|
|
298
277
|
|
|
299
278
|
## Give the prose the texture of a novel
|
|
300
279
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
280
|
+
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.
|
|
281
|
+
|
|
282
|
+
The player character's natural sensory and bodily experience may be stated directly when supported by established facts. Heartbeat, blushing, breath or touch must not establish unexpressed attraction, fear, agreement, consent or a new choice for the player. Ground NPC reactions in their established character, knowledge and circumstances.
|
|
304
283
|
|
|
305
284
|
## Slow down where it matters
|
|
306
285
|
|
|
307
|
-
|
|
286
|
+
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.
|
|
308
287
|
|
|
309
|
-
|
|
288
|
+
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.
|
|
310
289
|
|
|
311
|
-
|
|
290
|
+
## People and scenes
|
|
312
291
|
|
|
313
|
-
|
|
314
|
-
- Do not inventory everyone by name. “Alex folds his arms; Morgan sits on the lower bunk” is a list with different punctuation, not description. Give the person actually doing something the page; leave everyone else in peripheral vision. A person with no action may go unmentioned for the whole passage.
|
|
315
|
-
- Once a name is known, use it. Labels such as “the boy in the jersey” or “the tall one” are appropriate only while the player truly does not know who someone is. Do not retreat to labels after an introduction.
|
|
316
|
-
- Prefer the specific to the general, and direct description to piles of adjectives. Richness means layers and texture, not repeating known background or splitting one sentence into three.
|
|
292
|
+
Show a scene through ongoing activity. Do not inventory everyone by name. 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. Style shapes expression without changing established outcomes.
|
|
317
293
|
`,
|
|
318
294
|
"blocks/style-intimate.md": `# Style: emotion and intimacy
|
|
319
295
|
|
|
@@ -333,7 +309,7 @@ Describe the actual bodily sensation instead of reaching immediately for a famil
|
|
|
333
309
|
|
|
334
310
|
## The body does not obey
|
|
335
311
|
|
|
336
|
-
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:
|
|
312
|
+
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: describe only natural sensations supported by the established situation. Blushing, heartbeat, freezing or loss of speech must not establish desire, consent, refusal or inaction for the player. Descriptive intensity does not itself advance the relationship.
|
|
337
313
|
|
|
338
314
|
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.
|
|
339
315
|
|
|
@@ -359,13 +335,13 @@ Do not judge for a character. Do not write “they are obviously lying”; write
|
|
|
359
335
|
|
|
360
336
|
## Details are evidence
|
|
361
337
|
|
|
362
|
-
Objects are not scenery in this kind of scene. They may be examined later: where a cup sits, mud on a sole, wear at a cuff, the room's temperature and smell.
|
|
338
|
+
Objects are not scenery in this kind of scene. They may be examined later: where a cup sits, mud on a sole, wear at a cuff, the room's temperature and smell. Distinguish observable details, established evidence and character guesses. Ordinary details may remain scenery; being described does not make them clues or proof.
|
|
363
339
|
|
|
364
340
|
Exercise restraint. Environmental description unrelated to a clue needs no more than one sentence.
|
|
365
341
|
|
|
366
342
|
## Pace
|
|
367
343
|
|
|
368
|
-
|
|
344
|
+
NPC replies can be terse, cold and punctuated by pauses; tension does not require repeated player interrogation. Stage only the player speech expressed in this input. Once the NPC responds, do not add a player follow-up question, rebuttal, accusation or further reply. Sustain the rhythm through the NPC’s explanation, evasion or question and the environment, leaving the next player turn to the player.
|
|
369
345
|
|
|
370
346
|
Keep the narration cold. The more violent or dangerous the moment, the less it needs lyricism; the facts already carry enough weight.
|
|
371
347
|
`,
|
|
@@ -383,13 +359,13 @@ Avoid modern vocabulary and concepts such as trauma, stress, or social distance.
|
|
|
383
359
|
|
|
384
360
|
Make combat clear without making it tedious: show a move from initiation to impact, how the opponent answers, how force and position change, and which instant decides the outcome. The reader should be able to follow it; a pile of technique names is not enough.
|
|
385
361
|
|
|
386
|
-
Follow
|
|
362
|
+
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.
|
|
387
363
|
|
|
388
364
|
## Scene and spirit
|
|
389
365
|
|
|
390
366
|
Wind, snow, lamps, wine, hoofbeats, and night watches can carry mood and mark time. Keep scenery brief—two or three sentences—so it does not eclipse the people.
|
|
391
367
|
|
|
392
|
-
Loyalty, grievance, and promises carry great weight in this kind of story. A single pledge may endure for a long time; give it enough stillness when it is made.
|
|
368
|
+
Loyalty, grievance, and promises carry great weight in this kind of story. A single pledge may endure for a long time; give it enough stillness when it is made. Loyalty after fulfillment can be expressed through the relevant concrete experiences without repeatedly reciting the oath.
|
|
393
369
|
`,
|
|
394
370
|
"blocks/style-horror.md": `# Style: suspense and horror
|
|
395
371
|
|
|
@@ -397,13 +373,13 @@ Fear grows from uncertainty, not gore.
|
|
|
397
373
|
|
|
398
374
|
## Take your time
|
|
399
375
|
|
|
400
|
-
|
|
376
|
+
When danger has not yet emerged, you may begin with normality except for one small wrong thing—a count that does not add up, a sound that stops midway, a door open slightly wider than remembered. Do not reveal the answer at once.
|
|
401
377
|
|
|
402
|
-
|
|
378
|
+
Unrevealed matters may remain uncertain; do not obscure already revealed evidence, knowledge or present danger again for atmosphere. When viewpoint is actually limited, let the player see an outline, hear a sound, or catch a smell without seeing the whole.
|
|
403
379
|
|
|
404
380
|
## The body knows first
|
|
405
381
|
|
|
406
|
-
|
|
382
|
+
Describe sensations supported by the scene, such as cold on the neck, touch or environmental sound. Do not decide that the player is frightened, stops or refuses to turn around; their action remains their choice.
|
|
407
383
|
|
|
408
384
|
## Sound and quiet
|
|
409
385
|
|
|
@@ -419,7 +395,7 @@ Make clear who is where, which way they move, whether a blow lands, and what it
|
|
|
419
395
|
|
|
420
396
|
## One action at a time
|
|
421
397
|
|
|
422
|
-
Advance in chronological order instead of packing three simultaneous actions into one sentence.
|
|
398
|
+
Advance in chronological order instead of packing three simultaneous actions into one sentence. Within the action the player authorized, show initiation, response, result and changed position. Stop at a new consequential tactical choice instead of playing the whole fight for them.
|
|
423
399
|
|
|
424
400
|
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.
|
|
425
401
|
|
|
@@ -443,7 +419,7 @@ Say seven parts; leave three unstated.
|
|
|
443
419
|
|
|
444
420
|
Do not name the central emotion directly. Let an action, object, or apparently unrelated line carry it: they turn the cup halfway before speaking; she talks about the weather.
|
|
445
421
|
|
|
446
|
-
Leave
|
|
422
|
+
Leave emotional interpretation to the reader, but make established outcomes clear: whether a trade completed, an injury occurred or a promise was made. Negative space must not alter facts or hide actual consequences of the player’s action.
|
|
447
423
|
|
|
448
424
|
## Small, concrete things
|
|
449
425
|
|
|
@@ -455,79 +431,79 @@ People rarely state their inner thoughts. Give dialogue a surface and an undersi
|
|
|
455
431
|
|
|
456
432
|
## Restraint
|
|
457
433
|
|
|
458
|
-
Use few metaphors and make them exact
|
|
434
|
+
Use few metaphors and make them exact, according to the passage’s needs. Do not stack adjectives. Delete any sentence whose removal changes nothing.
|
|
459
435
|
`,
|
|
460
|
-
"blocks/adjudication.md": `# General player
|
|
436
|
+
"blocks/adjudication.md": `# General player agency and adjudication
|
|
461
437
|
|
|
462
|
-
##
|
|
438
|
+
## Decisions that belong to the player
|
|
463
439
|
|
|
464
|
-
The
|
|
440
|
+
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.
|
|
465
441
|
|
|
466
|
-
A thought,
|
|
442
|
+
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 accepting their terms or handing over property.
|
|
467
443
|
|
|
468
444
|
## What may be performed for the player
|
|
469
445
|
|
|
470
|
-
|
|
446
|
+
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.
|
|
471
447
|
|
|
472
|
-
|
|
448
|
+
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.
|
|
473
449
|
|
|
474
|
-
##
|
|
450
|
+
## Gather material before adjudicating
|
|
475
451
|
|
|
476
|
-
|
|
452
|
+
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.
|
|
477
453
|
|
|
478
|
-
|
|
454
|
+
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.
|
|
479
455
|
|
|
480
|
-
|
|
456
|
+
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.
|
|
481
457
|
|
|
482
|
-
##
|
|
458
|
+
## NPCs have lives of their own
|
|
483
459
|
|
|
484
|
-
|
|
460
|
+
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.
|
|
485
461
|
|
|
486
|
-
|
|
462
|
+
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.
|
|
463
|
+
`,
|
|
464
|
+
"blocks/state.md": `# General state-maintenance criteria
|
|
487
465
|
|
|
488
|
-
|
|
466
|
+
## Distinguish information by its role
|
|
489
467
|
|
|
490
|
-
|
|
468
|
+
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.
|
|
491
469
|
|
|
492
|
-
|
|
493
|
-
`,
|
|
494
|
-
"blocks/state.md": `# General state-maintenance criteria
|
|
470
|
+
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.
|
|
495
471
|
|
|
496
|
-
##
|
|
472
|
+
## Events and current outcomes
|
|
473
|
+
|
|
474
|
+
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.
|
|
475
|
+
|
|
476
|
+
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.
|
|
497
477
|
|
|
498
|
-
|
|
499
|
-
- When a decision depends on a specific fact you do not yet have, use directory listing, literal search, and precise reading before deciding—even if the directory already shows a matching entry. A directory supplies only titles, summaries, and references, not document bodies. Seeing a character or item's name does not mean you possess the fact that determines the current outcome. Incomplete injected material does not mean the world lacks the fact.
|
|
500
|
-
- If the fact genuinely cannot be read, handle that uncertainty inside the world: a relevant character may have no memory, be unsure, or need to verify it, but established world facts may not be rewritten.
|
|
501
|
-
- If the material still cannot support a conclusion, preserve uncertainty instead of inventing a new fact that would change the adjudication.
|
|
478
|
+
## How much to save and where
|
|
502
479
|
|
|
503
|
-
|
|
480
|
+
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.
|
|
504
481
|
|
|
505
|
-
|
|
482
|
+
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.
|
|
506
483
|
|
|
507
|
-
|
|
484
|
+
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.
|
|
508
485
|
|
|
509
|
-
|
|
486
|
+
## Save timing and consolidation checkpoints
|
|
510
487
|
|
|
511
|
-
|
|
488
|
+
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.
|
|
489
|
+
2. 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.
|
|
490
|
+
3. Other durable outcomes recoverable from player originals and final narrative may be consolidated at event closure or a suitable intermediate point.
|
|
512
491
|
|
|
513
|
-
|
|
514
|
-
- Information that constrains only the immediate scene, involves several objects, and has no single owner belongs in the current situation.
|
|
515
|
-
- Create a separate document for an object only when it must be independently referenced, transferred, or tracked through its lifecycle. Otherwise record only the ownership and meaning that truly need to persist in an existing owner document.
|
|
516
|
-
- When one result changes both durable state and the immediate situation, update the owning document and the current situation separately so each expresses only what it must carry.
|
|
492
|
+
Before a checkpoint, reconcile interactions since the previous checkpoint and outcomes the closing narrative will establish: complete event accounts and current outcomes, update knowledge, processes, commitments and interface values, close expired pending work and remove duplicates. Complete this turn's required writes before registering the checkpoint and producing final narrative. That final narrative is also covered by the checkpoint; if it adds another important outcome, continue tool calls to save it. Registration is not certification of semantic completeness.
|
|
517
493
|
|
|
518
|
-
|
|
494
|
+
## Maintenance and continuity
|
|
519
495
|
|
|
520
|
-
|
|
496
|
+
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.
|
|
521
497
|
|
|
522
|
-
|
|
498
|
+
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.
|
|
523
499
|
|
|
524
|
-
|
|
500
|
+
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.
|
|
525
501
|
|
|
526
|
-
|
|
502
|
+
## Current situation and player views
|
|
527
503
|
|
|
528
|
-
|
|
504
|
+
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.
|
|
529
505
|
|
|
530
|
-
|
|
506
|
+
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.
|
|
531
507
|
`,
|
|
532
508
|
};
|
|
533
509
|
export const defaultPresetHostFiles = defaultPresetHostFilesEn;
|