Install
openclaw skills install @vincentjiang06/model-pyramidRight-size each subagent's MODEL + REASONING-EFFORT via 4 pyramid rules (peer co-work keeps both; search drops effort one notch, floor medium; ~20+ cheap lookups drop one model tier; else medium). Use when spawning / fanning out / delegating subagents, or sizing them: "$model-pyramid". NOT model shopping/pricing.
openclaw skills install @vincentjiang06/model-pyramidAdvisory rule card for picking each subagent's model + reasoning-effort at fan-out time, in a pyramid shape. Framing is right-sizing (合理使用): assign what the work needs — never pitch or log these choices as cost reduction. The skill recommends and reports; it never spawns agents, edits configs, or blocks the user.
Compatibility: any agent runtime (Claude Code, Codex CLI, generic harnesses). Optional checker script needs Node.js >= 18.
Do NOT fire for: model shopping or API pricing with no subagents in play;
loop/workflow STRUCTURE design (that is loop-constructor's job — co-fire only
to size the agents its loop spawns); "shrink my API spend" asks (out of scope).
high — never assume low.references/runtime-mapping.md when emitting.| Rule | Model | Effort |
|---|---|---|
| R1 peer/parallel co-work — equal-difficulty shards, judge panels, adversarial verifiers, or a single delegated deep task (n=1 counts) | keep | keep |
| R2 search/exploration — codebase/web/evidence gathering | keep | down exactly ONE notch |
| R2b very large search fan-out — ~20+ homogeneous cheap lookups | down exactly ONE tier (e.g. opus-tier→sonnet-tier); already lowest → use R2 | keep |
| R3 no rule matches | keep | medium |
Precedence & clamps
low is never emitted; any computed sub-medium effort clamps
UP to medium — every rule, every layer.rule=<id> tier=<tier> effort=<notch> plus any
clamp / assumed-high / justification flags. Rule ids: peer / search /
search-tier-drop / default / override.scripts/decide.mjs pass it as task.user_override = {tier?, effort?} (a
guessed override key is ignored).Verify a sizing plan mechanically (stdlib node, JSON in/out):
node scripts/decide.mjs '{"session":{"tier":"opus-tier","effort":"max"},"tasks":[{"peer":true},{"exploratory":true,"fan_out_size":24,"homogeneous_cheap":true}]}'
checkAssignment(session, assignment) audits a proposed assignment and flags
below-floor / both-knobs-dropped / skipped-tier / needs-justification.
| File | Load when |
|---|---|
references/runtime-mapping.md | emitting knobs for a concrete runtime (Claude Code / Codex CLI / generic), or the session's knobs are unclear |
scripts/decide.mjs | you want the decision or an assignment audit computed deterministically |
Metrics: decision accuracy = evals/run_all.mjs fixture table (target 100%);
activation precision ≥ 0.9 on evals/cases/trigger-cases.json.