docs: 三文档同步至 0.1.26

AGENTS.md:金钟罩注释修正(0.1.21→0.1.24 基线,25/26 零漂注明)+ MOD 红线小节
+ 架构树补 worldgen/modSchema/modManager + 世界模型补(灾因聚合/家族生灭/世界种子)
+ 测试数 47/1047

README.md:版本沿革补 0.1.22-0.1.26(灯下春秋/生灭千秋/寰宇初构/乾坤一统/墨规清辉)
+ MOD_GUIDE 链接

PROJECT_MEMORY.md:时间线补 5 个迭代「为什么」+ 新决策(世界种子独立 rng/MOD=插件一等子类/
落档则永稳纪律)+ 坑教训两条(生成必落档/聚合默认零漂)+ 技术债补 3 条 + 修改路径更新
This commit is contained in:
2026-08-23 16:44:27 +08:00
parent ba9766e152
commit d941df5c3d
3 changed files with 36 additions and 8 deletions
+8 -4
View File
@@ -41,8 +41,8 @@ src/renderer/game/ 纯 TS 引擎(无 React/DOMvitest 直
engine/kernel/ Kernel.ts(三合一:Clock+Rng+BUS 转发)+ clock/rng/plugin/names/format/guide/urgency/timesense
engine/runtime/ World.ts(大对象+normalize+bus 转发)/clocks.ts(时轮注册)/ApiFacade.tsGameFacade
Systems/production/aging/cultivation/missions/events/diplomacy/marriage/tribulation/tournament/lifecycle/combat
capabilities.ts12 能力卡)/pluginManager.ts/plugin-bootstrap.ts/creation.ts/pcgen.ts
engine/sim/ 世界自进化: WorldSim.ts / worldsim-data.ts(数值与常量唯一权威)/Market.ts / worldsim-brief.ts
capabilities.ts12 能力卡)/pluginManager.ts/plugin-bootstrap.ts/modSchema.tsMOD 范式)/modManager.tsMOD→插件)/creation.ts/pcgen.ts
engine/sim/ 世界自进化: WorldSim.ts / worldsim-data.ts(数值与常量唯一权威)/worldgen.ts(世界种子生成器)/Market.ts / worldsim-brief.ts
engine/narrative/ 族谱/传记/定鼎/年轴/百年报告
data/ balance 表 + DataPackRegistryregistry.ts pack() 单源;PILL_RECIPES/FORGE_RECIPES/ERA_CONF 等)
storage/ db(MetonaSqlark 单例)/slots(槽+快照+exportEnvelope)/migrate(CURRENT_SCHEMA=2,即 normalize 即迁移)
@@ -59,8 +59,9 @@ src/main/ Electron 主进程(app:// 协议 + IPC 存
- **事件闸**:pending 事件唯一写入入口是 `events.ts``fire(w, id, priority)`(0=普通遇占放弃 / 1=高优 raid·渡劫·大比可顶替被占者,被顶替者入 `eventQueue` 下月兑现不丢失)。**禁止直写 `state.pendingEvent`**(渡劫/破境丹均已改走 fire)。`applyEventChoice` 前置校验 `pendingEvent===id`(陈旧 Modal 二次结算防线)。
- **特效/音效语义出口**`WorldEventBus.onFx?(em: FxEmit)` + `World.emitFx(kind, source?)`(零 rng 消耗);UI 的 `makeBus` 桥接 FxGate`onLog kind` 音效映射保留作兜底。
- **插件架构**0.1.8 起,路径已迁 engine/runtime|kernel):`kernel/plugin.ts` 协议、`runtime/pluginManager.ts` 安装管线(依赖校验/异常回滚/追踪型上下文——注销时钩子全摘)、`plugin-bootstrap.ts` 三核心插件(core-systems/core-data/core-events protected)。事件多池 `world.eventPools`**findEvent 必须带 world 参数查池**。能力卡 12 张经 `viaCap` 注册;tournament/tribulation/apprentice/season 四卡各自内部检查 `w.sysEnabled`(无独立钩子)。
- **MOD 红线(0.1.26 规范)**MOD 只含 JSON 零脚本(`docs/MOD_GUIDE.md`);**禁止新增 rng 消耗**(全局随机序列);不改核心时序(扩展走五口:事件池/模板/词库/灾因/配方);`modPreflight`+`validateMod` 先行(id 冲突用 `findEvent` 权威检测);MOD 只影响**新开档**世界(老档世界变形成档记录);MOD 状态随 `state.plugins` 持久化(对应 `worldGen.npcs` 落档保证读档永稳)。
- **门面**`runtime/ApiFacade.ts` GameFacadeact 24 项/query 6 类/subscribe 退订协议/about);**UI 面板事实走 world 直调**(act 为测试/自动化通道),`actDirect` 与 ACT_CATALOG 语义对齐(0.1.20 补齐全 24 项);store 的 `facade` 必须在 openState/startNewGame 赋值。
- **金钟罩(双基线)**`tests/clock.test.ts``GOLDEN`(直调冻结世界)+ `GOLDEN_RESOLVED`(自动 resolve 长跑"现实"世界),各 3 seed × 三档月数(560/1200/2160)共 18 值。当前为 **0.1.21 基线**0.1.22 纯 UI 修复未动引擎,基线不变;见注释)。指纹 `tests/fingerprint.helper.ts` 含全世界轴(era/stance/prosperity/relationsWithOthers/calamity/pendingEvent/eventQueue/worldAnnals)。**有意变更时序/数值时**:指纹一并重算并在注释注明原因。
- **金钟罩(双基线)**`tests/clock.test.ts``GOLDEN`(直调冻结世界)+ `GOLDEN_RESOLVED`(自动 resolve 长跑"现实"世界),各 3 seed × 三档月数(560/1200/2160)共 18 值。当前为 **0.1.24 基线**0.1.25/0.1.26 世界生成默认池不变、灾因默认表不变 → 基线零漂,见注释)。指纹 `tests/fingerprint.helper.ts` 含全世界轴(era/stance/prosperity/relationsWithOthers/calamity/pendingEvent/eventQueue/worldAnnals/worldGen 摘要)。**有意变更时序/数值时**:指纹一并重算并在注释注明原因。
## 世界自演进模型(0.1.14 sim/ 层,改数值勿动流程)
@@ -68,6 +69,9 @@ src/main/ Electron 主进程(app:// 协议 + IPC 存
- **世纪弧 era**:盛世/平世/乱世/末法,`ERA_CONF`(灾年概率/供需/拍卖/tideBias+ `ERA_DURA`(续航窗口);flow 权重和 <1(留白=延续档);**转移权重受世界温度调制**(`worldTemperature()` + `tempEraK`)——时代由天下兴衰孕育、又重塑天下。
- **NPC 定力**`npcDyn.prosperity/stance/relationsWithOthers`——姿态(守成/扩张/隐忍/结盟)年首重估,调制 raid/互攻/贸量/外交;互攻按 power 加权 + 打残广播;玩家劫掠/结盟写关系网(蝴蝶效应)。
- **灾年**:持续 6 月(`calamityLeft`),减产乘子(CALAMITY_FAMILY+ 疫病/兽潮体感 + NPC 贸易 ×0.7 + 群雄相噬 ×1.5;世界侧 `CALAMITY_EFFECT` 冲击池。
- **灾年** 补充:灾因注册表已聚合(`calamityNames/calamityFamilyOf/calamityEffectOf` + `addCalamity`——默认表不变,MOD/插件可注入灾因全链生效)。
- **家族生灭**`npcDyn.declineYears`power<58 且 景气<38 连续 8 年)→ 覆灭(最强邻分食+史官广播);家族数 < 开局目标(4~8)年首新贵补位(`greatNewbornChance`,乱世×2)。
- **世界种子**0.1.24):`sim/worldgen.ts` `generateWorld(seed)`——NPC 4~8 家随机/初始关系网(1-2 世仇+1 盟友)/开局 era/市场 ±15% 偏移;**独立派生 rng**`seed::worldgen`World.rng 主序列零消耗);`state.worldGen` 摘要落档(含 npcs defs——读档幂等重注册,存档世界永稳)。
- **天下史表**`worldSim.worldAnnals[]`(十年一鉴 80 页留档,免 newsFeed 裁剪丢失)。
## MetonaSqlark@metona-team/metona-sqlark 0.7.4)陷阱
@@ -100,6 +104,6 @@ src/main/ Electron 主进程(app:// 协议 + IPC 存
5. **高危文件白名单**world.ts / events.ts / store.ts / styles.css / cultivation.ts / **WorldSim.ts / worldsim-data.ts**)改动后必须 `git diff --stat` 核对改动面与预期一致。
6. 每次迭代收尾:`git status` 应干净 + `git log --oneline` 确认每步都有提交记录;凡 "git stash/checkout/rm" 类命令,执行前后都 `git status` 留痕。
- 提交前:`npm test`(当前 43 套件 1018 例全绿)+ `npm run typecheck` 必须绿(改存储/SQL 后再跑一次冒烟)。
- 提交前:`npm test`(当前 47 套件 1047 例全绿)+ `npm run typecheck` 必须绿(改存储/SQL 后再跑一次冒烟)。
- 平衡数值集中在 `game/data/``engine/sim/worldsim-data.ts`(世界循环参数唯一权威),调平衡不改引擎流程。
- 发布产物 `release/``out/` 均已 gitignore,勿入库。