探索上下文窗口
一句话
理解 Claude Code 上下文窗口的组成和工作原理,有效管理上下文使用。
什么时候翻这页
- 当你想了解 Claude Code 在会话开始前自动加载了哪些内容
- 当你好奇为什么某些内容在终端中不可见但仍在上下文中
- 当你需要优化上下文使用以避免达到限制
- 当你想了解子代理如何帮助管理大型文件读取
核心概念
- 上下文窗口(context window):Claude Code 存储关于会话的所有内容的地方,包括你的指令、文件内容、响应和永远不会出现在终端中的内容
- 自动加载(auto-loaded):在用户输入前自动加载到上下文的内容,如系统提示、CLAUDE.md、自动记忆等
- 文件读取(file read):Claude 读取文件时添加到上下文的内容,会消耗大量 token
- 规则(rules):根据文件路径模式自动加载的指令,与匹配文件同时加载
- 钩子(hooks):在工具使用后自动运行的代码,可通过 additionalContext 向 Claude 发送信息
- 子代理(subagents):使用独立上下文窗口的代理,避免大型文件读取影响主上下文
- 压缩(compact):将对话替换为结构化摘要以释放空间,保留关键信息
怎么做
-
理解上下文窗口的组成:
- 系统提示:核心指令、工具使用和响应格式
- 自动记忆(MEMORY.md):来自之前会话的笔记
- 环境信息:工作目录、平台、shell、操作系统版本
- MCP 工具:工具名称列表,具体模式按需加载
- 技能描述:可用技能的一行描述
- CLAUDE.md:全局和项目级偏好和指令
-
监控上下文使用:
- 使用
/context命令查看实时上下文使用情况分类和优化建议 - 使用
/memory检查启动时加载的 CLAUDE.md 和自动记忆文件
- 使用
-
管理上下文使用:
- 使用
/compact压缩旧对话,替换为结构化摘要 - 使用
/clear在切换任务时清除旧对话 - 将研究任务委托给子代理,避免大型文件读取影响主上下文
- 使用
-
优化 CLAUDE.md:
- 保持在 200 行以内
- 将参考内容移至技能或路径范围规则,使其仅在需要时加载
命令 / 配置速查
| 命令 | 功能 |
|---|---|
/context | 查看实时上下文使用情况分类和优化建议 |
/memory | 检查启动时加载的 CLAUDE.md 和自动记忆文件 |
/compact | 压缩对话历史,替换为结构化摘要 |
/clear | 清除旧对话,为下一任务腾出空间 |
ENABLE_TOOL_SEARCH=auto | 在上下文窗口的 10% 内加载工具模式 |
ENABLE_TOOL_SEARCH=false | 加载所有工具模式 |
disable-model-invocation: true | 防止技能在启动时加载到上下文 |
初学者易错点
- 认为所有文件内容都会在终端中显示 - 实际上只有部分内容可见,大部分内容仅 Claude 可见
- 忽略自动加载的内容占用了大量上下文空间,在用户输入前已消耗大量 token
- 不了解子代理可以避免大型文件读取影响主上下文,只有最终摘要返回
- 不定期使用
/compact导致上下文使用过高影响性能 - 技能描述不会在压缩后重新加载,只有实际调用的技能才会保留
相关词条
memory- 存储指令和记忆skills- 可重用的代码片段和指令rules- 基于文件路径的自动加载规则hooks-guide- 工具使用后自动运行的代码sub-agents- 委托研究到独立上下文窗口best-practices- 管理上下文作为主要约束的最佳实践