惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
N
Netflix TechBlog - Medium
大猫的无限游戏
大猫的无限游戏
爱范儿
爱范儿
Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Register - Security
The Register - Security
IT之家
IT之家
博客园_首页
Microsoft Security Blog
Microsoft Security Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
I
InfoQ
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Jina AI
Jina AI
Apple Machine Learning Research
Apple Machine Learning Research
M
MIT News - Artificial intelligence
博客园 - Franky
C
Check Point Blog
T
The Blog of Author Tim Ferriss
V
Visual Studio Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Tailwind CSS Blog
Recent Announcements
Recent Announcements
云风的 BLOG
云风的 BLOG
美团技术团队
The Cloudflare Blog
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
MyScale Blog
MyScale Blog
The GitHub Blog
The GitHub Blog
D
DataBreaches.Net
Google DeepMind News
Google DeepMind News
V
V2EX
aimingoo的专栏
aimingoo的专栏
GbyAI
GbyAI
G
Google Developers Blog
S
SegmentFault 最新的问题
Hugging Face - Blog
Hugging Face - Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
U
Unit 42
罗磊的独立博客
量子位
MongoDB | Blog
MongoDB | Blog
Last Week in AI
Last Week in AI
Stack Overflow Blog
Stack Overflow Blog
小众软件
小众软件
D
Docker
人人都是产品经理
人人都是产品经理

博客园_首页

