上个月信用卡账单出来的时候,我盯着那串数字足足愣了好几分钟——1400多美元,清一色是各种AI编程工具和API的订阅支出。
更让人窝火的是,钱是花出去了,活儿却没见少。手上那个内部工具项目,本来打算两周搞定,硬生生拖到第四周还在修bug。我仔细回想了下问题出在哪儿:Claude Code挂着Max套餐充当主力,Codex放在旁边当替补,Kimi和DeepSeek的API塞在脚本里跑批处理,本地还养着一套自己搭的Agent框架。工具多到自己都搞不清楚哪个任务该交给谁。
这就好比灶台上架了八口锅,结果只是炒个蛋炒饭,手忙脚乱。
于是我下定决心来一次彻底的"去肥增肌"——不是减少AI的使用,而是让每一分钱都花得值。以下是我这两周折腾的完整复盘,踩过的坑我都一一标注了。
我做的第一件事,是写了个脚本,把过去30天所有的API调用日志拉出来,按照工具、模型、任务类型三个维度做归因分析。
结论跟我的直觉完全相反。
我本以为最大的开销是Claude Code那200美元的月费。但实际上,Claude Code的固定订阅只占了14%,真正吃钱的是另外三块:
这张图是我归因之后的成本分布。注意看那个"Agent元认知开销",它不产出任何代码,纯粹是框架自己在那儿"空想"。
踩坑记录一:我一开始想用GPT-4o来做这个归因分析,把日志丢进去让它给建议。结果它洋洋洒洒写了2000字,建议我"优化prompt结构""考虑使用更高效的模型"——全是空话。后来换成DeepSeek-V3,同样的输入,它直接甩给我一个表格,指出Codex的调用频次和任务复杂度不匹配,建议把简单review下沉到本地模型。成本从0.8美元降到0.03美元。
观点:让AI做数据分析,别用最贵的模型。DeepSeek和Kimi在结构化归因上完全够用,GPT-4o适合做最后的"人话翻译",但不是必须。
搞清楚钱去哪儿之后,我开始动刀。
原来的架构是一个"全能Agent"包揽所有活:规划、写代码、审查、测试、部署。听起来很酷,实际上每个环节都在互相污染上下文,而且一旦某一步出错,整个链路重来,token全白烧。
我把它拆成了三条独立流水线:
第一条:代码生成线(Claude Code + 本地Qwen3-Coder)
Claude Code保留,但只做一件事:从需求描述生成第一版代码。我给它写了一个极简的CLAUDE.md,核心就三句话:
你只负责生成代码,不解释、不审查、不测试。
输出格式:代码块 + 一行依赖说明。
如果需求模糊,只问一个最关键的问题。
这个改动直接把Claude Code的单次输出token从平均4500降到1800。省下来的不是钱,是时间——我不再需要从一堆解释里扒代码。
本地Qwen3-Coder跑在M2 Max上,用Ollama托管,负责处理那些"改个变量名""加个日志"的小活。这些任务原来也走Claude Code,现在本地跑,零边际成本。一天大概能拦截30-40次小请求。
第二条:审查与测试线(Codex + DeepSeek-V3)
Codex不再做全量review。我给它设了一个门槛:只有diff超过50行的PR才触发Codex审查。小改动走DeepSeek-V3的API,用同样的prompt模板,成本差了多少?Codex一次review约0.12美元,DeepSeek-V3约0.004美元。30倍。
但这里有个坑:DeepSeek的review质量在复杂逻辑上确实不如Codex。我的做法是,DeepSeek先跑一遍,标记出"疑似问题",只有被标记的才升级到Codex。这样Codex的调用量从一天20次降到3-4次。
第三条:文档与知识线(Kimi + 本地RAG)
Kimi的长文本能力没得说,但我之前用得太粗放——每次都是全文喂进去。现在改成:先用本地RAG(我用的是LlamaIndex + BGE-M3嵌入)做一轮检索,只把最相关的3-5个片段喂给Kimi。平均输入从8万token降到1.2万token,成本降了85%,而且回答更聚焦。
这张图是重构后的工作流。三条线独立运行,只在最后的"集成测试"环节汇合。
踩坑记录二:拆流水线的时候,我犯了一个经典错误——让三条线共享一个"全局状态"。结果Claude Code生成的代码风格和DeepSeek的审查标准打架,DeepSeek把Claude Code的命名规范全标成"建议修改"。后来我加了一个"风格锚点"文件,三条线都读同一个配置,问题才解决。
观点:多Agent协作,最怕的不是Agent不聪明,而是它们太聪明且各执己见。给它们一个共同的"宪法",比让它们自由协商高效十倍。
拆完流水线,账单降到了大概600美元。但我觉得还不够。
我回头去看那个"Agent元认知开销"的190美元,发现问题的根源不在模型,而在我的框架设计。
我那个自建框架,每个任务都会走一个"规划-执行-反思-总结"的循环。设计的时候觉得这是"智能"的体现,实际上:
这三个阶段,我全部砍掉。
替换方案很简单:用结构化输出代替"自由思考"。我给每个任务定义一个JSON schema,Agent只需要填充字段,不需要生成自然语言解释。
比如代码生成任务,schema就四个字段: