Claude Code 技术原理:上下文与记忆管理
Claude Code Context Management
本章解释 Claude Code 如何在长任务里管理 Context,并把这些做法转成可复用的工程模式。目标是让你在构建 agent 或调试长任务时,能够稳定控制 Context 的结构、成本与信号密度。
- Context 不是“越多越好”,而是“最小高信号集合”。
- Claude Code 倾向于 just-in-time 读取,而不是一次性加载。
- Compact 不是丢信息,而是重新组织信息。
- 文件系统是低成本外部记忆。
- tool outputs 是最大 token 成本来源,需要节流。
你将学到什么
- Claude Code 的 Context 管理原则与操作手法
- 如何设置 Context budget 与 compaction trigger
- 如何用文件系统实现 progressive disclosure
- 如何控制 tool outputs 的 token 成本
Core Model
Claude Code 的 Context 管理可以拆为三层:
- 固定层:长期稳定规则(如 CLAUDE.md、系统约束)
- 任务层:本次任务目标、验收标准、关键事实
- 动态层:搜索结果、工具输出、执行记录
核心原则是:固定层和任务层保持轻量稳定,动态层按需加载并随任务进度被压缩。
Key Practices
1) Context Budgeting
- 先设定预算,再开始任务
- 把任务拆为小阶段,每阶段限定 token 成本
- 当 Context 超过阈值(如 70-80%)触发 compact
2) Progressive Disclosure
不要一次性加载大段内容。先拿到 file path 或标题,再按需读取。
- 用
rg找相关文件 - 用
head/tail或分段读取 - 只保留当前决策需要的信息
3) Tool Output Throttling
大多数 Context 成本来自工具输出。控制策略包括:
- 对输出做摘要而非全文
- 分页/筛选/截断
- 输出优先结构化(表格/JSON/列表)
4) Compaction Strategy
Compaction 的目标是“保留关键信息 + 移除冗余”。建议结构:
- Files touched
- Decisions made
- Open questions
- Next actions
Example Workflow
- 加载规则:CLAUDE.md + AGENTS.md
- 定位目标文件:
rg --files -g "*.md" src/content/learn/ai-engineer - 只读必要内容:先查看同类文件结构
- 生成内容并写入
- 回看 Context:是否有冗余输出
Anti-Patterns
- 一次性加载整个文档库
- 用超长 tool output 覆盖 Context
- 长任务不 compact,累积到不可控
- 重复读取相同内容却不总结
Checklist
- 是否明确 Context budget?
- 是否有 progressive disclosure?
- 是否限制 tool outputs?
- 是否设置 compaction trigger?
- 是否把规则集中到 CLAUDE.md/AGENTS.md?
Related Pages
- Context Engineering Fundamentals
- Context Compression Strategies
- Claude Code Examples
- Tool Design for Agents
Practice Task
- 用本章的三层模型梳理一个真实项目的 Context
- 设定 80% 触发 compact 的阈值,并设计 summary 模板
- 选一个 tool 输出场景,做一次分页或摘要改造
Skill Metadata
Created: 2025-12-26 Last Updated: 2025-12-26 Author: JR Academy Version: 1.0.0
📚 相关资源
❓ 常见问题
关于本章主题最常被搜索的问题,点击展开答案
Claude Code 的 context 三层模型是哪三层?
(1) 固定层 — CLAUDE.md、长期系统约束,每次推理都加载;(2) 任务层 — 本次任务目标、验收标准、关键事实;(3) 动态层 — 搜索结果、工具输出、执行记录。前两层保持轻量稳定,动态层按需加载并随进度被压缩。乱了的根源 90% 是把动态层的东西塞进固定层。
为什么说 tool outputs 是最大的 token 成本来源?
一次 rg 全文搜索、cat 大文件、API 列表查询,单次返回轻松 5K-20K token,比对话本身 token 多几倍。控制策略三件套:摘要而非全文、分页/筛选/截断、结构化输出(表格/JSON)。Claude Code 默认对 tool response 设 25,000 token 上限,就是为了不让动态层吞掉整个 context。
Compact 触发阈值设多少合适?
70-80% 触发偏保守,留缓冲处理 compaction 本身的 token;90-95% 触发偏激进,模型可能已经开始失焦。本章建议 70-80% 起步,配合结构化 summary 模板(Files touched / Decisions made / Open questions / Next actions),保留信息密度同时回收 token。Claude Code 自身用的是 95% auto-compact。
Progressive disclosure 在 Claude Code 里具体怎么做?
三步:rg --files 找文件路径、head/tail 或 offset/limit 读片段、只把当前决策必需的内容留在 context。原则是「先拿引用、再读片段」,对应文件系统当低成本外部记忆 — 路径只占几十字符,原文上千行只在用得着时拉。反模式是开场就把整个 docs/ 全 cat 进来。
怎么判断我的 context 管理 anti-pattern 了?
本章四条红线:(1) 一次性加载整个文档库;(2) 用超长 tool output 覆盖 context;(3) 长任务不 compact,累积到不可控;(4) 重复读取同一文件却不总结。出现任何一条就回到 checklist:是否设了 budget?是否有 progressive disclosure?是否限制 tool outputs?是否设了 compaction trigger?