简介
上下文(Context)就是 Claude Code 当前会话能“看到”的全部信息:对话历史、读取的项目文件、CLAUDE.md 规则、代码变更记录。
上下文容量有限,当对话内容持续累积,会出现 Token 耗尽、模型遗忘早期需求、响应变慢等问题。上下文管理就是一套控制会话内容、减少冗余、按需加载文件的方法。
核心原则:只给模型必要信息;区分会话内临时上下文和项目持久配置(CLAUDE.md)。
上下文来源
- 对话聊天记录:你和 Claude 的问答、指令、输出内容
- 项目文件:主动读取的代码文件,
@文件名引用的资源 - 项目规则:
CLAUDE.md、.claude/settings.json、.claude/rules - 变更历史:本次会话内的代码 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下所有文件,大型项目会瞬间占满上下文窗口。优先单个文件或者按模块分批。
会话生命周期与上下文规则
- 新建会话:加载全局
CLAUDE.md+ 项目CLAUDE.md,上下文为空。 - 持续对话:每一轮问答追加到上下文,不断累积。
- 修改 CLAUDE.md:已经打开的会话不会自动读取新版,必须
/clear重建会话。 - 会话隔离:不同项目、不同 CLI/IDE 会话之间上下文互相独立,互不干扰。
上下文管理最佳实践
- 任务拆分:大需求拆分成多个小任务,一个任务完成后
/clear开启新会话。 - 及时压缩:会话轮次变多、模型开始遗忘早期要求时,执行
/compact。 - 按需加载文件:优先用
@文件引用,不一次性导入大量源码。 - 规则放在 CLAUDE.md:固定项目规范写进
CLAUDE.md,不要每次对话重复描述,节省 token。 - 定期检查状态:
/status查看 token 使用,接近上限时及时清理。 - 复杂任务:先用 Plan 模式做方案,确认方案后
/clear,新建会话执行编码。
IDE 与 CLI 的上下文差异
- 终端 CLI:会话保存在当前目录,重启终端会话仍可恢复;使用
/resume恢复历史会话。 - VS Code / JetBrains 插件:每个对话面板为独立会话,关闭面板上下文丢失;新建对话自动加载项目
CLAUDE.md。
常见问题
- Claude 忘记前面约定的规则
上下文过长信息被截断。执行
/compact;无效则/clear新开会话。
- 每次对话都要重复描述项目架构
在项目根目录配置
CLAUDE.md,新建会话自动加载项目信息。
- 读取文件太多,报错上下文超限
减少一次性引用文件数量,使用
.claude/ignore,分批处理任务。
/compact之后还能看到完整历史吗?
不能,会把冗长对话压缩成摘要,只保留关键信息,原始详细对话会被精简。
安全提示
- 上下文包含本次会话读取的文件内容,不要在对话中粘贴密钥、密码。
- 多人共享会话时,注意上下文内是否包含敏感信息。
0 条笔记