终端里先看 Token:2026 年 LLM API 计数与预算实践
编辑器里的字符数,不是 API 的 Token 数
接入 LLM API 时,我通常先做两件事:打印响应里的用量,再给测试脚本加预算上限。否则,一个看起来很短的终端任务,也可能因为附带仓库文件、工具定义和历史消息,悄悄消耗大量 Token。2026 年,模型选择更多了,但计数这件事仍然不能靠目测。
Token 是模型处理文本的分词单位,不等于一个字、一个单词或一个字符。中文、英文、代码、路径和随机字符串的切分方式都可能不同。“一个英文单词大约对应多少 Token”只能用于粗估,不能直接套在中文提示词或压缩后的 JSON 上。
请求预算要算完整消息,而不只是最后一句
一次请求的输入通常包含系统指令、对话历史、用户消息,以及实际发送的工具定义和工具结果。消息封装也可能带来额外开销。你在编辑器里选中的二十行代码,只是最终请求的一部分。
- 检查客户端实际发送的请求内容,确认它有没有自动附带文件、历史记录和工具说明。
- 统计整个任务产生的全部请求,不要只记录终端最后显示的那一次模型回答。
- 处理图片、音频或其他多模态输入时,应使用对应模型的计数规则而不是文本长度。
例如,让 Claude Sonnet 5.5 修改一个函数时,代理可能先读取文件,再搜索引用,最后生成补丁。工具结果进入后续上下文后,会继续贡献输入 Token;同一份代码在多次调用里出现,也可能被重复计入输入。
本地估算用于预检,响应 usage 用于对账
优先使用对应模型的官方分词器或计数接口;没有时,再选择明确支持该模型的工具。不要默认一个兼容 OpenAI 协议的接口,也一定沿用同一套分词规则。把模型切换成 GPT-6.1 Sol 后,应该重新验证估算误差,而不是复用旧结果。
本地计数适合提交前拦截超长请求,服务端返回的 usage 则更适合记录实际用量。不同接口的字段名称、缓存明细和推理 Token 归属可能不同,需要做适配。流式请求还应确认如何获取最终用量;连接中断时,不要把缺失字段当作零消耗。
上下文窗口不是可以全部塞满的输入额度
上下文窗口、最大输出长度和客户端设置的输出上限,是三个需要分别确认的概念。请求前要为回答和模型可能需要的推理开销留出空间,具体关系以对应接口文档为准。不要把整个窗口都分配给仓库内容,再期待模型输出完整补丁。
我的做法是先按任务划分预算:定位问题只发送相关文件和报错,修改阶段再补充必要依赖。长对话定期整理成结构化摘要,同时保留约束、已验证结论和未完成事项。摘要会丢信息,因此关键报错和测试结果仍要保留原文。
缓存命中率与账单金额要分开看
提示词缓存通常复用符合条件的输入前缀,并不意味着模型不再处理上下文,也不意味着这些 Token 免费。缓存读取、缓存写入的价格和适用条件可能不同;稳定的系统指令、工具定义和公共上下文适合放在前面,频繁变化的任务内容放在后面。
假设一次请求报告输入 12000 Token,其中缓存读取为 8000,那么未缓存部分可能是 4000;但必须先确认字段是否存在包含关系。不要把输入总量、缓存读取量和缓存写入量直接相加。计费时按实际分类数量乘以对应单价,并确认单价单位是每千还是每百万 Token。
终端日志至少保留四类成本线索
- 为每次调用记录请求标识、模型名称和时间,方便把客户端日志与服务端用量对应起来。
- 分别保存输入、输出和可获得的缓存明细,同时保留原始用量字段以便排查适配错误。
- 记录重试次数、工具调用轮数与任务总耗时,识别那些回答很短却反复执行的昂贵任务。
- 默认不要把源码、密钥和完整提示词写入日志,成本观测不应该扩大敏感信息暴露范围。
除了单次输出上限,还要给代理设置最大轮数、任务总预算和超时。遇到超时先检查请求状态,再决定是否重试;重新发送可能形成新的计费请求。用一组固定任务比较总成本、成功率和耗时,比只比较每百万 Token 的标价更有意义。
用 Fluxo 接入时保留统一入口与模型差异
Fluxo 用一个密钥和一个基础地址 https://api.fluxorelay.com 接入 Claude、GPT、Gemini、DeepSeek、Kimi、GLM、Qwen、Grok 等系列,可配合 Claude Code、Codex、Gemini CLI 和任何 OpenAI SDK 使用。入口统一后,仍应分别验证各模型的上下文限制、计数规则和用量字段,不能把协议兼容当成行为完全一致。
Fluxo 按实际 Token 用量计费,包括缓存读取和写入,没有月费,因此日志里保留缓存分类尤其重要。如果你想把这些计数和预算检查接进日常工作流,可以创建一个 Fluxo 账号,先用小任务验证。邀请的人付费后,你也能获得推荐分成;这类收益应与模型调用成本分开记录。
需要帮助时,可以登录后在联系页面留言,并附上请求标识、时间和脱敏后的用量信息。把这些基础记录做好,下次终端里的任务突然变贵时,你就能定位是哪一轮上下文、哪次重试或哪类输出增加了消耗,而不必凭感觉删提示词。