Claude Code 中的 Auto Compact 是什么?

CometAPI
AnnaMar 31, 2026
Claude Code 中的 Auto Compact 是什么?

Claude Code 是 Anthropic 的具备自主能力的编码助手,能够读取代码库、编辑文件、运行命令,并在终端、IDE、桌面应用与浏览器工作流中集成工具。由于它在共享的上下文窗口中工作,长时间会话最终会被聊天历史、文件输出与工具噪音填满。Claude Code 会在接近限制时自动压缩会话历史来管理这一点,而仅存在于聊天历史中的早期指令可能会丢失。

这在 2026 年尤为重要,因为 Anthropic 正在推动 Claude Code 面向更长、更自主的工作模式。2026 年 3 月 25 日,Anthropic 发布了 “Claude Code auto mode: a safer way to skip permissions”,指出用户对权限请求的批准率为 93%,并将 auto mode 描述为在人工批准与不安全的跳过权限之间的基于分类器的中间地带。2026 年 2 月 5 日,Anthropic 还发布了 Claude Opus 4.6,强调更强的编码能力、更好的调试能力和更长的自主会话。这些更新与自动压缩(auto compact)并不相同,但清晰展示了产品方向:更少中断、更长会话、更可靠的连续性。

CometAPI 目前以低于官方 API 的价格提供对 Claude API 的访问,例如 Claude Sonnet 4.6Claude Opus 4.6 以及 Claude 5。

What auto-compact actually means in Claude Code

Auto Compact 是 Claude Code(Anthropic 的 CLI/桌面工具)以及更广泛 Claude API 生态中的内置上下文优化机制。当你的会话接近模型的上下文窗口上限时——旗舰模型如 Claude Opus 4 或 Sonnet 4 通常约为 200,000 个 token——它会自动介入。hooks 文档明确说明:PreCompact 会在压缩操作前触发,而 auto 匹配器意味着 “当上下文窗口已满时自动压缩(auto-compact)”。对应的 PostCompact hook 会在压缩完成后触发,并接收生成的 compact_summary

这很重要,因为压缩并不等同于 “memory(记忆)”。Auto memory 是 Claude 自己的笔记系统,而压缩是一个会话管理机制,用于压缩实时的会话状态。内存文档明确指出 CLAUDE.md 是持久化的、auto memory 由 Claude 写入,而压缩是会话对话历史被缩减的时刻,从而让模型可以继续工作。

与被迫开启新聊天(并丢失历史)或让模型 “遗忘” 关键信息相比,Auto Compact 会:

  1. 分析完整历史 —— 识别值得保留的核心要素。
  2. 生成精炼摘要 —— 包括决策、代码架构、已解决的缺陷、文件状态与下一步计划。
  3. 用摘要替换旧消息 —— 在 API 术语中称为 “压缩块”。
  4. 无缝继续 —— 在保留上下文的状态下继续工作。

关键数据点(2026):

  • 触发阈值:默认约为 ~95% 容量(或剩余 ~25%)。有用户报告内部会为压缩过程本身预留 20–45k tokens(约占上下文的 22.5%)。
  • 性能改进:自 Claude Code v2.0.64 起,压缩从 “需要数分钟” 提升为 “即时”。
  • 令牌节省示例(来自 Claude Agent SDK 基准):一个 5 工单的流程在两次压缩后从 204k 输入 tokens 降至 82k(减少 58.6%)。

Auto Compact 与 /clear(清空一切)或简单截断不同。它会智能保留重要内容——最近的代码 diff、架构选择、命名约定——同时压缩已解决的调试循环与探索性的岔路。

Why Use Auto Compact in Claude Code?

长时间编码会话是常态。实现单个功能可能就包含 50+ 轮对话:规划、调试、重构、测试。如果没有压缩,token 使用会线性增长、响应质量会下降、成本会飙升。

对开发者而言,收益是减少重启疲劳。无需手动将摘要复制到新会话,而是让 Claude 压缩会话并继续前进。这在修复缺陷、多文件重构、测试驱动的变更,以及评审密集的工作流中尤其有用,因为对话可能会非常长。Claude Code 会话从一个全新的上下文窗口开始,因此压缩是让长时间工作变得可行的关键机制之一。

