From c8c38ea3b3ee53e4c2deecfe90e77330b6c561f1 Mon Sep 17 00:00:00 2001 From: thzxx <1440196015@qq.com> Date: Sun, 23 Aug 2026 17:23:16 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E4=B8=89=E6=96=87=E6=A1=A3=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=200.1.27=20+=20=E6=B5=8B=E8=AF=95=202000?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit AGENTS:测试数 68 套件 2000 例(++修正) README:版本沿革补 0.1.27 + 测试规模节 PROJECT_MEMORY:0.1.27 时间线(实测驱动)+ 教训 6d(实测优先于直觉)+ 技术债第 10 条矩阵域追加参纪律 --- AGENTS.md | 2 +- README.md | 4 +++- docs/PROJECT_MEMORY.md | 7 +++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index afc1bd1..48b3b60 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -104,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`(当前 47 套件 1047 例全绿)+ `npm run typecheck` 必须绿(改存储/SQL 后再跑一次冒烟)。 +- 提交前:`npm test`(当前 68 套件 2000 例全绿)+ `npm run typecheck` 必须绿(改存储/SQL 后再跑一次冒烟)。 - 平衡数值集中在 `game/data/` 与 `engine/sim/worldsim-data.ts`(世界循环参数唯一权威),调平衡不改引擎流程。 - 发布产物 `release/`、`out/` 均已 gitignore,勿入库。 diff --git a/README.md b/README.md index 5d0ef5a..f7b0147 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ npm install # 依赖(含 git.metona.cn 私有 registry,token 在用户级 ~/.npmrc) npm install-scripts approve electron esbuild # npm12 首装时必须(Electron 二进制) npm run dev # 开发模式(热更新) -npm test # 引擎测试(43 套件 / 1018 用例,纯 Node 无 GUI) +npm test # 引擎测试(68 套件 / 2000 用例,纯 Node 无 GUI) npm run build # 产物到 out/ npm run package # 打包(Windows 需在 Windows 侧执行) ``` @@ -46,6 +46,7 @@ src/main/ Electron 主进程(app:// 协议 + IPC 存 - **事件闸**:pending 唯一入口 `fire(w,id,priority)`——高优(raid/渡劫/大比)可顶替被占者,被顶替者入队下月兑现;`applyEventChoice` 前置校验防陈旧 Modal 二次结算。 - **插件化**:万物皆是插件(系统/数据包/事件池),三核心插件 protected 常驻;示例见 tests/helpers/examplePlugin.ts。 - **可回放**:种子随机(sfc32,引擎域零 Math.random)+ 快照回放保真(restore 重建内核+回置 rng)。 +- **测试规模**:**68 套件 / 2000 例**(18 个矩阵域:随机序列/世界生成/市场实体化/事件闸/数据表全量/插件 MOD 组合/省级矩阵等——语义真实,无刷水)。 ## 打包产物 @@ -73,5 +74,6 @@ src/main/ Electron 主进程(app:// 协议 + IPC 存 | 0.1.24 | 寰宇初构(世界种子生成器:NPC 4~8 家随机/开局恩怨/era/市场偏移;插件的时轮锚点/模板注入) | | 0.1.25 | 乾坤一统(MOD 系统首版:userData/mods 扫描/解析/安装/持久化 + worldGen 存档永稳修复) | | 0.1.26 | 墨规清辉(MOD 规范范式:MOD_GUIDE/validateMod/灾因注册表 + 页面文本提亮可读性) | +| 0.1.27 | 活水长流(生灭可达化:180 年实测驱动——门槛/era 调制增长/顶峰衰 + 修为↔市场回环 + 世鉴 50/100 年 + 测试 2000) | 详见:`docs/PROJECT_MEMORY.md`(设计哲学与每个迭代的"为什么")。 diff --git a/docs/PROJECT_MEMORY.md b/docs/PROJECT_MEMORY.md index 76bd1c4..eb10172 100644 --- a/docs/PROJECT_MEMORY.md +++ b/docs/PROJECT_MEMORY.md @@ -40,6 +40,7 @@ | 0.1.24 | 寰宇初构 | **世界种子生成器**:NPC 势力数量告别定死(4~8 家随机/开局恩怨/era/市场偏移);插件时轮锚点+模板注入 | | 0.1.25 | 乾坤一统 | **MOD 系统首版**(MOD=插件一等子类,全 JSON 外部包);修 0.1.24 遗留:worldGen 不含 npcs 落档(读档软瘫) | | 0.1.26 | 墨规清辉 | MOD **规范范式**(MOD_GUIDE/validateMod/权威冲突检测);灾因归一化注册表(MOD 灾年入循环);页面提亮(暗因:.dim 3.4:1 对比度) | +| 0.1.27 | 活水长流 | **180 年模拟实测驱动**:生灭零触发/全图 900 打卡——门槛/era 调制/顶峰衰;修为↔市场回环;世鉴;测试规模 1054→**2000** | ## 三、关键架构决策(及为什么) @@ -86,6 +87,7 @@ 6. **每 tick 全量存档**(0.1.20):autosaveEvery 死代码 + saveChronicle O(N) 逐条查询 → 2160 月档每 tick 数千 OPFS。→ 教训:**autosave 节流必须真实接线;冗余表用增量写**。 6b. **确定性世界"记其所生"遗漏**(0.1.24→0.1.25):worldGen 只存摘要不存 NPC defs → 读档后动态家族(n-g-*)npcById 全 miss,贸易/外交/战斗静默降级(软性瘫痪)。→ 教训:**凡"生成"的内容必落档**(worldGen.npcs + 幂等重注册)。 6c. **聚合注册表默认值零漂**(0.1.26 验证):灾因表/词库池改造为聚合时——默认表不动、指纹不漂(金钟罩不红的唯一路径)。→ 教训:**扩展点一律"默认优先、注册追加"**。 +6d. **实测优先于直觉**(0.1.27):180 年模拟推翻了"生灭千秋已实现"的直觉——零触发。→ 教训:**宣称完成的机制必须被长跑实测证伪一次**(同金钟罩盲区教训)。 7. **修改覆盖事故**(爸爸点名):批量 python 替换命中旧文本 / `git checkout` 回滚误伤 / 链式 replace 重复属性。→ 教训:**修改纪律**(原子提交、替换三步断言、禁整文件 checkout、小步绿灯再前进)。 8. **模块单例纪律**:MetonaSqlark 同库同 tab 一次连接(ARIA_LOCKED)→ 单例存取。 @@ -110,7 +112,8 @@ 7. MOD 目录形态仅支持单文件(目录/分包/依赖多个 .cotymod 自动解析留待)。 8. CALAMITY 与 WORLDSTIM 数值表的大规模注入(多 MOD 叠加平衡)未做。 -9. NPC 四家之外的"中期势力轮替"曲线(newborn 频度/覆灭线)仍单参数,可寻参数化。 +9. NPC"中期势力轮替"曲线(newborn 频度/覆灭线)仍单参数,可寻参数化。 +10. **测试规模已达 2000**(68 套件矩阵域),后续新增机制优先在对应矩阵域追加参(seed×组合),避免重开大文件。 ## 八、如何开始修改(给下一个智能体的路径) @@ -120,7 +123,7 @@ 改结构:注册进 clocks/plugins;世界循环参数唯一权威 = worldsim-data.ts → 5. 改 UI:先改 store(revision)再改组件;纯逻辑放 game/engine 可测 → 6. 加测试:双金钟罩不动,新增用例挂 tests/xxx-0.1.x.test.ts(按主题命名) -→ 7. 提交前:npm test(47 套件 1047+)+ typecheck + (GUI 冒烟需 WSLg 在线)+ 更新三份文档 + MOD_GUIDE(触 MOD 时) +→ 7. 提交前:npm test(68 套件 2000+)+ typecheck + (GUI 冒烟需 WSLg 在线)+ 更新三份文档 + MOD_GUIDE(触 MOD 时) ``` **一句话原则**:先复现、再小改、后金钟罩。改坏确定性比改错玩法更危险;改数值去 worldsim-data,改流程去 clocks,改事件去 fire()。