Claude Code / 核心概念
上下文窗口
理解 Claude Code 上下文窗口如何被系统提示、记忆、项目规则、文件读取、Hooks、命令输出、子代理和压缩共同占用。

上下文窗口是什么
上下文窗口是 Claude 当前会话能同时考虑的信息空间。官方页面用交互式模拟展示它如何从启动内容、用户提示、文件读取、规则、Hooks、命令输出和子代理结果中逐步填满。
你在终端里看到的通常是简短事件,例如“Read auth.ts”或“Ran npm test”。但 Claude 实际看到的是文件内容、工具结果、规则内容、Hook 输出和对话历史,这些都会占用 token。
上下文窗口管理不好,长任务会变慢、变贵,也更容易忘记早期约束。管理得好,Claude 可以保持聚焦,把大规模调查交给子代理或技能,主会话只保留关键结论。
启动时自动加载什么
会话一开始,Claude 并不是空白状态。它会加载系统提示、环境信息、MCP 工具摘要、技能描述、全局和项目 CLAUDE.md,以及 Git/工作区信息。
| 内容 | 作用 | 学习要点 |
|---|---|---|
| System prompt | 核心行为、工具和响应格式。 | 用户不可见,但始终在最前面。 |
| Auto memory | 过往会话学到的命令、模式和坑。 | 通常只加载前一部分,避免过大。 |
| Environment info | 工作目录、系统、shell、Git 状态。 | 帮助 Claude 理解当前运行环境。 |
| MCP tools / Skills | 列出可用工具和技能。 | 完整 schema 或技能正文通常按需加载。 |
| CLAUDE.md | 全局和项目指令。 | 最重要的团队上下文来源之一。 |
任务中哪些东西会占上下文
用户提示、Claude 分析、读取的文件内容、搜索结果、命令输出、diff、Hook 的 additionalContext 和最终总结都会进入上下文。
- 文件读取通常是最大开销。让 Claude 精确读取相关文件,比让它全仓扫描更省上下文。
- 搜索结果、测试输出和构建日志也会占空间,失败日志应保留关键部分。
- Hook 普通 stdout 不一定进上下文,但结构化 additionalContext 会进入,因此必须精简。
- 用户后续提问会追加到同一上下文,长任务要定期总结状态。
规则和 Hooks 何时触发
路径规则会在 Claude 读取匹配文件时自动加载,例如读取 src/api/** 时加载 api-conventions.md,读取 *.test.ts 时加载 testing.md。Hooks 会在工具调用前后触发,并可能把额外信息注入上下文。
这意味着规则和 Hooks 不只是“后台配置”,它们会改变 Claude 的输入。规则过长会拖慢任务,Hook 输出过多会污染上下文。把规则写成短、具体、可执行的约束,比写成长篇教程更有效。
PostToolUse hook 输出 JSON:
{
"hookSpecificOutput": {
"additionalContext": "Format check passed. No lint errors."
}
}子代理如何保护主上下文
当任务需要大量调查时,子代理会获得独立上下文窗口。它会加载自己的系统提示、项目规则和工具摘要,但不继承主会话完整历史。
官方模拟展示了一个主会话让子代理研究 session timeout 的场景。子代理读取的大量文件和搜索结果主要消耗子代理上下文,主会话只接收它返回的结论。
这就是为什么大规模 codebase 调研、风险排查、跨文件审查适合交给子代理:主会话保持轻,最终只整合关键信息和改动计划。
压缩和丢失边界
当上下文接近上限时,Claude Code 可能压缩会话。压缩会保留总结,但早期消息里的细节、用户边界和临时约束可能被弱化。
重要边界要写成规则
如果“不要部署”“不要 push”“不要改支付逻辑”是硬约束,不要只在聊天里说一遍。应写进 CLAUDE.md、rules、permissions deny 或 Hooks。
上下文管理实践
把上下文当预算管理。给 Claude 精确任务,要求先计划,限制读取范围,使用子代理调查,定期让它总结状态,并把长期规则放到正确文件。
任务前
说明目标、相关路径、不要碰的范围、验证命令。
调查中
让 Claude 先列它准备读取的文件,避免无边界扫描。
长任务
每个阶段结束让 Claude 总结已改文件、验证结果、剩余风险。
大规模研究
让子代理或独立会话调查,把结论汇总回主线。
学习检查清单
把本页内容落到真实任务中,用入口、上下文、权限、验证和团队规则五个维度检查是否真正掌握。
学习检查清单
读完本页后,不要只记住概念名。你应该能把“上下文窗口”放回 Claude Code 的真实工程流程里:任务从哪里发起,系统会加载什么上下文,哪些动作需要审批,结果如何验证,失败时如何回退。
如果这是概念页面,要特别确认它如何影响真实任务:它改变上下文、权限、执行路径、验证方式,还是改变团队协作流程。
- 能用自己的话说明本页解决的具体问题,而不是只复述标题。
- 能写出一个最小示例任务,并标明目标、范围、禁止事项和验收标准。
- 能判断哪些信息应该放进当前提示,哪些应该沉淀到项目规则或配置里。
- 能说明哪些长期规则应该写进 CLAUDE.md,哪些运行行为应该交给 settings、permissions、Hooks、Skills 和 MCP。
- 能在任务完成后检查 diff、命令输出、测试结果、截图或 PR 说明,而不是只相信自然语言总结。
如果要把本页用于团队培训,可以让学员用 Claude Code 完成一个小任务:先只读解释,再提交计划,再执行最小改动,最后用真实验证命令和人工 diff 审查收尾。