From a1f1f04657fb65f6a8f07ac09b8cf7cee3dc6bbe Mon Sep 17 00:00:00 2001 From: damocles Date: Sun, 1 Nov 2026 12:24:40 +0100 Subject: [PATCH] subagent: haiku 5-5 is near free up to high effort on a small context, but max costs about what sonnet does --- .../base/skills/claude-subagents/SKILL.md | 22 +++++++++---------- hive-subagent-mcp/src/mcp.rs | 7 +++--- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/claude-plugins/plugins/base/skills/claude-subagents/SKILL.md b/claude-plugins/plugins/base/skills/claude-subagents/SKILL.md index 774625a5..222cc088 100644 --- a/claude-plugins/plugins/base/skills/claude-subagents/SKILL.md +++ b/claude-plugins/plugins/base/skills/claude-subagents/SKILL.md @@ -59,15 +59,13 @@ more readily than you might for your own work — a subagent is throwaway compute, not a peer you're rationing. Haiku in particular is cheap enough that you don't need to be precious about spinning one up: for a mechanical, well-scoped batch (the shape this skill is for), reach for it liberally -rather than defaulting to a bigger model "to be safe." Haiku also stays -cheap regardless of `effort` level — unlike a frontier model, cost on -Haiku doesn't scale with effort because effort isn't a real lever on it -at all (measured: `thinking_tokens` doesn't visibly move between `low` -and `max`). So there's no cost reason to cap Haiku's effort the way the -Effort section below recommends for frontier models — but don't expect -raising it to buy extra reasoning either; a Haiku batch that genuinely -needs more judgement wants a stronger model instead (see Pitfalls below), -not a higher effort level on the same model. +rather than defaulting to a bigger model "to be safe." On a small context +Haiku costs next to nothing up to `high` effort, so there's no cost reason +to cap its effort at `medium` by reflex. Effort is a real lever on Haiku +though: at `max` it behaves like a slightly weaker Sonnet at about Sonnet's +cost, so `max` on Haiku buys nothing over picking Sonnet. Stay at `high` or +below, and move to a stronger model when the batch needs more judgement +(see Pitfalls below). This isn't "always pick the smallest model regardless of task" — a batch that actually needs judgement calls still wants a stronger model (see @@ -80,9 +78,9 @@ An omitted `effort` defaults to `medium` here — cheaper than claude's own model default (`high` on most models), a deliberate cost-conscious choice for subagent work specifically, same spirit as the model-choice guidance above. Raise it explicitly when the task is complex enough to actually -need deeper reasoning, not as a reflex. **Exception: on Haiku, cost doesn't -scale with effort the way it does on a frontier model** — see Model choice -above, don't apply this same-default-medium caution to a Haiku subagent. +need deeper reasoning, not as a reflex. **Exception: on Haiku with a small +context, cost stays near zero up to `high`.** See Model choice above: skip this +default-medium caution there, but keep `max` for a stronger model. Anthropic's own levels (per current Claude Code docs — names/availability are model-dependent, check before relying on an exact list): `low`, diff --git a/hive-subagent-mcp/src/mcp.rs b/hive-subagent-mcp/src/mcp.rs index 7a4b8454..09e74539 100644 --- a/hive-subagent-mcp/src/mcp.rs +++ b/hive-subagent-mcp/src/mcp.rs @@ -57,9 +57,10 @@ struct StartArgs { /// models). Independent of `model`, so a cheap model at high effort or /// an expensive one at low effort are both valid combinations, not /// just the two extremes. See the `base:claude-subagents` skill for - /// Anthropic's own guidance on choosing between levels — note that on - /// Haiku specifically, cost doesn't scale with effort the way it does - /// on a frontier model, so there's no cost reason to cap it at `medium`. + /// Anthropic's own guidance on choosing between levels. On Haiku with a + /// small context, effort up to `high` costs next to nothing, so there's + /// no cost reason to cap it at `medium`; at `max` it costs about what + /// Sonnet does. #[serde(default)] effort: Option, /// Path to a file holding the subagent's actual task instructions. A