
你的AI代码助手是不是越来越贵了?每个月账单下来,看到API费用那栏,有没有一种"明明没怎么用怎么这么多"的感觉?
我之前也觉得,用AI写代码嘛,花点钱正常。直到我看到一个数据:有人做了个实验,让Claude去回答16个关于云基础设施的问题,最基础的做法烧了$3.51,而换了一种方式之后,只要$0.25。而且后者还答对了,前者直接超限挂掉了。
差14倍。不是精度问题,是同一个CLI工具,输出格式不同,Claude花的token就差了14倍。
这个案例来自Infracost团队——就是做云成本估算的那个工具。他们发现一个有趣的现象:越来越多的用户不是人,而是AI Agent。Claude Code、Cursor、Windsurf这些编程助手,都在后台偷偷调用他们的CLI。
问题是,这个CLI一开始是给人设计的。人看JSON没问题,字段名长一点、冗余一点,反正眼睛一扫就找到了。但AI不一样,它读每一个token都要花钱。
于是他们做了一件很多人没想过的事:把CLI的输出格式完全按照"AI爱吃的样子"重新设计了一遍。
核心做法:把逻辑塞进CLI,别让AI自己拼管道
想象一下,你要让Claude回答"这个项目的资源标签里,有多少个不合规"。最直接的做法是什么?给Claude一个shell,让它自己去搞。
Claude大概会这样干:先ls找文件,然后cat看结构,再写一个Python脚本解析JSON,filter出不合规的,最后count。每一步都在烧token。而且每一步都可能出错。
Infracost的做法是:在CLI里直接加一个predicate flag,比如--filter-tag-violations,一行命令就出结果。AI不需要写脚本,不需要拼jq管道,甚至不需要知道数据长什么样。
听起来好像没什么?但这个改动把Claude的输出token用量砍掉了79%,API成本降了67%。
关键技巧:输出格式的"减肥"比你想的重要
具体他们做了两件事:
第一,去掉冗余字段名
传统的JSON输出长这样:
{"resource_id": "rds-001", "resource_name": "prod-db", "cost": 1200.50}每一行都在重复"resource_id""resource_name""cost"这些字段名。十几个资源下来,这些字段名消耗的token比数据本身还多。改成紧凑格式之后,一行一个资源,字段名只在第一次出现。
第二,用predicate flag代替AI自己拼管道
前面说了,不要让AI自己去jq | grep | wc。直接在CLI里暴露过滤参数,AI一行命令搞定。
这两个技巧听起来简单,但效果惊人。而且它们的适用范围远不止云成本工具。你用的任何CLI——curl、kubectl、gh、psql,只要AI Agent在调,都面临同样的问题。
为什么这件事值得你关注?
你可能觉得,我又不做CLI工具,关我什么事?
但换个角度想:如果你的团队在用Claude Code或者Cursor写代码,你的AI Agent很可能也在疯狂调各种CLI,然后默默烧掉了大量token。你可能完全没有意识到,同样的任务换个方式就能省下70%的API费用。
而且这个趋势只会越来越明显。AI Agent越来越多,CLI工具的输出格式必须跟着进化。给人类设计的输出,给AI用就是浪费。
Infracost的博客里有一句话说得特别好:"Agent的调用对我们来说是透明的——它们在别人的框架里调用我们的CLI,我们永远看不到。"这意味着如果你不去主动优化,你永远不知道自己浪费了多少。
你也可以试试
如果你维护任何一个CLI工具,或者你的团队在用AI编程助手,可以问自己三个问题:
我的CLI输出是不是对AI友好的?还是到处都是冗余的字段名? AI是不是经常自己拼jq管道?如果是,说明CLI缺了一个predicate flag 我的API账单是不是越来越贵?先从CLI调用这块查起
Infracost把他们的经验写成了博客,工具也开源了(cost.dev)。但更有价值的是他们的思路:给AI设计接口和给人设计接口,是两个完全不同的东西。
觉得有用点个👍
有问题留言聊
夜雨聆风