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

# Claude Code 离开一会儿回来上下文被压缩了？关闭闲置压缩（idleCompaction）的三种方法
- URL: https://tbbbk.com/claude-code-idle-compaction-off/
- Published: 2026-11-10T02:54:03.000Z
- Updated: 2026-11-10T02:54:03.000Z
- Description: Claude Code 闲置压缩是什么、什么时候触发，以及关闭或调高门槛的方法。
- Author: TuBaiBai
- Tags: AI 编程工具, Claude Code

用 Claude Code 跑长任务，中途去开个会、吃个饭，回来发现对话被压缩了，前面聊的细节没了，终端里多了一行：

```
Compacted while idle, before the prompt cache expired
```

VS Code 插件和 Claude 桌面版里的提示是另一句：

```
Compacted using a summary written while you were away · turn off with "idleCompaction": false in settings.json
```

这是 Claude Code 新加的**闲置压缩（idle compaction）**。这篇讲清楚它什么时候触发、为什么要有这个功能，以及怎么关掉或调整。

## 它什么时候会触发

下面几个条件**同时满足**才会触发：

- 在交互式终端、VS Code 插件的聊天面板，或者 Claude 桌面版的 Code 页签里用（本机或 SSH 都算）
- 自动压缩（`autoCompactEnabled`）是开着的
- 当前对话用的是 **1 小时的提示词缓存**
- 上下文已经达到阈值，默认 **20 万 token**
- 距离上一次请求大约过了一小时（更新日志写的是约 54 分钟），而且这期间电脑一直没休眠

所以短对话、上下文不大的会话不会被压缩，主要影响的是**跑了很久、上下文很大的长会话**。

## 为什么要有这个功能

Claude Code 会把对话缓存起来，缓存命中时再发消息又快又省。这个缓存的有效期是 1 小时，过期之后你再发一条消息，几十万 token 的上下文要整个重新处理一遍，又慢又费额度。

闲置压缩就是赶在缓存过期前，先把对话压缩成摘要，这样你回来发下一条消息时，不用再把整段长对话重新处理。代价是前面的细节会被压缩成摘要，某些具体内容可能就不记得了。

如果你更在意完整的上下文，比如中途离开但回来还要接着改同一批文件，可以把它关掉。

## 方法一：在 /config 里关（最简单）

Claude Code 2.1.302 起，在会话里输入：

```
/config
```

找到 **Idle compaction** 这一行，切换成关闭。改动会存进你的用户设置，立即生效，以后所有项目都不会再闲置压缩。

## 方法二：写进 settings.json

在设置文件里加一行：

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

放在哪个文件决定了作用范围：

- `~/.claude/settings.json`：对你所有项目生效（Windows 是 `C:\Users\你的用户名\.claude\settings.json`）
- 项目里的 `.claude/settings.json`：只对这个项目生效，会跟着项目一起提交，团队成员也受影响
- 项目里的 `.claude/settings.local.json`：只对这个项目、只对你自己生效

文件里原来有别的设置的话，把这一行加进去，别整个覆盖。

注意版本：`idleCompaction` 这个设置要 **Claude Code 2.1.290 及以上**才认，旧版本会直接忽略。先用 `claude --version` 看一下，不够就升级：

```
claude update
```

## 方法三：只想这一次不压缩

启动前设一个环境变量，只对这一次会话生效：

```
# Mac / Linux
DISABLE_AUTO_COMPACT=1 claude

# Windows PowerShell
$env:DISABLE_AUTO_COMPACT="1"; claude
```

不过它关的是**全部自动压缩**，不只是闲置压缩：上下文快满时也不会自动压缩了，聊太长可能会直接撞上上下文上限，要自己留意，必要时手动 `/compact`。

同理，在设置里把 `autoCompactEnabled` 关掉，闲置压缩也会跟着关掉。

## 不想关，只想调高门槛

如果你觉得 20 万 token 就压缩太早，可以用环境变量把阈值调高：

```
CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS=400000 claude
```

上下文没到这个数就不会闲置压缩。这个值最低是 10 万，设得比 10 万小也会按 10 万算。

## 怎么知道刚才被压缩过

- **终端**：会出现一行以 `Compacted while idle, before the prompt cache expired` 开头的提示
- **VS Code / 桌面版**：显示 `Compacted using a summary written while you were away`。桌面版里如果没看到，切到详细（Verbose）视图找 "Claude Code notice" 那一行

被压缩后觉得 Claude 忘了什么，直接把关键信息再告诉它一遍就行。

## 顺带一个新设置：禁止改工作目录以外的文件

同一批更新（2.1.314）还加了一个实用的安全设置：

```
{
  "permissions": {
    "blockWritesOutsideWorkingDirectories": true
  }
}
```

开了之后，不管在哪种权限模式下，Claude Code 的写文件、改文件工具都不会动工作目录以外的路径，防止它误改系统文件或别的项目。注意它不限制 shell 命令和 MCP 工具，只管写文件那几个工具。

想让 Claude Code 走更便宜的模型，可以看 [Claude Code 接入 DeepSeek](https://tbbbk.com/claude-code-codex-deepseek-flash-setup/)；接第三方 Key 的配置看 [Claude Code 接第三方 / 中转 Key](https://tbbbk.com/claude-code-third-party-api-key-relay-guide-2026/)。

参考：[Claude Code 设置参考](https://code.claude.com/docs/en/settings-reference)、[Claude Code 更新日志](https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md)。