Files
openhuman/gitbooks/features/native-tools/agent-coordination.md
T

3.5 KiB

description, icon
description icon
Tools the agent uses to plan, delegate, and ask for help. sitemap

Agent Coordination

Beyond doing the work, the agent has tools for organising the work - planning multi-step jobs, delegating to specialists, spawning subagents, and pausing to ask the user when something is genuinely ambiguous.

Tools in the family

Tool What it does
todo_write Maintain a structured TODO list across a long task. Marked done as work progresses.
spawn_subagent Delegate to a reusable async specialist by default; creates a fresh worker only when incompatible or requested.
spawn_async_subagent Lower-level reusable async delegation surface with the same durable session identity.
steer_subagent / wait_subagent Message or collect a running worker by durable subagent_session_id or transient task_id.
list_subagents / close_subagent Inspect reusable workers for the parent thread or explicitly retire one.
spawn_worker_thread Explicit background work tracked as a separate worker thread.
delegate Hand a task to a specialist (e.g. an archetype with different prompts/tools/permissions).
archetype_delegation Route to a named archetype - coder, researcher, planner, etc.
skill_delegation Hand off to a skill installed in the workspace.
ask_clarification Pause and ask the user a precise question instead of guessing.
plan_exit Exit a planning phase and start executing.
check_onboarding_status / complete_onboarding Gate behaviour on whether the user has finished onboarding.

spawn_subagent and archetype delegation calls accept an optional model field for a one-off exact model pin. If it is omitted, the harness uses config-level per-agent pins when present and otherwise falls back to the normal model-routing hints. Model, toolkit, sandbox mode, parent thread, action root, and task key are part of reusable sub-agent compatibility, so materially different work gets a separate worker.

Reusable delegation returns both a transient task_id and a durable subagent_session_id. Prefer the durable id for cross-turn follow-ups. Pass fresh: true only when the user or task needs a clean worker; pass blocking: true only when the parent must wait inline for the child result.

Why these are tools, not implicit behaviour

Long tasks fall apart when the agent tries to keep everything in one head. Splitting work via TODOs and subagents means:

  • Each subagent keeps useful local context for the same logical job instead of being respawned every turn.
  • The main thread keeps a high-level view of progress.
  • Failures in one branch don't poison the rest.

Asking for clarification is a tool too, on purpose: it makes "I should ask the user" a visible decision the agent can be steered toward, not an emergent behaviour.

See also

  • Coder - what a coder-archetype subagent typically uses.
  • Subconscious Loop - the always-on background agent thread.