上下文管理
理解和管理 Claude Code 的上下文窗口,有效使用 /compact、/clear 等命令
需要 API Key? 前往注册 →端点与 Base URL →
本页目录
Claude Code 的每次会话都运行在一个上下文窗口中。理解上下文的工作方式,能帮助你更高效地使用 Claude,避免因上下文溢出导致的错误。
理解上下文窗口¶
截至 2026-10-15,据 Claude Code 官方文档:Fable 5.1、Fable 5、Sonnet 5 及更新版本、Haiku 5.5、Opus 4.7 及更新版本默认使用 100 万 token(1M) 的上下文窗口,不需要 [1m] 后缀;Opus 4.6 与 Sonnet 4.6 只有选 [1m] 变体才有 1M,否则是 200K。QCode 上常用的 claude-opus-5-5、claude-sonnet-5-5、claude-haiku-5-5 都属于前一类。想把会话固定在 200K 窗口,可设置环境变量 CLAUDE_CODE_DISABLE_1M_CONTEXT=1。
上下文包含:
- 所有对话历史(你的提问 + Claude 的回答)
- 通过
@引用的文件内容 - 工具调用的输入和输出
- 系统提示和 CLAUDE.md 内容
随着对话进行,上下文会不断增长。当上下文接近上限时,Claude 的响应速度可能变慢,并最终触发自动压缩或出现错误。
压缩上下文:/compact¶
/compact 命令将当前对话历史压缩为简短摘要,释放上下文空间,同时保留重要信息。
/compact
你也可以添加自定义指令,控制压缩重点:
/compact 保留所有代码示例和已完成的任务清单
自动压缩机制:没有自行设置时,Claude Code 在对话接近模型上下文上限时自动压缩;原生 1M 窗口的模型默认约在 967K token 处压缩(官方文档)。想更早压缩,可以运行 /autocompact 500k 这类命令设置压缩窗口(auto 恢复默认;需要 Claude Code v2.1.221 或更新)。你也可以在上下文达到 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 内置的重试机制。
解决步骤¶
-
尝试
/compact: -
如果成功,对话可以继续正常进行
-
如果
/compact本身也报错(压缩请求也需要发送完整上下文),执行下一步 -
退出并重启 Claude Code:
bash # 按 Ctrl+C 或输入 /exit # 然后重新启动 claude
预防建议¶
- 定期压缩:在上下文达到 70-80% 时主动运行
/compact,而不是等到溢出 - 任务分解:将大任务拆分为多个小任务,每个任务使用独立会话
- 用 CLAUDE.md 替代重复粘贴:将项目背景写入
CLAUDE.md,Claude 启动时会自动读取,无需在每次对话中重复提供 - 避免引入大文件:每引用一个大文件会消耗大量上下文,优先引用关键部分
- 使用
/cost监控:/cost命令可以查看当前会话的 token 消耗情况
相关命令速查¶
| 命令 | 作用 |
|---|---|
/compact |
压缩上下文(保留摘要) |
/clear |
清除所有上下文 |
/context |
查看上下文状态 |
/cost |
查看 token 消耗 |
@文件路径 |
引用文件到上下文 |
| ## 上下文工程层级 |
「上下文工程」指的是有意识地组织 Claude 在每次请求中读到的内容——让高价值、稳定的信息排在前面,把噪声挡在外面。Claude Code 的上下文遵循一个明确的优先级层级(从高到低):
- 企业 / 托管策略——由组织统一下发的规则,优先级最高,个人无法覆盖。
- 项目记忆
CLAUDE.md/AGENTS.md——仓库根目录的项目级指令,描述代码规范、构建命令、项目背景。 - 路径作用域规则——子目录中的嵌套
CLAUDE.md或.claude/rules,只对该路径下的工作生效。 - 实时对话历史——当前会话里你和 Claude 的往来内容,优先级最低,也最容易膨胀。
理解这个层级,能帮你把指令放在正确的位置:通用规范写进项目级 CLAUDE.md,目录专属约定写进路径作用域规则,而不要在每次对话里反复口述。
实用要点¶
- 指令要简洁、高信号:
CLAUDE.md越精炼,Claude 越容易遵循;冗长、跑题的内容反而会稀释关键指令。 - 在逻辑断点处
/compact:完成一个阶段后压缩历史,过长且发散的对话会降低准确率。 - 不相关任务之间
/clear:切换到完全无关的新任务时清空历史,避免旧上下文干扰。 - 用路径引用代替整段粘贴:通过
@文件路径让 Claude 按需读取文件,而不是把大段内容塞进对话——既省上下文,也更准确。 - 把稳定内容放在最前面:系统提示、
CLAUDE.md、大块背景等不变内容应排在前部且不频繁改动,这样它们可以被提示缓存命中(缓存读取成本约为正常输入的 10%)。这也是「简洁稳定的CLAUDE.md+ 复用会话」能省钱的根本原因。
简单说:把稳定、高价值的内容沉到层级上方并保持不变,把易变的对话历史定期收口。需要进一步了解,请参阅 CLAUDE.md 项目记忆 与 成本优化。
常用上下文命令的细节¶
截至 2026-10-15,据 Claude Code 官方命令文档:
| 命令 | 官方说明 |
|---|---|
/compact [说明] |
把到目前为止的对话总结压缩,释放上下文;可附带「保留什么」的说明 |
/clear |
开启一个上下文为空的新对话(别名 /reset、/new);之前的对话可以用 /resume 找回 |
/context |
用彩色网格显示当前上下文占用,并给出占用大户的优化建议;加 all 展开明细 |
/rewind |
回退对话和代码到之前的节点,也可以选「从此处开始总结」或「总结到此处」,只压缩一段而保留另一段 |
/autocompact [auto\|大小] |
设置自动压缩窗口,如 /autocompact 500k;auto 恢复为按模型调好的默认值 |
据官方 memory 文档:项目根目录的 CLAUDE.md 在 /compact 之后会被重新从磁盘读入,不会丢;只在对话里说过的指令则可能在压缩后消失——想让它长期有效,请写进 CLAUDE.md。
通过 QCode 使用时的注意点¶
- Claude 系列不分长短上下文档,计费按实际 token 数;GPT 系列单次请求的输入(含缓存命中部分)超过 272K 时,整次请求按长上下文价计费,规则见 计费说明。长会话在接近 272K 前先压缩,更省。
- 每一轮请求都会把当前的全部上下文重新发给模型,所以会话越长,每轮的 token 就越多;稳定不变的前缀(
CLAUDE.md、系统提示)可以被缓存命中,频繁改动前部内容则会让缓存失效。 - 用
/usage(别名/cost)看当前会话用量,QCode 按 token 计费,各模型单价见 qcode.cc/models。
常见报错与排查¶
| 现象 | 原因 | 处理 |
|---|---|---|
返回 429,内容含 E015 / Internal server error |
上下文接近模型上限(约 95%),属长会话溢出 | 先 /compact;/compact 也失败就退出重开,见上文「长会话溢出预防」 |
/compact 本身报错 |
压缩请求同样要带上完整上下文,已经放不下 | 退出并重新启动 Claude Code,必要时用 /resume 回到较早的对话 |
| 压缩后 Claude「忘了」某条要求 | 那条要求只在对话里说过 | 写进 CLAUDE.md |
| 想固定在 200K 窗口 | 默认窗口已是 1M | 设环境变量 CLAUDE_CODE_DISABLE_1M_CONTEXT=1 |
| 上下文涨得特别快 | 引用了大文件,或工具输出很长 | 用 /context 找占用大户,只引用相关片段 |
常见问题¶
/compact 和 /clear 该用哪个?¶
还要接着做同一件事就用 /compact,它保留摘要;换到完全无关的新任务才用 /clear,它从空白开始。
压缩会丢掉 CLAUDE.md 吗?¶
不会。项目根目录的 CLAUDE.md 压缩后会被重新读入;子目录里的嵌套 CLAUDE.md 和带路径条件的规则则在需要时再次加载。
如何让自动压缩更早触发?¶
用 /autocompact 500k 这类命令设置窗口大小,auto 恢复为按模型调好的默认值;该命令需要 Claude Code v2.1.221 或更新。你也可以在占用到 70% 到 80% 时(这是建议值,不是官方数字)自己运行 /compact。
压缩之后发现丢了东西,能退回去吗?¶
可以。用 /rewind 选择之前的节点,恢复对话、代码或两者;它依赖会话的检查点,详见 工作流技巧。
开始使用 QCode
一把 API Key 同时用于 Claude Code、Codex 等工具;按 token 计费,各模型单价见 qcode.cc/models