Install
openclaw skills install @minopop/benchmarksBenchmark storage routing for agent memory/benchmark stacks: use when running BEAM-style evaluations, locomo benchmarks, calibration probes, or any benchmark that produces .db run databases. Tells you exactly what goes where — run databases OUTSIDE the repo, scripts and result JSONs in the repo. Now includes the run-resilience ladder: how long benchmark runs survive provider flaps. Load before creating any benchmark .db file or setting an output path.
openclaw skills install @minopop/benchmarksVersion: 1.1
*_eval_*.mjs).db benchmark databaseCode and scores live in the repo (git). Run databases live outside the repo (scratch).
<repo>/benchmarks/ → tracked in git| What | Examples |
|---|---|
| Evaluator scripts | beam_eval_v*.mjs, locomo_eval_*.mjs |
| Result summary JSONs | beam_results_v17.2_100K.json |
| Analysis + diff scripts | diff_results.mjs, generate_comparison_report.mjs |
| Dataset/fixtures | beam_data/, fixtures/ |
| Download scripts | download_beam.py, download_locomo.py |
| Reports and logs | EVAL-REPORT.md, run-logs/ |
Rule: if it's a text file that a human wrote or that summarises a result, it belongs here.
~/.openclaw-benchmarks/) → NOT in git| What | Destination subfolder | Examples |
|---|---|---|
| Run databases | beam/ | beam_bench_v17.2.db |
| Locomo run databases | locomo/ | locomo_bench_v10.db |
| Calibration run databases | calib/ | calib_bench.db |
| Test / scratch databases | scratch/ | test_full.db |
| Dev workspace forks | beam-workspace/ | full repo forks used for benchmarking |
| Version snapshots | beam-snapshots/ | versioned snapshot dirs |
Rule: if it ends in .db or is a full repo fork used for benchmarking, it goes here.
In benchmark scripts, always pass --output explicitly (defaults: <scratch>/beam|locomo|calib).
CLI: node benchmarks/beam_eval_vX.mjs --output <scratch>/beam/beam_bench_vX.db.
Naming: <type>_bench_v<version>[_<variant>].db. Add a .gitignore backstop (**/*.db) so a mis-routed run database never enters git even by accident.
.db dir is 15–175 MB binary — one accidental commit costs MB in pack history forever..db inside the repo? Stop; reroute to the scratch root.--output or hardcoding a repo path? Fix it in that session.Multi-hour benchmark/ingestion runs must survive transient provider failures by design. Before this pattern shipped (2026-07-29), a transient GLM/OpenRouter flap killed the whole run and re-ingested from zero (~5h worst case). The ladder below eliminated that class of loss — and was proven organically the day it shipped, when a real 60+ minute provider outage hit mid-run and the run survived while the pre-ladder version had died 3× in the same flap.
The ladder (implement it in your shared LLM client so every caller inherits it):
>0 ⇒ the run is FLAGGED, not publication-grade. Silent data thinning must never pass silently.⚠️ Probe false-negative trap: reasoning-on models (e.g. GLM thinking variants) burn tiny max_tokens on reasoning and return HTTP 200 with empty content (finish_reason: length) — a tiny-token connectivity probe misreads a HEALTHY endpoint as down. Probes must use reasoning: {exclude: true} + a small-but-real budget. Distinguish failure shapes: finish_reason: "error" = provider failure (retry/circuit); finish_reason: "length" = budget truncation (raise budget / drop reasoning).
Operating knobs (example envs): retry max attempts / base backoff ms / cap ms; circuit window + park budget; KEEP_DB=1 to skip end-of-run wipes so post-run audits (duplicate-rate audits, tag verification) can inspect the kept run database. Test-only failure-injection hooks should print a loud DO-NOT-SCORE banner when armed.
Design notes that matter: