Loading...
Loading...
Score the PATH an agent took (tool choice, ordering, retries, repeatability, grounding) — not just its final answer — to catch "corrupt success" (right answer via a bad/unsafe path) and flakiness. Deterministic trace schema + pass^k repeatability + config-driven rule checks (forbidden tool, out-of-order, retry-storm, excessive steps, edited-without-read grounding). Parses canonical traces.json, hooklib.audit / code-logger events.jsonl, OR a full Claude Code session transcript (--transcript, richest source: recovers retrieval args + observation + per- step ok). Trigger when the user says "grade the trajectory", "score the path not the answer", "did it cheat / take a bad path", "did it look before it acted / grounding", "corrupt success", "is this flaky / does it repeat", "pass^k", "grade a session transcript", "trace grader", or invokes /trace-grader.
npx skill4agent add rheinmir/setup trace-graderpass^kverified:falsetrace nguồn (traces.json · audit jsonl · session transcript) → parser → run = [{step, tool, args, observation, ok}] → rule checks (config) + pass^k → verdict per run (clean-pass · pass-with-warnings · corrupt-success · fail) → exit 3 nếu corrupt/flakyharness/trace-grader.config.yaml| Field | Required? | Ý nghĩa | |
|---|---|---|---|
| In | | có (một trong ba) | canonical |
| In | | khi dùng audit/transcript | gán run vào task để tính |
| In | | không | output máy đọc |
| In | | có | forbidden tools, |
| Out | verdict per run + flags + khối | có | báo cáo |
| Out | exit code | có | |
verified:falseokretry_stormtraces.jsoncorrupt-successpass^k = FAIL3okretry_stormtraces.jsonrun.okverified:false| Step | Type | Inputs | Action | Outputs/exit | Failure/next |
|---|---|---|---|---|---|
| W01 | deterministic | runs | Collect traces ( | nguồn trace | chỉ audit → partial (B01) |
| W02 | judgment | dự án | Set the boundary: chỉ sửa | config | — |
| W03 | deterministic | trace + config | Grade: chạy | verdict + flags + | rc 3 → W04 |
| W04 | judgment | báo cáo | Act on signal: điều tra bước bị cờ / coi task flaky là không tin được | kết luận | — |
| W05 | judgment | trace thật | (Later) verify adapter rồi flip | config verified | chưa đủ bằng chứng → giữ false (B02) |
traces.json--audithooklib.audit()session_idharness/trace-grader.config.yamlretry_thresholdstep_budgetorder_constraintspass^kcorrupt-successpass^k = FAILverified:true# bundled 3-case self-test (clean / corrupt / flaky)
python3 harness/scripts/trace-grader.py --self-test
# grade canonical traces, an audit log, or a full session transcript; --json for machine output
python3 harness/scripts/trace-grader.py --traces traces.json
python3 harness/scripts/trace-grader.py --audit .claude/audit/<date>.jsonl --task my-task
python3 harness/scripts/trace-grader.py --transcript ~/.claude/projects/<proj>/<session>.jsonl --task my-task3corrupt-success| ID | Kind | Guard | Hành vi | Skip / failure | Rejoin |
|---|---|---|---|---|---|
| B01 | conditional_required | nguồn là audit jsonl thuần | chấm được nhưng | cần failure-aware → chuyển | W03 |
| B02 | capability_optional | judge model đã cấu hình VÀ config | mới xem xét bật trục agent-as-judge ( | chưa đủ → STUB, không gọi | W04 |
python3 harness/scripts/trace-grader.py --self-testverified:truepython3 harness/scripts/trace-grader.py --transcript ~/.claude/projects/<proj>/<session>.jsonl --task my-taskedited_without_readpass-with-warningspass^k = FAIL3forbidden_toolcorrupt-success3{step, tool, args, observation, ok}traces.jsonllmwiki/.claude/hooks/hooklib.audit()events.jsonl--transcriptpatternfile_pathobservationokrun.okpass^kpass^kforbidden_toolout_of_ordermust_precederetry_stormexcessive_stepsedited_without_readgrounding.enabledclean-passpass-with-warningscorrupt-successfailharness/trace-grader.config.yamlverified:false# ASSUMPTIONjudge_trajectory()verified:true| File | Role |
|---|---|
| deterministic engine: schema, parsers, pass^k, rule checks, report, judge STUB |
| the ONE adapter ( |
| self-test fixtures: clean / corrupt-success / flaky |