// Orchestration · ~13 min

Hierarchical Agents

Reach for it when: When goals nest: strategy → tactics → tools, with clear ownership per layer.

// 60-second mental model

How to hold it in your head

Strategy sets the goal. Tactics break it into jobs. Tools execute. Each layer only talks to the one above and below — no skipping ranks.

Hierarchical multi-agent systems stack planners: a high-level agent emits subgoals; mid-level agents expand them; leaf agents call tools and report up.

// Mini architecture

Strategy → tactics → tools (no rank-skipping)

┌──────────────────┐
│ Strategy agent   │  → subgoals
└────────┬─────────┘
         ▼
┌──────────────────┐
│ Tactics agents   │  → concrete tasks
└────────┬─────────┘
         ▼
┌──────────────────┐
│ Tool / leaf      │  → observations
│ agents           │
└────────┬─────────┘
         ▼
    Report up the chain

Leaves never invent strategy. Strategy never calls raw tools — it only emits subgoals.

// Mini-project

Launch brief hierarchy (stub)

Three-layer stubs: strategy / tactics / tools

Goal: Turn “ship a launch brief” into subgoals → tasks → stub tool calls, then roll results up.

  1. Strategy stub emits two subgoals: research audience, draft outline.
  2. Tactics stubs expand each into 2 tasks with owners.
  3. Leaf stubs call fake `docs_search` / `outline_builder` tools.
  4. Results report only to the parent layer.
  5. Refuse any path where strategy calls a tool directly.
  6. Print the tree: subgoal → tasks → tool results.

Wire real models later. The contract is layered ownership — not a flatter orchestrator in disguise.

// Common failure

What goes wrong

Symptom

Rank-skipping — strategy agents call tools and ignore mid-layer plans.

Fix

Enforce layer contracts: strategy may only emit subgoals; leaves may only call tools and report up.

// Self-reflection

Sit with this

Which of your “flat” multi-agent setups is really a hierarchy with missing ranks?

Session only. Nothing is saved.