文档

用量证据自动恢复

本地持久化扫描、退避、并发领取与故障恢复的限定验收

归档内容,只读,不代表现行方案。现行文档见文档总览。

2026-09-20。已在 API Edge 仓实现独立 billing-recovery-worker,消费已保存的 response-usage-v1 证据,通过现有 Core 接口恢复提交和结算。Core 仍是价格、钱包与账务事实源;uumi 无需修改。此页是 NEXT-05 的恢复增量记录,不表示 NEXT-06 完整 Core Worker、Admin 人工处置或生产发布已完成。

已交付行为

  • 默认关闭,显式启用;扫描私有本地目录,固定并发池,分页读取。普通模型请求不经过 Worker 排队。
  • 同一主机的两个进程按操作领取内核文件锁;进程被强制终止后释放,不按时间偷锁。
  • 在访问 Core 前持久保存尝试次数、证据摘要、Core origin 与退避时间;重启不重置次数。默认最多 8 次、5 秒到 5 分钟退避,明确暂时故障才自动重试。
  • 已结算停止提交;Core pending 隔离为 needs_review;无效证据/永久错误隔离为 quarantined;次数耗尽转 exhausted。缺用量不补造、不退款,未知执行不重发模型。
  • 每轮输出脱敏状态计数,并保存逐操作状态;没有外部告警接入。Worker 记录用于运维,实际扣费仍查 Core。

完整运行命令、状态与人工核对步骤位于 Edge 仓 docs/usage-recovery-worker.md。原单文件 billing-reconcile 继续保留;新 Worker 不接触网关凭据、供应日志或客户数据库。

本地独立进程验证

本批 34 项完整链检查通过;真实 Core、Edge、Worker 独立进程和私有新数据库,网关为本地合成服务。23 次合成模型执行,付费调用 0,网关日志查询 0;不作为新增 uumi 实测。

故障或场景验证结果
Core 暂时不可用,包含代理 HTML 503保存 retry_wait;立即重扫不再提交,重启仍遵守退避
Worker 已提交证据后被 SIGKILL尝试次数先落盘,内核锁释放;重启等待既定时间
Core 已结算但回包丢失Worker 重交同一证据恢复确认,唯一流水不重复扣费
两个 Worker 进程并发恢复同操作互斥领取;本条经过 4 次受控尝试后确认 settled
缺 usage 与流式中断两笔保持 needs_review;Core 预留仍 active,实际扣费 0
常驻进程信号退出及再次扫描正常停止;已完成任务不增加尝试次数
Core 与 Edge 再次重启已结算金额保持;两个客户钱包总额与唯一流水核对一致

恢复过程中额外模型执行为 0。Go 测试另验证次数耗尽、永久/无效响应拒绝、软链接与损坏文件、绑定或证据改变、并发上限与取消。Edge 全仓 race/vet/build、固定 new-api 19 个源文件摘要与 34 个依赖版本检查通过,既有证据线格式不变;Core/Contracts 运行代码本轮未改。

首轮故障脚本曾使用固定等待时长,短于实际持久化的“请求期限 + 第二次退避”,导致提前断言;已改为读取状态里的下一次执行时间,完整重跑通过。该次没有重复扣费,测试进程和私有目录均清理。

交接与报告:本机 coordination/handoffs/TEXT-USAGE-RECOVERY-WORKER/。本轮未提交、推送、部署或改动生产客户账本。

保留边界和下一检查点

目前只支持同机私有本地文件系统,不宣称 NFS/跨机分布式领取或容量达标。归档前崩溃、完全缺证据、人工修复后的 Worker 状态收敛、正式告警、Core 任务队列与 Admin 处置入口仍待后续实现。现有 origin 绑定不能替代未来稳定的 Core 实例身份,隧道/数据库目标不能静默替换。

NEXT-05 继续进行。后续已补冻结文本限制、保守预留和超限阻断,进入本地验收。客户自动扣款上限已有保护,真实供应端的上下文、输出与成本上界仍未验收。Core 恢复队列和 Admin 受控处置按逐项实施计划推进。真实模型兼容限制继续见能力验收。

On this page