Claude Code 上下文治理的五种核心策略(详解长会话保持有效上下文的工程做法)

长会话里保持有效上下文,核心是减少冗余、控制噪声、按需召回。Claude Code 把上下文视作稀缺资源,配套提供 /compact 摘要压缩、/clear 干净重启、/rewind 回到分叉点、子代理隔离、CLAUDE.md 长期记忆五种治理动作。下面从触发时机、操作成本、副作用三个维度把它们拆开讲清楚。

一、为什么上下文治理不是”提示词优化”

很多团队把上下文吃紧归因于”模型不够强”,但 200K token 窗口下真正决定输出质量的,往往是窗口里装了什么东西。Claude Code 官方文档明确把 /compact、/clear 列为”剔除过时上下文”的标准动作,而不是建议。这意味着上下文治理属于运行时工程,不属于提示词工程。

更要命的是工具调用本身也在吃窗口。读取一个 500 行的 TypeScript 文件大约占 3K-9K token,跑一轮测试输出可能 5K-15K token,而 CLAUDE.md 每次会话都会按字加载——一段 2K token 的项目说明,等于你还没开始问问题就先花掉 1% 的预算。

二、五种策略的对照

策略 触发时机 信息损失 操作成本 适用场景
/compact 同一任务继续,窗口吃紧 中(模型自摘要) 低(一条命令) 长调试、重构中段
/clear 切换到全新任务 大(仅留 CLAUDE.md) 低 跨任务切分
/rewind(双击 Esc) 走错分支想重打 小(只丢错误尝试) 中 推翻方案、试新方向
子代理(Agent 工具) 局部工作会产生大量噪声 父会话仅看结论 中(要写简报) 跨代码库调研、批量验证
CLAUDE.md 长期记忆 项目级稳定约束 无运行时损失 一次性维护 编码规范、架构约束

三、/compact 与 /clear 的关键差异

/compact 让模型把历史对话压成一段摘要,再把摘要塞回窗口继续;/clear 则直接清空历史,只保留 CLAUDE.md 与必要配置。官方描述把 /compact 形容为”低投入、模型决定保留什么”,把 /clear 形容为”零损耗、你决定保留什么”。

实际差异有三点值得注意:

  1. /compact 是有损压缩,具体决策、确切命名、边缘案例常常丢失;
  2. 调试型会话后做 /compact,下一轮”修另一个 warning”很容易引用不到旧现场;
  3. /clear 配合手写简报最稳——把”要做什么、约束是什么、已排除什么方案”用三五行写清楚,效果远超自动摘要。

四、/rewind 的隐藏用法

双击 Esc 或运行 /rewind 跳回任意历史消息并从那里重发提示,后面的消息会被丢弃。相比”在错误方向上发一句’换种方式'”,/rewind 保留有效文件读取,只剔除失败尝试。官方把它列为”纠错的首选动作”,原因正是失败路径往往会污染后续判断。

五、子代理为什么是治理工具

很多人把 Agent 子代理理解成”并行干活”,但 Anthropic 工程师在公开文章里强调,子代理更大的价值是隔离上下文。子代理拿到自己干净的窗口、自己的系统提示,能在主会话之外读代码、跑测试、整理文档,只把结论回报给父会话。

判断是否该拆子代理的经验法则是:”我以后还要看这段中间输出吗?”如果不要——比如翻整个 node_modules 找调用点——交给子代理;如果要——比如边改边迭代函数签名——留在主会话。

六、CLAUDE.md 的边界

CLAUDE.md 是项目级长期记忆,每个新会话都会自动加载,写得过厚会变成每次会话的税。建议只放”模型从代码里推断不出来”的规则:构建命令、测试入口、命名约束、禁止操作。架构、依赖列表这类代码就能说明的事不必抄进 CLAUDE.md。

# 项目级指令示例(精简版)
- 构建:pnpm build;测试:pnpm test
- 命名:组件 PascalCase,hook use 前缀
- 禁止:直接提交 .env,手动改 dist/
- 文档:变更同步更新 docs/changelog.md

七、落地路径(按步骤执行)

  1. 用 /usage 或 /cost 查看当前窗口占比,触及 60% 之前先做动作;
  2. 同一任务继续:优先 /compact,可加引导词(/compact focus on the auth refactor, drop the test debugging);
  3. 走错分支:双击 Esc /rewind 到关键分叉点,重新提示而不是纠错式对话;
  4. 跨任务切分:用 /clear + 手写简报,把约束、目标、已排除方案写清楚;
  5. 大块调研或文档生成:显式要求 Claude 派生子代理去完成,主会话只收结论。

八、容易踩的坑

  • 把 /compact 当万能解:长调试后压缩,下一轮大概率丢掉关键决策;
  • 让 CLAUDE.md 长到 3K token:每个会话都交税,等价于自我限流;
  • 让模型在主会话里”翻整库”:用子代理隔离噪声比压缩历史更省;
  • 频繁切换任务不 /clear:旧任务残留会误导新任务判断。

常见问题(FAQ)

Q1:/compact 和 /clear 哪个更稳?

切换到全新任务用 /clear,同一任务继续则用 /compact,绝大多数情况下后者够用。

Q2:子代理会污染主上下文吗?

不会,子代理独立持有窗口,只有最终回报进父会话,中间过程留在子代理一侧。

Q3:CLAUDE.md 写到多长合适?

只写模型从代码推断不出的硬约束,经验上 500 token 以内性价比高,再多就要拆到分层文件。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 qiqicto@qq.com 举报,一经查实,本站将立刻删除。
赞 (0)
参数猎人的头像参数猎人认证作者

相关推荐

返回顶部