第 08 期 | Context Window (上下文) 管理的艺术

更新于 2026/4/5

🎯 学习目标

学完本期你将掌握:

  1. 上下文窗口的工作原理与容量概念
  2. /compact/clear 的正确使用时机
  3. 如何在长会话中保持 Claude 的输出质量
  4. 上下文「占用率」可视化与监控

📖 核心概念讲解

8.1 什么是上下文窗口?

上下文窗口 (Context Window) 是 Claude 当前会话中能"记住"的全部信息总量。可以把它想象成一块 白板

╭─ Context Window 白板 ────────────────────────────────╮
│ ┌──── 已占用 ───────────────────────┐ ┌── 剩余 ──┐ │
│ │ CLAUDE.md | 对话历史 | 文件内容   │ │  可用空间  │ │
│ │ Tool 调用结果 | 代码上下文        │ │           │ │
│ └───────────────────────────────────┘ └───────────┘ │
│                                                      │
│ 占用率: ████████████████░░░░░░░  68%                 │
│                                                      │
│ ⚠️ 超过 80% 时,Claude 的回答质量明显下降             │
│ 🔴 接近 100% 时,系统自动触发 /compact                │
╰──────────────────────────────────────────────────────╯

8.2 三个关键命令

命令 作用 适用场景
/compact 将长对话压缩为摘要,释放空间 上下文过长但仍需延续
/clear 完全清空上下文,重新开始 切换到完全不相关的任务
/memory 查看持久化记忆 确认哪些偏好已经保存

8.3 黄金法则:60% 上下文占用率

经验表明,当上下文占用 低于 60% 时,Claude 的输出质量最高。

占用率状态图:

0%  ─────── 30% ─────── 60% ─────── 80% ─────── 100%
│  ✅ 最佳   │  ✅ 良好  │  ⚠️ 注意  │  🔴 降级  │
│  (新会话)   │          │ 考虑/compact │ 必须处理  │

💻 模拟 Claude TUI 交互

场景 1:长会话中的 /compact

> (经过 30 轮对话后...)
>
> 给登录模块加上 rate limiting

╭─ Claude ─────────────────────────────────────────────╮
│                                                      │
│  ⚠️ Context usage: 78%                               │
│  Tip: Use /compact to free up space                  │
│                                                      │
│  让我来添加限流功能...                                │
│  (但回答可能不如之前精准)                             │
│                                                      │
╰──────────────────────────────────────────────────────╯

> /compact

╭─ Compacting ─────────────────────────────────────────╮
│                                                      │
│  📦 Summarizing conversation...                      │
│                                                      │
│  Summary of work done so far:                        │
│  • Analyzed auth module structure                    │
│  • Implemented JWT refresh token flow                │
│  • Added password reset endpoint                     │
│  • Fixed CORS configuration                          │
│  • Updated Prisma schema with session table          │
│                                                      │
│  Key decisions:                                      │
│  • Using bcrypt with 12 salt rounds                  │
│  • Refresh tokens stored in DB (not cookie)          │
│  • Rate limiting will use sliding window algo        │
│                                                      │
│  ✅ Context reduced: 78% → 25%                       │
│  You can continue working normally.                  │
│                                                      │
╰──────────────────────────────────────────────────────╯

> 继续,给登录模块加 rate limiting

╭─ Claude ─────────────────────────────────────────────╮
│                                                      │
│  (基于压缩摘要,Claude 知道之前的工作上下文)          │
│                                                      │
│  好的,根据之前的讨论我们选择滑动窗口算法。          │
│  让我来实现...                                        │
│                                                      │
╰──────────────────────────────────────────────────────╯

场景 2:/clear 切换完全不同的任务

> (刚完成 auth 模块的开发)

> /clear

╭─ Context Cleared ────────────────────────────────────╮
│                                                      │
│  ✅ Context cleared. Starting fresh.                 │
│  📝 CLAUDE.md and auto memory are still loaded.      │
│                                                      │
╰──────────────────────────────────────────────────────╯

> 帮我优化 CI/CD pipeline,目前构建太慢了

╭─ Claude ─────────────────────────────────────────────╮
│                                                      │
│  (全新上下文,没有 auth 模块的记忆干扰)               │
│                                                      │
│  🔍 Tool: Read (.github/workflows/ci.yml)            │
│  🔍 Tool: Read (turbo.json)                          │
│  ...                                                 │
│                                                      │
╰──────────────────────────────────────────────────────╯

💻 代码演示:上下文管理的最佳实践

# ✅ 好习惯:不同任务用不同会话
claude                  # 任务 A:修复 bug
# 完成后退出
claude                  # 任务 B:写新功能

# ✅ 好习惯:命名会话,方便后续恢复
claude -r "auth-refactor" "继续 auth 模块重构"
claude -r "ci-optimize" "继续 CI 优化"

# ✅ 好习惯:长任务中定期 compact
# 每完成一个里程碑就 /compact

# ❌ 坏习惯:一个会话承担所有任务
# 上下文很快爆满,质量骤降

# ❌ 坏习惯:从不 compact
# 等到系统自动触发时已经太晚了

上下文管理策略速查

任务类型          建议策略
──────────        ──────────────────────
小修小补          单次会话,无需管理
中等功能开发      每完成一步 /compact
大型重构          每个模块用 /clear 隔离
完全不同的任务    直接 /clear 或新会话
跨天工作          用 -r 命名会话 + /compact

🔧 涉及的 Tools / 命令

命令 作用 底层机制
/compact 压缩会话为摘要 调用模型生成 summary
/clear 清空上下文 保留 CLAUDE.md + memory
-c / --continue 恢复最近会话 重载历史消息
-r "name" 恢复命名会话 按名称查找历史
--fork-session 分叉会话 复制上下文到新分支

📝 本期要点回顾

  1. 上下文窗口有容量限制,超过 60% 应考虑 /compact
  2. /compact 保留工作摘要,适合同一任务的长会话
  3. /clear 完全重置,适合切换到无关任务
  4. 用命名会话 (-r) 管理多条并行开发线
  5. CLAUDE.md 和 Auto Memory 不受 /clear 影响(持久化)

🔗 参考资料