资讯动态

Claude Code 的 /compact 到底删了什么?TaoToken 视角拆解上下文压缩真相

发布时间:2026/10/17 8:25:34 来源:尧图企业网站定制
1. 对话聊到一半突然“失忆”问题出在哪如果你用 Claude Code 跑过稍大一点的项目大概率遇到过这种场景前面十几轮对话里它还记得你要求“所有接口返回统一用 Result 包装”结果读了几个文件、跑了几条命令之后它开始重新问你“需要我怎么做”。你以为是模型变笨了其实多半是上下文压缩在背后动了手。Claude Code 的上下文压缩是一套分层的记忆管理机制核心包含三类Microcompact微压缩、Auto-compact自动压缩、Manual /compact手动压缩。它们解决的问题很现实——Claude 的上下文窗口默认 200K tokens听起来很大但一次文件读取可能就吃掉几千 token一次 shell 命令输出、一次 grep 搜索结果同样如此。当你让 Claude Code 重构一个认证模块它读了 10 个文件、跑了 5 条命令、搜了 3 次代码token 用量很容易冲到 15 万以上再来几轮对话就逼近上限。这套机制适合谁适合所有把 Claude Code 当日常编码搭子的人尤其是做中大型项目、单次会话动辄一两个小时的开发者。理解它删了什么、保留了什么你才能判断“记忆丢失”到底是压缩策略的正常取舍还是配置出了问题。这篇会从 TaoToken 统一 Key/API 通道的调用日志视角出发把三类压缩的触发条件和信息取舍讲清楚并给出一份可复制的 settings 配置片段和一次压缩前后的 token 对比验证动作。2. TaoToken 前置用统一通道看清压缩前后的 token 变化要观察压缩行为光靠 Claude Code 终端里的提示是不够的。终端只会告诉你“Compacting conversation…”但不会告诉你压缩前多少 token、压缩后多少 token、这次压缩是 Microcompact 还是 Auto-compact 触发的。这时候一个能记录每次请求 token 用量的统一 API 通道就很有价值。TaoToken 在这里扮演的角色是统一 Key/API 通道你用一个 Key 就能调用 Claude 系列模型同时它的调用日志会记录每次请求的输入 token、输出 token 和模型 ID。把 Claude Code 的 Base URL 指向 TaoToken 的 API 地址后每次压缩触发的摘要请求、每次正常对话请求都会在日志里留下痕迹。你就能对照时间线判断这次“失忆”是发生在一次 Auto-compact 之后还是 Microcompact 把某个文件读取结果压掉了。先拿到 Key。访问 https://taotoken.net/api-keys 创建一个 API Key注意保存页面关闭后不再完整显示。然后在控制台 https://taotoken.net/console 可以看到用量统计和请求日志。如果你还没决定用哪个模型可以先去模型对话 https://taotoken.net/chat 试一下 Claude 系列的实际表现确认模型 ID 再写进配置。这里要强调一点TaoToken 是统一的模型调用通道不是让你绕过什么它的价值在于把分散的请求收敛到一个可观测的入口。对于排查“压缩到底删了什么”这个问题可观测性比什么都重要。3. 可复制配置settings.json 与压缩相关环境变量Claude Code 的配置分两层一层是模型接入配置Base URL、Key、Model ID一层是压缩行为配置环境变量。先把接入配置写对否则你连日志都看不到。Claude Code 的配置文件通常放在用户目录下的.claude/settings.json项目级可以放在项目根目录的.claude/settings.json。下面是一份可复制的片段把 Base URL 指向 TaoToken 的 API 地址{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的TaoToken密钥, ANTHROPIC_MODEL: claude-sonnet-4-5-20250929, CLAUDE_CODE_AUTO_COMPACT_WINDOW: 100000, CLAUDE_AUTOCOMPACT_PCT_OVERRIDE: 80 } }三件套要写全Base URL 是https://taotoken.net/apiKey 是你刚创建的sk-开头密钥Model ID 填你确认过的模型标识。少任何一个请求都会失败。关于压缩行为的几个环境变量含义如下环境变量作用建议值CLAUDE_AUTOCOMPACT_PCT_OVERRIDE手动设置自动压缩触发百分比80 表示用到 80% 窗口就压缩CLAUDE_CODE_AUTO_COMPACT_WINDOW限制上下文窗口大小测试用100000 便于快速触发压缩DISABLE_AUTO_COMPACT禁用自动压缩不推荐除非你在做对照实验如果你用的是 Codex 或 Cline 这类工具配置思路一致只是文件名不同。Codex 的auth.json里同样要写全 Base URL、Key、Model ID 三件套Cline 的 MCP 配置里也是同样的三要素。CC Switch 这类切换工具本质也是帮你管理这三件套切换时确认 Base URL 没被改回默认值。注意CLAUDE_CODE_AUTO_COMPACT_WINDOW设小是为了方便你在测试中快速看到压缩行为生产环境不要设太小否则会频繁触发压缩反而丢上下文。配置写完后重启 Claude Code让它重新读取 settings.json。接下来就可以做压缩前后的 token 对比了。4. 验证请求一次压缩前后的 token 对比动作验证的目标很明确制造一次压缩然后对比压缩前后的 token 用量看摘要替换掉了多少内容。第一步把窗口调小让压缩容易触发。上面配置里CLAUDE_CODE_AUTO_COMPACT_WINDOW设成 100000CLAUDE_AUTOCOMPACT_PCT_OVERRIDE设成 80意味着用到约 80K token 就会触发自动压缩。第二步在 Claude Code 里执行一段会大量消耗 token 的操作。比如让它读一个较大的文件并做分析# 在 Claude Code 会话中输入 请读取 src/services/auth.ts 并分析其中的鉴权流程列出所有导出函数读文件、分析、输出这一轮就会吃掉不少 token。重复几轮类似操作或者让它连续读多个文件token 用量会快速上升。第三步观察终端提示。当用量逼近阈值时你会看到类似Compacting conversation…的提示这就是 Auto-compact 触发了。此时记下当前时间点。第四步打开 TaoToken 控制台的请求日志 https://taotoken.net/console找到压缩时间点前后的请求记录。你会看到两类请求一类是正常的对话请求输入 token 较大另一类是压缩摘要请求它的输入是整段对话输出是一段摘要。对比这两类请求的输入 token 数就能估算出压缩把多少内容替换成了摘要。第五步压缩完成后继续对话再发一条请求看输入 token 是否明显下降。正常情况下压缩后的输入 token 会从接近阈值降到摘要加保留消息的量级。如果你想更精确地对比可以在压缩前后各问一个需要“记忆”的问题比如“我刚才让你分析的鉴权流程里哪个函数负责 token 校验”。如果压缩保留了关键信息它能答上来如果答不上来说明这次压缩把那段信息取舍掉了。这个动作能直观告诉你压缩删的是工具输出的冗余部分还是连对话结论一起压没了。Microcompact 的验证稍微不同它不产生独立的摘要请求而是在每次查询前悄悄压缩工具输出。你可以在日志里观察同一段对话里早期文件读取的输入 token 占比会逐渐下降但对话消息本身没变。这就是 Microcompact 在给工具输出“瘦身”。5. 本篇常见错排查401、local proxy failed 与 reading choices配置和验证过程中最容易撞上几个报错。逐个说清楚。401 未授权。这是最常见的一个通常有三个原因Key 写错、Key 过期、Base URL 写错。先检查ANTHROPIC_AUTH_TOKEN是不是完整的sk-开头字符串有没有多余空格再确认ANTHROPIC_BASE_URL是https://taotoken.net/api注意结尾不要多加/v1之类的路径除非文档明确要求。如果 Key 刚创建去控制台确认它还在有效期内。local proxy failed。这个报错说明 Claude Code 尝试走本地代理但没连上。检查你的环境变量里有没有残留的代理设置比如HTTP_PROXY、HTTPS_PROXY。如果有先清掉再试。另外确认ANTHROPIC_BASE_URL没有被其他配置文件覆盖——Claude Code 会合并多级配置项目级的 settings.json 优先级高于用户级检查一下项目里有没有另一份配置把 Base URL 改回去了。reading choices 相关报错。这类报错通常出现在响应解析阶段说明返回的数据结构不符合预期。常见原因是 Model ID 写错了或者 Base URL 指向了一个不兼容的端点。确认ANTHROPIC_MODEL填的是 TaoToken 支持的模型标识去模型对话页面确认一下可用模型列表。如果 Model ID 里带了日期后缀注意大小写和连字符要和文档一致。OAuth 相关报错。如果你之前用官方登录方式配置过 Claude Code可能会残留 OAuth 凭证和现在的 Key 方式冲突。检查~/.claude目录下有没有旧的凭证文件必要时清理掉让 Claude Code 只用 settings.json 里的 Key。压缩后仍然报上下文超限。这说明压缩没生效或者压缩本身也超了。检查DISABLE_AUTO_COMPACT是不是被设成了 true如果设了CLAUDE_CODE_AUTO_COMPACT_WINDOW但值比实际用量还大压缩不会触发。另外如果单次工具输出特别大比如读了一个几万行的文件Microcompact 可能来不及压这时候手动执行/compact并附加指令比如/compact 保留鉴权流程的函数签名和调用关系能让摘要更聚焦。提示排查时优先看 TaoToken 控制台的请求日志它能告诉你请求到底有没有发出去、发出去了返回什么状态码。终端报错有时候会掩盖真实原因。6. 把压缩当成可观测行为而不是黑盒回到最初的问题Claude Code 的 /compact 到底删了什么答案不是“删了对话”而是分层取舍。Microcompact 压的是工具输出的冗余保留对话消息Auto-compact 和 Manual /compact 压的是整段对话用结构化摘要替换原始消息但会保留所有用户消息、重新注入最近读过的文件、保留待办任务和当前工作状态。它删的是重复的文件内容、冗长的命令输出、已经完成的中间步骤留下的是意图、结论和下一步。判断记忆丢失是否来自压缩策略方法就是对照 TaoToken 调用日志的时间线压缩请求出现的时间点和你发现“失忆”的时间点是否吻合。如果吻合那就是正常取舍如果不吻合检查配置和报错。如果你打算长期用 Claude Code 跑编码任务建议把 Coding Plan 用起来配合统一通道的日志做长期观察比每次出问题再临时排查高效得多。压缩不是 Bug是工程上的必然选择理解它你就能更好地和它配合。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