Claude Code 在长项目里跑着跑着,常出现三种症状:终端提示上下文接近上限或直接拒绝请求、同一个问题回答越来越敷衍、改一个函数却把整个模块重写一遍。大多数人第一反应是换模型或加预算,但真正的瓶颈往往在 上下文被重复发送。下面按「先看预算、再谈压缩、最后切模型」的顺序讲清楚。
一、先搞清楚:一次请求到底在花什么
Claude Code 每一轮对话都不是只带你的新问题,它会把系统提示、工具定义、项目记忆文件、历史对话摘要、最近读过的文件内容一起打包发出去。所以第二轮开始,输入 Token 就是「上一轮全部内容 + 本轮新增」。这解释了为什么长会话的成本增长不是线性的。
可以先做一个粗略的预算拆解,判断钱花在哪:
- 固定开销:系统提示、工具 schema、项目说明文件。这部分每轮都发,但基本恒定。
- 累积开销:历史对话与被读入的文件片段。这是随会话长度增长的主体。
- 本轮新输入:你的指令和工具返回结果,通常占比最小。
如果你在 CCSub 后台的用量明细里看到某模型的输入 Token 远高于输出 Token(例如输入是输出的三四倍),基本可以确定:大量成本耗在把同一批上下文反复发送上,而不是模型真的「想多了」。
怎么在 CCSub 上按模型核对输入 Token
- 登录 https://ccsub.xyz,进入用量/账单明细页面。
- 按模型维度筛选,重点看输入 Token、缓存读取 Token、输出 Token 三列的比例关系。
- 对比不同时间段的同一模型:如果输入 Token 随时间线性暴涨而输出基本持平,说明是会话没有及时收口。
- 留意缓存读取量是否明显低于输入总量——缓存没命中,等于每轮都在全价重发上下文。
核对时不要只看总金额,要看比例。总金额高可能只是任务重,但输入输出比严重失衡,才是上下文治理出问题的信号。
二、/compact 与手动摘要:什么时候用哪个
Claude Code 内置的 /compact 会把当前会话压缩成一份摘要,释放上下文空间。它快、省事,但有两个前提要清楚:压缩是由模型完成的,压缩动作本身要花一次请求;压缩结果是有损的,细节会被抹掉。
/compact 适合的场景
- 当前任务还没做完,但你已经连续跑了很久的对话。
- 上下文里堆了很多「探索过程」——试错的命令、读了一半的文件、失败的路径。
- 你对接下来要做什么已经很清楚,只需要模型保留结论而不是过程。
手动摘要更适合的场景
- 任务涉及多个模块,自动压缩容易丢掉关键的接口约定或命名规范。
- 你需要跨会话继续,希望摘要内容可控、可以人工校对。
- 压缩后还要长时间开发,值得多花一点时间写清「当前进度 + 已定决策 + 待办清单」。
手动摘要的实操模板,直接写进对话里让模型确认即可:
请把当前进度整理成以下结构,不要写代码:
1. 任务目标(一句话)
2. 已确认的技术决策(列表,含原因)
3. 已修改的文件与关键改动
4. 未完成项与下一步
5. 涉及的外部约定(接口路径、字段名、环境变量名)拿到摘要后,开启新会话,把这段摘要作为第一条消息,再继续开发。这比在超长会话里硬撑要稳得多,也便宜得多。
三、把长会话拆成子任务,是最省钱的一步
压缩只是补救,拆分才是根治。Claude Code 的上下文压力通常来自「一个会话干了太多事」。可以按以下原则拆:
- 按文件边界拆:读 `src/api/` 的会话就不要顺手让它改前端组件。
- 按阶段拆:调研、设计、实现、测试各开一个会话,前一个会话只把结论带到下一个。
- 按问题拆:遇到报错先单独开一个会话定位根因,定位完再回到主会话改代码。
- 用文件传递上下文:把结论写进项目里的说明文件,而不是留在对话历史里。模型读文件是按需的,比每轮全量重发便宜。
拆分后你会发现,单个会话的上下文远达不到上限,模型输出质量也明显回升——因为干扰信息少了。
四、模型切换:谁扛大上下文,谁做短推理
CCSub 上可用的 Claude 系列模型可以通过 GET https://ccsub.xyz/v1/models 查询完整列表。落到长上下文场景,建议这样分工:
用 Claude Sonnet 4.6 承担大上下文任务
Sonnet 4.6 适合「上下文体量大、需要通读多份材料」的工作:接手一份别人写的长摘要、一次性理解多个文件的调用关系、在较长会话中保持风格一致。它的输入价格档位比 Opus 系列低,把大块上下文交给它,成本更可控。
用 Claude Opus 4.8 做短推理
Opus 4.8 更适合「上下文很短、但推理密度高」的环节:架构取舍、疑难报错的根因判断、复杂重构方案的最后定夺。这类任务输入小、输出短,即便单价更高,总花费也不夸张。
一个实用的组合是:Sonnet 4.6 负责读和写,Opus 4.8 负责判断。先用 Sonnet 把长材料压缩成结构化摘要,再把摘要交给 Opus 做决策,最后回到 Sonnet 执行改动。这样既避免了大上下文跑在高单价模型上,也避免让便宜模型做它不擅长的硬推理。
五、接入 CCSub 的三种方式
Claude Code 原生调用
设置 ANTHROPIC_BASE_URL=https://ccsub.xyz/api 和密钥(形如 sk-你的CCSub密钥),客户端会自动请求 /v1/messages 端点,无需手动拼路径。配置完成后启动 Claude Code 即可。
OpenAI 兼容调用
如果需要在自己写的脚本或其他兼容客户端里调用,使用 OPENAI_BASE_URL=https://ccsub.xyz/v1,请求 /v1/chat/completions。适合做批量摘要、上下文压缩这类辅助任务。
curl https://ccsub.xyz/v1/chat/completions \
-H "Authorization: Bearer sk-你的CCSub密钥" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"messages": [{"role": "user", "content": "把以下会话记录压缩成结构化摘要..."}]
}'Codex 原生调用
Codex 使用 https://ccsub.xyz/openai 作为 base URL,协议选择 wire_api = responses,客户端会自动请求 /responses,不需要你手动指定端点。
无论哪种方式,先用 GET https://ccsub.xyz/v1/models 确认你要用的模型 ID 拼写正确,再开始跑长任务。
六、常见报错与排查
- 请求被拒、提示上下文过长:先执行
/compact,或按上文模板手动摘要后开新会话。不要靠反复重试硬撞。 - 连接失败:优先检查网络与代理设置,确认 base URL 拼写完整(Claude Code 用
https://ccsub.xyz/api,OpenAI 兼容用https://ccsub.xyz/v1,Codex 用https://ccsub.xyz/openai),三者不要混用。 - 输出质量突然变差:大概率是上下文过载,先拆分会话,再考虑换模型。
- 用量异常偏高:回到后台按模型核对输入 Token 与缓存读取量的比例,确认是否每轮都在全量重发。
- 模型不存在或调用失败:用
/v1/models核对模型 ID,注意版本后缀。
七、成本提醒与行动建议
上下文治理的收益是复利的:每减少一轮全量重发,就少付一次大额输入费。建议按这个顺序动手——
- 今天先做一次清理:把当前超长会话手动摘要收口,开新会话继续。
- 本周固化拆分习惯:按文件、按阶段开会话,结论写进项目文件。
- 接入 CCSub 并配好环境变量,用 https://ccsub.xyz 上的
/v1/models确认可用模型。 - 下周看一次用量明细,对比输入输出比例是否改善。
充值前先估算:如果你的任务是长文档通读类,优先用 Sonnet 4.6 试跑一轮,观察实际 Token 消耗再决定充多少。CCSub 后台可以随时查看按模型的用量明细,先小额度验证,再按真实消耗补。
已经把环境配好、想进一步压低长项目成本?现在就去 CCSub 创建密钥,把 ANTHROPIC_BASE_URL 指到 https://ccsub.xyz/api,用一个新会话试试手动摘要流程,效果通常当场就能感觉到。
CCSub API 调用方法
如果你使用 OpenAI 兼容客户端,把 Base URL 设置为 https://ccsub.xyz/v1,API Key 使用控制台创建的 sk-你的CCSub密钥。
export OPENAI_BASE_URL=https://ccsub.xyz/v1
export OPENAI_API_KEY=sk-你的CCSub密钥
Codex 请使用原生 Responses 专用地址。先设置密钥:
export CCSUB_API_KEY=sk-你的CCSub密钥
再在 ~/.codex/config.toml 配置自定义 provider:
model = "gpt-5.6-sol"
model_provider = "ccsub"
[model_providers.ccsub]
name = "CCSub"
base_url = "https://ccsub.xyz/openai"
env_key = "CCSUB_API_KEY"
wire_api = "responses"
Claude Code 使用专用 Messages Base URL:
export ANTHROPIC_BASE_URL=https://ccsub.xyz/api
export ANTHROPIC_AUTH_TOKEN=sk-你的CCSub密钥
需要确认当前可用模型时,可以请求 GET https://ccsub.xyz/v1/models。正式长任务前,建议先用短请求验证 Key、余额和模型是否正常。