先确认它是不是没读到项目

如果 Claude Code 能正常启动、能读文件、也能执行命令,但仍然不按项目规则来,先检查项目上下文。

典型现象是:它用错包管理器、忽略已有 AGENTS.md、忘记验证命令、改了任务外文件,或者每次会话都要你重复说明同一批规则。

  • 你说过只能用 pnpm,它仍然建议 npm install。
  • 仓库有 CLAUDE.md,但它没有提到里面的关键规则。
  • 它从父目录或错误子目录启动,读到的项目边界不对。
  • 规则文件太长、互相冲突,导致它选择性遵守。

第一步:从正确目录启动

Claude Code 会按启动目录建立项目边界。先进入你真正要处理的仓库根目录,再启动 Claude Code。

不要在用户主目录、父级 monorepo、桌面目录或另一个 package 里启动,然后期待它自动理解当前项目。启动目录错了,后面读到的 CLAUDE.md、settings 和搜索范围都可能偏掉。

PowerShell
cd C:\path\to\your-project
claude

第二步:用 memory 看加载了哪些规则

进入会话后运行 `/memory`。它能让你查看和编辑当前可用的记忆文件,也能帮助确认 Claude Code 是否读到了你预期的 CLAUDE.md。

如果你期待项目规则生效,但 `/memory` 里没有对应文件,先检查文件名、位置和启动目录。

Text
/memory

第三步:检查 CLAUDE.md 放在哪里

项目级规则可以放在仓库根目录的 `CLAUDE.md`,也可以放在 `.claude/CLAUDE.md`。个人全局规则在 `%USERPROFILE%\.claude\CLAUDE.md`。

团队共享规则应该写项目级文件。个人偏好、临时路径、测试账号说明不要混进团队共享规则。

用户规则%USERPROFILE%\.claude\CLAUDE.md
项目规则CLAUDE.md 或 .claude/CLAUDE.md
本地个人规则CLAUDE.local.md
目录规则.claude/rules/*.md

第四步:让 CLAUDE.md 导入 AGENTS.md

Claude Code 读取 `CLAUDE.md`,不是直接把 `AGENTS.md` 当作自己的项目记忆。一个仓库同时给 Codex 和 Claude Code 使用时,最稳的做法是在 CLAUDE.md 里导入 AGENTS.md。

Windows 上不建议为了这件事强行建 symlink。直接用 `@AGENTS.md` 导入更容易维护,也不需要管理员权限。

md
@AGENTS.md

## Claude Code

- Use plan mode before touching deployment scripts.
- Ask before running long build commands.

第五步:把规则写成可执行边界

上下文文件不是项目介绍。Claude Code 更需要短句、边界和成功标准。

如果一条规则不能改变它的下一步行为,就先删掉。比如“写高质量代码”没有检查点;“不要改任务外文件,结束时报告 changed files”更容易执行。

md
# Project Rules

Commands:
- pnpm run typecheck
- pnpm run build

Rules:
- Use pnpm only.
- Read relevant files before editing.
- Keep edits scoped to the requested task.
- Do not change package versions unless asked.
- Do not overwrite user changes in the working tree.

Done means:
- Report changed files.
- Report commands run and results.
- Mention checks that were not run.

第六步:拆出路径规则

如果 CLAUDE.md 已经很长,把局部规则放进 `.claude/rules/`。前端、后端、内容、部署脚本可以有不同约束。

路径规则可以用 frontmatter 限定生效文件。这样 Claude Code 处理匹配文件时才加载相关规则,减少无关上下文。

md
---
paths:
  - "data/articles/**/*.ts"
---

# Article Data Rules

- Keep article bodies in TypeScript data modules.
- Use absolute dates for published, modified, and reviewed values.
- Do not expose internal editorial grades on the frontend.

第七步:检查规则有没有互相打架

Claude Code 会把多个 CLAUDE.md、CLAUDE.local.md 和规则文件放进上下文。它们不是数据库字段,不会自动帮你合并冲突。

如果一个文件说可以自动跑 build,另一个文件说未经允许不能跑 build,它可能在不同任务里表现不一致。先删旧规则,再加新规则。

  • 同一个命令是否既被允许又被禁止。
  • 包管理器是否同时出现 npm、yarn、pnpm。
  • 验证命令是否已经过期。
  • 个人偏好是否误写进团队共享规则。
  • 子目录规则是否覆盖了根目录规则的真实意图。

第八步:让它复述当前规则

修改上下文后,用低风险任务验证。不要马上让它改核心模块。

先让 Claude Code 复述它读到的项目规则,再让它做一个小改动。重点看它是否读到了启动目录、包管理器、禁止项和交付标准。

Text
先不要修改文件。
请只根据当前项目上下文回答:
1. 你读到了哪些项目规则文件
2. 这个项目使用什么包管理器
3. 哪些命令需要我明确允许后才能运行
4. 哪些文件或目录不应该主动修改
5. 完成任务时你需要报告哪些验证结果

按现象继续定位

上下文问题修完以后,再看具体行为有没有变化。好的规则不是让 Claude Code 变得更听话,而是让它在尾部场景里少犯同一种错。

它没有读到 AGENTS.md

在 CLAUDE.md 里用 @AGENTS.md 导入,或者运行 /init 生成项目记忆后,再把 AGENTS.md 里的稳定规则同步进去。

它读到了规则但还是犯错

把抽象规则改成具体边界。用“Use pnpm only”替代“遵守项目规范”,用“Do not edit generated files”替代“谨慎修改”。

规则太长导致它抓不住重点

把总规则压到稳定约束,把局部规则移到 .claude/rules/,把任务流程做成 skill 或 slash command。

另一个目录的规则没有加载

--add-dir 只扩展文件访问范围。需要加载额外目录的 CLAUDE.md 时,再按官方环境变量启用额外目录的 memory 加载。

参考来源

How Claude remembers your projectAnthropic 官方文档Claude Code settingsAnthropic 官方文档Configure permissionsAnthropic 官方文档TroubleshootingAnthropic 官方文档

相关文章

Claude Code 配置文件和权限怎么检查开发环境 / 约 10 分钟为什么 AI Agent 写代码必须有 AGENTS.md / CLAUDE.md智能编程 / 约 9 分钟Claude Code 配置指南:先把这 7 件事配好智能编程 / 约 15 分钟我如何让 AI 只改该改的文件智能编程 / 约 8 分钟Claude Code Windows 环境变量生效验证开发环境 / 约 13 分钟