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. This skill recommends and reports — it never spawns agents, edits configs, or blocks you.
Everything numeric here is dated (stamp:
metadata.model_baseline). Any point version (e.g. 5.1, 5.5) or a silent weight swap under the same name ⇒ re-verify defaults, thinking, pairing and what it touched; a new model generation ⇒ full re-sweep, your evals included.
Effort is the main thinking-depth control — and more: it governs all response tokens (text, tool calls, thinking) — how many files get read, how much gets verified, how far a 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. Cutting effort on a search agent buys an
agent that stops looking. Hold it or raise it (not to xhigh by reflex — see below).
medium; Fable 5.1, Opus 5, Sonnet 5 high; Haiku 4.5 none. A bare Agent-tool call inherits
the session's (references/runtime-knobs.md).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. An independence verifier (blind judge, fresh red team) is non-fork — a fork (Claude Code default) shares its author's context. |
| 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) | inherit — or drop one tier (Opus→Sonnet) | one step down — or inherit if the tier dropped | One knob, not both (clamp); effort is usually the safer one. |
| Long-horizon autonomous run (>30 min, token budgets in the millions) | Opus 5.5; Fable 5.1 when the gap is capability | xhigh | xhigh is defined for exactly this. |
| Anything else | inherit | the model's default, written out | No reason to move a knob ⇒ don't move it — but name the level. |
Clamps
low is a documented, legitimate subagent setting — justify it, don't ban it.xhigh or maxmax_tokens — 64k is the documented start, 128k for long agentic turns (Opus 5.5
thinks more per turn; Fable 5.1 wants it large from high up). It caps thinking plus text.thinking:disabled or
budget_tokens ⇒ 400 at any effort; lower effort instead. (Opus 5: 400 only at xhigh/max.)max is for genuinely frontier problems — elsewhere it adds cost for small gains. On Opus
5.5, reserve xhigh/max for a measured quality gain.references/orchestration.mdopusplan — Opus in plan mode, Sonnet for execution: free when the task genuinely splits that way.Changing model or top-level effort invalidates the prompt cache. Hold one level per cached conversation — vary effort across workloads, or use per-message effort (beta), which keeps the cache on Opus 5.5 / Fable 5.1 / Opus 5.
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>, non-fork, degraded:<what the runtime could not express>
(effort-not-expressible only if neither Workflow opts.effort nor agent-type effort:
frontmatter is available). Each line carries its rule + flags, so it survives compaction.
| File | Load when |
|---|---|
references/model-and-effort.md | a non-session model is named, or you need a model's default, levels or thinking legality |
references/orchestration.md | an advisor, opusplan, verifier/judge fan-out or >30-min run is on the table |
references/runtime-knobs.md | emitting knobs for a concrete runtime (Claude Code, Agent tool, Workflow, agent frontmatter, API, Codex) |
scripts/check_plan.mjs | a plan JSON exists — run it, don't read it |
node scripts/check_plan.mjs '{"agents":[{"label":"reviewer","model":"claude-opus-5-5","effort":"max"}]}'
Checks only table facts (levels, max_tokens, thinking, advisor pairing, cache, search/both-knobs
cuts vs the session's resolved effort). Unknown models are reported (model-unknown: re-verify
this skill), never passed; aliases get no model-specific verdict. Zero findings = nothing fired,
not "verified"; whether your sizing is wise is not judged.