Compiled agent defaults¶
Every field a bare-minimum Agent manifest doesn't declare is filled in
by mas-ctl compile before the runtime ever sees it — the plugin for every
singleton slot (design_pattern, context_manager, assembler), the
sub-plugin composed by one of those (context_manager.params.summarizer),
and every attribute each one takes. Omitting a field, writing the plugin
name, and writing the fully-expanded object are the same runtime
behaviour (plugin-bindings.md) — this
page exists so you don't have to hold that expansion in your head, or worse,
guess at it.
This page is a worked example, not a schema. Field-by-field docs (with the why) live on the pages linked from each block below; if a number here ever looks stale, trust the command over this page and re-run it — see Regenerating this page.
The input: Tutorial 1's minimal manifest¶
docs/tutorials/01-building-an-agent/agent.yaml
declares a model, a description, and a system-prompt fragment. Nothing else:
apiVersion: mas/v1
kind: Agent
metadata:
name: qa-agent
spec:
models:
- model: gpt-4o
description: Answer general knowledge questions.
context:
intent: "Answer general knowledge questions."
role: |
Answer questions clearly and concisely.
The output: mas-ctl compile agent.yaml¶
apiVersion: mas/v1
kind: Agent
metadata:
name: qa-agent
spec:
models:
- model: gpt-4o
description: Answer general knowledge questions.
context:
intent: Answer general knowledge questions.
role: 'Answer questions clearly and concisely.
'
design_pattern:
type: react@v1
params:
max_cot_pass: 1
parallel: true
context_manager:
type: summarising
params:
keep_turns: 10
hysteresis_ratio: 0.1
summarizer: llm
working_memory_messages: 20
trimmer:
reserve_tokens: 2000
safety_margin_ratio: 0.1
assembler:
type: assembler
params:
emit_segments: true
always_reassemble: false
What each block is¶
| Block | Plugin (default) | Attributes | Docs |
|---|---|---|---|
models[0].context_window |
— | Auto-resolved from the effective model; an unknown model warns and uses 128000 |
agent.md · context-management |
design_pattern |
react@v1 (registry alias react) |
max_steps (dispatch-loop cap), max_cot_pass, parallel |
plugin-bindings.md § design_pattern |
assembler |
assembler (ContextAssemblerPlugin) |
emit_segments, always_reassemble — builds messages[]; not where history policy lives |
plugin-bindings.md § assembler · context-assembly.md |
context_manager |
summarising |
keep_turns, hysteresis_ratio, summary_threshold, working_memory_messages, trimmer.{max_tokens,reserve_tokens,safety_margin_ratio} |
plugin-bindings.md § context_manager · context-management |
context_manager.params.summarizer |
llm (sub-plugin of summarising) |
params.model omitted → summarizer slot (Agent/MAS/experiment.models.summarizer) else agent's primary model. Compile does not invent a cheaper summarizer. |
plugin-bindings.md § summarizer · summarization.md |
Every one of these is a real registered plugin — resolving type: react@v1,
type: summarising, type: assembler, type: llm through the same plugin
registry a manifest author's own explicit choice would go through. There is
no hidden "if omitted, do X in code" branch: the default is a binding
(library-standard/library.yaml's defaults: map), and it is overridable
per-workspace (config.yaml defaults:) without touching a single agent
manifest. See config.yaml § defaults.
Regenerating this page¶
The numbers above will drift as defaults change. Reproduce them yourself from any manifest — an omitted field and its fully-expanded form are identical at runtime, so this works on your own agents too, not just the tutorial:
cd docs/tutorials/01-building-an-agent
mas-ctl compile agent.yaml --no-header
Add -o overlays/<file>.yaml (repeatable) to see overlays folded in first —
compile command reference. To see only what a specific
manifest sets versus package defaults, add --no-defaults and diff.
Related¶
- plugin-bindings.md — the binding shape these defaults fill (string ≡ object, list slots)
- agent.md — every
specfield, not just the plugin slots shown here - context-assembly.md — how
assembler+context_manager+summarizercooperate at assemble time - summarization.md — thresholds, summarizer/judge model, logs
- working-memory-compaction.md — why
context_manageris the single history-policy surface - Tutorial 1: building an agent — the manifest this page compiles