Install
openclaw skills install agentsop-cost-tiered-modelsSplit a multi-call LM workflow by cognitive load, not by accuracy: let one strong model make the few reasoning decisions and a cheap model do the many mechanical executions (Aider architect+editor, DSPy optimizer-LM vs task-LM, vLLM speculative draft+target, LangGraph supervisor+worker are the same shape). Use when designing or cost-optimizing a pipeline that calls an LM many times, when deciding which steps need a strong reasoner vs a cheap executor, or when adding an escalation valve for when the cheap tier degrades. Search keywords: reduce LLM cost, cheaper model, lower token cost, model cascade, route to cheap model, strong model plus cheap model, LLM cost optimization.
openclaw skills install agentsop-cost-tiered-models一句话:一条多次调用 LM 的工作流里,少数调用需要推理,多数调用是机械执行。让一个强模型做决策,让一个便宜模型干活——按认知负荷拆分,不是按"哪个更准"拆分。
统一声明:Phase B 发现这个模式在 4 个 SOP 里以 4 个名字反复出现——DSPy 的 optimizer-LM vs task-LM、Aider 的 architect+editor、vLLM 的 speculative draft+target、LangGraph 的 supervisor+worker。它们是同一个形状。本技能把这个形状抽出来,命名为 cost-tiered models。详见 §7 跨框架对照。
任一情形成立时激活本技能:
不应激活(见 §6):
按认知负荷拆分:一个强模型做决策,一个便宜模型执行——而且绝大多数调用是执行。
绝大多数团队的默认是"全程一个模型"。这把两种本质不同的工作混在了一个价位上:
| 层 | 工作性质 | 调用频率 | 模型要求 | 选谁 |
|---|---|---|---|---|
| Tier-S(决策层) | 规划、推理、路由、判断、提案 | 少(每任务 1–N 次) | 推理强;执行干不干净不重要 | 最强 reasoner |
| Tier-E(执行层) | 改写、抽取、格式化、应用决定、生成草稿 | 多(占总调用 80%+) | 听话、格式干净、便宜、快 | 便宜/快模型 |
关键洞察:成本由调用次数主导,调用次数由执行层主导。所以把执行层降级到便宜模型,省下大部分成本,却几乎不碰决策质量——因为决策层调用次数少,仍然用最强模型。
推理能力和指令依从(产出干净的 diff/JSON/格式)是两种不同的能力,不总同向。Aider 的 Polyglot 数据是最干净的证据:o1-preview 单独跑 79.7%,但它当 architect 配一个便宜 editor 后,整体到 82.7%–85%——两次便宜的专门调用胜过一次又贵又全能的调用 [aider.chat/2024/09/26/architect.html]。强模型负责"想",便宜模型负责"把想法落成格式正确的编辑"。
三者都是"强决策 + 廉价执行"的拆分,只是优化目标不同。
拆分不是单向的。便宜执行者会在某些输入上失败或退化(格式错、跑题、质量塌)。正确的设计带一个回退-升级阀门:检测到执行层失败 → 把这一步升级到强模型重试。便宜执行者覆盖 80–95% 的常规输入,强模型兜底长尾。这把"省钱"和"不掉质量"同时拿到。
[Step 0] 列出工作流里所有 LM 调用
└─ 对每次调用记:它在"想"还是在"做"?预期调用频率?
[Step 1] 给每次调用打认知负荷标签
├─ 高推理(规划/路由/判断/提案/纠错) → 候选 Tier-S
└─ 机械执行(改写/抽取/格式化/应用决定/草稿) → 候选 Tier-E
规则:把"需要全局判断 / 一旦错代价高 / 频率低"的归 Tier-S,
其余尽量下沉到 Tier-E。
[Step 2] 分配模型层
├─ Tier-S → 你能负担的最强 reasoner(少量调用,单价高无所谓)
├─ Tier-E → 便宜/快模型(大量调用,单价主导总成本)
└─ 给 Tier-E 选最适配它的输出格式(弱模型用 whole/简单 schema,
不要逼它产 token 高效但易错的 diff)。
[Step 3] 度量质量 delta(必须做,否则是赌博)
├─ baseline:全程强模型的质量分 + 成本
├─ split:S+E 拆分后的质量分 + 成本
├─ 看 (质量 delta, 成本 delta) 这一对,不要只看其一
└─ 在你自己的真实任务上量,不要信别人 benchmark 的绝对数
[Step 4] 装升级阀门
├─ 定义"执行层失败"的可检测信号(格式不合法 / 测试不过 /
│ schema 校验失败 / 自评分低)
├─ 失败 → 升级到 Tier-S 重试这一步(或换执行格式重试)
└─ 记录升级率:若 >30%,说明这步本就属于 Tier-S,重新归类
[Step 5] 调拆分点(tune the split)
├─ 升级率高 / 质量掉太多 → 把更多步上移到 Tier-S
├─ 升级率近 0 / 质量持平 → 把更多步下沉到 Tier-E,再省一截
└─ 拆分点是个滑块,不是开关;按 Step 3 的数往返调
editor-diff/editor-whole)。BootstrapFinetune(student=Llama-3.2-1B, teacher=gpt-4o-mini),先在大模型优化再蒸馏 [dspy SKILL §4.1]。警告:换 task-LM 家族必须重编译/重测,大模型的 verbose CoT demo 会让小模型"鹦鹉学舌长度而无推理" [dspy SKILL Case B]。触发:硬推理编码任务;你有 o1/o3(强 reasoner,但单独跑编辑脏)。开 architect 等于把每个任务从 1 次调用变 2 次,token 成本接近翻倍。
张力:
决策规则:
| 情况 | 建议 |
|---|---|
| reasoner 执行也干净(GPT-4o / Sonnet 单跑) | 不开 architect,单跑省钱省时 |
| reasoner 执行差(o1/o3 单跑格式脏) | 开 architect:强 reasoner + 便宜干净 editor → +3pp~+5pp |
| 追 SOTA、能等慢 | o1-preview + o1-mini(whole) → 85%("probably not practical for interactive use") |
| 例行/低价值编辑 | 单跑,别拆 |
可提取操作:拆分的收益 = (质量 delta) × (任务价值) − (额外调用成本)。reasoner 执行已干净时 delta≈0,不拆;reasoner 执行差时 delta 大,拆。
Evidence: [aider.chat/2024/09/26/architect.html]。
触发:Tier-E 用便宜模型干活,部分输入上质量明显塌(代码改错、抽取漏字段、格式反复非法),但多数输入仍正常。是把整层换回强模型,还是只升级失败的那部分?
张力:
决策规则:
可提取操作:升级率是拆分点是否放对的体温计。它不是要清零,而是要稳定在低位;持续高升级率 = 拆分点划错了。
Evidence: vLLM speculative——高 QPS 下 draft 被频繁拒、speculation 反而偷算力,此时该关 [docs.vllm.ai speculative_decoding],同构于"升级率太高就别拆";Aider 编辑错误升级模型/换格式 [aider.chat/troubleshooting/edit-errors]。
最常见的默认值,也是本技能要挑战的反射。它把少量高价值决策调用和大量机械执行调用按同一个价位收费——要么为执行层overpay(全用最强),要么为决策层欠配(全用便宜,难题翻车)。先按 §2.1 分层,再选模型。
2–3 次调用、总成本可忽略的工作流,拆成 S+E 两层引入的协调/翻译开销(supervisor 翻译 worker 输出要多花 token [langgraph Case 2];architect 多一次往返)经常超过节省。拆分有固定成本,只在调用次数多、执行层占大头时才回本。
凭"便宜模型应该够用"的直觉降级,不在自己任务上量 (质量 delta, 成本 delta)。别人 benchmark 的绝对数不可移植——Aider 的 85% 是 Polyglot 上特定模型对的结果,不是你的任务的保证。必须按 §3 Step 3 自测。
逼弱 editor 产 token 高效但字节敏感的 diff,或把代码包进 JSON tool-call。弱模型在这些格式上合规率塌。便宜执行者要配它擅长的格式(whole / 简单 schema),见 OP-4。
便宜执行者必然有长尾失败。没有失败检测 + 升级回退,坏输出直接进产物。拆分必须连阀门一起设计(OP-3),否则省的钱用 debug 坏结果赔回去。
"要么全强要么全便宜"是把连续的拆分点退化成二元开关。正确做法是按升级率/质量 delta 往返微调哪些步在哪层(§3 Step 5)。
把为大模型调好的拆分/提示原样套到小模型上。DSPy 明示"为 GPT-4 优化的复杂管线在 Llama-3-8B 上通常崩" [dspy Case B]。换执行层模型家族 = 重测拆分,不是免费迁移。
本技能适用当:工作流多次调用 LM;调用间认知负荷不均;成本/延迟有约束;你能在自己任务上量质量 delta。
本技能不适用当:单次调用、无内部步骤(无角色可拆);微型工作流(拆分开销 > 节省,见反模式 2);质量是唯一目标且预算无限(直接全程最强模型);本质是"选哪个推理引擎"而非"如何分层用模型"(那是 llm-engine-selection 技能)。
同一个形状,四个名字。 每一行都是"强模型决策 + 廉价模型执行 + 失败时回退/纠正"。
| 框架 | 这个模式叫什么 | Tier-S(强/决策) | Tier-E(廉价/执行) | 升级/纠正阀门 | 公开证据 |
|---|---|---|---|---|---|
| Aider | architect + editor | architect 模型(o1-preview)出自然语言方案 | editor 模型(Sonnet/o1-mini)落成 diff | 编辑错误→升级模型/换格式重试 | Polyglot 79.7%→82.7%→85% [aider.chat/2024/09/26] |
| DSPy | optimizer-LM vs task-LM | 这里是镜像:被服务的 task-LM(gpt-4o)才贵;脚手架可降级 | optimizer-LM(gpt-4o-mini)跑提示搜索/提案 | 优化平台→重编译/换 LM 家族 | mini 优化器 + 4o 任务,质量持平成本大降 [dspy #1596] |
| LangGraph | supervisor + worker | supervisor 路由/综合/决定下一步 | worker sub-agent 执行具体子任务 | supervisor 重新路由;swarm 互相 handoff | supervisor 比 swarm 多花 token(翻译开销)[langgraph Case 2] |
| vLLM | speculative draft + target | target 模型验证、给真分布 | draft 模型(小/EAGLE/n-gram)先草拟 token | 验证拒绝→用 target 分布纠正;高 QPS 关闭 | 最高 ~2.5× 解码加速 [developers.redhat.com 2025 eagle3] |
DSPy 行里便宜的是 optimizer(脚手架/meta 层),贵的是 task(最终产物)。这不矛盾——判据始终是 §2 那一条:质量直接进最终产物的调用用强模型,只是脚手架的调用降级。在 Aider/LangGraph/vLLM 里执行层是产物的一部分但机械,所以降级;在 DSPy 里 optimizer 不进产物,所以降级。同一个原则,不同的"哪类是脚手架"。
先问每次 LM 调用:它的输出是最终产物,还是脚手架/草稿/可被验证的提议? 是产物且需判断 → Tier-S。是草稿/脚手架/可验证提议 → Tier-E + 升级阀门。