Core Benefits

  • 无限会话长度:可以无限续航,无需重新开始。
  • 成本与性能效率:显著减少输入 tokens。真实案例显示多阶段工作流可节省 50–60%。
  • 更好的聚焦与稳定性:防止 “上下文过载” 导致的幻觉或遗忘早期约束。
  • 保留组织知识:关键决策在数百条消息后仍保持在上下文内。
  • 无缝适配自主工作流:在 Claude Code 中使用工具、MCP 服务器或多代理设置时至关重要。

When should you rely on auto compact?

当任务天然是长跑型时使用 auto compact:多文件重构、在日志与源代码间来回的调试会话、包含反复验证的功能实现,或需要大量工具调用的研究工作。Anthropic 文档明确指出那些上下文窗口被无关聊天、文件内容与命令塞满的长会话,auto compaction 会在释放空间的同时保留关键代码与决策。

当任务短小、相对独立,或需要精确、永久保留的指令时,它不那么适合。来自对话早期的指令在压缩后可能会丢失,这也是为什么项目规则应放在 CLAUDE.md 中,而不是放在之后可能被压缩掉的一次性提示里。

When to use (or enable) it:

  • 对大多数用户默认开启 —— 适合日常编码、大型重构或探索性项目。
  • 长时间运行的任务 —— 处理队列、数据管道或多文件代码库。
  • 团队/企业环境 —— 需要跨会话保持上下文连续性。
  • 高风险项目 —— 丢失一次架构决策可能就会多花数小时。

When to consider disabling (via /config):

  • 你希望对上下文的每一个 token 都进行超精细控制。
  • 你更喜欢完全手动管理(高级用户会通过文件保存/恢复计划)。

最新动态(2025–2026):2025 年 3 月,Anthropic 改进了 Auto Compact 的保留逻辑,让摘要在 “保留重要信息同时降低 token 用量” 上更聪明。到 2025 年底,触发时机被优化(有时在 64–75% 使用率时提前触发以避免压缩失败)。2026 年年初 Web/桌面端出现过临时性问题(官方标注 1 月中修复,但仍有零星报告),而 CLI 一直稳定。2.0.64 版(2026 年 2 月)让压缩变为即时,这是开发体验上的重大提升。

How to Use Auto Compact in Claude Code: Step-by-Step Guide

Claude Code 的设计是每个会话都从一个全新的上下文窗口开始。这样既能让每个新任务干净启动,也更容易在会话噪音变多时识别出来。建议在不相关的任务之间使用 /clear,避免陈旧上下文持续占用空间。

Step 1: Check Current Context Status

使用 /context 可视化当前上下文负载。Claude Code 的内置命令列表显示,/context 会展示彩色网格,并突出显示内存膨胀、优化建议与容量警告。这是最快查看是否接近自动压缩触发点的方式。

在 Claude Code 会话中输入:

/context

这会显示 “Context left until auto-compact: XX%” —— 你的实时进度条。

Step 2: Configure Auto-Compact (Optional)

当上下文窗口趋于饱和时,Claude Code 会自动压缩对话。hooks 参考将此事件标注为 auto,它会在上下文窗口已满时触发。实际上,你并不是 “打开” auto compact,而是让 Claude Code 在需要时自动进行。

/config

导航到 “Auto-compact enabled”,将其切换为 true/false。默认是启用。你也可以调整相关设置,比如预先关闭不需要的 MCP 服务器以主动释放 tokens。

Step 3: Let Auto-Compact Run Automatically

当使用率达到 ~95%:

  • Claude 会显示 “Compacting our conversation so we can keep chatting…”(或类似提示)。
  • 它在后台运行并自动恢复。
  • 你会在上下文顶部看到新的摘要。

提示:不要等到 0% 再进行。更早地手动压缩通常效果更好(见下方最佳实践)。

Step 4: Use hooks if you want to automate what happens around compaction

