Files
ChronicleOfTheImmortalClan/docs/PROJECT_MEMORY.md
T
thzxx 2528226a9f docs: 修改纪律(防覆盖)写入 AGENTS + 项目记忆
- AGENTS.md 新增「修改纪律」章:改动前 git status、替换三步断言、禁止 git checkout 整文件回滚、
  小步快跑先绿再进、高危文件白名单 diff 核对、迭代收尾 status/log 留痕
- PROJECT_MEMORY 补第 6 记:修改覆盖事故教训(爸爸点名:自己改代码把改过的覆盖了)
- 明确:上一轮 c52ecff 全量提交无丢失;本纪律立即生效
2026-08-23 13:08:10 +08:00

98 lines
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 项目记忆 · Chronicle of the Immortal Clan
> 这份文档是**项目叙事记忆**:记录设计哲学、关键决策、踩过的坑、平衡教训。
> 面向"下一个将要改这份代码的智能体/开发者"——先读它再动手,能避开九成弯路。
> 与 AGENTS.md 分工:AGENTS 记**技术红线**(怎么改是安全的),本文记**为什么是现在这样**(设计意图)。
---
## 一、这是什么
一款**修仙家族传承模拟器**:玩家扮演"家族意志",经营一族数代兴衰——修炼突破、经营产出、秘境探索、四邻外交、婚丧嫁娶、百年定鼎。
- **情感价值主张**:不是"养一个角色变强",是"看一家子走完一程"——后人翻族谱/史书/碑录时的回望感。
- **玩法落点**,按重要性排序:
1. 世代血脉(婚育/继嗣/谱系)——传承是主叙事;
2. 修炼纵深(境界/功法/悟道/渡劫)——成长是爽点;
3. 经营与外交(建筑/贸易/联姻/劫掠)——决策供给;
4. 叙事编织(编年史/列传/百年报告/定鼎)——情绪收束。
## 二、版本时间线(每迭代的"为什么")
| 版本 | 主题 | 当时为什么做 |
|---|---|---|
| 0.1.0 | 核心循环 | 把"修仙+家族+经营+战斗"四系统全部立起来,形成可玩闭环 |
| 0.1.1 | 养成闭环+存档安全 | 指婚/装备/祭祖/回档:管理自主度决定模拟器粘性 |
| 0.1.2 | 宗族气韵 | 职事/悟道/谱系/碑录:让"传承"有可视载体 |
| 0.1.3 | 深度审计 | 刚做完新系统必有一批缺陷,上线前清毒 |
| 0.1.4 | 百年定局 | 模拟器缺"收束":四维评分+十二称号+春秋原 |
| 0.1.5 | 人物志 | 成员同质化:志向/渡劫/列传/契合让"人"有戏 |
| 0.1.6 | 时轮与造化 | 时间与随机从"散装"走向"统一"GameClock/RngHub)——**架构地基** |
| 0.1.7 | 仙门之钥 | 门面/能力注册表/数据包:对外暴露与可拔插 |
| 0.1.8 | 万物皆是插件 | 把全部系统统一进插件协议(Manifest/依赖/卸载/追踪型钩子) |
| 0.1.9 | 百年报告与发布 | 情感复盘(报告)+工程收口(迁移管线/发布哨兵) |
| 0.1.10 | 长线决断 | **审计发现全灭崩溃**:修炼太慢+寿元短+渡劫误压——数值重建 |
| 0.1.11 | 收官打磨 | 二次审计(引擎8+UI11缺陷歼灭)+ UX 三件套(警讯/引导/格式化) |
## 三、关键架构决策(及为什么)
### 1. 纯 TS 引擎 + 确定性种子流
- `src/renderer/game/` 无 React/DOM importvitest 直测。
- sfc32 随机种,同 seed 全程重放;**金钟罩**=3 seed×3 档时长(47/100/180年)指纹固化。
- **为什么**:模拟器平衡调参需要"可复现";金钟罩把"改坏了确定性"变成"一秒red"。
### 2. GameClock 七相位
- 月度 phaseproduction→aging→cultivation→missions→events→diplomacy→epilogue
- 年首三钩子:婚配→岁贡→族簿。新系统=注册一行,禁手改 `advanceMonth`
- **为什么**0.1.6 前每个 tick 体内散着调用,加系统必乱序→破坏随机→金钟罩红。
### 3. 插件协议(0.1.8
- 万物皆是插件:系统/数据包/事件池统一 Manifest;`engine/pluginManager.ts` 安装管线(依赖校验/异常回滚/追踪型上下文)。
- 三核心插件(Systems/Data/Eventsprotected 常驻。
- **为什么**:玩法内容增量的"可插拔出口";事件多池让第三方能注入事件。
### 4. 存档分层
- metona-sqlark 在 rendererOPFS+ {Slots} {迁移链}**v1→v2 迁移管线**0.1.9)。
- **为什么**:浏览器持久化天生平台限制;预置迁移链防未来表变炸档。
### 5. UI 惯例
- zustand `revision++` 是刷新惯例;`facade` 必须 openState/startNewGame 赋值;
- 警讯徽章(urgency)与引导任务(guide)做成 engine 侧纯函数,UI 只渲染。
## 四、踩过的坑(高价值教训)
1. **金钟罩盲区**:560 月(47 年)只能听见"中期",看不见"晚期"——0.1.10 之前全灭崩溃藏在这里。→ 教训:**确定性验证要覆盖寿命尺度**(现在三档到 180 年)。
2. **渡劫误压制**eventRoll 一处"自动压制"让 qi8→筑基永不可达(境界峰恒炼气)。→ 教训:**自动回退/悬空逻辑必须单测"有人一直不响应"**。
3. **大比缺 once**:整年刷 12 场,收益通胀。→ 教训:周期性动态事件**生来就要考虑 once/年度封缄**。
4. **flag 键膨胀**auction-{year} 等永不清理,180 年挂 400 键。→ 教训:**任何按年份生成的键都要有剪枝数**(现在 3 年)。
5. **UI 层"状态反直觉"**:死者显示"闭关/养伤"——直觉信任崩塌。→ 教训:**UI 状态必须与领域语义严格对齐**(dead 分支显式)。
6. **修改覆盖事故**(爸爸点名):批量 python 替换命中旧文本 / `git checkout` 回滚误伤已修复文件 / 链式 replace 生成重复属性——多起"改着改着把之前修复覆盖了"。→ 教训:**修改纪律**——原子提交、替换三步断言、禁整文件 checkout、小步绿灯再前进(详见 AGENTS.md「修改纪律」)。
6. **模块单例纪律**MetonaSqlark 同库同 tab 一次连接(ARIA_LOCKED);spouse 竞态防了。→ 教训:**存储/稀罕资源一律单例**。
## 五、平衡哲学(玩起来正确的普适原则)
- **修炼快感 > 真实性**:宁可让"凡人百岁筑基"变成"30岁炼气、50岁筑基、百岁金丹",不要按修真文教条拉长。
- **世代窗口**:关键体验"每代 25-30 年",一回合 1 月,推两百步就能看到"代际更替"。
- **失败必须有出口**:渡劫失败只跌伤不太狠(重伤/跌落为主,陨落限高阶);事件悬置自动压制不锁死。
- **漏斗要"花钱有去处"**:后期灵石通胀是 0.1.10 才加拍卖来回收——任何资源曲线都要有消耗侧。
## 六、已知技术债(诚实清单)
1. `realms.ts``expBase/expGrowth/maxRealmExp` 曲线未参与计算(历史摆设,勿信勿用)。
2. GameFacade `act` 目录部分 act 只走 `actDirect` fallback(少 4 项),若未来全走 facade 需补齐 `member.meditate` 等。
3. `npc.power` 目前纯展示(不参与战斗结算)。
4. 引导任务(guide.ts)只做 UI 条,钩子目标点不完(未联动高亮/自动转跳——是"提示"不是"强制")。
5. 行列 flag `family.flag` 仍在长线漂移;`state.missions`/`missionIds` 只增不减(未剪枝)。
## 七、如何开始修改(给下一个智能体的路径)
```
1. 读 AGENTS.md(红线)→ 2. 读本文件(意图)→ 3. 跑 npm test & typecheck 确认绿
→ 4. 改引擎:先改数据(data/)再改逻辑,小步跑金钟罩;改结构:注册进 clocks/plugins
→ 5. 改 UI:先改 storerevision)再改组件;纯逻辑放 game/core 可测
→ 6. 加测试:金钟罩三档不动,新增用例挂 tests/audit-fix-0.1.x.test.ts
→ 7. 提交前:npm test + typecheck + GUI 冒烟需 WSLg 在线)+ 更新 README/PROJECT_MEMORY/AGENTS
```
**一句话原则**:先复现、再小改、后金钟罩。改坏确定性比改错玩法更危险。