上下文管理

理解和管理 Claude Code 的上下文窗口,有效使用 /compact、/clear 等命令

上下文管理

Claude Code 的每次会话都运行在一个上下文窗口中。理解上下文的工作方式,能帮助你更高效地使用 Claude,避免因上下文溢出导致的错误。

理解上下文窗口

Claude Code 默认使用 20 万 token 的上下文窗口。Opus 4.6 和 Sonnet 4.6 模型支持扩展至 100 万 token(1M context)

上下文包含:

  • 所有对话历史(你的提问 + Claude 的回答)
  • 通过 @ 引用的文件内容
  • 工具调用的输入和输出
  • 系统提示和 CLAUDE.md 内容

随着对话进行,上下文会不断增长。当上下文接近上限时,Claude 的响应速度可能变慢,并最终触发自动压缩或出现错误。

压缩上下文:/compact

/compact 命令将当前对话历史压缩为简短摘要,释放上下文空间,同时保留重要信息。

/compact

你也可以添加自定义指令,控制压缩重点:

/compact 保留所有代码示例和已完成的任务清单

自动压缩机制:Claude Code 默认在上下文达到 95% 容量时自动触发压缩。你也可以在上下文达到 70-80% 时主动运行 /compact,避免等到最后一刻。

清除历史:/clear

/clear 命令清除所有对话历史,开始全新会话:

/clear

注意/clear 会删除所有上下文,包括 Claude 已了解的项目信息。适合切换到完全不相关的新任务时使用。

查看上下文状态:/context

使用 /context 命令查看当前上下文的使用情况:

/context

@ 引用文件

使用 @ 符号将文件内容添加到上下文:

@src/main.ts 解释这个文件的功能
@package.json 检查依赖版本
@README.md

最佳实践

  • 只引用当前任务相关的文件,避免引入不必要的上下文
  • 大文件会快速消耗上下文空间,优先引用关键文件
  • 使用 CLAUDE.md 提供项目背景,而不是在每次对话中重复粘贴

管道输入

通过管道将命令输出或文件内容传入 Claude:

# 将文件内容传入
cat error.log | claude "分析这个错误"

# 将命令输出传入
git diff | claude "生成提交信息"

# 多行输入
echo "请分析以下代码:
$(cat src/utils.ts)" | claude

长会话溢出预防

症状:E015 Internal server error

当对话上下文接近模型容量上限(~95%)时,Anthropic API 会返回 500 错误。QCode.cc 将其包装为 429 响应:

429 {"error":{"code":"E015","message":"Internal server error"},"status":500}

这是 Anthropic API 的已知行为(非 QCode.cc 特有问题)。QCode.cc 将上游 5xx 错误包装为 429 响应,是为了利用 Claude Code 内置的重试机制。

解决步骤

  1. 尝试 /compact

  2. 如果成功,对话可以继续正常进行

  3. 如果 /compact 本身也报错(压缩请求也需要发送完整上下文),执行下一步

  4. 退出并重启 Claude Codebash # 按 Ctrl+C 或输入 /exit # 然后重新启动 claude

预防建议

  • 定期压缩:在上下文达到 70-80% 时主动运行 /compact,而不是等到溢出
  • 任务分解:将大任务拆分为多个小任务,每个任务使用独立会话
  • 用 CLAUDE.md 替代重复粘贴:将项目背景写入 CLAUDE.md,Claude 启动时会自动读取,无需在每次对话中重复提供
  • 避免引入大文件:每引用一个大文件会消耗大量上下文,优先引用关键部分
  • 使用 /cost 监控/cost 命令可以查看当前会话的 token 消耗情况

相关命令速查

命令 作用
/compact 压缩上下文(保留摘要)
/clear 清除所有上下文
/context 查看上下文状态
/cost 查看 token 消耗
@文件路径 引用文件到上下文
🚀
开始使用 QCode — AI 编程助手
Claude Code 官方中继,稳定快速,开箱即用
查看套餐定价 → 注册账号