
1. 长会话为什么越聊越慢Claude Code 上下文膨胀的真实场景如果你用 Claude Code 写过稍微大一点的项目大概率遇到过这种体验刚开始对话时响应飞快改个函数、加个测试都是秒回聊到三四十轮之后每次发消息都要等十几秒token 账单也悄悄涨上去了。这不是网络问题也不是模型变笨了而是Context Management没做好——上下文窗口被塞满了。Claude 的上下文窗口就是它的「工作记忆」。你每发一条消息、每让它读一个文件、每调用一次工具结果都会累积进这个记忆里。窗口满了之后Claude Code 会触发自动压缩auto-compact把重要细节总结一下、丢掉一些工具调用结果来腾空间。问题是这个过程会丢细节而且压缩本身也要消耗 token。更麻烦的是很多人根本不知道自己的上下文已经膨胀到什么程度了。我试过在一个中型 Node 项目里连续对话两小时中途/context一看光 MCP server 的 schema 就占了将近 30% 的窗口加上前面读过的十几个文件内容真正留给「当前任务」的空间已经很少了。这时候 Claude 开始频繁触发压缩回答质量肉眼可见地下降甚至开始忘记前面说过的约定。所以 Context Management 的核心不是「怎么让 Claude 记住更多」而是「怎么让它只记住该记的」。这篇会从三个层面拆裁剪不该进上下文的别进、压缩该丢的主动丢、分层把长期记忆和临时上下文分开。同时我会把 settings 配置改到 TaoToken 统一通道这样你在验证上下文占用时token 消耗和模型调用都能在一个地方看清楚。适合谁看已经在用 Claude Code 做真实项目、感觉响应变慢或 token 消耗失控的开发者以及想系统理解上下文窗口机制、不想再靠「重启对话」硬扛的人。下面每一步都能直接复制操作不需要你提前懂什么底层原理。2. 把 Claude Code 的 settings 改到 TaoToken 统一通道在动手做上下文瘦身之前先把通道理顺。原因很实际Context Management 的效果需要靠 token 消耗数据来验证如果你的请求分散在多个来源根本没法对比「瘦身前 vs 瘦身后」到底省了多少。把 Claude Code 的 settings 统一指向 TaoToken你就能在一个控制台里看到每次请求的 token 用量、模型调用记录验证起来干净利落。TaoToken 在这里的角色是统一接入层Claude Code、Codex、Cline 这些工具都可以走同一个 Base URL 和 Key模型 ID 也统一管理。官网在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 这个不加 UTM。你需要先去控制台拿一个 API Key地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite Key 管理页在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。Claude Code 的配置走的是settings.json通常放在~/.claude/settings.json全局或项目根目录的.claude/settings.json项目级。项目级优先级更高适合团队共享。下面这段是可直接复制的 JSON 片段路径和字段名保持和 Claude Code 原文一致{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的TaoToken密钥, ANTHROPIC_MODEL: claude-sonnet-4-20250514, ANTHROPIC_SMALL_FAST_MODEL: claude-haiku-4-20250514 }, permissions: { allow: [ Read, Glob, Grep ], deny: [ Bash(rm -rf:*), Bash(curl:*) ] }, contextManagement: { autoCompact: true, compactThreshold: 0.75, maxFileReadLines: 300, excludePatterns: [ node_modules/**, dist/**, *.lock, *.min.js ] } }这里几个字段值得单独说。ANTHROPIC_BASE_URL指向 TaoToken 的 API 入口ANTHROPIC_AUTH_TOKEN填你刚拿的 Key。ANTHROPIC_MODEL是主模型ANTHROPIC_SMALL_FAST_MODEL是处理轻量任务比如生成 commit message、简单补全时用的快模型——把它单独配出来能省下不少主模型的 token。contextManagement这一段是上下文瘦身的关键。autoCompact打开自动压缩compactThreshold设成 0.75 表示窗口用到 75% 就触发压缩别等满了才压。maxFileReadLines限制单次读文件的行数防止一个几千行的文件直接把窗口吃掉。excludePatterns是排除清单node_modules、dist、lock 文件这些永远不该进上下文。如果你用的是 Codex配置走~/.codex/auth.json三件套同样要写全{ OPENAI_BASE_URL: https://taotoken.net/api, OPENAI_API_KEY: sk-你的TaoToken密钥, OPENAI_MODEL: gpt-4o }Cline 或 CC Switch 这类工具在设置界面里填 Base URL、Key、Model ID 三项即可Base URL 统一填https://taotoken.net/api。三件套缺一不可尤其是 Model ID填错了会直接报模型不存在。配好之后先别急着做瘦身跑一次/context看看当前占用作为基线。这个数字后面要用来对比。3. 可复制的上下文瘦身配置裁剪、压缩、分层三件套通道理顺了现在进入正题。Context Management 的实操可以拆成三件套裁剪不让无关内容进上下文、压缩主动丢弃已完成的中间结果、分层长期记忆和临时上下文分开存放。下面每一件都给你可复制的配置或命令。3.1 裁剪用 excludePatterns 和 maxFileReadLines 卡住入口上下文膨胀的第一大来源是「读了不该读的文件」。Claude Code 默认会 Glob 整个项目如果你没排除node_modules它可能把几百个包的package.json都扫一遍。上面 settings 里的excludePatterns就是干这个的。除了node_modules、dist建议把coverage、.next、build、*.log也加进去。maxFileReadLines设成 300 是个经验值。大部分源文件 300 行以内能覆盖核心逻辑超长的文件让它分段读而不是一次性灌进去。如果你在做一个几千行的老项目这个值可以再降到 200。还有一个容易被忽略的点MCP server 的 schema 会常驻上下文。每个启用的 MCP server 都会把自己的工具定义加载进来几个 server 加起来轻松占掉 20%–30% 的窗口。如果你不是每个任务都需要所有 MCP就在 settings 里按需开关或者用 Skills 替代——Skills 的工作方式和 MCP 类似但不会把所有定义都预先加载进上下文。3.2 压缩/compact 和 /clear 的正确用法Claude Code 提供两个手动命令/compact和/clear。区别很关键/compact会保留之前工作的记忆把上下文总结压缩适合「这个任务还没做完但上下文太满了」的场景。比如你正在重构一个模块已经改了五个文件上下文快满了这时候/compact一下Claude 会记住「我们在重构 X 模块已改 A/B/C/D/E」然后继续。/clear是彻底清空适合「这个任务做完了开始新任务」。很多人舍不得 clear觉得前面聊的有用结果新任务被旧上下文拖累。我的习惯是一个独立任务结束就/clear需要跨会话记住的东西写进CLAUDE.md。CLAUDE.md是分层策略的核心。放在项目根目录Claude Code 每次启动会自动读取。你可以把项目约定、常用命令、架构说明写进去这样就不用每次在对话里重复。它相当于「长期记忆」而对话上下文是「临时记忆」。两者分开临时记忆才能放心清空。3.3 分层用 .ai 文件夹做跨工具共享记忆excerpt 里提到一个思路本地建一个.ai文件夹让 Claude 和 Codex 共同维护。这个做法很实用。结构大概是这样.ai/ context.md # 项目背景、架构说明 skills/ # 可复用的操作模板 current.md # 当前任务状态context.md写长期不变的信息current.md写当前进度。每次开新会话让 Claude 先读这两个文件比在对话里重新解释一遍省太多 token。而且 Codex、Cline 都能读同一份工具之间切换不用重新交代背景。用 subagent 也是分层的一种。把「搜索代码库」「跑测试」这类会产生大量中间输出的任务丢给 subagent主上下文只保留最终结论。这样主对话始终干净不会被一堆 grep 结果塞满。4. 验证请求与上下文占用对比用 /context 和 token 数据说话配置改完必须验证。不然你不知道瘦身到底有没有效果。验证分两步先看上下文占用再看 token 消耗。第一步在 Claude Code 里跑/context。这个命令会显示当前上下文窗口的使用情况包括各部分占比。瘦身前先记一个数比如「MCP 占 28%文件内容占 45%对话历史占 20%」。改完 settings 后再跑一次正常情况下 MCP 占比会明显下降文件内容也会因为maxFileReadLines和excludePatterns而减少。第二步发一个真实请求去 TaoToken 控制台看 token 用量。比如让 Claude 读一个文件并改一个函数请读取 src/utils/parser.js把 parseDate 函数的时区处理改成 UTC。请求发出去后到 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 看这次调用的 input tokens 和 output tokens。对比瘦身前同样的操作input tokens 应该有明显下降。如果没降检查是不是excludePatterns没生效或者 MCP server 还在常驻。想单独验证模型通道是否通可以用模型对话页面发一条测试消息https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 。如果那边能正常返回说明 Base URL 和 Key 没问题问题就出在 Claude Code 的 settings 上。实测下来一个中型项目做完这三件套同样的重构任务 input tokens 能降 30%–40%响应速度也回来了。关键是要养成习惯任务切换就/clear长任务中途/compact跨会话信息写CLAUDE.md。5. 常见报错排查401、local proxy failed、reading choices、OAuth配置过程中最容易踩的坑集中在几个报错上逐个说。401 Unauthorized最常见。九成是 Key 填错或没填。检查ANTHROPIC_AUTH_TOKEN是不是完整的sk-开头字符串有没有多余空格。如果 Key 是对的还报 401去 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 确认这个 Key 还在有效期内、额度没用完。local proxy failed这个报错通常出现在你本地还开着别的代理工具或者ANTHROPIC_BASE_URL写成了http://localhost:xxxx。Claude Code 会尝试走本地代理但代理没起来就失败。解决办法是把ANTHROPIC_BASE_URL改成https://taotoken.net/api并确认没有其他环境变量比如HTTP_PROXY在干扰。检查一下 shell 里有没有残留的 proxy 设置。reading choices 相关报错一般是模型返回格式不对或者 Model ID 填错了。比如你把ANTHROPIC_MODEL写成了一个不存在的模型名服务端返回的内容 Claude Code 解析不了。去接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 核对当前支持的模型 ID填准。OAuth 报错如果你之前用官方账号登录过 Claude Code本地可能残留了 OAuth token和新的 API Key 冲突。清掉~/.claude/下的认证缓存或者干脆把settings.json里的env段确认一遍确保走的是ANTHROPIC_AUTH_TOKEN而不是旧的 OAuth 流程。排查顺序建议先确认三件套Base URL Key Model ID齐全且正确再看有没有本地代理干扰最后看模型 ID 是否在支持列表里。大部分问题在前两步就能解决。6. 把上下文瘦身变成日常习惯从 Coding Plan 开始Context Management 不是配一次就完事的它是个日常习惯。我的做法是把它固化到工作流里每个项目根目录放一份.claude/settings.json和CLAUDE.md新会话先读.ai/context.md任务切换就/clear长任务中途/compact。这样上下文规模始终可控响应速度和 token 消耗都稳定。如果你经常做长期编码或者跑 Agent 任务可以考虑用 Coding Plan 把模型调用统一管理起来地址是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。它适合那种「每天都要和 Claude Code 打交道、需要稳定通道和用量可见」的场景。配合前面说的 settings 配置上下文瘦身的效果能直接在用量数据里看到。最后留一个我踩过的坑别在上下文快满的时候硬撑着继续聊。一旦/context显示超过 80%Claude 的回答质量就会开始飘这时候/compact一下比继续追问划算得多。上下文管理省的不只是 token更是你的调试时间。