Skip to main content

Evaluation-Driven Development toolkit for OpenClaw agents

Project description

openclaw-edd

CI PyPI version Python 3.9+ License: MIT

Evaluation-Driven Development toolkit for OpenClaw agents. Zero-friction quality gates — log files as the single source of truth.

中文文档

Features

  • Zero Configuration - pip install openclaw-edd && openclaw-edd watch and go
  • Zero Intrusion - No need to modify OpenClaw config or restart Gateway
  • Zero Dependencies - Core features work without any external libraries (PyYAML optional)
  • Complete Loop - watch → run → suggest → apply → diff → mine → export

Quick Start

pip install openclaw-edd

# Step 0: See what tools your agent actually uses
openclaw-edd watch

# Step 1: Run built-in evaluation (6 test cases)
openclaw-edd run --quickstart --agent main --summary-line

# Step 2: Full EDD loop
openclaw-edd run --quickstart --agent main --output-json round1.json
openclaw-edd edd suggest --report round1.json
# ... fix your agent ...
openclaw-edd run --quickstart --agent main --output-json round2.json
openclaw-edd edd diff --before round1.json --after round2.json

📖 Complete User Guide → — 7-step walkthrough from install to CI integration.

中文版本:用户路径指南 →

Commands

Core Commands

  • watch - Real-time log monitoring, print tool event stream
  • trace - Replay historical event chain
  • state - View/modify session state
  • artifacts - Manage tool output files
  • sessions - List/view historical sessions
  • run - Run evaluation test cases
  • gen-cases - Generate test case templates

EDD Loop Commands

  • openclaw-edd edd suggest - Generate improvement suggestions from failed cases
  • openclaw-edd edd apply - Apply suggestions to workspace
  • openclaw-edd edd diff - Compare changes between two runs
  • openclaw-edd edd mine - Mine golden cases from historical logs
  • openclaw-edd edd judge - LLM-based scoring for tool selection and output quality
  • openclaw-edd edd export - Export golden dataset (JSONL/CSV)

Test Case Format

cases:
  - id: mysql_slow_query
    message: "Any slow queries in MySQL recently"
    eval_type: regression          # "regression" (prevent regression) | "capability" (capability climb), default regression
    expect_tools:
      - exec
    expect_commands:
      - "check_health"
      - "prod-01"
    expect_commands_ordered:
      - "check_health"
      - "query_metrics"
    forbidden_commands:
      - "rm -rf"
    expect_tools_ordered:
      - exec
    expect_output_contains:
      - "slow query"
    forbidden_tools:
      - exec
    expect_tool_args:              # Tool argument assertions (White-box evaluation)
      exec:
        command: "check_health"    # Substring match for string values
    agent: openclaw_agent
    timeout_s: 30
    tags: [mysql, sre]
    description: "MySQL slow query troubleshooting basic verification"

Notes:

  • expect_commands, expect_commands_ordered, and forbidden_commands do case-insensitive substring matching on exec tool input.command.
  • expect_output_contains is case-insensitive substring matching.
  • For expect_tool_args, string values use case-insensitive substring matching; non-strings use exact match.

Eval Type Explanation

  • regression: Prevent regression evaluation, starts near 100%, any drop is an alert signal
  • capability: Capability climb evaluation, starts with low pass rate, tests what agent can't do yet

Run reports are grouped by eval_type:

📊 Regression Eval (Prevent Regression)
Passed: 8/10  (80%)  ← Below 100% needs attention
FAIL: mysql_slow_query, mysql_alert_check

📈 Capability Eval (Capability Climb)
Passed: 3/8  (37.5%)  ← Normal, this is a climb metric
PASS: mysql_basic_query ...

Golden Dataset Format

{
  "id": "50a359b5_1",
  "description": "Extracted from session 50a359b5, 2026-02-28",
  "source": "mined",
  "tags": ["mined"],
  "conversation": [
    {
      "turn": 1,
      "user": "Any slow queries in MySQL recently",
      "golden_tool_sequence": [
        {
          "name": "query_metrics",
          "args": {"metric": "p99_latency", "time_range": "1h"},
          "output_summary": "P99 latency 120ms, exceeds threshold"
        }
      ],
      "golden_output": "Detected MySQL slow query, P99 latency 120ms",
      "assert": [
        {"type": "tool_called", "value": "query_metrics"},
        {"type": "tool_args", "tool": "query_metrics", "args": {"metric": "p99_latency", "time_range": "1h"}},
        {"type": "contains", "value": "slow query"}
      ]
    }
  ],
  "metadata": {
    "session_id": "50a359b5-184f-4c73-913d-3b53ebbdf109",
    "agent": "openclaw_agent",
    "extracted_at": "2026-02-28T16:00:00",
    "skill_triggered": "skills/mysql_sre.md"
  }
}

Data Sources

  • Log Location: /tmp/openclaw/openclaw-YYYY-MM-DD.log
  • Format: JSON Lines
  • State: ~/.openclaw_eval/state/<session_id>.json
  • Artifacts: ~/.openclaw_eval/artifacts/<session_id>/

Workspace Path Resolution

Priority:

  1. --workspace parameter
  2. ~/.openclaw/openclaw.jsonagents.defaults.workspace
  3. Fallback: ~/.openclaw/workspace

Dependencies

  • Zero mandatory dependencies - Core features work without any external libraries
  • Optional dependencies:
    • PyYAML (only needed when using --cases)
    • anthropic (only needed when using edd judge)
pip install openclaw-edd[yaml]  # Install with YAML support
pip install openclaw-edd         # Includes anthropic SDK

Platform Support

  • Linux/macOS - Full support (including daemon mode)
  • Windows - All features supported except daemon mode

CI Integration

# Run evaluation
openclaw-edd run --cases cases.yaml --output-json report.json

# Check exit code
if [ $? -ne 0 ]; then
  echo "Evaluation failed"
  exit 1
fi

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openclaw_edd-0.2.3.tar.gz (44.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openclaw_edd-0.2.3-py3-none-any.whl (42.2 kB view details)

Uploaded Python 3

File details

Details for the file openclaw_edd-0.2.3.tar.gz.

File metadata

  • Download URL: openclaw_edd-0.2.3.tar.gz
  • Upload date:
  • Size: 44.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for openclaw_edd-0.2.3.tar.gz
Algorithm Hash digest
SHA256 f774f9fe9a67f37cc446a6047a46ae3166c0044846613fe11bbf951e8acf3f4f
MD5 d607e278667461039af916a2268f04a6
BLAKE2b-256 0ba6f64b0a2c87a2ab61957251c081503bb082557f0d84d876f65977326ee057

See more details on using hashes here.

Provenance

The following attestation bundles were made for openclaw_edd-0.2.3.tar.gz:

Publisher: release.yml on Belyenochi/openclaw-edd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openclaw_edd-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: openclaw_edd-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 42.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for openclaw_edd-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 70e391e4efac7a56d51611bd15608e808341a6bae8c65f10a7864fd415a15760
MD5 d4e38da0c9ad76ae11951f9d3f4bda57
BLAKE2b-256 72ab09c59fc2a4890ec070a83b44a561a7951fb4cab6f3d27421e53c20b3fc41

See more details on using hashes here.

Provenance

The following attestation bundles were made for openclaw_edd-0.2.3-py3-none-any.whl:

Publisher: release.yml on Belyenochi/openclaw-edd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page