zovo.imzovo.im
首页›教程›正文

Claude Code 长对话太费额度?用 /autocompact 把自动压缩提前,四种设置方法一次讲清

zovo约 3 分钟读完
Claude Code 在 1M 上下文的模型上默认要到约 967K token 才自动压缩,期间每条消息都带着越来越长的历史。把压缩窗口调小是社区里常见的省额度做法,本文按官方文档整理设置方法和确认步骤。

01适用场景

你用的是原生 1M 窗口的模型(官方列出 Fable 系列、Sonnet 5 及以后、Haiku 5.5、Opus 4.7 及以后),而且经常开很长的会话。这类会话默认约 967K token 才压缩。窗口越大,每轮请求读取的历史越多,即便缓存命中,读取量也会计入使用额度。

社区做法:有网友(X 上的宝玉、产品博客 Product Compass)建议设为 300K,理由是多数任务用不到 1M。这是个人经验,不是官方推荐值;窗口太小会让压缩更频繁,细节丢得更多,请按自己的任务调整。

02前提

  • Claude Code 版本较新:官方文档写明 /autocompact 按模型保存窗口的行为在 v2.1.288 起生效,带 k/M 后缀的环境变量值要 v2.1.304 以上。
  • 窗口取值范围 100K 到 1M,且不会超过模型自身的上下文窗口。

03方法一:在会话里用命令(最常用)

text
/autocompact 300k
/autocompact auto

第一行把当前模型的窗口设为 30 万 token,并保存到用户设置里,立即对当前会话生效;第二行恢复为官方为该模型调好的默认窗口。数值可以写 200000、300k、1M,也可以写 100 到 1000 之间的纯数字(表示千)。

04方法二:写进配置文件,对所有模型生效

json
{
  "autoCompactWindow": 300000
}

放在 ~/.claude/settings.json。如果你已用 /autocompact 给某个模型保存过窗口,该模型以命令保存的值为准。

05方法三:只管这一次启动

bash
claude --autocompact 300k

该参数只在本次启动生效,不改已保存的设置;claude --autocompact auto 则本次强制用默认窗口。

06方法四:脚本和云环境用环境变量

bash
export CLAUDE_CODE_AUTO_COMPACT_WINDOW=300000

官方说明该变量优先级高于命令、参数和配置文件,设置后 /autocompact 只会报告被覆盖、不再保存。

07如何确认设置生效

  1. 在会话里输入不带数值的 /autocompact,查看当前模型的窗口显示。
  2. 若显示的值和你设的不一致,检查是否有环境变量,或组织的托管设置在更高优先级覆盖了它——官方说明托管设置里的窗口会让命令保存的值失效,命令会提示。
  3. 日常观察:上下文用量到你设的数值附近时,会话应自动压缩一次。注意状态栏的 used_percentage 是相对模型完整窗口算的,设了环境变量后不能用它判断何时压缩。

08注意事项

  • 压缩是把整段对话替换成摘要,不是保留最近的 1M;窗口越小,丢失细节的次数越多。关键约定写进 CLAUDE.md 更稳妥。
  • 想控制摘要保留什么,可手动运行 /compact 并带上重点说明。
  • 官方还有闲置压缩机制(idleCompaction),离开一段时间后可能自动压缩,和本文的窗口设置是两件事。
  • 本站按官方文档整理,未在本站环境实测各命令。
标签:
本文由 zovo 编辑撰写,转载请注明出处。

相关文章