From 2528226a9f62a149a14b8b324cc3aeb8a348aa9a Mon Sep 17 00:00:00 2001 From: thzxx <1440196015@qq.com> Date: Sun, 23 Aug 2026 13:08:10 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E4=BF=AE=E6=94=B9=E7=BA=AA=E5=BE=8B?= =?UTF-8?q?=EF=BC=88=E9=98=B2=E8=A6=86=E7=9B=96=EF=BC=89=E5=86=99=E5=85=A5?= =?UTF-8?q?=20AGENTS=20+=20=E9=A1=B9=E7=9B=AE=E8=AE=B0=E5=BF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AGENTS.md 新增「修改纪律」章:改动前 git status、替换三步断言、禁止 git checkout 整文件回滚、 小步快跑先绿再进、高危文件白名单 diff 核对、迭代收尾 status/log 留痕 - PROJECT_MEMORY 补第 6 记:修改覆盖事故教训(爸爸点名:自己改代码把改过的覆盖了) - 明确:上一轮 c52ecff 全量提交无丢失;本纪律立即生效 --- AGENTS.md | 12 +++++++++++- docs/PROJECT_MEMORY.md | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/AGENTS.md b/AGENTS.md index 400b8c0..3743742 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -66,7 +66,17 @@ SMOKE_TEST=1 SMOKE_SHOTS_DIR=/tmp/opencode/shots npx electron ... # 附 - 周期事件优先级:命运(百年/飞升)> 大比 > 传薪 > 拍卖 > 岁祷 > 回声;大比有 `once`,一年一届。 - `family.flag` 年份键(auction-/prayerDone-/echoDone-/recruitDone-)每 tick 剪 3 年前旧键。 -## 工作流约定 +## 修改纪律(防覆盖——血泪教训,务必遵守) + +**背景**:曾多次出现「大改后我之前的修复被覆盖」:① 批量 python 替换命中旧文本、② `git checkout` 回滚临时参数时误恢复了已修复文件、③ 编辑器链式 replace 生成重复属性/孤行。均靠 tsc/vitest 事后兜住,但应防于未然。 + +**硬性规则**: +1. **改动前**:`git status` 确认工作区干净(或先提交当前成果,原子提交,一功一提交)。 +2. **改动中**:批量替换一律用「先 assert 旧文本存在 → 替换 → 再全局 grep 断言新文本唯一」三步;禁止无检查的 sed/python 盲替。 +3. **禁止 `git checkout -- ` / 整文件回滚**(这是历史事故元凶)。确需回滚时:`git show HEAD: > /tmp/bak` 手动 diff 恢复,恢复后跑全量测试确认无伤。 +4. **优先小步快跑**:每个功能块改完立即 `npm test`(引擎)或 `tsc`(UI 类型),绿了再动下一处——绝不在错误状态上加新修改。 +5. **高危文件白名单**(world.ts / events.ts / store.ts / styles.css / cultivation.ts)改动后必须 `git diff --stat` 核对改动面与预期一致(±文件行数应与你改的块吻合)。 +6. 每次迭代收尾:`git status` 应干净 + `git log --oneline` 确认每步都有提交记录;凡 "git stash/checkout/rm" 类命令,执行前后都 `git status` 留痕。 - 提交前:`npm test` + `npm run typecheck` 必须绿(改存储/SQL 后再跑一次冒烟)。 - 平衡数值集中在 `game/data/`(realms/pacing/buildings/events...),调平衡不改引擎流程。 diff --git a/docs/PROJECT_MEMORY.md b/docs/PROJECT_MEMORY.md index e521c79..e1c94e6 100644 --- a/docs/PROJECT_MEMORY.md +++ b/docs/PROJECT_MEMORY.md @@ -66,6 +66,7 @@ 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 竞态防了。→ 教训:**存储/稀罕资源一律单例**。 ## 五、平衡哲学(玩起来正确的普适原则)