资讯动态

如何更新 Caveman 的 provider catalog 价格数据并跑通校验流程?

发布时间:2026/9/12 4:07:55 来源:尧图企业网站定制
如何更新 Caveman 的 provider catalog 价格数据并跑通校验流程【免费下载链接】caveman why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman项目地址: https://gitcode.com/GitHub_Trending/caveman1/cavemanCaveman 的shared/provider-catalog目录维护着 gateway 和 optimizer 做成本核算所用的 token 价格数据。当某个 provider 的模型调价、或你确认了新的价格信息时需要更新catalog/current.yaml并生成对应的日期快照然后跑通仓库的校验流程Python 校验器validate_catalog.py、配套 unittest以及 monorepo 的 Go catalog 测试。本文覆盖从环境准备、价格修改、快照生成到校验与常见报错处理的一条完整路径适用于向该目录提交价格更新的贡献者。更新前先了解 catalog 的文件结构校验流程依赖三个文件各司其职改错文件是后续报错的主要原因来源CONTRIBUTING.md、CLAUDE.mdcatalog/current.yaml—— 线上目录按provider/model/region组织的行数据服务加载的就是它catalog/YYYY-MM-DD.yaml—— 不可变的日期快照。每一行current.yaml的verified_at字段指向其中一个快照日期价格变化通过新增日期文件表达永远不要改写旧快照schemas/provider-catalog.schema.json—— 描述行结构的 JSON Schemadraft 2020-12社区提交价格 PR 时以它为契约。每行数据的必填字段为provider、model、region、currency、pricing、capabilities、sources、verified_atcapabilities_verified_at可选但现行current.yaml的行都应带有它。两个日期字段语义完全不同不能混用verified_at表示该行价格上次对照 provider 官方定价页核对的日期是catalogVersion()shared/platform/catalog的catalog.go的唯一输入会嵌入成本报告和签名回执。只有真正重新核对价格时才允许更新capabilities_verified_at表示能力字段如tools、vision、context_window_tokens上次核对的日期不被任何计费/回执路径读取。对应规则只改能力字段时更新capabilities_verified_at、保持verified_at不动只改价格时反过来只有同一天确实两边都核对过才同时更新。准备环境并跑一次基线校验依赖极少requirements-dev.txt 中只固定了PyYAML6.0.2。所有命令都在shared/provider-catalog包目录下执行python3 -m pip install -r requirements-dev.txt python3 validate_catalog.py python3 -m unittest discover -s tests -p test_*.pyCONTRIBUTING.md 明确说明catalog 专属 PR 的测试 lane 只运行这两组 focused 测试。修改前先跑一遍基线确认当前仓库状态是绿的这样后续报错才能定位到自己引入的改动。校验通过时validate_catalog.py输出provider catalog valid: current rows are fresh, sourced, and snapshot-backed修改价格编辑 current.yaml 并生成新日期快照编辑 current.yaml以catalog/current.yaml中的一行为例文档示例取自仓库实际数据数值为当前快照值- provider: openai model: gpt-5.6 region: global currency: USD pricing: input_per_million: 5.00 output_per_million: 30.00 cache_read_input_per_million: 0.50 cache_write_input_per_million: 6.25 capabilities: context_window_tokens: 1050000 sources: - provider 定价或模型文档的 HTTPS 链接 verified_at: 2026-08-10T00:00:00Z capabilities_verified_at: 2026-08-10T00:00:00Z价格更新时按以下规则修改该行修改pricing中实际变动的字段。pricing下只允许 schema 定义的那组字段名input_per_million、output_per_million、cache_read_input_per_million、reasoning_output_per_million、long_context_threshold_tokens等出现未定义字段会被校验器以unknown pricing field(s)拒绝不适用的字段写null而不是省略把verified_at更新为你实际核对价格的当天日期格式为带时区的 RFC3339如2026-09-11T00:00:00Z。校验器要求它不晚于当前时间、且距今不超过 120 天sources必须是包含 provider 自有的定价或模型文档的 HTTPS 链接列表且不能删掉旧快照中已有的 source——除非你更新了verified_at并在快照中同步provider/model/region三者的组合在 catalog 中不能重复出现duplicate identity报错说明写入了重复行。特别注意capabilities里的三个键——regional_processing_multiplier、inference_geo_us_multiplier、region_agnostic_pricing——不是能力数据它们会参与计费前两个乘以该行费率第三个决定 global 行能否应答区域查询。编辑它们等同于改价格同样要更新verified_at并生成日期快照。完整清单以catalog.go中的catalog.PriceAffectingCapabilities为准测试套件会断言 Python 侧镜像与它一致。currency必须是USDbatch_discount_fraction必须 ≤ 1且0.50表示五折不是“按五折计价”。生成日期快照把verified_at更新为新日期后按该行verified_at的日期新建catalog/YYYY-MM-DD.yaml快照文件把该行更新后的内容放入其中。日期名与verified_at对不上或快照中找不到与该行定价身份匹配的记录校验器会直接失败。旧快照一律不改写新增模型时同样是“加进current.yaml 复制到新日期快照”两步例如2026-07-01.yaml。运行校验流程改完后在shared/provider-catalog下重跑基线命令python3 validate_catalog.py python3 -m unittest discover -s tests -p test_*.py其中 tests/test_validate_catalog.py 会额外断言仓库自带的 catalog 在真实当前时间下依然有效并覆盖未知字段、非 HTTPS source、未审阅同步标记等失败关闭行为。Python 侧通过后还有 monorepo 更深的 Go 测试。package.json 提供了对应脚本例如npm run build实际执行go test ../platform/catalog -run TestCurrentCatalogRowsAreFreshAndStructurallyValid -count1Go 侧要求每行的定价相关字段provider、model、region、currency、pricing、verified_at以及所有 price-affecting capabilities与其verified_at指向的快照逐值一致——这正是 Python 快照钉住机制的 Go 实现。常见报错与对应处理validate_catalog.py失败时以provider catalog invalid: 原因形式输出到 stderr 并返回非零退出码。对照报错信息定位问题错误信息均为校验器源码原文报错片段含义处理verified_at is in the future日期写到了未来改回实际核对日期verified_at is older than 120 days该行超过 120 天未重新核对重新核对价格并更新verified_at 新快照pricing changed without a new verified_at snapshot version (checked catalog/日期.yaml)改了价格但没有对应的日期快照按verified_at日期新建快照文件dropped or replaced a source from its immutable snapshot在verified_at不变的情况下删换过 source补回旧 source或走完整的verified_at 快照流程unreviewed sync proposal marker on line(s) ...文件里残留# proposed-by:同步脚本标记逐行对照 sources 确认价格后删除该标记行duplicate identity provider/model/region行身份重复删除重复行must be HTTPS/sources must be a non-empty listsource 非 HTTPS 或为空换成 provider 官方 HTTPS 链接unknown field(s)/unknown pricing field(s)写了 schema 之外的字段删除或改名到已定义字段其中# proposed-by:标记值得单独说明monorepo 内的同步脚本会修改current.yaml并提升verified_at同时打上该注释行。校验器直接读原始文本检查它——在人工对照 provider 定价页确认每一个数字之前带标记的目录一律判为无效删除标记本身就是“已确认”的声明。提交限制与 PR 要求每个数字必须可追溯PR 中写明数据来源和访问日期未知 provider/模型/region 组合保持零价格unpriced:溯源不要借邻近模型的价格或凭感觉猜值混合了产品代码与 catalog 数据的改动必须拆开让价格 PR 保持可审计价格行属于版本化数据可以随数据变化而不升包版本schema 破坏才需要 major 版本见 CHANGELOG.md。流程终点validate_catalog.py输出provider catalog valid: current rows are fresh, sourced, and snapshot-backedunittest 全绿Go catalog 测试通过即表示这次价格更新在新鲜度、溯源和快照钉住三层校验下都成立可以提交。【免费下载链接】caveman why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman项目地址: https://gitcode.com/GitHub_Trending/caveman1/caveman创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价