场景说明
当 Claude Code 读取代码时,常常会倾向于直接读取整个文件。如果文件特别大(比如超过 5000 行),将这些内容全部塞进上下文会导致效率低下。
什么是“渐进式披露”?
这就像人类程序员接手新项目时的做法:不会一开始就通读 10 万行代码,而是先查看目录结构(ls),再搜索关键字(grep),最后只打开相关的几十行代码(read)。

Anthropic 的文档也一直强调这一点:先让模型通过搜索定位,再通过切片读取。
但在实际运行时,Claude Code 往往“太勤快”,直接读取整个文件。因此,我们需要为它设置一个“防呆开关”。
Hook 工作机制
这是一个在 PreToolUse 阶段(工具调用前)进行拦截的 Python 脚本。它配合项目中的 CLAUDE.md 提示词,共同引导 Claude Code 进行精确的上下文读取。
核心逻辑
方案由两部分组成:
- 提示词规则
- 拦截脚本
为什么这个方法有效?
这利用了 LLM 的一个特性:它们会认真对待“报错信息”。当工具调用失败并返回明确的“推荐路径”时,Claude Code 会立即自我修正,从而被拉回“渐进式披露”的最佳实践路径。
如何配置
你需要准备两个部分:
- 项目根目录下的规则文件(
CLAUDE.md 或 AGENTS.md)。
提示词(CLAUDE.md)
将以下内容添加到你的项目提示词文件中,以指导 Claude Code 的读取策略。
中文版本
文件读取策略强制规则:每次调用 Read 工具时必须指定 offset 和 limit 参数,禁止使用默认值。
读取流程
- 侦察:先用
Grep 了解文件结构,或定位目标关键词行号。 - 精准打击:使用
offset + limit 精确读取目标区域。 - 扩展:如果需要更多上下文,再调整
offset 继续读取。
目标:保持上下文精准、最小化。若不遵守,工具调用将被 Hook 拦截。
English Version
File Reading StrategyMANDATORY RULE: Every Read tool call MUST specify offset and limit parameters. Default full-file reads are prohibited for non-trivial files.
| | |
|---|
| | Start line number (0-indexed) |
| | Max lines to read (Max 500) |
Workflow
- Recon: Use
Grep first to understand structure or locate keywords. - Surgical Read: Use
offset + limit to read only the relevant section. - Expand: Adjust
offset to read more context only if strictly necessary.
Goal: Keep context precise and minimal. Violations will be blocked by the PreToolUse hook.
Hook(Python 脚本)
你可以从相关 GitHub 仓库获取该 Hook 文件,并配置到 Claude Code 中(如果不熟悉,也可以直接将文件交给 Claude Code 协助配置)。
https://github.com/Cedriccmh/cc-read-limit-hook
脚本虽然稍长,但逻辑简单:检查文件大小 → 检查参数 → 决定放行、自动修正或报错拦截。
效果
配置完成后,Claude Code 的行为模式将发生变化: