项目开源地址:https://github.com/GuoBug/PatchCat
在线体验:https://guobug.github.io/PatchCat/
往期回顾:
📖 《从 0 到 1 打造 AI 提示流编排器:别让 Agent 原地鬼打墙!连续 3 次相同工具调用的柔性引导与硬熔断(开源系列 19)》
📖 《从 0 到 1 打造 AI 提示流编排器:失败了别全盘重来!逆向 BFS 拓扑回溯与 DAG 检查点断点续跑(开源系列 18)》
📖 《从 0 到 1 打造 AI 提示流编排器:告别“有进无出的上下文黑洞” —— 双锚点滑动窗口与原子事务裁剪实战(开源系列 17)》
📖 《从 0 到 1 打造 AI 提示流编排器:用一次“假药对照”,我们在大模型自愈中抓出了真凶(番外系列 2)》
📖 《从 0 到 1 打造 AI 提示流编排器:合规暴涨 23.9% 语义却跌 7.1%?自愈病理诊断与双轴归因报告(番外系列 1)》
📖 《从 0 到 1 打造 AI 提示流编排器:代码越写越脏?架构纯度清洗与 42 样本统计检验复盘(开源系列 16)》
📖 《从 0 到 1 打造 AI 提示流编排器:别把大模型当机械拼图!Case #7 字段冻结陷阱与代码回滚复盘(开源系列 15)》
📖 《从 0 到 1 打造 AI 提示流编排器:搞 Eval 评测前,先让输出闭合!结构化约束与业务契约防线(开源系列 14)》
导读:大模型应用落地最现实的困境是成本与质量的撕裂:顶配大模型通跑成本难以承受,轻量小模型面对长尾难例频频溃败,而粗暴的重试级联又会把大量格式合规但业务全错的工单静默漏给用户。本文复盘 PatchCat 在端侧搭建模型级联路由与状态机的真实历程:如何用 Cheap-First 试探让 90% 流量在免费通道完成自愈闭环,如何用动作优先权门禁阻断语义倒置,以及如何通过多候选轮换队列在首选模型契约失败时完成秒级故障转移。

