How Google's ADK team ran an overnight agentic optimization drive on a 200k-line Python codebase — and, crucially, which four of Argon's six proposals were rejected in code review and why.
Agent evaluation defaults to intuition — "it feels better now." This post lays out the disciplined alternative: start with the red pen, standardize execution, and tune in small controlled increments.
Manually reading twenty traces feels slow next to auto-generating a chart — but it saves days of wasted effort. Instead of guessing at hypothetical failure modes and writing generic rubrics, an hour with a red pen shows how your system actually breaks. Aggregating those notes gives you a high-signal list of the exact deterministic assertions and boolean judge checks you need to build next.
Once you have that checklist, the agent-eval toolkit standardizes execution:
--base-url) or offline.Then establish a cadence: run on every change. Adjust a prompt, swap a model, edit a tool docstring — execute the exact same battery and compare the delta against your baseline. Metrics accumulate over time in the agent-eval HTML report.
Crucially: validate the judge against your traces. Never trust a new LLM-as-a-judge metric blindly. Compare automated scores against the traces you graded by hand on Day 0. If the judge passes a trace you marked up in red ink, tighten the grading prompt until the automated signal matches your engineering judgment.
Once your Day 1 framework is active, optimization becomes a disciplined, mechanical loop — in real deployments, production quality usually takes 50–60 small iterations. You are not rewriting the entire system prompt every morning; you're gradually turning individual knobs. One tweak clarifies a tool parameter description. The next adds a negative constraint. The next adjusts a JSON output schema.
Each run produces an interactive, all-in-one HTML report aligning pass/fail boolean metrics alongside operational context.
The core moves are transferable to any agent stack: hand-grade a small trace set first, encode what you learned as deterministic assertions, automate execution on a fixed cadence, and let the metrics (not vibes) drive the next small knob-twist. The 50–60-iteration reality check is the most important correction to "let's just rewrite the prompt."