Skip to main content

Evaluation-Driven Development toolkit for OpenClaw agents

Project description

openclaw-edd logo

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.3.4.tar.gz (51.5 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.3.4-py3-none-any.whl (48.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: openclaw_edd-0.3.4.tar.gz
  • Upload date:
  • Size: 51.5 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.3.4.tar.gz
Algorithm Hash digest
SHA256 f7ff24d469cc92b91cfa696b5d3b7f6140f5d8e204c037b4294dfbda791bb283
MD5 f9711657363b40049fd7e3ad97c6ea0e
BLAKE2b-256 72ba59c2d20c545bac2d876f5a91a34a7f0d901305af52845f124c12dca02b4b

See more details on using hashes here.

Provenance

The following attestation bundles were made for openclaw_edd-0.3.4.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.3.4-py3-none-any.whl.

File metadata

  • Download URL: openclaw_edd-0.3.4-py3-none-any.whl
  • Upload date:
  • Size: 48.1 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.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 4c174bc3f972bd0249de78c06f8af843ca5f09ed92c0053e5725e9ae5caa671d
MD5 c278a499e77a1d46c8ac5d5869c744ec
BLAKE2b-256 198b44b2c78faaf0d82ba20e0c7dc515cb3f59147b29d773347307d5faa918ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for openclaw_edd-0.3.4-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