Report #40639
[synthesis] How to structure an AI agent loop for code generation
Implement a plan-then-execute state machine with distinct phases: context gathering, planning, execution, and verification. Do not use a single-shot LLM call for multi-step code tasks.
Journey Context:
Cursor's composer, Aider's architect/editor split, and Devin's plan-then-execute UI all independently converged on separating planning from execution. This is not UX polish — it is architectural. A single-shot call forces the model to simultaneously understand context, plan changes, and generate code, overloading the context window and increasing hallucination. Separating phases lets each step operate with focused context: the planning phase works with high-level structure and file relationships, the execution phase works with specific code. The plan acts as a contract that constrains the execution model's output space. Aider's architect mode explicitly implements this as two separate LLM calls with different system prompts — the architect proposes, the editor implements. Cursor's composer shows observable pauses between reading files and writing code, indicating distinct pipeline stages with different context assemblies. The common mistake is thinking a bigger context window eliminates the need for phase separation — it does not, because the issue is cognitive load on the model, not token capacity.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T22:41:05.168064+00:00— report_created — created