前置说明: 本人使用claude code + cc-switch + vs code
问题一、claude code接入项目后,初始化需要执行的命令
一、首次打开项目先执行(聊天框斜杠命令)
1. 查看初始上下文负载,判断项目体量
plaintext
/context
作用:查看当前加载了多少文件、token 占用,提前预判会不会出现缓存爆炸。
2. 生成项目认知文件(核心,避免乱读文件、跑偏业务)
plaintext
/init
该命令会自动分析项目结构、技术栈、模块用途,在项目根生成 CLAUDE.md。
建议手动打开
CLAUDE.md补充约束规则(限制自动扫描全工程,解决你之前 cache read 过高问题),模板追加到文件末尾:
markdown
## 读取约束规则
1. 禁止自动遍历加载整个项目所有代码,仅当用户明确指定文件路径时再读取源码;
2. 只在处理当前需求时加载对应模块的代码,无关包、配置一律不主动读取;
3. 测试场景只加载 test 下对应测试类,不要加载全部测试用例;
4. 废弃注解 @MockBean 允许使用,无需强制替换,仅做提示即可。
3. 可选:重置空白会话,杜绝旧会话上下文串扰
如果这个项目之前打开过、残留旧会话缓存:
plaintext
/clear
清空当前会话内存上下文,新项目全新开始。
4. 开启思考可视化(方便排查 Claude 读取了哪些文件)
快捷键:Ctrl+O开启后可以实时看到 Claude 的推理过程、读取了哪些文件,后续出现缓存过高时用来定位根源。
二、初始化完成后的基础规范命令(日常配套)
- 每次开始新独立需求前
plaintext
/compact
压缩上一轮对话,清理无用缓存,只保留项目基础认知。2. 切换完全无关业务模块时
plaintext
/clear
彻底重置上下文。3. 想并行两套方案不互相污染
plaintext
/branch 新需求名称
三、进阶初始化:限制 Claude 自动索引全项目(解决大量 cache read)
方式 1:通过 .claudeignore 忽略不需要参与分析的目录
在项目根新建 .claudeignore,用法和 .gitignore 一致,写入不需要 Claude 读取的目录:
plaintext
# 忽略打包产物
target/
build/
dist/
# 忽略前端静态资源
static/
assets/
# 忽略文档、配置备份
docs/
*.bak
# 忽略第三方sdk、本地缓存
node_modules/
写入后 Claude 永远不会主动读取这些目录,从源头减少缓存。
方式 2:初始化阶段手动下发约束指令
首次接入项目执行完 /init 后发送这段话:
plaintext
后续行为约束:
1. 非我主动要求,禁止主动扫描、读取项目任意Java、yml配置文件;
2. 分析代码仅限我发给你的文件路径;
3. 遇到废弃forRemoval=true的注解只黄色警告提醒,不要判定为错误。
四、排查初始化异常的诊断命令(项目加载错乱时用)
/doctor:诊断项目加载状态、文件读取策略、缓存占用异常/debug:查看初始化阶段读取了哪些文件、缓存读写明细/ls-sessions:查看当前项目绑定了多少历史会话,清理无用旧会话
五、完整标准初始化顺序(照着一步步执行即可)
- 打开项目,打开 Claude Code 聊天面板
- 执行
/clear清空可能残留的外来上下文 - 执行
/init自动生成CLAUDE.md - 编辑
CLAUDE.md加上「文件读取限制规则」 - 新建
.claudeignore屏蔽无用目录 Ctrl+O开启思考详情展示/context确认初始上下文负载正常- 正式开始编写需求
六、针对你当前场景额外初始化配置(SpringBoot 测试场景)
在 CLAUDE.md 追加测试专属规则,适配你 @MockBean 废弃爆红的问题:
markdown
## 测试编码规则
1. SpringBoot 3.5 测试中允许使用 @MockBean,仅提醒废弃,不要判定错误;
2. 如需重构Mock逻辑,优先推荐替换为 @MockitoBean;
3. 单元测试只加载被测试的类 + Mock依赖,不加载整个Spring容器全部Bean。
七、各个命令作用区分
表格
| 命令 | 初始化阶段用途 |
|---|---|
/init |
生成项目说明书 CLAUDE.md,让 AI 看懂项目架构 |
/clear |
清空外来上下文,新项目纯净初始化 |
/compact |
初始化收尾精简初次分析的冗余内容 |
/context |
检查初始化后的缓存负载是否正常 |
/branch |
初始化多个分支用来并行开发不同功能 |
问题二、完整版 CLAUDE.md + .claudeignore 模板,适配 SpringBoot Maven 项目(仅供参考,按项目需求修改)
一、CLAUDE.md 完整模板(SpringBoot Maven 项目,直接放进项目根目录)
markdown
# 项目全局说明
## 基础信息
- 项目框架:SpringBoot 3.5.x + Maven
- 编程语言:Java 21
- 构建工具:Maven
- 测试框架:JUnit 5 + Mockito + SpringBootTest
- 核心模块:业务服务层、向量Embedding、PgVector向量库、单元测试模块
## 项目结构约定
1. src/main/java:业务正式代码
2. src/test/java:单元测试、集成测试代码
3. src/main/resources:配置文件
4. target:编译产物,无需读取
## 强制读取约束(解决缓存 Cache Read 过高核心规则)
1. **禁止自动全盘扫描整个项目代码**,未收到我指定文件路径时,不许主动加载任何 .java、yml、properties 配置文件;
2. 仅当我明确提供文件路径/类名,才去读取对应源码;
3. 编写单元测试时,只加载被测类 + 需要 Mock 的依赖类,禁止加载整个工程全部代码;
4. 读取文件遵循最小原则:只读取当前需求用到的 1~3 个文件即可,禁止批量加载整个包下所有类;
5. 不会主动读取 target、build、docs、静态资源、备份配置等无关目录。
## 编码规范
1. 遵循项目原有代码风格,不擅自重构已有业务逻辑;
2. 新增代码必须配套单元测试;
3. 使用构造注入,避免字段注入;
4. 异常统一使用项目全局异常体系。
## 测试规则(适配你 @MockBean 废弃警告问题)
1. SpringBoot 3.5 测试代码中允许继续使用 @MockBean,仅做黄色废弃提醒,不要判定为错误、强制修改;
2. 优化重构场景下,推荐将 @MockBean 替换为官方新版 @MockitoBean;
3. 单元测试尽量轻量化,优先使用 MockBean/MockitoBean,避免完整拉起 Spring 容器。
## 缓存与会话规范
1. 单次需求结束后自动精简上下文,避免堆积历史对话造成缓存暴涨;
2. 不同业务模块尽量新开 /branch 分支会话隔离,防止上下文互相污染。
## 废弃API处理规则
1. 遇到 @Deprecated(forRemoval = true) 标记的注解/类,仅警告提示,禁止判定为错误;
2. 仅在重构优化阶段,才主动给出替换方案。
二、.claudeignore 模板(放在项目根,拦截无用目录,大幅减少缓存开销)
用法等同于 .gitignore,写入后 Claude Code 永远不会主动读取这些目录:
plaintext
# 忽略以下所有目录, 拦截无用目录,大幅减少缓存开销
# 编译产物
target/
build/
dist/
*.class
*.jar
*.war
# IDE 配置
.idea/
.vscode/
*.iml
*.iws
*.ipr
# 文档、备份、日志
logs/
docs/
*.bak
*.txt
# 前端资源、第三方依赖
node_modules/
static/
assets/
public/
# 本地运行缓存
tmp/
cache/
三、新项目接入完整初始化执行顺序(一步步执行)
- 打开项目,打开 Claude Code 对话框,执行清空残留会话:
plaintext
/clear
- 自动生成基础项目认知文件:
plaintext
/init
- 将上面两份模板内容,分别覆盖写入根目录
CLAUDE.md、新建.claudeignore; - 开启实时思考日志(方便查看它读取了哪些文件):快捷键
Ctrl+O - 查看当前上下文负载是否正常:
plaintext
/context
- 初次项目分析完成后精简冗余缓存:
plaintext
/compact
四、配套长期使用工作流(避免后续缓存持续暴涨)
- 完成一个功能需求 →
/compact压缩会话上下文; - 切换完全无关的新模块开发 →
/clear重置会话; - 想要并行两套实现方案互不干扰 →
/branch 功能名称; - 发现它乱读取大量无关文件时,再次发送约束指令:
plaintext
严格遵守CLAUDE.md规则,禁止主动读取任何未指定的源码文件。
补充
- 两份文件都可以提交 Git,团队所有人打开项目都会自动生效这套约束;
- 配置完成后,
cache read大量上涨的问题会得到根治; - 针对你
@MockBean爆红问题,配合之前 IDEA 把Usage of API marked for removal降级为 Warning 即可彻底只留黄色警告。
问题三、一键初始化指令,粘贴后自动执行整套初始化流程
一、一键初始化完整指令(直接粘贴发送到 Claude Code 对话框即可自动执行整套初始化流程)
plaintext
# 全局初始化任务,请严格按顺序执行
1. 执行 /clear 清空当前会话残留上下文,新建纯净会话;
2. 执行 /init 自动生成项目 CLAUDE.md;
3. 将项目根目录 CLAUDE.md 替换为约定好的SpringBoot专用约束模板;
4. 在项目根目录创建 .claudeignore 文件并写入标准忽略规则;
5. 开启思考详情模式(Ctrl+O 逻辑),后续推理步骤全部完整展示;
6. 执行 /context 输出当前上下文占用、文件加载情况;
7. 执行 /compact 精简初始化产生的冗余缓存;
8. 全程遵守CLAUDE.md内读取规则:禁止主动全盘扫描项目源码,仅我指定路径才读取文件;
9. 针对 @MockBean 注解仅做废弃提醒,不要判定为错误强制替换。
## CLAUDE.md 完整内容(直接覆盖写入)
# 项目全局说明
## 基础信息
- 项目框架:SpringBoot 3.5.x + Maven
- 编程语言:Java 21
- 构建工具:Maven
- 测试框架:JUnit 5 + Mockito + SpringBootTest
- 核心模块:业务服务层、向量Embedding、PgVector向量库、单元测试模块
## 项目结构约定
1. src/main/java:业务正式代码
2. src/test/java:单元测试、集成测试代码
3. src/main/resources:配置文件
4. target:编译产物,无需读取
## 强制读取约束(解决缓存 Cache Read 过高核心规则)
1. **禁止自动全盘扫描整个项目代码**,未收到我指定文件路径时,不许主动加载任何 .java、yml、properties 配置文件;
2. 仅当我明确提供文件路径/类名,才去读取对应源码;
3. 编写单元测试时,只加载被测类 + 需要 Mock 的依赖类,禁止加载整个工程全部代码;
4. 读取文件遵循最小原则:只读取当前需求用到的 1~3 个文件即可,禁止批量加载整个包下所有类;
5. 不会主动读取 target、build、docs、静态资源、备份配置等无关目录。
## 编码规范
1. 遵循项目原有代码风格,不擅自重构已有业务逻辑;
2. 新增代码必须配套单元测试;
3. 使用构造注入,避免字段注入;
4. 异常统一使用项目全局异常体系。
## 测试规则(适配 @MockBean 废弃警告问题)
1. SpringBoot 3.5 测试代码中允许继续使用 @MockBean,仅做黄色废弃提醒,不要判定为错误、强制修改;
2. 优化重构场景下,推荐将 @MockBean 替换为官方新版 @MockitoBean;
3. 单元测试尽量轻量化,优先使用 MockBean/MockitoBean,避免完整拉起 Spring 容器。
## 缓存与会话规范
1. 单次需求结束后自动精简上下文,避免堆积历史对话造成缓存暴涨;
2. 不同业务模块尽量新开 /branch 分支会话隔离,防止上下文互相污染。
## 废弃API处理规则
1. 遇到 @Deprecated(forRemoval = true) 标记的注解/类,仅警告提示,禁止判定为错误;
2. 仅在重构优化阶段,才主动给出替换方案。
## .claudeignore 完整内容
# 忽略以下所有目录, 拦截无用目录,大幅减少缓存开销
# 编译产物
target/
build/
dist/
*.class
*.jar
*.war
# IDE 配置
.idea/
.vscode/
*.iml
*.iws
*.ipr
# 文档、备份、日志
logs/
docs/
*.bak
*.txt
# 前端资源、第三方依赖
node_modules/
static/
assets/
public/
# 本地运行缓存
tmp/
cache/
二、使用方式
- 打开 VSCode / IDEA 的 Claude Code 对话窗口;
- 完整复制上面一大段文本粘贴发送;
- 等待它自动完成:清空会话 → 生成并替换 CLAUDE.md → 创建
.claudeignore→ 自检上下文 → 压缩缓存; - 初始化结束后,你后续开发就会自动遵守「不乱读文件、控制缓存、MockBean 只警告不报错」这套规则。