博客文章
Cocos 游戏项目的 Claude Code 配置实践(2):CLAUDE.md
CLAUDE.md 相当于给 AI 写的项目「入职手册」,写一次永久生效。分享游戏项目里最关键的四类内容:引擎版本约束、框架模块映射表、工作流约束和代码规范、项目关键路径,以及常见误区。
Cocos 游戏项目的 Claude Code 配置实践(2):CLAUDE.md
朋友们大家好,我是 bit老宫 呀,一个拥有12年一线开发经验的CocosCreator游戏开发者,代表作 《比特小队》 《宫爆老奶奶家族篇》
系列文章目录:总览 → [CLAUDE.md] → Rules → Skills → MCP → Hooks → Agents
上一篇聊了为什么游戏开发需要深度定制 Claude Code。这篇从最基础也最重要的一层开始聊:CLAUDE.md。
它是什么
CLAUDE.md 是一个放在项目根目录的 Markdown 文件。每次 Claude Code 启动时自动读取,相当于 AI 永久记住的项目背景。你不用每次对话都重新解释「我用的是 Cocos 3.8.8」「UI用FairyGUI」「核心战斗部分使用ECS架构」——写一次,永久生效。
你可以把它理解为给 AI 写的「入职手册」。新员工入职第一天会收到一份项目文档,告诉他项目用什么技术栈、遵循什么规范、有哪些约定。CLAUDE.md 干的就是这件事。
游戏项目里写什么
经过大半年的迭代,我目前觉得三类内容最关键,分享一下我的做法。
一、引擎版本约束
这是最容易被忽略、却最重要的一条。
AI 的训练数据混杂了各版本的 API。Cocos Creator 经历了 2.x 到 3.x 的大版本跨越,API 变化巨大。不明确告诉 AI 你用哪个版本,它很可能写出这样的代码:
// 错误:Cocos 2.x 的写法,3.8.8 里早就不存在了
cc.loader.loadRes("hero", cc.SpriteFrame, (err, asset) => { ... });
// 正确:Cocos 3.x 的写法
resources.load("hero", SpriteFrame, (err, asset) => { ... });
所以我的 CLAUDE.md 里第一条就是:
## 项目概述
基于 Cocos Creator 3.8.8 的 2D 射击游戏,使用 [bit-framework](https://github.com/gongxh0901/bit-framework) 框架开发。
核心架构:ECS(实体组件系统)处理游戏战斗逻辑 + FGUI(FairyGUI)构建 UI 界面。
- 严格使用 Cocos Creator 3.8.8 API
- 禁止使用废弃 API:cc.loader、cc.Class、cc.director.getScheduler 旧写法
短短三行,效果立竿见影。加上之后,AI 再也没写出过废弃 API。
二、框架模块映射表
游戏项目往往有自己的框架层。我用的是自研的 bit-framework,包含 UI 管理、ECS 架构、事件通信、资源加载等模块。这些东西 Claude 的训练数据里压根没有。
不告诉它你封装了什么,AI 就会「自由发挥」——自己发明一套事件系统、自己写一个资源管理器,和你项目里的代码完全对不上。
解决方案是一张映射表:
框架模块
| 需求 | 使用模块 | 规则文件 |
|———|———|———|
| UI 窗口 | bit-ui → Window 基类 + @uiclass 装饰器 | .claude/rules/ui-module.md |
| FGUI 工作流 | FairyGUI 节点结构读取和代码生成 | .claude/rules/fgui-workflow.md |
| ECS 工作流 | 组件/系统开发流程 | .claude/rules/ecs-workflow.md |
| 事件通信 | bit-event → GlobalEvent | .claude/rules/event-module.md |
| 定时器/平台 | bit-core → GlobalTimer / Platform / Screen | .claude/rules/core-module.md |
| 资源加载 | bit-assets → AssetLoader / AssetPool | .claude/rules/assets-module.md |
| 网络请求 | bit-net → HttpManager / Socket | .claude/rules/net-module.md |
| 行为树AI | bit-behaviortree → BehaviorTree | .claude/rules/behaviortree-module.md |
| 碰撞检测 | bit-quadtree → QuadTree | .claude/rules/quadtree-module.md |
这张表的价值不只是告诉 AI 「有哪些模块」,更重要的是第三列——指向对应的 Rules 文件。AI 知道写 ECS 代码时去读 ecs-workflow.md,写 UI 时去读 ui-module.md,不用你每次提醒。
三、工作流约束和代码规范
这部分告诉 AI「怎么干活」。我的项目里有几条核心约束:
## 代码规范
- 禁止跨模块直接调用,事件通信必须通过 GlobalEvent
- 禁止 `any` 类型,必须定义明确类型
- UI 窗口必须继承 Window 基类,使用 @uiclass 装饰器注册
- 新建窗口/组件/系统时,使用对应的 Skill 命令
## 工作流执行标准
处理任何中大型需求时,强制遵循以下步骤:
1. Plan (计划): 输出修改文件列表和核心思路
2. Wait (等待): 询问用户确认
3. Execute (执行): 获得批准后执行
工作流约束尤其重要。不加这条,AI 接到需求就直接开写,写完你发现思路不对,改起来代价更大。强制它「先计划后执行」,相当于给每个任务加了一道 code review。
四、项目关键路径
最后别忘了告诉 AI 项目的目录结构:
项目关键路径
| 路径 | 说明 |
|——|——|
| assets/script/ | 游戏脚本代码 |
| assets/script/header.ts | 统一导出:ASSETS, CORE, ecs, FGUI, QT, UI |
| assets/script/ecs/ | ECS 组件和系统 |
| FguiCreator3.8/assets/ | FGUI 工程(按包分目录,含 XML 节点定义) |
| extensions-config/entity/ | 实体配置 JSON |
这张表让 AI 知道代码在哪、配置在哪、FGUI 工程在哪——不用每次都 ls 半天找文件。
效果对比
配置前的对话:
我:帮我写一个加载英雄资源的函数 AI:好的,我来用 cc.loader 加载…… 我:不对,我们用的是 3.8.8 AI:抱歉,用 resources.load…… 我:不对,我们项目有 AssetLoader AI:请问 AssetLoader 的 API 是什么样的? 我:(贴一大段文档……)
配置后的对话:
我:帮我写一个加载英雄资源的函数 AI:(直接用 AssetLoader,API 正确,代码规范符合项目约定)
从「每次解释 10 分钟」到「一句话搞定」,这就是 CLAUDE.md 的价值。
常见误区
误区一:写太多
CLAUDE.md 不是百科全书。我见过有人把整个框架的 API 文档都贴进去,结果文件几千行,AI 反而因为信息过载表现更差。CLAUDE.md 应该只写「全局性」的规范和约定,细分领域的规则拆到 Rules 里(下一篇详细讲)。
误区二:写太少
只写一行「使用 Cocos Creator 3.8.8」远远不够。引擎版本只是最基础的约束,框架模块、代码规范、目录结构这些信息 AI 同样需要。
误区三:写完不维护
项目在演进,CLAUDE.md 也要跟着更新。新增了一个框架模块、改了目录结构、加了新的 Skill——及时同步到 CLAUDE.md 里。过期的信息比没有信息更糟糕。
CLAUDE.MD
控制在 50-100 行以内,超过这个范围就该考虑把一些内容拆到 Rules 文件里 或者 精简描述
可以使用 /context 命令查看 Claude Code 当前的上下文
下一篇
CLAUDE.md 解决了「AI 不懂项目」的问题,但随着规范越写越多,一个文件装不下了。下一篇聊 Rules——按文件路径动态注入规则,让 AI 在不同场景自动加载不同的规范。