自学教程

Claude Code 上下文管理

简介

上下文(Context)就是 Claude Code 当前会话能“看到”的全部信息:对话历史、读取的项目文件、CLAUDE.md 规则、代码变更记录。
上下文容量有限,当对话内容持续累积,会出现 Token 耗尽、模型遗忘早期需求、响应变慢等问题。上下文管理就是一套控制会话内容、减少冗余、按需加载文件的方法。

核心原则:只给模型必要信息;区分会话内临时上下文和项目持久配置(CLAUDE.md)。

上下文来源

  1. 对话聊天记录:你和 Claude 的问答、指令、输出内容
  2. 项目文件:主动读取的代码文件,@文件名 引用的资源
  3. 项目规则:CLAUDE.md、.claude/settings.json、.claude/rules
  4. 变更历史:本次会话内的代码 Diff、修改记录

常用上下文操作(斜杠命令)

/clear     # 清空当前对话上下文,开启全新会话,重新加载 CLAUDE.md
/compact   # 压缩会话历史,提炼关键信息,减少Token占用(保留会话)
/rewind    # 回退会话到历史检查点,撤销对话与代码改动
/status    # 查看当前上下文状态、token使用情况

命令对比

命令作用是否保留会话适用场景
/clear清空全部对话,重置会话❌ 重建新会话开启全新独立任务,加载更新后的 CLAUDE.md
/compact精简历史,压缩冗余内容✅ 继续当前会话会话过长,模型忘记需求,不想重新开始
/rewind回退到历史节点✅ 回到过去会话代码改动出错,撤销最近几步操作

文件引用控制(减少上下文膨胀)

1. @ 文件引用语法

使用 @文件路径 按需加载单个文件,不会一次性加载整个项目。
示例:

@src/utils/request.ts 帮我增加超时处理

不要一次性引用大量文件,会快速消耗上下文。

2. .claude/ignore 过滤不需要读取的文件

在 .claude/ignore 配置屏蔽目录,Claude 不会扫描、读取匹配文件,避免把构建产物、依赖包带入上下文。

node_modules
dist
.env
*.log

3. 避免一次性读取整个大型目录

不要使用类似:读取src下所有文件,大型项目会瞬间占满上下文窗口。优先单个文件或者按模块分批。

会话生命周期与上下文规则

  1. 新建会话:加载全局 CLAUDE.md + 项目 CLAUDE.md,上下文为空。
  2. 持续对话:每一轮问答追加到上下文,不断累积。
  3. 修改 CLAUDE.md:已经打开的会话不会自动读取新版,必须 /clear 重建会话。
  4. 会话隔离:不同项目、不同 CLI/IDE 会话之间上下文互相独立,互不干扰。

上下文管理最佳实践

  1. 任务拆分:大需求拆分成多个小任务,一个任务完成后 /clear 开启新会话。
  2. 及时压缩:会话轮次变多、模型开始遗忘早期要求时,执行 /compact。
  3. 按需加载文件:优先用 @文件 引用,不一次性导入大量源码。
  4. 规则放在 CLAUDE.md:固定项目规范写进 CLAUDE.md,不要每次对话重复描述,节省 token。
  5. 定期检查状态:/status 查看 token 使用,接近上限时及时清理。
  6. 复杂任务:先用 Plan 模式做方案,确认方案后 /clear,新建会话执行编码。

IDE 与 CLI 的上下文差异

  • 终端 CLI:会话保存在当前目录,重启终端会话仍可恢复;使用 /resume 恢复历史会话。
  • VS Code / JetBrains 插件:每个对话面板为独立会话,关闭面板上下文丢失;新建对话自动加载项目 CLAUDE.md。

常见问题

  1. Claude 忘记前面约定的规则

上下文过长信息被截断。执行 /compact;无效则 /clear 新开会话。

  1. 每次对话都要重复描述项目架构

在项目根目录配置 CLAUDE.md,新建会话自动加载项目信息。

  1. 读取文件太多,报错上下文超限

减少一次性引用文件数量,使用 .claude/ignore,分批处理任务。

  1. /compact 之后还能看到完整历史吗?

不能,会把冗长对话压缩成摘要,只保留关键信息,原始详细对话会被精简。

安全提示

  • 上下文包含本次会话读取的文件内容,不要在对话中粘贴密钥、密码。
  • 多人共享会话时,注意上下文内是否包含敏感信息。
标签:

0 条笔记