
把高优先级任务先放进队列并不会让它凭空拥有 Token 配额。调度器需要先承认一个朴素事实已承诺给在途请求的预算也属于暂时不可用的资源。LangChain 10 月 1 日关于模型路由的文章把任务理解、评估与成本记录放在 harness 里讨论。本文只借鉴“调度决策要有任务与结果账本”的做法不复用其成本降幅也不实施模型切换。文章预留、结算、取消是三种事件请求开始前按上界预留完成后按可信 usage 结算取消时需要知道远端是否已经执行。若网络断了而结果未知不能立刻假定零消耗并把全部配额发给下一批请求。供应商的 RPM、TPM、并发和缓存计费也不是同一个桶。幂等键同样重要。一个超时回调和一个正常完成回调先后到达若都归还同一笔预留账本就会创造出不存在的预算。先把状态机写对再讨论竞价公式会更稳。一个不会双重退款的小账本例子只管理一个固定容量桶没有模拟供应商的滚动时间窗口。它能验证预算守恒与重复结算不声称可以根治所有 429。图中的容量 10、预留 6、实际 4 都是教学单位。图里的取消归还只能对应确认没有消耗的预留未知远端结果必须进入单独的待核状态不能沿用这个简化退款分支。class Budget: def __init__(self, capacity): self.capacity capacity self.available capacity self.jobs {} def reserve(self, request_id, amount): if request_id in self.jobs or amount 0 or amount self.available: raise ValueError(duplicate or insufficient reservation) self.available - amount self.jobs[request_id] {reserved: amount, settled: None} def settle(self, request_id, actual): job self.jobs[request_id] if job[settled] is not None: if job[settled] ! actual: raise ValueError(conflicting settlement) return if not 0 actual job[reserved]: raise ValueError(usage exceeds reserved upper bound) self.available job[reserved] - actual job[settled] actual budget Budget(10) budget.reserve(r1, 6) assert budget.available 4 budget.settle(r1, 4) assert budget.available 6 budget.settle(r1, 4) assert budget.available 6 try: budget.settle(r1, 0) except ValueError: pass else: raise AssertionError(second callback refunded twice) print(reserve 6, charge 4, balance 6; duplicate settlement changed nothing)例子跑通以后还要验证什么这段代码已在本地 macOS、CPython 3.9.6 下运行实际输出为reserve 6, charge 4, balance 6; duplicate settlement changed nothing。它验证的是例子中的数据约束与分支不包含线上服务的吞吐或延迟测量。未调用模型 API也未测试供应商配额、429、流式 usage 或计费。本地只验证有限状态账本真实实现要持久化、处理并发原子性、过期预算、usage 不完整和估计超上界并把优先级公平性与预算正确性分别评估。延伸阅读How to Build a Model Router in the Harness2026 年 10 月 1 日的一手工程案例其试验数据不移植为本文成绩。