Reasonix 计费体系解析:展示币种、CostQuote 规范载荷与 DeepSeek 峰谷计价
2026/9/12 16:52:05 网站建设 项目流程

Reasonix 计费体系解析:展示币种、CostQuote 规范载荷与 DeepSeek 峰谷计价

【免费下载链接】DeepSeek-ReasonixDeepSeek-native AI coding agent for your terminal. Engineered around prefix-cache stability — leave it running.项目地址: https://gitcode.com/GitHub_Trending/de/DeepSeek-Reasonix

Reasonix 是一套以终端为中心、围绕 prefix-cache 稳定性设计的 AI 编程 Agent(见 README.md),其计费模块遵循"报价是估算、余额是事实、展示不换算"的设计原则。本文以 docs/BILLING.zh-CN.md 为骨架,结合 internal/billing/quote.go、internal/billing/catalog.go 等源码,系统讲解三类费用事实的边界、display_currency/billing_currency/billing_mode配置语义、跨所有主机表面统一的usage.costQuote数据结构,以及 DeepSeek 峰谷动态计价与reasonix doctor billing诊断命令,帮助你准确理解并排查 Reasonix 的费用展示行为。

三类费用事实的分离

Reasonix 将计费领域中的三类信息严格分开,避免把"估算"当成"扣款"、把"展示换算"当成"钱包事实":

事实类型含义来源与性质
original按公开/自定义价表计算的原币估算不是发票,也不是实际扣款
valuations调用发生时记录的identity,以及可用时同模型另一官方区域的official_table估算调用发生时刻的估值快照
钱包余额供应商接口返回的原币事实唯一具有结算语义的数据

