Claude Code: 上下文管理

最后更新:2026-08-31

上下文是 Claude Code 的"工作记忆"——管理好上下文,就是管理好 Claude Code 的理解能力和你的 API 账单。

💡 提示:Claude Sonnet 的上下文窗口是 200K tokens,大约相当于 15 万字。项目越大,上下文管理越重要——不是所有文件都需要同时放进"工作记忆"。

📋 前置知识:第九章 CLAUDE.md 使用指南

1. 你将学到


2. 上下文窗口机制

(1) 上下文的组成

100%
graph LR
    A[总上下文 200K] --> B[系统提示 ~5K]
    A --> C[CLAUDE.md ~2K]
    A --> D[项目文件 ~100K]
    A --> E[对话历史 ~80K]
    A --> F[代码输出 ~13K]
组成部分 典型占比 说明
系统提示 2-3% Claude Code 内置指令
CLAUDE.md 1-2% 项目约定
项目文件 40-60% 读取的源码文件
对话历史 30-40% 之前的问答记录
代码输出 5-10% 生成的代码

(2) 上下文生命周期

TEXT 📖 仅展示
会话开始 → 加载 CLAUDE.md + 系统提示
        → 根据指令读取相关文件
        → 每轮对话累积历史
        → 上下文接近上限时,早期内容被截断
        → 长会话质量可能下降

▶ 示例 1: 查看上下文使用量

TEXT 📖 仅展示
> /cost

Token usage:
  System prompt:     4,230 tokens
  CLAUDE.md:         1,850 tokens
  Project files:    52,400 tokens (12 files)
  Conversation:     28,600 tokens (8 turns)
  Code output:       8,920 tokens
  ─────────────────────────────────
  Total:            96,000 / 200,000 tokens (48%)
  Estimated cost:    $1.82

3. Token 优化策略

(1) 减少不必要的文件读取

策略 效果 做法
精确指令 减少 30-50% 指定具体文件而非"看看项目"
限制范围 减少 20-40% 在 CLAUDE.md 限定工作目录
及时清除 减少 10-30% 长会话中用 /clear 重置
小步操作 减少 15-25% 一次只做一件事

(2) 指令精确度对比

TEXT 📖 仅展示
# 高消耗指令(读取整个项目)
> 帮我重构这个项目

# 中消耗指令(限定范围)
> 重构 src/services/ 下的所有 service

# 低消耗指令(精确文件)
> 重构 src/services/user.service.ts,提取验证逻辑到单独文件

▶ 示例 2: Token 消耗对比

TEXT 📖 仅展示
# 场景:添加一个新 API endpoint

# 模糊指令(消耗 ~80K tokens)
> 给项目添加一个用户搜索接口
→ Claude Code 读取整个项目结构
→ 搜索所有相关文件
→ 读取路由配置、中间件、模型...
Total: 82,000 tokens, $1.64

# 精确指令(消耗 ~25K tokens)
> 在 src/routes/user.ts 添加 GET /api/users/search 接口,
> 使用 src/services/user.service.ts 的 searchUsers 方法,
> 参考 src/routes/product.ts 的搜索接口格式
→ Claude Code 只读取 3 个指定文件
Total: 24,500 tokens, $0.49

节省:70%

4. 大项目上下文策略

(1) 分区工作

MARKDOWN
<!-- CLAUDE.md 中限定工作范围 -->
## 当前工作范围
- 主要开发:src/api/ 目录
- 数据模型:src/models/ 目录
- 当前任务:用户权限模块

## 暂时不需要关注
- src/frontend/ (前端独立开发)
- src/migrations/ (数据库迁移已完成)
- docs/ (文档单独维护)

(2) 按需加载

TEXT 📖 仅展示
# 不要一次加载所有文件
> ❌ "读取所有路由文件并重构"
> ✅ "读取 src/routes/user.ts 并添加分页支持"

# 完成后继续下一步
> "现在读取 src/routes/order.ts 并添加同样的分页支持"

(3) 会话分段

TEXT 📖 仅展示
# 长任务分成多个短会话

# 会话1:模型设计
claude "设计用户权限的数据库模型,只读 prisma/schema.prisma"

# Ctrl+D 退出

# 会话2:中间件
claude "基于刚才的权限模型,实现 RBAC 中间件"

# Ctrl+D 退出

# 会话3:路由集成
claude "将 RBAC 中间件集成到所有需要权限检查的路由"

5. 手动上下文控制

(1) 会话内命令

命令 作用 场景
/clear 清空对话历史 话题切换时
/compact 压缩对话历史 长会话优化
/cost 查看 Token 用量 成本监控
/files 查看已加载文件 检查上下文

(2) 强制限定读取文件

TEXT 📖 仅展示
# 只读指定文件
> 只读取 src/auth/jwt.ts 和 src/middleware/auth.ts,
> 不要读其他文件。
> 给 JWT 认证添加 refresh token 支持。

▶ 示例 3: 大项目优化前后对比

TEXT 📖 仅展示
# 优化前:模糊指令
> 修复所有测试失败

Claude Code 读取了 47 个文件...
Token usage: 156,000 tokens ($3.12)

# 优化后:精确指令
> 运行 npm test,只修复 auth 模块的 3 个失败测试,
> 不要读 frontend 相关文件

Claude Code 读取了 8 个文件
Token usage: 32,000 tokens ($0.64)

节省:80%

6. 综合示例:大型项目上下文管理

TEXT 📖 仅展示
# Alice 管理一个 200+ 文件的大型项目

# 策略1:CLAUDE.md 限定范围
# 在 CLAUDE.md 中写明当前工作模块

# 策略2:短会话+git 检查点
claude "添加订单取消功能"
# 完成后 git commit
git add -A && git commit -m "feat: order cancellation"

# 策略3:分区处理
claude "只处理 src/api/order/ 目录下的文件"

# 策略4:定期 /compact
> /compact
# 对话历史已压缩,从 45K tokens 降到 12K tokens

# 策略5:成本监控
> /cost
# 确认每次操作在预算内

❓ 常见问题

Q 200K tokens 不够用怎么办?
A/clear 重置对话,或分成多个短会话。200K 对单次任务通常够用,长会话才可能超限。
Q /compact 压缩后质量会下降吗?
A 会有一点。压缩保留关键信息,丢失对话细节。建议在话题切换时用 /clear 而非 /compact
Q 如何知道 Claude Code 读了我哪些文件?
A Claude Code 会显示每个操作读取的文件路径。也可以用 /files 查看当前已加载文件。
Q 能禁止 Claude Code 读某些文件吗?
A 可以在 CLAUDE.md 中写明"不要读取 xxx 目录",但 Claude Code 不一定 100% 遵守。敏感文件建议用 .claudeignore 排除。
Q 上下文快满了有什么表现?
A Claude Code 可能开始遗忘早期对话内容,回答质量下降。这时应该 /clear 或开新会话。
Q 每个会话的 Token 消耗差异很大正常吗?
A 正常。简单查询可能 5K tokens,复杂重构可能 100K+。指令精确度是最大影响因素。

📖 小节


📝 作业

  1. 基础题(难度⭐):在一个项目中运行 /cost,记录一次简单任务和一次复杂任务的 Token 消耗差异。
  2. 进阶题(难度⭐⭐):用模糊指令和精确指令分别完成同一任务,对比 Token 消耗和结果质量。
  3. 挑战题(难度⭐⭐⭐):为一个 50+ 文件的项目设计上下文管理策略,实现 Token 消耗减半。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