本课不讲任何配置技巧,只回答两个问题:Claude Code 是怎么把一个任务做完的(agentic loop);它在做的过程中能读到什么、读不到什么(上下文窗口)。最后用 /context 命令把第二个问题变成你亲眼能看到的东西。
为什么这天学这个
本站观点新手对 Claude Code 最常见的两类挫败——「它怎么不知道我仓库里有这个文件」和「它怎么忘了我上个会话说过的话」——根源都不是模型不行,而是不了解它能读到什么。这件事一旦想明白,后面所有课都是顺理成章的:
- D2 上下文窗口与 prompt caching 展开讲今天那张「窗口分层图」里各部分的成本;
- D3 权限模式与沙箱 管的是循环里「行动」那一步能不能自动执行;
- D4 CLAUDE.md 与 rules 解决的正是「每个会话都要重新交代一遍」的问题。
所以第一天,我们只打地基。
概念讲清楚
一轮循环:收集上下文 → 行动 → 验证
官方你给 Claude 一个任务后,它按三个阶段工作:收集上下文(gather context)、采取行动(take action)、验证结果(verify results)。三个阶段不是固定流水线,而是相互交织:Claude 全程通过调用工具推进——搜文件理解代码、编辑文件做修改、跑测试检查自己的工作。每次工具调用返回的信息都会喂回循环,决定下一步做什么,如此串起几十个动作并沿途自我纠偏,直到任务完成。
官方你也在这个循环里:任何时刻按 Esc 可以立即停下 Claude;或者直接输入一句补充并回车,它会在当前动作结束后读到,并据此调整下一步。
官方循环由两个部件驱动:模型负责推理,工具负责行动。没有工具,Claude 只能输出文字;有了工具,它才能读代码、改文件、跑命令。Claude Code 本身是包在模型外面的「agentic harness(智能体外壳)」——提供工具、上下文管理和执行环境。内置工具大致五类:
| 类别 | Claude 能做什么 |
|---|---|
| 文件操作 | 读文件、编辑代码、新建文件、重命名与重组 |
| 搜索 | 按模式找文件、用正则搜内容、探索代码库 |
| 执行 | 跑 shell 命令、起服务、跑测试、用 git |
| 网络 | 搜网页、抓文档、查报错信息 |
| 代码智能 | 编辑后看到类型错误、跳转定义、查引用(需安装 code intelligence 插件) |
官方官方给的例子:你说「fix the failing tests」,Claude 可能会:跑测试看哪些失败 → 读报错输出 → 搜相关源文件 → 读文件理解代码 → 编辑修复 → 再跑测试验证。这就是循环在动。
换个讲法:一位只看得见桌面的结对工程师
本站观点把 Claude 想成一位水平很高、但只看得见桌面上摊开的材料的结对工程师。桌面就是「上下文窗口」。它没有把你的仓库背下来;想看哪个文件,得伸手去拿(调用工具),拿回来的内容摆上桌面,才算「看见」。桌面大小有限、摆满了要清理(这是 D2 的主题)。理解了「桌面」,你就理解了这门课的一大半:后面学的 CLAUDE.md、skill、subagent,本质上都是在回答「什么东西该常驻桌面、什么东西该用时再拿」。
每轮能读到什么、读不到什么
官方在你运行 claude 的目录里,它能访问:该目录及子目录的项目文件(其他位置需你授权)、你的终端能跑的任何命令、git 状态(当前分支、未提交改动、近期提交)、CLAUDE.md、auto memory(自动记忆,MEMORY.md 的前 200 行或 25KB 会在每个会话开始时载入),以及你配置的扩展(MCP、skills、subagents 等)。
官方而每次请求真正装进上下文窗口的是:系统指令、CLAUDE.md、auto memory、已加载的 skills、对话历史、读过的文件内容和命令输出。
两个最常见的误区,现在就澄清:
- 本站观点误区一:「Claude 已经把整个仓库读进去了。」实际上「能访问」不等于「已读入」——它按需搜索、按需读取,只有读过的内容才进窗口。判断方法:问它一个它没读过的文件里的细节,你会看到它先调用搜索或读取工具,而不是直接回答。
- 官方误区二:「上个会话说过的话它还记得。」官方文档写明:会话相互独立,每个新会话从全新的空白上下文开始,不带以前的对话历史。要跨会话保留信息,靠 auto memory 或你写在 CLAUDE.md 里的持久指令(D4 详讲)。
官方窗口会随工作被填满。Claude Code 接近上限时会自动压缩:先清掉较早的工具输出,不够再对整段对话做摘要——你的请求和关键代码会保留,但对话早期的详细指令可能丢失。所以官方的建议是:持久规则写进 CLAUDE.md,别依赖对话历史。细节留到 D2。
用 /context 看窗口构成
官方/context 把当前上下文用量画成一张彩色格子图,并给出优化建议:哪些工具吃上下文、memory 是否膨胀、容量预警。当对话超出窗口上限时,输出还会标明超了多少、用哪个命令释放空间(此警告需 Claude Code v2.1.216 及以上;本站核实时最新版为 2.1.222)。在全屏模式下,/context 会折叠逐项明细以保住格子图,传 all(即 /context all)可展开。
官方顺带认识两个邻居命令:对话太长时,/compact 把对话摘要压缩以释放空间;/clear 则直接开一个空白上下文的新对话。另外,MCP 工具的完整定义默认延迟加载、用到才载入,空闲时只有工具名占上下文,/mcp 可以查看每个 server 的 token 开销——现在不用深究,知道 /context 里看到的数字都有出处即可。
当天能做完的实操
假设你已装好并登录 Claude Code。全程约 30 分钟,不会改动你的任何文件。
- 进入一个你熟悉的项目目录,运行
claude。预期:进入交互界面,出现输入框。 - 立刻输入
/context。预期:一张彩色格子图加分项列表,此时占用主要是系统提示、系统工具等「开局装入」的部分,对话消息几乎为零。记下大致数字,这是你的基线。 - 发第一个任务,观察「收集上下文」阶段:
预期:界面上能看到 Claude 调用搜索、读取工具的过程,它只挑了少数几个文件读——亲眼验证它不是开局就读完整个仓库。用三句话概括这个项目是做什么的,并列出你为了回答这个问题实际读了哪些文件。 - 再跑一个完整循环(收集 → 行动 → 验证都能看到):
预期:Claude 先找到检查命令(收集),请求你确认后执行(行动;为什么要确认是 D3 的内容),然后读输出并汇报(验证)。在这个仓库里挑一个最简单的、可自动验证的检查(比如测试或 lint), 跑一遍并告诉我结果。如果失败,只解释原因,不要修改任何文件。 - 体验打断与引导。趁它执行时直接输入一句「顺便说明你下一步打算做什么」并回车。预期:当前动作结束后它会读到你的话并调整回应;想立刻叫停就按
Esc。 - 再输入
/context,与第 2 步对比。预期:对话消息部分明显变大,增量主要来自工具结果(读过的文件、命令输出)。你刚刚亲眼看到了「桌面是怎么摆满的」。
验收标准
- 能不看笔记说出 agentic loop 的三个阶段,并解释为什么说它们「相互交织」而不是固定流水线(提示:每次工具结果都会改变下一步)。
- 能列出上下文窗口里至少 5 类内容,并说出两样不会自动进窗口的东西。
- 实操中跑过两次
/context,能解释两次数字的差异主要来自哪一层。 - 自测题:新开一个会话,Claude 还记得你上个会话里定的约定吗?为什么?想让它每次都记得,该把约定放到哪里?(参考答案:不记得——会话相互独立,新会话从空白上下文开始;该放进 CLAUDE.md,D4 详讲。)