关键设计决策是:运行时不再下载、缓存或刷新 FX(外汇汇率),也不换算钱包。旧 JSON 中遗留的fxrateSnapshot字段仍可被读取为历史估值,但新报价永远不会生成它们。这一点在源码中有直接体现:internal/billing/quote.goBasisFX = "fx"的注释明确写着"仅为解码 pre-v6 持久化报价保留,新报价绝不创建 FX 估值"(internal/billing/quote.go#L22-L24)。

因此,面向用户的"费用"永远有三层语义:价表事实(original)、估值视图(valuations)、结算事实(钱包余额),三者各自独立,互不污染。

计费配置:展示币种、价表基准币种与计费模式

配置示例与字段语义

[billing] display_currency = "auto" # auto | CNY | USD [[providers]] billing_currency = "USD" # 价表基准币种,不代表实际结算币种 billing_mode = "payg" # payg | subscription_equivalent

各字段的语义边界如下:

  • [billing].display_currency:仅控制展示币种偏好,取值autoCNYUSD。它永远不会改写供应商的价表币种或官方价目。
  • [[providers]].billing_currency:该供应商价表的基准币种(frozen list-price currency),不代表实际结算币种。从源码看,ProviderBillingCurrency()在字段缺失时会从已配置价格推断币种,官方 DeepSeek 新模板默认回落到USD官方价表(internal/config/billing.go#L84-L107、internal/config/billing.go#L204-L207)。
  • [[providers]].billing_mode:计费模式,payg(按量付费)或subscription_equivalent(订阅等效估算)。解析时兼容subscriptiontoken_plan等别名(internal/config/billing.go#L109-L120),MiMo Token Plan 供应商会自动落为subscription_equivalent(internal/config/billing.go#L218-L225)。

旧配置迁移与auto语义

  • [desktop].currency仍可读取并自动迁移到[billing].display_currency,迁移逻辑见 internal/config/billing.go#L227-L239;调用SetDisplayCurrency时也会同步回写旧字段以兼容旧读取方。
  • auto配置层保持未解析normalizeDisplayCurrency将空值、AUTO一律归一为空字符串)。它的解析发生在展示表面:若只有一个有效钱包币种,则作为当前 tab/session 的运行时提示;否则单一原币直接展示;混币时按币种分桶。
  • 语言、浏览器 locale、主机区域都不再改变价表——这是与旧版 FX 换算行为的根本区别,auto不再从语言/地区推断币种。

CostQuote:所有主机表面的规范 usage 载荷

usage.costQuote是 Reasonix 所有主机表面(CLI、桌面端、远程会话等)统一的 usage 载荷。对应结构体定义见 internal/billing/quote.go#L77-L105,字段含义如下:

字段含义
original原币价表估算
originalTotals[]混币聚合时按 ISO 排序的原币桶
valuations.*.basis新报价只有identityofficial_table
selected只有形成单一展示总额时才存在
costCompleteusage 与价表事实完整
displayComplete已形成请求的单币种展示总额
complete兼容别名,始终镜像displayComplete
displayStatusmatchedfallback_originalbucketedunavailable
aggregateModesingle_currencycommon_valuationcurrency_buckets
rateBandDeepSeek 发生时刻档位:peakoff_peak,聚合时可为mixed
ratedAt用于选择时间费率的请求完成时刻(UTC)

展示状态与聚合模式

displayStatusaggregateMode是理解费用展示行为的核心:

  • 目标币种缺失但所有原币相同时:使用fallback_original展示原币——价表事实仍然有效,只是没有请求币种的估值,Selected回落到Original,同时DisplayComplete=falseIncompleteReason="display_unavailable"(internal/billing/quote.go#L396-L404)。
  • 混币输出originalTotals,不写伪造的 0:聚合器按 ISO 排序生成原币桶,aggregateModecurrency_buckets(internal/billing/quote.go#L610-L619)。
  • 只有缺少 usage/价格时才是unavailable并显示markIncomplete("missing_price_or_usage")会同时置空CostCompleteDisplayCompleteComplete(internal/billing/quote.go#L406-L414)。
  • 旧标量别名costcostUsdtotal_cost)仅在存在selected时双写,通过LegacyCostFloat()LegacyCurrencySymbol()LegacyCurrencyCode()兼容旧读取方(internal/billing/quote.go#L451-L474)。

从源码可见单次报价的完整流水线:BuildQuote先计算原币成本(OriginalCostAmount按"缓存命中输入 + 未缓存输入 + 输出"每百万 token 计费,见 internal/billing/quote.go#L172-L196),再为CNYUSD两个目标分别尝试官方价表估值(addTargetValuation,basis 为identityofficial_table),最后selectDisplay依据展示请求挑选selected。会话/运行总计则由AggregateQuotes对发生时刻报价做累加(internal/billing/quote.go#L476-L675)。

DeepSeek 峰谷计价

峰谷窗口与档位判定

DeepSeek 官方 OpenAI、Responses 与 Anthropic 端点上的 Flash 与 V4 Pro 按请求发生时刻计价:

  • 北京时间 09:00–12:00、14:00–18:00 为高峰(区间左闭右开),其余为低峰。
  • 由于供应商不提供逐 token 计费时刻,Reasonix 使用取得 usage 的请求完成时刻,并把报价继续标记为估算。
  • 发给支持图片的模型的图片按供应商 usage 计入输入 token。

源码中用稳定的 UTC 等价实现档位判定:工作日(排除周六周日)下,UTC 01:00–04:00(对应北京 09:00–12:00)与 UTC 06:00–10:00(对应北京 14:00–18:00)为peak,其余为off_peak(internal/billing/catalog.go#L152-L162)。档位在聚合时合并为peakoff_peakmixed

两期价目与历史可查性

目前记录了两期价目(实现见 internal/billing/catalog.go#L71-L127):

生效时间(北京时间)涉及模型要点
2026-08-17 00:00 起V4 Flash、deepseek-v4-flash-vision-exp(价卡与 Flash 相同)、V4 Pro第一期价目
2026-09-10 12:00 起deepseek-flash采用更低的 Flash 价格已下线的deepseek-v4-flashdeepseek-v4-flash-vision-exp由该模型承接并按同一价格计费;V4 Pro 在供应商将其路由到 V4.1 Flash 之前仍按自身价格计费

报价按发生时刻生效的那期价目解析,因此被取代的 8 月价格仍然可查——源码中 8 月价目行带EffectiveTo: sept闭区间标记,只有显式按时间解析时才能命中历史行(internal/billing/catalog.go#L78-L98)。

动态档位的启用条件

动态档位不是无条件启用的,源码中PricingContextForModelResolveScheduledRate给出了严格的闸门:

  1. 配置中保存的价格仍是高峰基准价——LookupCatalog始终以各期价目的 peak 行作为稳定配置锚点(internal/billing/catalog.go#L190-L217)。
  2. 只有 PAYG 且完整价格精确匹配某一期官方高峰基准价时才启用动态档位——MatchesOfficialPeakAnchor会逐字段比对CacheHitInputOutput与币种(internal/billing/catalog.go#L255-L274),且要求协议为 OpenAI/Responses/Anthropic 之一、端点确认为官方 DeepSeek 计费端点(internal/config/billing.go#L143-L170)。
  3. 仍停留在上一期基准价的配置会被识别为未经改动的官方价格,并按当前价目计费——因此供应商调价无需用户重新保存配置即可生效MatchesOfficialPeakAnchor匹配任一期的 peak 行后绑定最新ScheduleID)。
  4. 自定义端点、自定义价格和未知模型仍使用静态费率——ScheduleID只在配置解析证明是官方排期价格锚点后才设置,单靠模型名不能启用动态档位(internal/billing/quote.go#L158-L163)。
  5. 已经写入 session、ledger、stats 的历史报价不会回填或重算——历史报价是"发生时刻事实",不做事后修正。

钱包与诊断

钱包展示规则

  • 钱包余额不换算、不跨币种求和
  • 显式目标有对应钱包时显示该钱包;没有时显示真实币种并加 ISO 前缀。
  • 自动模式下,只有一个有效钱包币种时才作为运行时费用提示;多钱包、未知币种或请求失败不会影响费用事实

reasonix doctor billing

诊断命令可输出人类可读或 JSON 格式的计费健康报告:

reasonix doctor billing reasonix doctor billing --json

命令入口在 internal/cli/doctor.go#L18-L42,支持--json--root(指定项目根目录做配置解析,配置加载失败时仍以默认配置离线输出报告)。报告结构定义在 internal/doctor/billing.go#L12-L47,包含:

  • display_currency_pref/display_currency:展示币种偏好与解析结果;
  • fx兼容保留的fx对象固定为enabled=false、无缓存,仅用于旧读取方的 JSON 兼容(Source: "disabled");
  • providers[]:每个供应商的billing_currencybilling_mode、价格币种与输入/输出/缓存命中单价、pricing_fingerprint、官方目录匹配情况(catalog_match)与自定义价格保护标记(custom_price);
  • catalog_notes[]:正文同时展示自动选择策略(wallet currency, then pricing basis)、价表基准币种和官方目录匹配情况(internal/doctor/billing.go#L126-L158)。

对应测试TestCollectBillingIncludesProvidersAndDisplay(internal/doctor/billing_test.go)验证了报告包含 display preference、providers 列表、fx enabled: false与 "Runtime FX is disabled" 等关键内容。

小结

Reasonix 的计费体系可以用三句话概括:报价是估算,余额是事实,展示不换算original/valuations/钱包余额三类事实各司其职,CostQuote是跨表面统一的规范载荷,DeepSeek 峰谷计价严格限定于官方端点、官方价目与 PAYG 模式,并以发生时刻锁定历史可查性。当需要排查费用展示问题时,优先使用reasonix doctor billing检查展示币种偏好、供应商价表基准币种与官方目录匹配状态——这正是整个计费链路中唯一需要人工干预的诊断入口。

如需深入,可继续阅读:计费核心实现 internal/billing/quote.go、官方价目与峰谷调度 internal/billing/catalog.go、配置解析与迁移 internal/config/billing.go、诊断报告 internal/doctor/billing.go、命令入口 internal/cli/doctor.go,以及原文 docs/BILLING.zh-CN.md 与其英文版 docs/BILLING.md。

【免费下载链接】DeepSeek-ReasonixDeepSeek-native AI coding agent for your terminal. Engineered around prefix-cache stability — leave it running.项目地址: https://gitcode.com/GitHub_Trending/de/DeepSeek-Reasonix

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询