Install
openclaw skills install @vincentjiang06/model-pyramidRight-size MODEL + EFFORT for the session and for each subagent at fan-out time, and decide whether to attach an advisor. Two axes: capability gap → change model; thoroughness gap → change effort. Use when spawning / fanning out / delegating subagents, or when asked which model or effort something should get: "$model-pyramid". NOT API price shopping.
openclaw skills install @vincentjiang06/model-pyramidPick model and effort for the session and for every subagent you spawn, then say so in one line each. Framing is right-sizing: assign what the work needs. This skill recommends and reports — it never spawns agents, edits configs, or blocks you.
Everything numeric here is dated. Ladders, defaults and rosters change every model generation.
metadata.model_baselineis the stamp. When the family changes, re-verify against live docs before trusting a number in this skill — and re-sweep your own evals.
Effort is not "thinking depth". It governs all tokens in the response — text, tool calls, and thinking: how many files get read, how many tool calls get made, how much gets verified, how far a multi-step task runs before checking in. Lower effort ⇒ fewer tool calls.
⛔ The corollary that kills the most common mistake: search / exploration / repeated tool
calling is the last place to economise on effort. Official guidance names "exploratory tasks
such as repeated tool calling, detailed web search, and knowledge-base search" as a reason to
go xhigh. Cutting effort on a search agent buys an agent that stops looking.
high on every model that supports effort. Setting high
is byte-identical to omitting the parameter. (Exception: Opus 4.7 defaults to xhigh.)Classify per task, never per batch. One spawn of five mixed tasks gets five decisions.
| Task shape | Model | Effort | Why |
|---|---|---|---|
| Peer co-work — equal-difficulty shards, judge panels, adversarial verifiers, one delegated deep task | inherit | inherit | It is the same work, split. Cutting either knob cuts the work. |
| Search / exploration — codebase sweep, web research, evidence gathering | inherit | inherit or raise | Effort governs tool-call volume. This is the axis you raise for search. |
| High-volume homogeneous lookups (~20+ cheap, near-identical) | drop one tier (Opus→Sonnet) | low–medium | The documented home of low: "simpler tasks that need the best speed and lowest costs, such as subagents". |
| Long-horizon autonomous run (>30 min, token budgets in the millions) | Fable 5 if available, else top tier | xhigh | xhigh is defined for exactly this. |
| Anything else | inherit | default (high) | No reason to move a knob ⇒ don't move it. |
Clamps
low is a documented, legitimate subagent setting — justify it, don't ban
it. (This reverses v0.1.0's medium floor, which predated the current ladder.)xhigh or maxmax_tokens — 64k is the documented starting point. It is a hard cap on thinking
plus response text together, and at these levels the model needs room to think and act
across subagents and tool calls.xhigh/max — that combination returns 400.max is for genuinely frontier problems. On most workloads it adds significant cost for
small gains, and on structured-output tasks it can cause overthinking.references/orchestration.mdopusplan — Opus for plan mode, Sonnet for execution. A free structural win when the task
genuinely splits that way.Changing model or effort invalidates the prompt cache. Pick a level at the start of a cached conversation and hold it; vary effort across workloads, not within one long session. (Toggling the advisor does not invalidate the cache.)
One line per agent:
<label> model=<alias|id> effort=<level> rule=<peer|search|bulk|long-horizon|default|override> [flags]
Flags worth emitting: inherited, justified:<reason>, override, max_tokens-raised,
cache-hold, advisor:<model>, degraded:<what the runtime could not express>.
| File | Load when |
|---|---|
references/model-and-effort.md | per-model ladder, support matrix, documented start points |
references/orchestration.md | advisor pairing, opusplan, subagent patterns, cost shape |
references/runtime-knobs.md | emitting knobs for a concrete runtime (Claude Code / Agent tool / Workflow / API / Codex) |
scripts/check_plan.mjs | validate a plan mechanically |
node scripts/check_plan.mjs '{"agents":[{"label":"reviewer","model":"claude-opus-5","effort":"max"}]}'
Checks only what is deterministic: level exists on that model, max_tokens raised at
xhigh/max, Opus 5 thinking×effort conflict, advisor pairing legality, effort varied inside a
cached session, and both-knobs-dropped. It does not judge whether your sizing is wise.