Vibe Coding
返回 Claude Code

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 精确任务,要求先计划,限制读取范围,使用子代理调查,定期让它总结状态,并把长期规则放到正确文件。

1

任务前

说明目标、相关路径、不要碰的范围、验证命令。

2

调查中

让 Claude 先列它准备读取的文件,避免无边界扫描。

3

长任务

每个阶段结束让 Claude 总结已改文件、验证结果、剩余风险。

4

大规模研究

让子代理或独立会话调查,把结论汇总回主线。

学习检查清单

把本页内容落到真实任务中,用入口、上下文、权限、验证和团队规则五个维度检查是否真正掌握。

学习检查清单

读完本页后,不要只记住概念名。你应该能把“上下文窗口”放回 Claude Code 的真实工程流程里:任务从哪里发起,系统会加载什么上下文,哪些动作需要审批,结果如何验证,失败时如何回退。

如果这是概念页面,要特别确认它如何影响真实任务:它改变上下文、权限、执行路径、验证方式,还是改变团队协作流程。

  • 能用自己的话说明本页解决的具体问题,而不是只复述标题。
  • 能写出一个最小示例任务,并标明目标、范围、禁止事项和验收标准。
  • 能判断哪些信息应该放进当前提示,哪些应该沉淀到项目规则或配置里。
  • 能说明哪些长期规则应该写进 CLAUDE.md,哪些运行行为应该交给 settings、permissions、Hooks、Skills 和 MCP。
  • 能在任务完成后检查 diff、命令输出、测试结果、截图或 PR 说明,而不是只相信自然语言总结。

如果要把本页用于团队培训,可以让学员用 Claude Code 完成一个小任务:先只读解释,再提交计划,再执行最小改动,最后用真实验证命令和人工 diff 审查收尾。