一键导入
eval-digest
Run LLM digest eval — replay saved weather contexts through the LLM and compare assessments
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Run LLM digest eval — replay saved weather contexts through the LLM and compare assessments
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Audit web↔iOS consistency for hand-copied surfaces (preset tables, metrics-catalog, debrief taxonomy, API DTOs) and surface divergences as an actionable task list. Run after a feature that touched one platform, before merge, or any time the two clients may have drifted.
Rsync the latest complete ECMWF GRIB run from the production server into the local ECMWF_GRIB_DIR so refresh can run with ECMWF enrichment locally
Deploy the weatherbrief app to production on weather.flyfun.aero
Start or restart the local dev server (backend + frontend) in a per-worktree tmux session. Use --https (or --simulator) to run the singleton TLS instance for iOS simulator testing.
Build & maintain the LLM-digest eval SET (corpus) — pull prod briefings, attach pilot debriefs, re-run advisories against saved baselines, promote staging→corpus. Distinct from the `eval-digest` skill (which replays contexts through the LLM).
End-to-end production health check for weatherbrief on the flyfun.aero droplet — droplet metrics, container state, log signals, refresh queue, standalone cycle, RSS growth
| name | eval-digest |
| description | Run LLM digest eval — replay saved weather contexts through the LLM and compare assessments |
Evaluate the LLM weather digest pipeline against saved fixtures. Each fixture contains a real context string (the exact user message sent to the LLM) and the original digest output for comparison.
Building or maintaining the eval set itself — pulling prod briefings, attaching pilot debriefs, re-running advisories vs saved baselines, promoting staging→corpus — is the
eval-workbenchskill. This one is only the LLM replay.
source venv/bin/activate
python scripts/extract_digest_eval.py --dedupe --prune
This reads data/packs/, builds context strings via build_digest_context(), and saves compact fixtures to tests/eval_data/digests/. The --prune flag keeps ~30 fixtures (endpoints + assessment transitions, no redundant same-route/same-assessment repeats).
python scripts/run_digest_eval.py --dry-run
Shows all fixtures with their assessment, advisory counts, and context size. No LLM calls.
# Full run (all fixtures, ~30 LLM calls)
python scripts/run_digest_eval.py --output eval_results.json
# Subset runs
python scripts/run_digest_eval.py --limit 3 # first N only
python scripts/run_digest_eval.py --filter "egtf_lfat" # by fixture ID
python scripts/run_digest_eval.py --assessment AMBER # by original assessment
# With alternative prompt
python scripts/run_digest_eval.py --prompt configs/weather_digest/prompts/briefer_v2.md --output eval_v2.json
python scripts/run_digest_eval.py --show <fixture_id>
Prints the full context string, original assessment, and advisory breakdown. No LLM call.
After a run, load the results JSON and compare old vs new assessments. Key metrics:
v = downgraded (e.g. AMBER→GREEN), ^ = upgraded (e.g. GREEN→AMBER)| File | Purpose |
|---|---|
scripts/extract_digest_eval.py | Extracts fixtures from data/packs/ |
scripts/run_digest_eval.py | Replays fixtures through LLM |
tests/eval_data/digests/ | Fixture directory (context.txt + digest.json + meta.json per fixture) |
configs/weather_digest/prompts/briefer_v2.md | Current system prompt (v1 kept for rollback/diff) |
src/weatherbrief/digest/prompt_builder.py | Context string assembly |
src/weatherbrief/digest/llm_digest.py | WeatherDigest model + LangGraph pipeline |
The eval scores against golden labels (the SME's correct assessment), not the model's own output. Two ways to label:
python scripts/label_digest_eval.py --situation icing --unlabeled. Writes meta["golden"]["assessments"] into a fixture.designs/eval-digest-workbench.md. Flow: scripts/export_eval_candidates.py
→ copy to dev → scripts/pull_eval_corpus.py → WEATHERBRIEF_EVAL_WORKBENCH=1
/devserver → open /eval.html. Golden lives in each corpus pack's
label.json.run_digest_eval.py --guidance <preset> scores the model against the golden
label for that guidance (resolve_expected prefers the golden over the model's
original assessment).
Known issue: ~70% of digests are AMBER. Suspects to check:
assessment_reason cites model uncertainty or minor concerns that shouldn't override green advisoriesbriefer_v2.md controls GREEN/AMBER/RED thresholds