Claude Code 暴露了 PreCompactPostCompact 两个 hook。hook 参考显示 PreCompact 可以检测压缩是手动还是自动触发,而 PostCompact 会收到生成的 compact_summary。这让 hooks 非常适合用于日志、审计、压缩后的备注,或外部自动化。

一个简单的 hook 模式如下:

{  "hooks": {    "PostCompact": [      {        "matcher": "auto",        "hooks": [          {            "type": "command",            "command": "./scripts/save-compact-summary.sh"          }        ]      }    ]  }}

相应的 shell 脚本可以从 stdin 读取 JSON,因为 Claude Code 的命令型 hooks 会通过 stdin 接收 JSON:

#!/usr/bin/env bashset -euo pipefailjq -r '.compact_summary // empty' \  | sed 's/^/[compact] /' \  >> .claude/compact-log.txt

文档确认命令型 hooks 会通过 stdin 接收 JSON,且 PostCompact 包含 compact_summary,因此这种模式与当前 hook 模型一致。

当你希望立刻压缩线程时使用 /compact。你可以附加指令来塑造希望保留的摘要要点。Anthropic 的内置命令页面将 /compact [instructions] 列为 “Compact conversation with optional focus instructions”。

/compact keep the auth flow decisions, the current test plan, and the open TODOs

该模式在交接前、切换分支前,或在你打算让 Claude 开始新阶段工作前特别有用。

真实使用示例:

  • After debugging: /compact keep the solution we found, remove debugging steps
  • Project milestone: /compact focus on the new feature requirements

API-Level Compaction (Advanced – Python SDK & Messages API)

对于自定义代理或脚本,使用官方压缩工具。

Claude Agent Python SDK 示例(对使用工具的工作流自动适用):

from anthropic import Anthropic

client = Anthropic()

runner = client.beta.messages.tool_runner(
    model="claude-opus-4-6",
    max_tokens=4096,
    tools=your_tools,
    messages=messages,
    compaction_control={
        "enabled": True,
        "context_token_threshold": 100000,  # or lower for aggressive compaction
        "model": "claude-haiku-4-5",        # cheaper summarizer
        "summary_prompt": """Create a focused summary preserving:
1. COMPLETED TASKS and key outcomes
2. CURRENT STATE and open items
3. NEXT STEPS
Wrap in <summary></summary> tags."""
    }
)

检测压缩事件:

if curr_msg_count < prev_msg_count:
    print(f"Compaction occurred! Messages reduced from {prev_msg_count} to {curr_msg_count}")
```<grok-card data-id="f4afb5" data-type="citation_card" data-plain-type="render_inline_citation" ></grok-card>

Full Messages API(beta,2026)—— 需要 header:
```bash
curl https://api.anthropic.com/v1/messages \
  --header "anthropic-beta: compact-2026-01-12" \
  --data '{
    "model": "claude-opus-4-6",
    "messages": [...],
    "context_management": {
      "edits": [{
        "type": "compact_20260112",
        "trigger": {"type": "input_tokens", "value": 150000},
        "pause_after_compaction": true
      }]
    }
  }'
