Claude 与 Skill
Claude Code 没遵守 CLAUDE.md?先查它到底有没有进上下文
规则被忽略有两种完全不同的原因:文件根本没加载,或者加载了但措辞不够强。作者用自己十个月没打开的 LangGraph 项目做实测,发现 11 个可加载的指令文件里只有 2 个真正进了上下文,包括那个自称「本目录主要指令面」的 app/graphs/CLAUDE.md。先分清是哪一种失败,再决定改加载还是改措辞。
今天就能做
- 下次觉得 Claude Code 没听规则,先跑 npx @reporails/cli xray 看那个文件到底有没有加载,再决定改措辞还是改加载方式。
- 把必须每次生效的规则从子目录 CLAUDE.md 挪到启动时加载的文件,或用 hook 强制检查。
- 检查指令文件里的文件路径引用是否还有效,拆过、改过名的文件最容易留下静默失效的指针。
先分清两种失败
- 规则没被遵守,常见反应是改措辞:动词开头、字面量加反引号、重点加粗。但在这之前有个更便宜的问题:这条规则当时在不在 agent 的上下文里。
- 加载了却没遵守,是措辞或强制手段的问题;从来没加载,是管道问题,再怎么改措辞都没用。
- 作者的项目 SageCompass 有 25 个 CLAUDE.md、11 个 AGENTS.md、17 个规则文件加一个 INDEX.md。根目录有 CLAUDE.md 时,Claude Code 会跳过全部 11 个 AGENTS.md。
实测:11 个里只加载了 2 个
- 用 Claude Code 2.1.311 在 langgraph 目录开新会话,两个提示跑了 18 条 shell 命令,读代码、跑质量门和测试、修了一个每轮结尾报的错误。
- 用 npx @reporails/cli xray 打开会话记录:只有根 CLAUDE.md 和 langgraph/CLAUDE.md 在启动时加载,其余全程没进上下文。
- 峰值上下文 65k tokens,两个指令文件约 2.3k(根文件约 771,langgraph 约 1.5k),工具调用与结果约 22k,工具定义约 14k。
- Sources 列表显示 11 个可加载的指令文件,9 个标记为未加载,包括 app/graphs/CLAUDE.md。agent 在 0:13 用 sed 读了 app/graphs/graph.py,但所有读取都走 shell,那个文件始终没加载。
嵌套文件不能承载必须遵守的规则
- 子目录的 CLAUDE.md 是否加载,取决于 agent 怎么进入那个目录。这次会话里它一次都没加载。
- 必须在每次改动上都成立的规则,应该放进启动时加载的文件,或者用 hook 去检查。
- langgraph/CLAUDE.md 第 128 行指向 .shared/rules/testing.md,但该文件几个月前已拆成五个 testing-*.md,指针没跟着改。坏指针不会报错,agent 唯一的信号是一次失败的读取。
xray 能看什么、不能看什么
- xray 在 127.0.0.1 起一个页面,读 ~/.claude/projects/ 下 Claude Code 已经保存的会话记录,Graph 标签把 agent 放到时间线上,左侧列出每个指令文件、规则、skill、memory 文件和 MCP server 首次加载的时刻。
- 它只读 Claude Code 的会话,Codex、Copilot、Cursor 读的那些 AGENTS.md 不在覆盖范围内。
- 在 Team 或 Enterprise 机器上,它会读取组织在管理后台设定的配置,因此能看到策略实际产出的上下文。
- 本地运行,只有 Check 和 Fix 按钮会连到 Reporails 服务器。
评论区补充的经验
- 有读者说自己也改过根本没进上下文的规则,等于对着 agent 没读过的文件喊话。
- 作者提到早期用规则文件时,规则互相重叠甚至矛盾,旧模型表现混乱,Opus/Sonnet/Haiku 5.5 一代则倾向服从最后加载的那条。改用基于事件总线的渐进披露后问题消失。
- 另一位读者认为上下文报告应包含来源、顺序、截断和实际生效的指令文本。作者回应前三项已有,截断还没做完,目前文本里能看到被切但没有任何标记。
原文:Claude Code Ignoring CLAUDE.md? See What's in Its Context
来源:DEV Community · 2026-11-05
查看原文本文由 AI 阅读原文后整理,未经人工逐字核对,内容以原文为准。
登录后可以点赞、查看和发表评论