Architecture
Single agent, peer-to-peer, supervisor-worker, debate-critic.
The architectural structure of Agent Arena, governed by ADRs 0001 through 0006.
Pipeline Boundaries
Agent Arena is structured as an end-to-end evaluation pipeline, moving from execution to structured grading and reporting:
- Model Providers (
core/providers.py): Abstracts Anthropic and Gemini APIs behind a unified interface, ensuring cross-provider compatibility (ADR 0006). - Tools (
core/tools/): Independent, stateful mock services (Ticketing, CRM) that return standard JSON schemas and support deterministic failure injection (ADR 0005b). - Trace Logger (
core/trace.py): An append-only JSONL logger. Every component emitsTraceEventobjects, forming a reconstructable execution DAG (ADR 0001). - Architectures (
core/architectures/): The coordination patterns under test, wiring together agents and tools (see below). - Grader (
evals/grader.py): Evaluates traces against database state and enforces a strict taxonomy:task_failure,coordination_failure,tool_error_unrecovered, orincomplete(ADR 0003). - Report Generator (
report_generator.py): Aggregates run data fromresults/into statistical summaries and markdown reports.
Architectures Under Test
All architectures rely on a base Agent equipped with tenacity-based retries (ADR 0004) and trace logging. To ensure fairness, the baseline architecture has unrestricted tool access (ADR 0002).
Single Agent (single_agent.py)
- Agents: One central agent.
- Tool Access: Unrestricted (has access to both CRM and Ticketing tools).
- Communication: None required. The agent interacts directly with all tools in a standard ReAct loop.
Peer to Peer (peer_to_peer.py)
- Agents: Two independent agents (CRM Peer and Ticketing Peer).
- Tool Access: Strictly partitioned. CRM Peer only has CRM tools; Ticketing Peer only has Ticketing tools.
- Communication: Agents communicate sequentially via a rigid, fixed-format handoff string (e.g.
HANDOFF: customer_id=<id>, tier=<tier>, name=<name>, status=<status>). The CRM Peer passes this string to the Ticketing Peer.
Supervisor Worker (supervisor_worker.py)
- Agents: One Supervisor agent and specialized Worker agents (e.g., CRM Worker, Ticketing Worker).
- Tool Access: The Supervisor has no direct tools except
delegate_to_worker. The Workers have partitioned tool access. - Communication: The Supervisor delegates sub-tasks to Workers. The Workers execute their tools and return a free-form, natural-language summary back to the Supervisor (
worker_finishevent).
Debate Critic (debate_critic.py)
- Agents: A Proposer agent and a Critic agent.
- Tool Access: Both have unrestricted tool access.
- Communication: The Proposer drafts a trajectory/action plan. The Critic reviews the proposed action against the constraints and forces a revision loop (
critic_review) if it detects logical flaws.