> ## Content Index
> Fetch the complete content index at: http://38.65.91.206/llms.txt
> Use this file to discover other available public pages before exploring further.

# Claude Code 长会话省 Token 实战：吃透闲置自动压缩（idle compaction）
- URL: http://38.65.91.206/claude-code-idle-compaction-guide/
- Published: 2026-10-23T02:46:27.000Z
- Updated: 2026-10-23T02:46:27.000Z
- Description: 会话超过 20 万 token、闲置约 54 分钟后，Claude Code 会自动把对话压缩成摘要。本文拆解官方机制：怎么关、怎么开、阈值怎么调，以及压缩后必须做的两件事。
- Author: Cherry
- Tags: Claude Code

你有没有过这种体验：一个 Claude Code 会话开了一整天，改了十几个文件，中午去吃个饭，回来接着问，它却像“失忆”了一样？或者更现实一点——长会话越用越贵，每条新消息都要把几十万 token 的历史重新发一遍。从 2.1.290 开始，Claude Code 给这件事加了一个官方答案：**idle compaction**，闲置自动压缩。

这篇文章把官方 changelog 里关于它的三条记录拆开讲清楚：它什么时候触发、压缩后你的会话会发生什么，以及三处可以控制它的开关。全部命令可以直接复制用。

## 一、官方机制：三个数字讲清楚

根据 2026-10-14 的官方 changelog，idle compaction 的触发条件是三个数字：

- **200K+ token**：会话上下文超过 20 万 token 才会触发，小会话不受影响；
- **约 54 分钟闲置**：终端里的会话放着不动大约 54 分钟；
- **一小时 prompt 缓存过期前**：赶在缓存失效之前把会话压缩掉。

为什么是这个时机？官方的原话是 *so your next message doesn't reprocess it all*——压缩发生在缓存过期之前，这样你回来发下一条消息时，不用把全部上下文重新处理一遍，省下的是一整份长历史的重跑成本。注意这条目前只写了“in the terminal”，也就是终端会话。

## 二、压缩之后，你的会话会发生什么

触发后，对话历史会被替换成一份摘要，会话本身继续，而不是新开一个。这和手动 `/compact` 是同一种操作，只是换成了系统在你离开时自动做。

有两件事官方 changelog 特意提到了，实战中一定会碰到：

1. **技能可能要重新加载。**同一天的 changelog 里写道，`/reload-skills` 会把完整技能列表重新发给 Claude，*which is how to get skills back after compaction*——压缩后如果发现技能列表空了，敲一行 `/reload-skills` 就回来。
2. **通知会告诉你怎么关。**2026-10-16 的 changelog 补了一条：`/config` 里新增了一行 `Idle compaction`，可以直接开关；而且压缩完成后弹出的通知里，会直接写明关闭方法。

## 三、手把手：三处开关，全部可复制

控制 idle compaction 的两样东西（阈值环境变量和 settings.json 开关）都需要 **v2.1.290 或更新**。先查版本：

```
claude --version
# 需要 2.1.290 或更新，才有下面的开关
```

**开关 1：`/config` 里点一下（2.1.302+）。**在会话里输入 `/config`，找到 `Idle compaction` 这一行，直接切换开或关。这是最快的一处，适合临时改主意。

**开关 2：settings.json 永久关闭。**在用户级 `~/.claude/settings.json` 里加一行：

```
{
  "idleCompaction": false
}
```

**开关 3：调触发阈值。**环境变量 `CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS` 可以改掉默认的 200K 下限：

```
# 会话超过 10 万 token、闲置后就自动压缩（更积极）
export CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS=100000

# 或者调高到 50 万才触发（更保守）
export CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS=500000
```

## 四、手动三件套：/compact、/clear 该用哪个

自动压缩是兜底，主动管理还是靠这几个命令（Anthropic 命令参考对 `/compact` 的描述是“summarizing the conversation so far”，可带聚焦指示）：

```
# 主动压缩，还在同一个会话里继续
/compact

# 压缩时告诉它保留什么，摘要质量明显更好
/compact focus on the auth bug fix and the failing tests

# 彻底新开：上下文清空，旧会话可用 /resume 找回
/clear
```

社区里一条被反复验证的经验：**别等上下文快满了才压**。快满时的摘要是在模型已经“记不太清”的状态下生成的，质量明显更差。在逻辑里程碑处（比如修完一个模块、跑通一次测试）顺手 `/compact` 一下，效果最好。

## 五、实战建议：什么时候应该关掉它

- **工作流依赖窗口里的精确细节时**，比如你正在对着一长串错误日志或精确的 diff 逐行排查——摘要会改写措辞，精确的行号和报错原文可能就没了；
- **无人值守跑长任务时**，回来发现会话被压缩过，先别急着继续，用 `/compact` 的思路检查一下摘要里有没有丢关键结论；
- **反过来，日常开发就留着它。**上下文 20 万+ 是长会话的常态，开着自动压缩，省的是你每次“离开再回来”那第一条消息的重跑成本。

一句话总结：长会话 + 长时间离开 = 自动压缩。记住三个数字（200K、54 分钟、1 小时缓存），两处开关（`/config`、settings.json），压缩后丢了技能就 `/reload-skills`。

## 参考来源

- [Claude Code 官方 changelog](https://code.claude.com/docs/en/changelog?ref=38.65.91.206)：idle compaction、`CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS` 与 `"idleCompaction": false` 条目（2026-10-14，需 v2.1.290+）；`/config` 新增 `Idle compaction` 行条目（2026-10-16）；`/reload-skills` 说明
- [anthropics/claude-code CHANGELOG.md](https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md?ref=38.65.91.206)（官方 changelog 的生成来源）
- [/compact vs /clear 行为解析](https://dev.to/wrg32786/claude-code-compact-vs-clear-what-actually-happens-to-your-context-55d8?ref=38.65.91.206)：引用 Anthropic 命令参考中 `/compact [instructions]` 的说明