Skip to content

上下文管理与性能调优

长时间会话会消耗大量上下文窗口。以下技巧帮助你高效管理:

上下文管理技巧

技巧说明
使用 /compact定期压缩对话历史,保留关键信息,释放上下文空间
使用 /clear切换任务时清除历史,避免无关上下文干扰
分拆复杂任务不要在一个会话中尝试重构整个代码库
引用文件而非粘贴让 Claude 直接读取文件,而不是把大段代码粘贴到对话中
利用 CLAUDE.md把重复出现的指令写入 CLAUDE.md,而不是每次会话都重复
非交互模式claude -p "任务" 快速执行单一任务后退出

--verbose 深度调试

当你想了解 Claude Code 内部的决策逻辑时,使用 --verbose 模式:

bash
claude --verbose

这会显示 Claude 的完整工具调用过程,包括:

  • 每次工具调用的参数和返回值(如读取了什么文件、搜索了什么关键词)
  • Claude 选择某个工具的原因(而非直接展示最终结果)
  • 请求和响应的 token 数量明细

典型用途:

  • Claude 反复做错同一件事 → 用 verbose 看它每次读取了什么、推断出什么结论
  • Claude 没找到某个文件 → 用 verbose 看它的搜索策略是否合理
  • 性能异常慢 → 用 verbose 查看是否存在不必要的重复工具调用

.claudeignore 排除无关文件

类似 .gitignore.claudeignore 让 Claude Code 跳过不需要处理的文件和目录,减少无效的上下文消耗:

text
# 排除大型生成文件
dist/
build/
*.min.js
*.bundle.js

# 排除数据文件
*.csv
*.json.bak
data/seeds/

# 排除无关目录
docs/archive/
vendor/
node_modules/

什么时候需要 .claudeignore

  • 仓库很大(超过 1000 个文件)→ 排除不相关的目录
  • 有大型数据文件 → 排除以免浪费上下文窗口
  • 有敏感数据文件 → 排除以免 Claude 读取

大仓库上下文优化

在大型项目中使用 Claude Code 时,以下策略帮助保持上下文质量:

策略说明
目录级 CLAUDE.md在子目录放置 CLAUDE.md,只描述该模块的上下文,减少全局噪音
精准引用文件告诉 Claude 具体文件路径,而不是让它全仓库搜索
限制搜索范围描述任务时指定目录,如"在 src/api/ 下查找..."
分模块会话每个会话只处理一个模块,结束后 /clear 开始新模块
定期 /compact每 15-20 分钟压缩一次,防止历史膨胀

Prompt Caching

Prompt Caching 是 Anthropic API 的优化机制——当 Claude Code 发送的请求中包含与之前请求相同的前缀内容时,已缓存的部分可以跳过重新处理,节省 token 和降低延迟

自动缓存的内容

Claude Code 会自动缓存以下内容,你无需手动配置:

内容说明
系统提示Claude Code 的内置指令(工具定义、行为规范等)
CLAUDE.md项目指令文件的内容在会话开始时发送,跨会话可复用缓存
Skills 文件alwaysApply 类型的 Skills 每次会话都注入,适合缓存

如何提升缓存命中率

缓存有 5 分钟的 TTL(有效期)。以下做法能提高命中率、降低成本:

做法原因
保持 CLAUDE.md 稳定不要频繁修改 CLAUDE.md 内容,每次改动都会破坏缓存
用 CLAUDE.md 代替重复指令把每次都要重复说的规则写进 CLAUDE.md,让它被缓存
避免频繁重启会话同一会话中继续工作比不断开新会话缓存命中率更高
先 /compact 再继续压缩后的历史前缀更稳定,更容易命中缓存

缓存对成本的影响

状态输入 token 价格
命中缓存原价的 10%(节省 90%)
缓存写入原价的 125%(首次发送时略贵)
未命中缓存原价

这意味着:如果你在 5 分钟内多次使用同一会话或重新启动包含相同 CLAUDE.md 的会话,输入 token 成本大幅降低。

基于 MIT 协议发布