Claude Code 长对话太费额度?用 /autocompact 把自动压缩提前,四种设置方法一次讲清
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方法一:在会话里用命令(最常用)
/autocompact 300k /autocompact auto
第一行把当前模型的窗口设为 30 万 token,并保存到用户设置里,立即对当前会话生效;第二行恢复为官方为该模型调好的默认窗口。数值可以写 200000、300k、1M,也可以写 100 到 1000 之间的纯数字(表示千)。
04方法二:写进配置文件,对所有模型生效
{
"autoCompactWindow": 300000
}放在 ~/.claude/settings.json。如果你已用 /autocompact 给某个模型保存过窗口,该模型以命令保存的值为准。
05方法三:只管这一次启动
claude --autocompact 300k
该参数只在本次启动生效,不改已保存的设置;claude --autocompact auto 则本次强制用默认窗口。
06方法四:脚本和云环境用环境变量
export CLAUDE_CODE_AUTO_COMPACT_WINDOW=300000
官方说明该变量优先级高于命令、参数和配置文件,设置后 /autocompact 只会报告被覆盖、不再保存。
07如何确认设置生效
- 在会话里输入不带数值的
/autocompact,查看当前模型的窗口显示。 - 若显示的值和你设的不一致,检查是否有环境变量,或组织的托管设置在更高优先级覆盖了它——官方说明托管设置里的窗口会让命令保存的值失效,命令会提示。
- 日常观察:上下文用量到你设的数值附近时,会话应自动压缩一次。注意状态栏的 used_percentage 是相对模型完整窗口算的,设了环境变量后不能用它判断何时压缩。
08注意事项
- 压缩是把整段对话替换成摘要,不是保留最近的 1M;窗口越小,丢失细节的次数越多。关键约定写进 CLAUDE.md 更稳妥。
- 想控制摘要保留什么,可手动运行
/compact并带上重点说明。 - 官方还有闲置压缩机制(idleCompaction),离开一段时间后可能自动压缩,和本文的窗口设置是两件事。
- 本站按官方文档整理,未在本站环境实测各命令。


DeepSeek
Hy-Memory
Timestral