agent-regression-evals – skill Agent & Tự động hóa cho agent AI
Dùng khi thay đổi agent, prompt, model hoặc công cụ cần chứng minh không làm agent kém đi: thiết lập bộ eval hồi quy, quyết định mức giảm tỷ lệ đạt là thật hay nhiễu, chấm quỹ đạo gọi công cụ, tìm ca eval không ổn định, hoặc gắn cổng eval vào CI để chặn merge. Chạy thử nghiệm lặp lại, repo
Cài skill agent-regression-evals bằng một lệnh
Chọn công cụ bạn đang dùng, copy lệnh và dán vào terminal. Skill sẽ nằm trong thư mục skills của công cụ đó và sẵn sàng dùng ở phiên làm việc tiếp theo.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/agent-regression-evals-0efb8.tgz | tar xz -C ~/.claude/skills
Gọi trong Claude Code: /agent-regression-evals – rồi mô tả công việc bạn muốn làm.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/agent-regression-evals-0efb8.tgz | tar xz -C ~/.codex/skills
Gọi trong Codex: $agent-regression-evals – rồi mô tả công việc bạn muốn làm.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/agent-regression-evals-0efb8.tgz | tar xz -C ~/.hermes/skills
Gọi trong Hermes Agent: /agent-regression-evals – rồi mô tả công việc bạn muốn làm.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/agent-regression-evals-0efb8.tgz | tar xz -C ~/.deepcode/skills
Gọi trong DeepSeek: /agent-regression-evals – rồi mô tả công việc bạn muốn làm.
Nội dung SKILL.md
Nội dung SKILL.md gốc bằng tiếng Anh.
Agent Regression Evals — prove the change did not make it worse
> Portability: 3 stdlib scripts, no APIs, no LLM calls. You run the agent; these grade, count and gate.
"Pass rate went from 82% to 79%" is not a finding until you know whether three
points is outside the noise. Agents are non-deterministic, so one trial per
case cannot tell a regression from a coin flip, and a final answer can be right
while the path to it called a tool it never should have.
Workflow
# 0 - Run every case k times (k >= 3) on baseline and candidate, from a clean
# environment per trial. Write one JSONL row per trial:
# {"case_id": "refund-lookup", "trial": 1, "passed": true, "critical": true,
# "cost_usd": 0.012, "trajectory": [{"tool": "get_order", "args": {...}}]}
# 1 - Grade the path where the path matters (safety, required lookups).
python scripts/trajectory_checker.py --spec cases.json --results candidate.jsonl
# 2 - Separate flaky cases from stable ones before trusting any comparison.
python scripts/flake_detector.py --results candidate.jsonl --k 3 --quarantine-out q.json
# 3 - Gate: paired per-case comparison against baseline. Exit 4 blocks the merge.
python scripts/regression_gate.py --baseline baseline.jsonl --candidate candidate.jsonl --quarantine q.jsonStep 1 uses match modes strict | unordered | subset | superset. Default to
superset (required steps present, harmless exploration allowed); grade the
outcome, not the path, unless order is the requirement. forbidden tools block
in every mode.
Step 2 reports pass@k (succeeds at least once in k) and pass^k (succeeds
all k times). A user meets every trial, so pass^k is the reliability number.
Cases marked critical are never quarantine candidates.
Step 3 averages trials within each case first (trials of one case are
correlated), then tests paired per-case differences with a t-based 95% CI and a
one-sided exact McNemar test. When the drop is real but the sample is too small
to show it, the gate says how many cases it would take.
The gate blocks on
1. A statistically significant drop (CI upper bound below zero, or McNemar p < 0.05).
2. A critical case that passed every baseline trial and failed any candidate trial.
3. A baseline case missing from the candidate run. Dropping a case is the cheapest fake fix.
4. A quarantine entry with no owner or expiry, or covering a critical case.
5. A forbidden tool call (trajectory checker, exit 4).
It warns, and a human decides, on an underpowered drop above --tolerance or a
cost rise above --max-cost-increase.
Hard rules
- Never compare single trials. Under 3 trials per case the flake detector refuses (exit 4).
- Never pool trials as independent samples. Average per case, then compare cases.
- Never quarantine without owner and expiry. An expired entry re-enters the gate automatically.
- Never delete a failing case to go green. The gate counts what is missing.
- Never call "no significant drop" a pass on 8 cases. Report the power note with the verdict.
- Start the suite from real failures (20-50 cases), balanced between "should do" and "should not do".
Scripts
| Script | Role | Exit codes |
|---|---|---|
| scripts/trajectory_checker.py | Grades tool-call paths: match modes, args modes, forbidden tools, call ceilings | 0 · 2 deviations · 3 bad input · 4 forbidden tool |
| scripts/flake_detector.py | STABLE_PASS / STABLE_FAIL / FLAKY per case, Wilson CI, pass@k, pass^k, quarantine stubs | 0 · 2 flaky · 3 · 4 too few trials |
| scripts/regression_gate.py | Paired CI, exact McNemar, critical cases, dropped cases, quarantine validity, cost | 0 PASS · 2 WARN · 3 · 4 BLOCK |
All support --sample and --output json.
References and assets
- [
references/eval_statistics.md](references/eval_statistics.md) — pass@k vs pass^k, per-case averaging, paired CI, McNemar, power (7 sources) - [
references/trajectory_grading.md](references/trajectory_grading.md) — outcome vs path, match modes, grader types (6 sources) - [
references/flaky_cases_and_quarantine.md](references/flaky_cases_and_quarantine.md) — flake causes, quarantine with expiry, clean trials (6 sources) - [
assets/eval_case_spec.example.json](assets/eval_case_spec.example.json) — trajectory spec for step 1 - [
assets/sample_baseline.jsonl](assets/sample_baseline.jsonl), [assets/sample_candidate.jsonl](assets/sample_candidate.jsonl) — results format - [
assets/ci_eval_gate.example.yml](assets/ci_eval_gate.example.yml) — CI job that runs the gate and fails on exit 4
Skill liên quan
- agent-regression-evals – Dùng khi thay đổi agent, prompt, model hoặc công cụ cần chứng minh không làm agent kém…
- constraint-driven-development – Thiết lập tiêu chuẩn chất lượng của dự án thành hợp đồng bằng văn bản và ngăn agent âm…
- agent-framework-azure-ai-py – Xây dựng agent bền vững trên Azure AI Foundry bằng Microsoft Agent Framework Python SDK.
- agent-harness-fault-injection – Dùng khi quy trình agent cần bằng chứng khôi phục xác định cho các lỗi ở sandbox…
- agent-manager-skill – Quản lý nhiều CLI agent cục bộ qua phiên tmux (khởi động, dừng, theo dõi, giao việc)…
- agent-memory – Hệ thống bộ nhớ lai cung cấp quản lý kiến thức bền vững, có thể tìm kiếm cho các AI agent.
- agent-memory-discipline – Quy tắc xác định khi nào agent nên truy xuất từ bộ nhớ dài hạn trước khi hành động, và…
- agent-memory-mcp – Hệ thống bộ nhớ lai cung cấp quản lý kiến thức bền vững, có thể tìm kiếm cho các AI…