Plist 二进制格式 Milvus 和 PGVector,哪个更好? OpenClaw 已过时?在 VS Code 中运行 Hermes Agent! 第30篇文章:一个大三计科生的自白 Manim如何在数学公式中完美显示中文? Docker 部署 RocketMQ 5 并发编程核心概念辨析 C#事务处理最佳实践:别再让“主表存了、明细丢了”的破事发生 CLI 是什么?为什么大厂突然集体卷命令行? 【从0到1构建一个ClaudeAgent】协作-自主Agent UIImageView 设置图片不生效的原因排查 最小二乘问题详解20:无先验约束下的增量式SFM自由网平差 痞子衡嵌入式:大话双核i.MXRT1180之XIP应用里借助MU实现可靠Flash IAP的方法 AI Chat 封装, SemanticKerne.AiProvider.Unified 已发布 Windows下右键编辑js文件无法打开记事本——在注册表中使用环境变量 在后台服务中使用 Scoped 服务,为什么总是报错? H200 安装驱动并使用sglang启动模型 wireshark 抓包Trap上报告警内容 我用 AI 辅助开发了一系列小工具(2):图片压缩工具 [A Primer On MC and CC] 2.1 Memory Consistency 1 - 指令重排序和 SC 模型 Oracle数据库SCN推进技术详解与实践指南 玩转控件:封装个带图片的Label控件 Claude Code 4.7 真正该升级的不是模型,而是你的工作流 前端小白一句话,AI 帮我做了个颜值拉满的桌面媒体播放器。当代码不再是门槛,一句话编程就是现实。 5. WorkBuddy: 小龙虾的灵魂三件套,让你的小龙虾不只是工具 SQLite 分片方案实战:三种分片策略的深度对比 告别简陋 UI!一款基于 Fluent Design 和基于 WinUI 的开源免费、现代化的 Avalonia UI 控件库 关于二进制排列组合枚举的总结 AI开发-python-LangGraph框架(3-27-LangGraph从零实现大模型智能决策工作流) ElasticSearch主分片和副本分片概念详解 【002】HTTPS 粗解:证书、TLS 握手与对后端配置的影响 Hermes Agent 一周暴涨五万 Star,但我劝你别急着追 明明连接的是Redis的DB0,为什么能查到DB3的数据? 【从0到1构建一个ClaudeAgent】协作-Agent团队 熟悉电子元器件之后,电子小白下一步该怎么走? MAF快速入门(23)通过C#类定义Skills .NET 高级开发 | 手写一个对象映射框架 FastAPI数据库ORM怎么选?我肝了三个Demo后,终于不再纠结了 mysqldump 参数拾遗:在遗忘与铭记之间 C# .NET 周刊|2026年3月5期 Claude code入门 - 陈彦斌 一文学习入门 ThingsBoard 开源物联网平台 GitHub 热门项目 | 2026年04月16日 如何为GIT设置全局勾子,为每次提交追加信息 Number.isFinite和isFinite与isNaN()和Number.isNaN的区别 PortSwigger SQL注入LAB2 推荐一个测试人必备的Skills,从功能到性能全搞定(附详细实操和安装下载方式) 筑基期:掌握Odoo基础核心知识点02(Odoo XML 开发方式详解) GLM模型这么火,咱们用vllm也咧一个呗! 深入理解 AbortController:从底层原理到跨语言设计哲学 字符串学习笔记 多租户系统框架的基础模块设计和分析设计 Apache SeaTunnel Zeta 为什么能做到“又快又稳”? AI开发-python-LangGraph框架(3-26-LangGraph基本概念及第一个简单样例) Vue 3 组件通信,别只会用 Props 和 Emits 了,这几个狠活儿你得看看 ElasticSearch7.X版本配置密码 用Manim实现动态交点计算--从一个动点问题说起 团结引擎+Addressable+Instant Game打包抖音小游戏 function call 实战:让 LLM 自动判断 pod 异常、调用日志工具并完成故障分析 bubseek —— 让 Agent 的足迹,变成团队的洞察 通过 C# 读取并导出 PDF 书签 如何用 GitHub Actions 实现 Steam 自动化发布 【从0到1构建一个ClaudeAgent】并发-后台任务 .NET 高级开发 | 定制 ASP.NET Core 框架 电子小白:什么是运算放大器(运放) zero2Agent:面向大厂面试的 Agent 工程教程,从概念到生产的完整学习路线 堆上的ORW HC32F460 USB CDC通信异常:非对齐访问异常排查 20260413-Hyperbridge 攻击事件:发生在默克尔山上的验证绕过 那些喊着AI 要淘汰你的人,正在靠你的焦虑赚大钱! 深度学习进阶(八)Swin Transformer 最小二乘问题详解19:带先验约束的增量式SFM优化与实现 SnapTranslate 3.0 正式发布:全局划词翻译 + 完整英语学习闭环,一站式搞定查词、记词、复习 工作的意义、工作的困难认知再思考 .NET + AI 进阶实战:基于类的技能开发 - 打造可治理的 Agent 能力模块 【从0到1构建一个ClaudeAgent】规划与协调-技能 上周热点回顾(4.6-4.12) 电子小白的工具三件套:面包板、杜邦线、万能板 单表五亿数据的查询优化 | Mysql、StarRocks 2. WorkBuddy:从“我是谁”到“帮我干活” C# 如何减少代码运行时间:7 个实战技巧 基于HelixToolkit.SharpDX 渲染3D模型 - 笺上知微 从零开始的双臂具身VLA起源及现阶段发展综述 - SkyXZ 记对 xonsh shell 的使用, 脚本编写, 迁移及调优 - pluvium27 受够了Vibe Coding的失控?换个起点,让AI事半功倍 从开始配置漏洞环境到漏洞复现流程 - 難しい 关于10年工作经验的程序员对OpenClaw的实战经验分享以及看法 - 虚无境 Any metadata 的内存布局 C# .NET 周刊|2026年3月2期 - InCerry 我帮你测过了,测试圈排名第二的 Skill 依然很牛逼 Skill Discovery | 无监督技能发现的经典工作总结 - MoonOut 上下文工程是什么?过时了么?一文讲明白! - 一枫说码 开了 TUN 模式还是直连?90% 的人都踩过这个坑 AScript扩展多种脚本语言 - rockey627 AI 学习笔记:Agent 的记忆机制 你能被装进一个文件里吗?——7 万人把同事"蒸馏"成了 AI - 我没有三颗心脏 Claude Code 通关手册(七):给 AI 装上技能包——Skills 完全指南 - 暮色之狐 在浏览器中快速编辑代码:VSCode Web 集成实践 - Newbe36524 蒸馏自己 skill?基于 Deepseek 的蒸馏器,丐版蒸馏方式,简单便捷 - To_Carpe_Diem Spring AI Aliababa和AgentScope,哪个更好? - 苏三说技术
中转站余额为什么掉得快?我拆了一次 AI 编程任务的真实消耗
侯垒 · 2026-06-25 · via 博客园_首页

