Skip to main content
A task answers the model with a few small results, and a step opens on a chosen part of the call so far. This page lists both.

Quickstart

agent.py

Why use unmute for this

The results are small and frozen, and unmute_core.tasks names them. Your code can build the same JSON the adapters send, so a test or a custom host reads what the model reads.

What the model reads when a task runs

All of them are frozen. An unknown field raises a ValidationError.

What a step hears of the call

TaskSpec.history sets what a step opens on: messages (default), full, last_n, summary or reset. A handoff takes the same values. Handoffs explains each one.
  • include_tool_calls: false leaves tool calls and results out of full and last_n.
  • last_n needs max_messages, from 1 to 200, and any other history refuses it.
  • A summary step asks for its summary as it opens. A summary that fails gives the step messages.
  • In an isolated group, every step starts fresh, whatever its history.

Placeholder names

A plan or a spec that does not fit raises ValueError when it is built. A native model call has no limit on a placeholder name. A model call that fills the prompt on its own side can name a limit in variable_key_max. The SLNG Context Router names 64. The check runs at build, against the call’s model.
  1. A placeholder name becomes a template-variable key. a.b is a__b.
  2. When the model call names a limit, a key over it is refused, with a message that names the placeholder.
  3. The check covers a task’s instructions, and the agent’s main prompt when the adapter builds the agent.
  4. A model call with no variable_key_max, like a framework’s own LLM plugin, checks nothing.

Troubleshooting

A placeholder name is refused when the agent is built

The model call names a variable_key_max, and the key of a placeholder is longer. Fix: shorten the State value name that the placeholder reads. a.b counts as a__b. In the salon tutorial: Book step by step. Every argument: Tasks reference.

Where to go next

Handoffs

What the next agent hears when a step hands off.

Your first task

Define a task and check it with TaskPlan.

Router model call

The model call that names a placeholder limit.