Open Code Review 项目解析知识图谱 / 分组目录 / 工程保障 / Token 计费与成本控制

Token 计费与成本控制

工程保障进阶工程保障G-F · 工程保障

What · 是什么

tiktoken-go 计费(o200k/cl100k_base),预算前瞻截断、80% token 大文件丢弃、prompt-cache 亲和键命中前缀缓存
基于 tiktoken-go 精确计费:o1/o3/o4 系列用 o200k_base,其余模型用 cl100k_base,分词口径与 OpenAI 一致
estimate.go 提供 token 预估与预算前瞻:审查前估算输入 token 量,预判是否超出模型上下文与成本预算
filterLargeDiffs 自动丢弃超过 MaxTokens 80% 的超大文件 diff,防止单文件撑爆上下文
三区压缩策略:对超大输入分区压缩,显著降低送入模型的 token 总量
prompt-cache affinity key 设计:按(会话+任务+文件)组合生成缓存键,命中 provider 前缀缓存后 input 成本节省约 98%
端到端对比通用 Agent,同样审查任务 token 消耗节省 5-15 倍

Why · 为什么

原理 · Principle

token 即成本,审查任务动辄处理整个 diff,无预算控制会产生不可控账单

超大 diff 塞入模型不仅贵,还会稀释注意力导致审查质量下降,丢弃 80% 阈值之上的文件是质量与成本的双赢

前缀缓存命中与否直接决定 input 成本量级(约 98% 差异),affinity key 让重复/相似任务尽量复用缓存

How · 怎么做

默认策略即可享受收益:filterLargeDiffs 与三区压缩自动生效,无需配置
关注预算:审查前查看 estimate.go 输出的 token 预估,判断本次任务的成本量级
最大化缓存命中:保持会话与任务结构稳定(同一仓库同一文件多次审查),让 prompt-cache affinity key 命中 provider 前缀缓存
按模型选口径:使用 o1/o3/o4 时确认计费走 o200k_base,其余模型确认 cl100k_base,避免计费误判
结合遥测验证:在 metric 中观察 token 计数与缓存命中率,量化节省效果并发现异常增长

案例 · Cases

代表性案例
超大 PR 审查:一个 2000 行文件被 filterLargeDiffs 自动跳过,审查继续进行而非整体失败,成本可控
重复审查同一分支:第二次运行命中前缀缓存,input token 成本骤降至约 2%
多模型对比:用预估工具对比不同模型的 token 消耗,选择性价比最高的审查模型
成本审计:月末按 metric 的 token 计数核对账单,确认无异常放大

反模式 · Anti-patterns

正反实例论证 · Evidence

正例 · Pro
filterLargeDiffs 自动丢弃超大文件
# 单文件 diff 超过 MaxTokens 80% 时filter_large_diffs: dropped tool_calls.py (9213 tokens > 80% of 8192)
超大 diff 自动跳过而非撑爆上下文,审查继续完成且注意力不被稀释,成本与质量双赢。
反例 · Con
调高阈值甚至禁用过滤
filter_large_diffs: disabled # 或 threshold=95%
2000 行文件全量入模,token 账单飙升且审查焦点被稀释,一次审查的成本抵得上十次正常审查。
正例 · Pro
稳定 prompt 结构命中前缀缓存
# 同一会话+任务+文件组合重复审查ocr review --commit abc123ocr review --commit abc123 # 第二次运行命中 provider 前缀缓存
prompt-cache affinity key 按(会话+任务+文件)生成,重复任务命中缓存后 input 成本节省约 98%。
反例 · Con
频繁改动 prompt 前缀破坏缓存
# 每次审查前改系统提示/规则顺序ocr review --rule "A" && ocr review --rule "B"
前缀字节变化导致整个缓存失效,98% 的 input 成本节省归零,token 账单回到全价。
正例 · Pro
按模型口径准确计费
# o1/o3/o4 系列走 o200k_base,其余走 cl100k_baseestimate.go: model=o3, tokenizer=o200k_base, estimated_input=12.4k
审查前 estimate.go 给出与模型匹配的 token 预估与预算前瞻,成本决策有据可依。
反例 · Con
用错分词口径估算 o1 系列
# 按 cl100k_base 估算 o1 任务 tokenestimate: 9.8k tokens (实际应走 o200k_base 口径)
预估与账单口径不一致,预算前瞻失真,月底对账对不上才发现成本超支。

实践资产 · Assets

源码节选
5 级配置优先级解析节选:ResolveEndpointWithOptions
internal/llm/resolver.go · 4171 B

相关边