中转站余额为什么掉得快?我拆了一次 AI 编程任务的真实消耗

最近很多人开始高频使用 Claude Code、Codex、Cursor、OpenCode 这类 AI 编程 Agent。

用起来确实很爽:一句话丢过去,它能读项目、找文件、分析报错、改代码、跑命令,最后再给你一个总结。

但用得多了,另一个问题也开始明显起来:

中转站余额掉得真快。

有时候明明只是让它修一个小 bug,或者开一次 Code Plan,让它先分析一下项目,结果额度消耗比想象中高很多。

这时很多人的第一反应是:

  • 是不是中转站扣量不准?
  • 是不是模型太贵?
  • 是不是 Agent 偷偷请求了很多次?
  • 是不是 plan 模式也在大量消耗 token?

这些问题不能靠感觉判断。

如果想知道钱到底花在哪里,就得把一次 AI 编程任务拆开看。

所以我最近开始用一个更笨但更有效的方法:把一次 Agent 任务的每一轮请求拆开看。先看一张图。

这里我用到的工具是 ccglass。它不是另一个 AI 编程助手,而是可以帮你观察 Claude Code、Codex 等工具每一轮真实请求的本地工具。对成本敏感的人来说,它最直接的价值是:

看清一次 Agent 任务到底烧了多少上下文、多少 token、多少 cache、多少 latency。

一次 AI 编程请求的成本概览

这张图里,模型最终只输出了 34 tokens,但顶部已经显示 24,660 in,估算成本约 $0.0930。请求概览里还能看到 31 toolscache write 24,654 tokenslatency 2.40s

也就是说,真正值得关注的不是最后输出了多少字,而是这一轮请求背后带了多少上下文。

不是你的错觉,Agent 任务确实比普通聊天重

普通聊天的成本比较容易理解。

你问一句,模型答一句:

用户输入 -> 模型输出

输入多少 token,输出多少 token,大概还能估。

但 AI 编程 Agent 完全不是这个结构。

你输入一句:

帮我分析这个 bug,并修复相关代码。

背后可能发生的是:

第 1 轮:模型理解任务
第 2 轮:搜索相关文件
第 3 轮:读取代码
第 4 轮:分析调用关系
第 5 轮:运行测试
第 6 轮:带着测试输出继续分析
第 7 轮:修改文件
第 8 轮:再次验证
第 9 轮:总结结果

这不是一次请求,而是一串请求。

每一轮都可能有 input token 和 output token。更重要的是,后面的请求往往会带上前面产生的上下文。

所以你看到的是“修一个小 bug”,实际消耗的是“多轮上下文 + 工具调用 + 文件内容 + 命令输出 + 模型回复”。

这就是 Agent 类工具比普通聊天更烧额度的根本原因。

真正贵的,往往不是最后生成的那几行代码

很多人以为 AI 编程的成本主要花在“生成代码”上。

但实际拆开看,经常不是。

下面这张图更直观。这里用户输入的只是一个简单的 hello,但请求流里已经出现了 system reminder、Agent 类型说明,以及 31 tools offered to the model

一个简单 hello 请求背后的上下文

这就是 AI 编程 Agent 和普通聊天最大的区别。

普通聊天里,你可能只是在发一句话。
但 Agent 请求里,模型同时会看到一整套运行上下文:系统提醒、工具说明、可用能力、当前环境、历史消息,以及后续可能调用的工具。

真正重的内容通常包括这些:

  • system prompt;
  • developer 指令;
  • tools schema;
  • 历史消息;
  • 当前工作目录信息;
  • 搜索结果;
  • 文件内容;
  • 测试日志;
  • 命令输出;
  • 前几轮 assistant 的分析;
  • tool call 和 tool result;
  • Code Plan 阶段生成的规划上下文。

其中最容易被忽略的是 tools schema 和工具结果。

Agent 能读文件、写文件、跑命令,是因为它把可用工具的定义发给了模型。工具越多,schema 越复杂,这部分上下文就越重。

Agent 读文件以后,文件内容也可能进入下一轮请求。
Agent 跑测试以后,测试输出也可能进入下一轮请求。
Agent 搜索代码以后,搜索结果也可能进入下一轮请求。

如果某一轮读了一个很大的文件,或者测试输出很长,后续几轮的 input token 就可能明显上升。

这时你以为自己只是在让它“改几行代码”,但实际上模型每轮都在背着一大包上下文继续工作。

Code Plan 为什么看起来没写代码也会贵

很多人对 Code Plan 或 plan mode 的消耗尤其困惑。

因为它看起来还没开始写代码,只是在“想一下”。

但对 Agent 来说,plan 不等于空想。

一个比较完整的 plan 阶段,可能会做这些事:

  • 读取项目结构;
  • 分析 README 或配置文件;
  • 搜索相关模块;
  • 理解已有代码风格;
  • 判断任务影响范围;
  • 推断需要修改哪些文件;
  • 生成分步骤执行计划;
  • 保留这些分析给后续实现阶段使用。

这些动作都会消耗 token。

尤其是当项目比较大、任务描述比较宽泛时,plan 阶段为了建立项目地图,可能会读很多上下文。

所以 Code Plan 贵,不一定是异常。

它的本质是:在正式动手前,先花 token 买一次理解和规划。

这个成本值不值,取决于任务复杂度。

如果是大重构、跨模块修改、复杂 bug,plan 阶段很有价值。
如果只是改一个很小的样式或文案,反复开 plan 就可能显得浪费。

中转站倍率会放大这种体感

如果你用的是中转站、聚合 API 或第三方模型网关,成本体感会更明显。

因为它通常不是简单看“请求次数”,而是跟这些因素有关:

  • 模型倍率;
  • input token;
  • output token;
  • cache 计费方式;
  • 上下文长度;
  • 是否使用高价模型;
  • 是否多轮请求;
  • 是否有长输出和长工具结果。

高倍率模型本身就贵。
如果再叠加长上下文和多轮请求,余额下降会非常明显。

这也是为什么同样是“修一个 bug”,有时很便宜,有时很贵。

任务表面看起来相似,但背后的请求链路可能完全不同:

  • 一个任务只读了 2 个文件;
  • 另一个任务读了 15 个文件;
  • 一个任务只跑了单个测试;
  • 另一个任务跑了全量测试并返回大量日志;
  • 一个任务 cache 命中不错;
  • 另一个任务每轮都在创建新上下文;
  • 一个任务很快收敛;
  • 另一个任务来回尝试了很多轮。

如果没有工具观察,你只能看到余额变少。
但你不知道是哪一轮、哪个文件、哪个工具结果把成本拉上去的。

用 ccglass 拆一笔账

ccglass 的实用性就在这里。

它可以在本地作为代理,记录 Claude Code、Codex、OpenCode 等 AI 编程工具实际发给模型 API 的请求和响应,并通过 Dashboard 展示出来。

对成本分析来说,重点不是看热闹,而是看这些信息:

  • 一次任务到底有几轮请求;
  • 每一轮 input token 多少;
  • 每一轮 output token 多少;
  • cache creation 有多少;
  • cache read 有多少;
  • latency 是否异常;
  • messages 数量是否增长;
  • tools 数量是否很大;
  • 哪一轮请求突然变重;
  • 哪个工具结果进入了后续上下文;
  • 是 plan 阶段贵,还是实现阶段贵;
  • 是读文件贵,还是测试输出贵。

再看 response 里的 usage 明细。

一次请求的 usage 和 cache 明细

这次请求里,input_tokens6output_tokens34,但 cache_creation_input_tokens 达到了 24,654cache_read_input_tokens0

这个例子很适合说明一个成本误区:用户输入和模型输出本身都不长,但 Agent 请求仍然可能携带大量可缓存上下文。对于中转站或聚合 API 用户来说,这类上下文最终都会反映到额度消耗、倍率成本或延迟体感上。

有了这些信息以后,很多问题就能从“感觉”变成“证据”。

比如你可以看到:

第 1 轮 input 不高,只是任务和系统上下文。
第 2 轮 tools schema 很大。
第 3 轮读了一个大文件,input 开始上涨。
第 4 轮测试输出很长,后面几轮都变重。
第 5 轮 cache 没怎么命中,所以延迟和消耗都上去了。

这时你就知道,余额掉得快不是玄学。

它可能是因为 Agent 读了太多无关文件,也可能是测试日志太长,也可能是 plan 阶段上下文太宽,也可能是模型倍率太高。

看清成本以后,怎么省?

ccglass 本身不会替你省钱。

它的作用是告诉你钱花在哪里。真正省钱,还要调整使用习惯。

下面这些方法通常很有效。

1. 小任务不要开太大范围

不要动不动就说:

帮我优化这个项目。

这类 prompt 会鼓励 Agent 大范围搜索和读取上下文。

更好的写法是:

只检查 src/auth 目录下 session 相关逻辑,先分析问题,不要修改代码。

范围越清楚,Agent 乱读文件的概率越低。

2. 直接给关键文件

如果你已经知道问题大概在哪,就直接告诉它。

问题大概率在 src/auth/session.ts 和 src/auth/session.test.ts。
请优先检查这两个文件。

这比让它全项目搜索更省。

3. 控制测试日志

测试日志很容易变成长上下文。

如果你把完整 CI 日志丢给 Agent,或者让它反复跑全量测试,token 会涨得很快。

更好的方式是:

  • 先给失败测试名;
  • 给核心报错;
  • 给关键调用栈;
  • 让它按需运行单个测试;
  • 避免把无关日志全部塞进去。

4. 不要反复开 plan

Plan 很有用,但不是所有任务都需要。

如果只是小改动,反复进入 Code Plan 可能不划算。

可以把 plan 用在这些场景:

  • 跨模块修改;
  • 大重构;
  • 复杂 bug;
  • 不熟悉的项目;
  • 需要评估风险的任务。

简单任务可以直接限定范围,让 Agent 小步执行。

5. 低价值任务用低倍率模型

不是所有任务都值得用最强模型。

比如:

  • 改文案;
  • 补简单类型;
  • 生成重复样板代码;
  • 改格式;
  • 写简单测试;
  • 查找明显错误。

这类任务可以考虑低倍率模型。

高价模型留给真正需要复杂推理的任务。

6. 定期看异常任务

如果你是重度用户,建议偶尔用 ccglass 看几次典型任务。

不用每次都盯着看,但可以定期做成本体检:

  • 哪类任务最耗 token?
  • 哪个 Agent 请求轮数最多?
  • 哪个模型 latency 最高?
  • 哪些任务 cache 命中差?
  • 哪些工具结果特别大?
  • 哪些 prompt 容易导致全项目搜索?

看几次以后,你会更清楚自己怎么用 Agent 最划算。

ccglass 的定位:不是抓包玩具,而是成本观察入口

如果只是偶尔用 AI 补一段代码,可能不需要 ccglass。

但如果你已经开始高频使用 Claude Code、Codex、Code Plan,或者你用的是中转站、聚合 API、第三方模型网关,那成本就不是小问题。

这时你需要的不只是“能不能完成任务”,还要知道:

  • 它请求了几轮;
  • 它每轮带了多少上下文;
  • 它为什么突然变贵;
  • 它有没有重复发送无效内容;
  • plan 阶段到底花了多少;
  • cache 有没有帮上忙;
  • 高倍率模型是否用在了值得的地方。

ccglass 解决的就是这个可见性问题。

它不会替你决定用哪个模型,也不会替你优化 prompt。
但它可以把一次 AI 编程任务的消耗摊开,让你知道钱到底花在哪里。

总结

AI 编程不是不能花钱。

真正的问题是:钱花得明不明白。

Claude Code、Codex、Code Plan 这类 Agent 工具,本来就比普通聊天更重。它们会多轮请求、携带工具定义、读取文件、保留历史、处理测试输出,还可能在 plan 阶段建立大量上下文。

如果你用中转站,这些都会变成非常真实的额度消耗。

所以,与其只盯着余额下降,不如拆开看一次任务:

  • 哪一轮最贵;
  • 哪些上下文最重;
  • 哪些工具结果被反复带入;
  • cache 有没有命中;
  • plan 阶段是否值得;
  • 模型倍率是否匹配任务价值。

这就是 ccglass 对成本敏感用户的实用价值。

它让 AI 编程成本从一笔糊涂账,变成可以观察、分析和优化的工程指标。

一句话总结:

不是少用 AI,而是少烧无效上下文。