一、 工业现实的痛点:模型成本与质量的三难困境
在设计生产级 AI 工作流编排 系统的过程中,单节点的模型选型往往让工程师陷入两难:
第一种做法是全量采用顶配旗舰模型。不管工单内容是一句简单的“帮我查物流”,还是包含复杂法律抗辩的退款争议,通通走高参数大模型。这种做法固然省心,但百万 Token 推理单价动辄数美元,调用延迟动辄数秒,面对高并发日常请求,账单与响应时间都会迅速失控。
第二种做法是全量采用轻量开源模型(如 Qwen2.5-7B)。推理性价比极高,各大推理云甚至常年提供免费配额。然而,轻量模型在长文本理解、复杂嵌套 JSON 遵循以及深层因果推理上存在客观上限。当输入包含大段产品质量瑕疵抗议、句末夹杂退款指令时,轻量模型极易被前置的情绪描述词牵引,直接把核心诉求抛诸脑后。
第三种做法是行业常见的粗暴级联:先跑便宜模型,只要输出的 JSON 能够被反序列化成功,就直接返回;如果语法报错,再切强模型。这种策略在格式层看似聪明,但在业务层是危险的。在我们早期的基准测试中,有 20% 的工单输出能严格满足 Schema 格式,但字段分类却将涉及退款纠纷的高危工单判为了普通的咨询。粗暴级联不仅未能发现这种语义掩盖,反而给错误的输出贴上了合规的绿色标签。
系统的设计目标由此清晰确立:既要将绝大多数常规流量锁定在低成本甚至零成本的经济层,又必须在深层语义发生漂移或格式崩溃时,拥有确定性的拦截与定向升级机制。
二、 关键节点的双向共创:从产品门禁到状态机调度
这一架构的成型并非单向的代码堆砌,而是源于人和 AI 在关键架构节点上的双向推演。
作为系统设计者,我提出的关键要求根植于实际产品定位与使用门槛:
- 零成本启动体验:PatchCat 面向个人开发者与中小团队,必须做到即使用户不配置昂贵的付费 API Key,依靠各厂商的免费试用配额,也能把工作流平稳跑通;
- 业务安全红线:退款类涉及资金出入的工单属于最高优先级,业务断言必须强制要求严重级别数值,决不能让假货、暗损等描述词掩盖退款的核心动作意图。
AI 搭档则在底层工程规约上指出了数个致命隐患:
- 前置语义路由的盲区:如果试图在输入端前置一个轻量分类器做分流,面对长难工单的深层对抗文本,浅层分类器自身的误判率甚至高于下游生成模型;
- 同构重试的死锁与失败现场丢失:轻量模型在遇到复杂契约限制时往往会进入局部概率深井。如果升级到强模型时仅仅重新发送原始 Prompt,强模型将丢失此前所有的自愈探索痕迹,陷入高耗时的冷启动;
- 模型提供商配额震荡:免费或低成本 API 存在突发性的并发限流(HTTP 429)与输出不稳定性,单强模型单点依赖在生产环境下极易造成级联全链路阻塞。
经过数轮方案推演与权衡,我们确立了基于 DAG 状态机 的核心调度方案:放弃前置黑盒路由,确立 Cheap-First 级联试探 体系。将经济模型作为投机执行者,配合本地轻量自愈消化常规瑕疵;一旦触发预算耗尽或动作优先权门禁,携带完整的失败现场诊断三元组,定向升级至跨厂商的多候选强模型轮换池。
三、 核心架构解构:Cheap-First 级联与多候选容灾
整个级联调度流水线划分为三个严格解耦的处理波次:
1. 经济层试探与受限自愈
当工作流节点触发时,输入被直接派发给 Tier 1 经济模型(默认配置为托管在 SiliconFlow 免费通道的 Qwen/Qwen2.5-7B-Instruct,温度严格锁定为 0.0)。
模型返回后,输出流首先经过快速契约校验:
- 如果输出完全合法,直接结束调用;
- 如果出现轻微 JSON 语法缺失或类型偏差,进入由两轮以内微型循环组成的局部自愈状态机。系统注入轻量修正指令,尝试在经济模型内部消化格式瑕疵。
在我们的基准测试集中,这一层接住了 90.0% (27/30) 的日常请求,实现了真正的零额外账单闭环。
2. 双道升级准入与现场诊断三元组继承
当请求无法在经济层闭环时,调度器不会盲目升级,而是由双道准入机制判定升级路径:
- 路径 A (
cheap_budget_exhausted):经济层重试次数耗尽,输出依然无法通过 Zod Schema 或业务规则断言; - 路径 B (
semantic_conflict_gate):触发 F7 动作优先权门禁。输入中若检测到退款与瑕疵描述词的强对抗特征,且经济模型判定结果与动作词冲突时,拦截放行并强行标记为升级。
更关键的工程细节在于现场三元组的继承机制。传统级联在升级模型时,通常将用户原始 Prompt 原封不动传给强模型。而在 PatchCat 中,调度器组装了包含三项要素的诊断载荷:
interface DiagnosticTriplet {
rawOutput: string; // 经济模型最后一次生成的原始异常文本
errorPath: string; // 校验失败的具体字段定位(如 root.urgency)
errorRule: string; // 被违反的业务断言说明(如 退款工单 urgency 必须 ≥ 4)
}
强模型接收到的系统上下文不再是一张白纸,而是清晰标注了前序尝试的失败原因。强模型可以直接在错误现场上进行针对性纠偏,避免了重新推导带来的 Token 浪费。
3. 多候选强模型轮换队列与秒级容灾
进入 Tier 2 强模型阶段后,系统激活预先编排的候选模型优先级链条:
gemini-3.5-flash-lite ➔ gemini-3.1-flash-lite ➔ gemini-3.8-flash
在实际公网环境中,单一模型极易受到免费配额耗尽、瞬时 429 限流或小概率契约拒绝的影响。调度器通过链式循环执行调用:
- 优先请求候选队列的第一顺位模型;
- 若调用成功且输出满足结构化契约,直接标记为升级成功并返回;
- 若首选模型抛出 429 异常,或返回文本未能满足业务约束断言(
contract_fail),看门狗立即捕获异常,并在 1.3 秒内无缝顺延调度第二候选模型。
这一多候选容灾池设计,从根本上隔离了不同大模型云服务在免费层上的并发抖动,保障了全流程的连续性。
四、 真实 A/B 测试基准验证:四个轮次的求真核验
工程结论必须建立在无可辩驳的实证基础之上。为了验证该机制的真实收益,我们在包含 30 个复杂长难工单的基准测试集上,连续组织了四轮深度对齐的 A/B 对照实验。
在第三轮核验中,审核曾发现两臂之间存在 853 字符的初始提示词不对称,导致未升级用例出现了 4 例因提示偏差引发的假性不一致。在彻底补齐提示词对称性后,第四轮实测得出了完全纯净的基准数据。
1. 核心实测指标对比矩阵
对照组 A(纯经济模型基线)与实验组 B(M3 Cheap-First 级联路由)在完全同构的输入与相同环境下的评测结果如下:
| 指标项 | 对照组 A (纯经济模型) | 实验组 B (M3 级联路由) | 变化差值 | 统计检验 (McNemar) 与归因属性 |
|---|---|---|---|---|
| 未升级用例一致性 | 100.0% | 100.0% (27/27) | 0 例抖动 | 提示对齐后,非升级任务表现完全对称 |
| Tier-2 强模型救回率 | N/A (未配置升级) | 3/3 (100.0%) | 净救回 3 例 | 受处理子集(#16, #23, #27)全部修复成功 |
| 契约合规率 | 90.0% (27/30) | 100.0% (30/30) | +10.0% | $p = 0.25$(3 例真实救回,无采样噪声) |
| 分类准确率 | 76.7% (23/30) | 86.7% (26/30) | +10.0% | $p = 0.25$(3 例真实救回,无反向恶化) |
| 长难复杂例穿透率 | 50.0% (1/2) | 100.0% (2/2) | +50.0% | 单例驱动(#27 契约崩溃被救回,#30 两臂均成) |
| 经济层闭环率 | 100.0% | 90.0% (27/30) | 保持高闭环 | 绝大多数请求被锁定在零成本通道 |
| 强模型升级率 | 0.0% | 10.0% (3/30) | 精准升级 | 仅针对困难长尾触发,无误杀扩散 |
| 累计 Token 消耗 | 39,765 | 48,436 | +21.8% | 额外消耗严格收敛于 3 例升级工单 |
| 平均端到端耗时 | 9,073ms | 10,047ms | +974ms (+10.7%) | 处于公网延迟正常波动区间 (±42%) |
2. 故障转移实况:秒级自动救回
在实验组触发升级的 3 个长尾用例中,有两例真实复现了多候选轮换队列的故障转移全过程:
- Case #16(退款诉求长句):首选候选
gemini-3.5-flash-lite执行后耗时 1640ms,因未能满足业务红线中的文本长度断言,状态机标记为contract_fail。调度器携带失败现场立即故障转移至候选 2gemini-3.1-flash-lite,后者在 3644ms 内成功纠正格式并返回合法结果; - Case #27(假货暗损与退款冲突):首选候选
gemini-3.5-flash-lite耗时 2161ms,未能满足退款工单紧急度属性的合规约束,状态机同样在 1381ms 内由候选 2 接管并完成合法输出。
实测证实,多候选队列能够将突发契约未通过的风险在运行时完全消化,无需人工介入或向前端报错。
五、 工程权衡与代价剖析:不讲神话,直面边界

任何工业级方案都不是灵丹妙药。作为兼具底层架构与增长视角的系统工程师,必须清醒地交代架构的代价、局限与边界条件。
1. Token 预算与算力开销
级联路由并非没有成本。由于需要经历经济模型的初始试探和可能的局部自愈,一旦进入升级分支,系统累计消耗的 Token 数量必然高于单次直接调用强模型。
实测数据显示,全量 30 例测试的 Token 总量增加了 +21.8%。这笔额外开销完全集中在触发升级的 3 个用例上,平均每挽救 1 例契约崩溃任务,需要额外消耗约 2,890 tokens。
- 在当前利用免费额度的模式下,财务支出为零;
- 如果未来在纯商业付费环境下运行,这相当于用少量廉价试探的 Token 成本,换取了 90% 流量不必流向高价模型的巨大财务节约。对于涉及资金安全的退款争议单,这笔开销极具性价比;但若将其用于吞吐极高、错误容忍度极高的粗粒度内容抽取场景,就需要适度调小重试次数。
2. 延迟指标与公网波动的免责声明
在端到端耗时上,实验组平均耗时比对照组增加了 974ms。我们横向比对了多轮基准测试在同一套代码下的耗时表现,发现由于云端大模型 API 处于公网共享调度环境,平均延迟在 3.8 秒至 9.1 秒之间大幅波动,波动幅度高达 ±42%。因此,单轮内毫秒级的耗时变动主要受到公网排队与网络波动的支配,不能作为级联架构性能优劣的绝对定量依据。
3. 受处理子集的结构性必然与边界脆弱性
在统计学解释上,必须严格指出两个认知边界:
首先,受处理子集表现出的 100% 救回率(3 改善 / 0 恶化),在数学构造上具有单向性。因为升级机制仅仅在经济模型失败时才触发,两臂的经济层模型与参数完全同构,所以被送入升级队列的工单在对照组基线中必然已经失败。对于一个基准得分为零的子集,结果只可能是被救回或继续失败,结构上原本就不存在变差的可能。
其次,受处理子集的样本组成存在边界脆弱性。对比多轮测试记录,仅有 Case #16 在历次运行中均稳定触发升级,而 Case #23 与 #27 则处于经济模型判定的决策边界上,微小的提示词扰动就会使其在成功与失败之间摆动。当前单轮测试的样本规模(n=3)表明,要确立具备统计显著性的置信区间,未来仍需推进多轮重复实验($N \ge 5$)来做长期追踪。
六、 总结:为 AI 工作流构建确定性安全带
在推进 AI 辅助开发与生产落地的过程中,我们越来越清晰地意识到:构建可靠软件的关键,在于如何在概率化的大模型内核之上,建立一套遵循 确定性工作流 规约的防护体系。
大模型本身像一台充满灵性却不可预测的引擎。如果放任它单打独斗,开发者要么被昂贵账单拖垮,要么在无穷无尽的长尾边缘错误中疲于奔命。
PatchCat 的工程实践给出的答案是分层设防:用经济模型接住大体量的规则性常态,用业务门禁守住底线逻辑,用多候选状态机在危机时刻从容调度后备力量。唯有让不确定性的探索受到确定性架构的牵引,AI 提示流编排器才能真正走出实验室玩具的范畴,成为开发者手中坚实可靠的生产力基石。
下一篇预告
📖 《从 0 到 1 打造 AI 提示流编排器:大模型也能秒级自检!Flow Preflight 语法静态分析与画布连线自查(开源系列 21)》
关于作者
郭强 (GuoBug),Product Engineer,做平台工程也做业务增长。目前主要在折腾 AI 工作流编排、DAG 状态机与确定性系统架构。
开源项目与主页:https://github.com/GuoBug · https://guobug.github.io
欢迎就工作流引擎架构、拓扑调度和低门槛开发体验交流指教。