Anthropic researcher Prithvi Rajasekaran explores how to improve AI agents’ performance in tasks involving subjective design and complex, autonomous software engineering. Expanding on earlier work with long-running agents, this research aims to push Claude’s boundaries by integrating a multi-agent framework inspired by Generative Adversarial Networks (GANs).
The core challenge addressed is twofold. First, AI models often suffer from “context anxiety,” where they prematurely conclude lengthy tasks as their context window fills, requiring “context resets” (clearing the window and handing off structured artifacts) to maintain coherence. Second, agents struggle with self-evaluation, often overly praising their own subpar work, especially in subjective areas like frontend design.
To solve this, Rajasekaran introduced a multi-agent architecture featuring a generator and an evaluator. The evaluator is explicitly prompted with concrete grading criteria (e.g., originality, design quality, craft, and functionality) to provide rigorous, skeptical feedback. This separation of creation and critique allows the generator to iterate against concrete feedback rather than relying on its own skewed self-assessment.
For full-stack development, the framework was expanded into a three-agent system:
- Planner: Expands a brief user prompt into a comprehensive product spec and design language.
- Generator: Works in sprints to build the application feature-by-feature using modern stacks (React, FastAPI, etc.).
- Evaluator: Uses browser automation tools (like Playwright) to test the live application like a real user, filing detailed bugs and ensuring the output meets the agreed-upon sprint criteria.
While the multi-agent harness is significantly more time-consuming and expensive to run compared to a single-agent baseline (taking hours rather than minutes), the results are vastly superior. The structured generation and independent evaluation produce highly polished, functional, and aesthetically sophisticated web applications that a solitary agent simply cannot achieve.
