Skip to main content
An investigation task asks the agent to reach a conclusion that no single piece of evidence gives away. Here the agent reads several log files, integrates what they say, and produces a root-cause diagnosis that an LLM judge grades against a rubric. This is the shape of a good training task - multi-step, multi-channel, and graded on substance rather than keywords.

The environment

We give the agent shell access to a directory of logs and traces, then ask for a diagnosis. The cause sits in one file and the symptoms in others, so the agent has to read across them - no single artifact contains the answer.
env.py
The answer is the agent’s text diagnosis (answer = yield ...). The judge scores it against weighted criteria via the HUD gateway, no extra install needed.

Why this is a good training task

It satisfies the signal principles:
  • Multi-channel integration - the cause (a removed index) is in deploy.log, but the symptom path runs through db.log and api.log. No single file is decisive, so the agent must integrate.
  • Multi-step - the agent reads several files, forms a hypothesis, and checks it against the evidence.
  • Substance over surface - the judge credits a correct, evidence-cited diagnosis, not keywords. A generic “it’s a database issue” with no evidence scores low.
  • No leakage - no file names the root cause as “the bug”; the agent has to derive it.

Run it

Inspect the trace at hud.ai to see which files the agent read and how it reasoned - useful for spotting whether the reward tracks real investigation.

Build a spread

Vary the incident to mint a dataset with a difficulty range - some with an obvious deploy cause, some where the evidence is more scattered. A controlled difficulty distribution is what makes the set trainable (see Designing tasks for signal).

See also

Designing tasks for signal

Graders

Coding agent

Train on rewards