```

API 会返回一个压缩块,你必须在后续调用中传回它。自定义指令与暂停选项可让你对预算进行完整控制(例如,在多会话中强制总计 3M token 上限)。

> 如果你使用的是 CometAPI 的 Claude API,将消息的地址改为 "https://api.cometapi.com/v1/messages\\"。

## Auto-Compact vs Manual Compact vs Clear: Comparison Table

| Feature              | Auto-Compact                           | Manual /compact                    | /clear                      |
| -------------------- | -------------------------------------- | ---------------------------------- | --------------------------- |
| Trigger              | 自动触发(~95% 上下文)               | 用户触发                           | 用户触发                    |
| Control              | 低(系统决定)                        | 高(可自定义指令)                 | 无(完全重置)              |
| Context Preservation | 良好(近期 + 关键项)                  | 极佳(你精确指定)                 | 无                          |
| Token Savings        | 高(基准中 58%+)                      | 高且可预测                         | 最大(但丢失历史)          |
| Workflow Disruption  | 最小;即时压缩时几乎无打断            | 无(你选择时机)                   | 完全中断                    |
| Best For             | 放手型长会话                           | 关键里程碑与高级用户               | 全新开始的项目              |
| Risk                 | 偶发的细节丢失(早期曾有)            | 无                                 | 之前工作完全丢失            |
| 2026 Maturity        | 稳定且即时(v2.0.64+)                | 社区高度推荐                       | 始终可用                    |

## Best Practices for Claude Code Auto Compact (Pro Tips from Developers)

### 主动压缩

把压缩当作一次重置,而不是救命稻草。如果线程充满了死胡同,请让 Claude 压缩并明确告诉它哪些事项重要:当前目标、选定方案、失败的测试与未解决问题。实践表明,这会让摘要比系统盲目压缩更加有用。

### 保持持久指令简短

Anthropic 表示超过 200 行的文件会降低遵循度,因此庞大且笼统的策略文件通常不如简洁且界定明确的规则有效。使用 `.claude/rules/` 为文件类型或路径提供特定行为;当你需要更丰富的支持性细节但又不想让主指令文件膨胀时,使用 `@path` 导入。
Free tokens first —— 在压缩前通过 /mcp 或 @server-name disable 禁用未使用的 MCP 服务器。

### 结合 CLAUDE.md

将 `CLAUDE.md` 视为任何需要跨长会话存续内容的单一事实来源。`CLAUDE.md` 会在 `/compact` 之后重新读取,这使它成为存放构建命令、编码约定与永不希望丢失的持久规则的正确位置。Auto memory 也很有用,但它是不同目的的不同系统。

## Other tips

**通过 /context 监控** —— 尽量将使用保持在 70–80% 以下。

**面向 API 用户** —— 设置更低的阈值(例如 50k–100k),并使用更便宜的总结模型如 Haiku。

**仅在必要时禁用** —— 2025 年的改进后,大多数开发者现在建议保持 Auto-Compact 开启。

**先在非关键会话中测试压缩** —— 观察你的特定工作流如何被摘要化。

**真实影响**:开发者报告可实现 2–3 倍更长的高效会话,且更少出现 “Claude 忘了我们在做什么” 的时刻。

## Common Issues & Troubleshooting (2026 Edition)

* 自动压缩未触发:检查 Web/桌面端与 CLI;2026 年 1 月的一些问题已修复,但请确认版本。
* 压缩后丢失上下文:下次使用带明确指令的手动 /compact。
* 无限循环或 102% 使用率:罕见;重启会话或将 /clear 作为最后手段。
* 压缩缓慢:这是 v2.0.64 之前的问题——请更新 Claude Code。
* API 压缩块错误:在后续调用中始终附上完整的压缩内容块。

## Conclusion

Auto compact 是 Claude Code 中最重要的隐藏机制之一,因为它让长时间编码会话在上下文窗口填满时仍然可用,而无需你每次都重启。实践法则很简单:溢出时让 auto compact 处理;需要掌控时使用 `/compact`;将持久指导写入 `CLAUDE.md`;当会话结构变化时使用 `/clear` 或 `/rewind`。这种组合在长时间的 Claude Code 工作流中,能在连续性、控制与速度之间取得最佳平衡。

Claude Code 中的 Auto Compact 代表了实用型 AI 辅助开发的一大飞跃。通过智能管理 200k-token 的上下文窗口,它消除了长篇编码中最大的摩擦点:内存耗尽。随着(2026 年的)即时性能、丰富的配置选项与强大的 API 扩展,它如今已是每天被数千名开发者使用的成熟且经过实战检验的功能。

**今天的行动步骤**:

1. 打开 Claude Code 并运行 `/config` —— 确认 Auto-Compact 已启用。
2. 在你的当前项目上尝试一次带指令的手动 `/compact`。
3. 探索 Python SDK 或 Messages API,以便在 [CometAPI.](https://www.cometapi.com/) 中构建自动化代理。

以低成本 获取顶级模型

阅读更多