跳转至

Agent L2.1: Isolated capability evaluation and evolution

简体中文

toolroute-l2.1-v1 replaces the earlier L2 tool-routing task that saturated easily. It asks:

  1. Can an agent solve unseen tasks from public tool feedback without knowing the answer or reference plan?
  2. How should memory, planner, tool policy, critic, policy, recovery, reflection, verifier, and context compression be combined for a better success–cost Pareto trade-off?

No oracle or guide at the interface

A policy receives only CapabilityObservation and call_tool(name). Public objects have no answer, route, allowed steps, reference plan, or perturbation labels. There are no guide, reveal, or verify_answer endpoints. Asking for unknown guide returns unknown_tool.

Split isolation

Split Task families Route depth Use Role in final result
Train travel / finance / retail / support 3–4 Learn reusable skills or memory None
Validation logistics / education / media / health 4–5 Evolve promotion and winner selection Selection only
Test science / legal / security / operations 5–6 Once after all generations Final report

Task families, IDs, and depths are isolated. Evolve never selects on test. Test compares the frozen initial baseline with the validation winner only.

flowchart LR
    G["Private task generator"] --> T["Train, 3–4 steps"]
    G --> V["Validation, 4–5 steps"]
    G --> E["Test, 5–6 steps"]
    T --> P["Policy / episodic memory"]
    P --> V
    V --> C["Multi-round Evolve selection"]
    C --> E
    G --> H["Hidden answer / route / allowed steps"]
    H --> S["Independent scorer"]
    E --> S

Difficulty axes

  • clean: Normal long tool chain.
  • transient: First call fails temporarily; retry spends budget.
  • ambiguous: Feedback includes a correct tag and similar distractor.
  • fallback: Primary tool fails permanently. Read feedback and switch to a read-only fallback.
  • irreversible: A candidate is publicly marked risky and irreversible.
  • combined: Ambiguity, transient failure, and fallback occur together.

The budget covers the correct path and permitted retries/fallbacks. Blindly trying distractors consumes later budget; enumeration cannot guarantee a perfect score. Public tool metadata determines costs rather than assigning equal cost to each call.

Six distinct implementations

Method Local mechanism
Long-context Takes the first candidate without explicit exploration, retry, verification, or memory
ReAct Observation loop explores candidates and handles transient failures and fallback
Reflexion Adds failure reflections before trying later candidates
Agent-G² Generator proposes candidates; public-evidence verifier orders by reliability, reversibility, and cost
AHEAD Prefers read-only candidates and compresses multicandidate context
AUSO Writes successful tag decisions into episodic skill memory and reuses them across episodes

Five ablations share splits, seeds, and tool budgets: react-no-retry, reflexion-no-reflection, agent-g2-no-verifier, ahead-no-compression, and auso-no-memory.

Metrics

  • Answer accuracy, plan exact match and step F1, joint success.
  • Recovery success.
  • Invalid-tool rate and irreversible-error rate.
  • Mean tool calls and mean accumulated cost from metadata.
  • Three-seed means, standard deviations, and 95% intervals.
  • Reflection, verification, compression, and memory-write/reuse telemetry.

Fixed train/validation/test counts are 36/60/60 episodes per seed, seeds 42/43/44. Isolated test means:

Method Joint success Plan F1 Recovery Invalid-tool rate Average cost
Long-context 0.3500 0.5212 0.0000 0.0532 2.8571
ReAct 0.6833 0.7683 0.6667 0.0455 4.7984
Reflexion 0.7278 0.7786 0.6667 0.0376 4.7920
Agent-G² 0.7778 0.8276 0.6667 0.0394 5.0662
AHEAD 0.7556 0.7887 0.6667 0.0334 4.5571
AUSO 0.7556 0.7887 0.6667 0.0334 4.5192

Long-context is cheapest but not best at the task. Agent-G² has the highest success and extra verification cost. Removing ReAct retries yields joint success 0.5167. Removing Reflexion reflections drops 0.7278 to 0.6833; removing Agent-G² verification drops 0.7778 to 0.6833. AHEAD compression and AUSO memory mainly affect cost and telemetry in this version. No success-rate gain is invented.

See fixed results. They apply to toolroute-l2.1-v1 only, not general agent ability.

Static fair comparison

python -m pip install -e ".[dev]"

auto-research agent-capability \
  --methods long-context,react,reflexion,agent-g2,ahead,auso \
  --train-episodes 36 \
  --episodes 60 \
  --seeds 42,43,44 \
  --output-dir runs/agent-capability

Multi-round evolution

auto-research evolve \
  --model agent \
  --dataset toolroute-l2.1 \
  --direction "Combine memory, planner, tools, critic, policy, recovery, reflection, verifier, and context compression" \
  --generations 3 \
  --population 9 \
  --workers 3 \
  --agent-episodes 60 \
  --seeds 42,43,44

Generation 1 uses single-component matched ablations. Later generations compose operators around the validation winner. Reports record candidate sources, parents, mutations, validation observations, negative results, and final isolated test. Candidates are existing paper operators and allowlisted combinations. Discovered but unimplemented papers remain nonexecutable.

The fixed three-generation, population-9, three-seed example executes the baseline and every candidate. Validation winner g2-t2 improves isolated test joint success from 0.3500 to 0.8000 and plan F1 from 0.5212 to 0.8327, at average cost 2.8571 to 4.9662. See genomes, lineage, evidence, and negative results.

Regenerate public evidence

PYTHONPATH=src python scripts/generate_agent_l2_evidence.py
PYTHONPATH=src python scripts/generate_public_experiment_dashboard.py

Limits and L3

  • L2.1 is still synthetic and local but contains no answer, plan, or guide leakage.
  • Episodic memory may update within a split using public feedback. It does not read labels.
  • Cost comes from fixed tool metadata, not real API tokens, network latency, or dollars.
  • Official SWE-bench Lite, ToolHop, and real browsers remain deferred L3 items at the user's request.
  • Real LLM policy, post-training, or multimodal work can use GPUs later. This benchmark itself does not need A100.