Imported from inkblue123/everything_with_me_idle_RPG (
hjj_work/AGENTS.md). Install upstream withnpx skills add inkblue123/everything_with_me_idle_RPG --skill hjj_work. Copyright stays with the author.
AGENTS.md — 项目协作规则(对 AI 及开发者)
本文件是纯规范层,用于约束「AI 如何在本项目里工作」,不参与运行、不被 import、不影响任何代码逻辑。 请 AI 在开始任何任务前完整阅读本文件,并严格遵守。
0. 最重要的铁律:现有代码是"基线"
现有代码(everything_with_me_idle/ 下的所有 .js / .html / .css)一律视为"基线(baseline)",是只读的。
除非用户明确点名某个具体文件并要求修改,否则 AI 被禁止:
- ❌ 重构、重命名、重新组织任何现有函数 / 类 / 变量
- ❌ 格式化 / 美化现有代码(调整空格、换行、命名风格)
- ❌ "顺手修复"、"顺手优化"、"顺手删掉没用代码"——哪怕看起来很明显
- ❌ 移动文件、合并文件、拆分文件
允许的读操作(Always OK): 读取任何文件来理解游戏逻辑、数据结构、存档格式。读,永远没问题;改,必须有用户点名。
1. 修改代码前必须"先计划,再动手"
任何时候要新增 / 修改代码,AI 必须遵循以下流程,未经用户确认不得落地:
- 读:先读懂相关文件,明确现状。
- 计划:说明「要动哪些文件、每个文件改什么、为什么、会影响哪些地方」。用中文,列出文件路径清单。
- 确认:把计划交给用户,等待用户明确同意后才开始写代码。
- 最小改动:只改计划里列出的文件;不顺手碰其他任何东西。
- 完成后说明:汇报改了哪些文件、每处改了什么,方便用户回滚。
例外:用户明确说的「直接做 / 帮我改 / 去实现」,视为已确认,但仍需遵守"最小改动"原则。
布局样式规则:gap 与 outline(必须确认)
游戏的界面布局遵守「父布局加 gap,子布局加 outline」的总体设定:
- 父容器(flex / grid):如果其直接子元素之间需要视觉分隔,父容器应加
gap(通常是gap: 2px)。否则子元素紧贴时,相邻的outline会叠加成 2 倍厚的边框。 - 子元素:需要形成可见边框盒的元素才加
outline;纯布局包裹层(只做分块定位、不直接承载内容)一般不加。
今后 AI 只要涉及「容器 / 布局样式」的调整(新增或修改容器、改 flex/grid、动 gap/outline),都必须把下面两个问题明确问用户、等确认后再动手:
- 该容器要不要加
gap?加多少? - 该容器要不要加
outline?
不确定时宁可多问,不要擅自决定。这条优先级高于「最小改动」里"不顺手碰"的约束——它是专门针对布局样式的确认要求。
CSS 样式规则:尽量不使用选择器(新增 / 修改时)
游戏项目目前的样式绝大多数都是单纯的 id / class,只有少数的选择器(如 #a > *、.b .c)。为保持一致,AI 在新增 / 修改 CSS 样式时,默认尽量不使用选择器,优先用单纯的 id / class 实现。
但有些样式需求用选择器会简单很多(例如更通用、代码量更少、或能覆盖多个同类元素)。当 AI 判断某需求用选择器明显更简单时,必须把两种方案(用选择器 / 不用选择器)都写清楚给用户,由用户决定选择哪种,不得擅自采用选择器方案。
此规则只约束新增 / 修改的样式,不要求回头清理存量代码里已有的选择器。
2. 新增功能优先"添加新文件",而不是"改动旧文件"
只要条件允许,新功能应优先:
- 新增数据文件(如
js/Data/...)、新增管理类文件,而不是塞进已有大文件里。 - 在
docs/SPEC.md里先写清楚这个功能的目标、范围、验收标准(行为描述),再实现。
3. 何时更新本规范与 SPEC
- 当现有代码发生结构性变化(新增了系统、改了存档结构)时,应同步在
docs/SPEC.md里更新对应描述。 docs/SPEC.md是"现状说明书",只描述已经存在的东西;未实现的功能写进docs/roadmap.md。
4. 技术背景(帮助理解项目)
- 纯前端 Vanilla JavaScript ES Module(
<script type="module">),无框架、无构建依赖(dist/、node_modules/为生成物,勿手动改)。 - 入口:
everything_with_me_idle/html/index.html→js/main.js。 - 游戏主体分三大块:Data(数据/静态库)、GameRun(运行逻辑)、Player(玩家状态)、Dom(界面)。
- 游戏循环:
run_manage.js的game_loop()用setTimeout驱动,每帧依次"更新数据 → 更新画面 → 定时任务"。 - 存档:
localStorage存v0.1键,JSON 序列化后 base64 编码。
5. 给 AI 的提问 / 汇报格式要求
- 回答用户问题时,中文优先(用户习惯中文)。
- 涉及"我要改代码"时,务必先给出文件路径 + 改动内容的计划清单。
- 不确定要不要改时,宁可多问一句,也不要擅自动代码。
6. 版本控制建议
动手改代码前,若项目尚未 git 管理,建议先执行:
git init
git add -A
git commit -m "baseline before spec work"
任何改动都可一键回滚到基线,最大程度保护现有代码。