if/claude.md

78 lines
3.5 KiB
Markdown
Raw Permalink 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.

# Claude Project Memory
## 1. 项目定位(长期不变)
- 项目类型魔塔Like固定地图探索 + 数值驱动 + 剧情导向 + 解谜)。
- 目标体量:按原定体量推进,不主动缩减世界观与章节目标。
- 开发模式:代码主力由 AI 完成;人工主要负责美工、地图、剧情、体验验收与方向裁决。
- 当前基础:塔的基础结构已完成,支持正常战斗与可视化地图修改。
## 2. 当前开发优先级(默认顺序)
1. 地图回合时轴Map Turn剩余接线与稳定性。
2. 回档系统(状态继承、存读档一致性)。
3. 敌人可相互战斗与伤害。
4. 玩家多角色(队友/阵容)系统。
> 未经明确指令,不要跳级并行实现高风险模块。
## 3. 规则来源与冲突处理
- 机制规则唯一口径:`docs/map-turn-spec.md`
- 代码落地状态台账:`docs/map-turn-implementation-status.md`
- 协作与开发边界:本文件 `claude.md`
- 若规则冲突:先列出冲突点与影响,不擅自改规则,等待用户裁决。
## 4. 开发硬约束(来自 DEVELOPMENT_RULES 共识)
1. 新功能默认写在 `project/plugins.js`
2. 优先使用 `_docs/api.md` 中的样板接口实现需求。
3. 所有绘制基于 `core.createCanvas` 体系。
4. 所有异步流程基于 `core.insertAction`(含 function/async 事件流)。
5. 使用非样板接口时,必须就地注释:用途、原因、风险。
6. 不直接改动 `libs/``main.js` 等核心底层文件,除非用户明确授权。
7. 不直接破坏核心运行态结构(如整体替换 `core.status` / `core.material`)。
## 5. Map Turn 专项原则(必须遵守)
- 单一时间总线:时间推进统一走 `consumeTime(deltaTime, reason)`
- 单 tick 语义:`deltaTime = n` 必须触发恰好 `n``advanceMapTurnOne`
- 规则优先级:死亡流程优先、战后成功再扣层、状态技能 `timeCost=0` 不推进时间。
- 耗时规则:`battleFinalTimeCost = max(baseBattleTimeCost, statusBattleTimeCostMax)`。
- 性能底线:每 tick 禁止全图扫描;敌方调度仅遍历 `activeEnemiesByFloor` 缓存。
- 存档一致:`flags.mapTurnState` 与 `flags.skillState` 保持可序列化并可恢复。
- 缓存策略:`activeEnemiesByFloor` 作为派生缓存,读档或换层后允许重建。
## 6. AI 输出与执行格式
每次任务默认按以下顺序输出:
1. 先给结论(本次做什么/不做什么)。
2. 给改动范围(文件与模块)。
3. 对齐到规则(引用 `map-turn-spec.md` / 台账条目)。
4. 给最小验证步骤(可复现、可回归)。
5. 若有风险,给 1-2 条可选方案并标出推荐项。
## 7. 验收偏好
- 优先级:正确性与可验证性 > 写法优雅。
- 关键机制必须可回归验证(如 `consumeTime(3)` 的 3 tick 断言、战后扣层、读档连续、`timeCost=0` 过滤)。
- 遇到不确定行为,先加可观测日志/断言,再做进一步改动。
## 8. Git 与协作习惯
- 已使用 Git改动应保持小步、可读、可回退。
- 未经明确要求,不做破坏性历史操作(如强推、硬重置)。
- 不覆盖与当前任务无关的既有改动。
## 9. 调用短语约定
当用户说“按 claude 执行”时AI 必须默认执行:
1. 先复述目标与当前阶段优先级。
2. 明确本次任务对应哪个优先级模块。
3. 检查是否违反第 4、5 节约束。
4. 输出最小可执行步骤,再开始实现。
当用户说“先讨论不改代码”时AI 只给方案,不做实现。