Files
wehub-resource-sync 426e9eeabd
Benchmark Bridge Tests / benchmark (bunx @biomejs/biome check packages/lifeops-bench/src, benchmark-lint) (push) Waiting to run
Benchmark Bridge Tests / benchmark (bunx vitest run --config packages/lifeops-bench/vitest.config.ts --root packages/lifeops-bench --passWithNoTests, benchmark-tests) (push) Waiting to run
Build Agent Image / build-and-push (push) Waiting to run
Chat shell gestures / Chat shell gesture + parity e2e (push) Waiting to run
ci / test (push) Waiting to run
ci / lint-and-format (push) Waiting to run
ci / build (push) Waiting to run
ci / dev-startup (push) Waiting to run
Cloud Gateway Discord / Test (push) Waiting to run
Cloud Gateway Webhook / Test (push) Waiting to run
Cloud Tests / lint-and-types (push) Waiting to run
Cloud Tests / unit-tests (push) Waiting to run
Cloud Tests / integration-tests (push) Waiting to run
Cloud Tests / e2e-tests (push) Blocked by required conditions
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Deploy Apps Worker (Product 2) / Determine environment (push) Waiting to run
Deploy Apps Worker (Product 2) / Deploy apps worker to apps-control host (${{ needs.determine-env.outputs.environment }}) (push) Blocked by required conditions
Deploy Eliza Provisioning Worker / Determine environment (push) Waiting to run
Deploy Eliza Provisioning Worker / Deploy worker to Hetzner host (${{ needs.determine-env.outputs.environment }} @ ${{ needs.determine-env.outputs.deployment_sha }}) (push) Blocked by required conditions
Dev Smoke / Classify changed paths (push) Waiting to run
Dev Smoke / bun run dev onboarding chat (push) Blocked by required conditions
Dev Smoke / Vite HMR dependency-level smoke (push) Blocked by required conditions
Electrobun Submodule Guard / electrobun gitlink is fetchable (push) Waiting to run
gitleaks / gitleaks (push) Waiting to run
Markdown Links / Relative Markdown Links (push) Waiting to run
Publish @elizaos/example-code / check_npm (push) Waiting to run
Publish @elizaos/example-code / publish_npm (push) Blocked by required conditions
Publish @elizaos/plugin-elizacloud / verify_version (push) Waiting to run
Publish @elizaos/plugin-elizacloud / publish_npm (push) Blocked by required conditions
Quality (Extended) / Homepage Build (PR smoke) (push) Waiting to run
Quality (Extended) / Comment-only diff guard (push) Waiting to run
Quality (Extended) / Format + Type Safety Ratchet (push) Waiting to run
Quality (Extended) / Develop Gate (secret scan + UI determinism) (push) Waiting to run
Quality (Extended) / Develop Gate (lint) (push) Waiting to run
Sandbox Live Smoke / Sandbox live smoke (push) Waiting to run
Snap Build & Test / Build Snap (amd64) (push) Waiting to run
Snap Build & Test / Build Snap (arm64) (push) Waiting to run
supply-chain / sbom (push) Waiting to run
supply-chain / vulnerability-scan (push) Waiting to run
Build, Push & Deploy to Phala Cloud / build-and-push (push) Waiting to run
Test Packaging / Validate Packaging Configs (push) Waiting to run
Test Packaging / PyPI on Python ${{ matrix.python }} (push) Waiting to run
Test Packaging / Pack & Test JS Tarballs (push) Waiting to run
Test Packaging / elizaos CLI global-install smoke (node + bun) (push) Waiting to run
UI Fixture E2E / ui-fixture-e2e (push) Waiting to run
UI Fixture E2E / fixture-e2e (push) Waiting to run
UI Story Gate / story-gate (push) Waiting to run
vault-ci / test (macos-latest) (push) Waiting to run
vault-ci / test (ubuntu-latest) (push) Waiting to run
vault-ci / test (windows-latest) (push) Waiting to run
vault-ci / app-core wiring tests (push) Waiting to run
verify-patches / verify patches/CHECKSUMS.sha256 (push) Waiting to run
Voice Benchmark Smoke / voice-emotion fixture smoke (push) Waiting to run
Voice Benchmark Smoke / voiceagentbench fixture smoke (push) Waiting to run
Voice Benchmark Smoke / voicebench-quality unit smoke (push) Waiting to run
Voice Benchmark Smoke / voicebench TypeScript unit (no audio) (push) Waiting to run
Voice Benchmark Smoke / voice bench smoke summary (push) Blocked by required conditions
Windows CI / windows ([bun run --cwd packages/app-core test bun run --cwd packages/elizaos test bun run --cwd packages/cloud/shared test], app-and-cli) (push) Waiting to run
Windows CI / windows ([bun run --cwd packages/scenario-runner test bun run --cwd packages/vault test bun run --cwd packages/security test bun run --cwd plugins/plugin-coding-tools test], framework-packages) (push) Waiting to run
Windows CI / windows ([bun run --cwd plugins/plugin-elizacloud test bun run --cwd plugins/plugin-discord test bun run --cwd plugins/plugin-anthropic test bun run --cwd plugins/plugin-openai test bun run --cwd plugins/plugin-app-control test bun run --cwd plugins/pl… (push) Waiting to run
Windows CI / windows ([node packages/scripts/run-turbo.mjs run build --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/agent --concurrency=4 node packages/scripts/run-bash-linux-only.mjs scripts/verify-riscv64-buildpaths.sh node packages/scripts/run… (push) Waiting to run
Windows CI / windows ([node packages/scripts/run-turbo.mjs run typecheck --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/cloud-shared --concurrency=4 bun run --cwd packages/core test bun run --cwd packages/shared test], core-runtime, 75) (push) Waiting to run
Test Packaging / Build & Test PyPI Package (push) Waiting to run
Voice Workbench / headless workbench (mocked backends) (push) Has been cancelled
Voice Workbench / real acoustic lane (nightly, provisioned only) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:43:05 +08:00
..

BFCL — Berkeley Function-Calling Leaderboard

A production-ready, faithful implementation of the Berkeley Function-Calling Leaderboard benchmark, designed to drop into the elizaOS benchmark harness.

The package vendors the relevant Apache-2.0 BFCL evaluator pieces (multi-turn runtime + tool implementations) with attribution — see executable_runtime/NOTICE.

Supported categories

Group Category Scoring path Network
Non-live single-turn simple, multiple, parallel, parallel_multiple, relevance, irrelevance, sql, java, javascript AST equality no
Non-live single-turn — gated rest_api AST equality (currently no live REST runner) yes
Live (user-contributed) live_simple, live_multiple, live_parallel, live_parallel_multiple, live_relevance, live_irrelevance AST equality no
Multi-turn multi_turn_base, multi_turn_miss_func, multi_turn_miss_param, multi_turn_long_context Executable runtime (state equality) no
Agentic — web_search web_search_base, web_search_no_snippet Executable runtime yes
Agentic — memory memory_kv, memory_vector, memory_rec_sum (skipped — see below) no
Non-scoring format_sensitivity n/a n/a

Network-gated categories

Categories that require live network / credentials are gated behind the --enable-network CLI flag. Without it, those tests are reported in the skipped_no_credentials bucket and excluded from the accuracy denominator with a logged warning — they are not silently failed.

Currently network-gated:

  • rest_api
  • web_search_base, web_search_no_snippet
# Run without network — REST / web_search are skipped
python -m benchmarks.bfcl run --sample 200

# Opt in to network-backed scoring
python -m benchmarks.bfcl run --sample 200 --enable-network

Memory categories

Memory categories (memory_kv, memory_vector, memory_rec_sum) depend on additional upstream scaffolding (snapshot dirs, prereq conversation files, bfcl_eval.utils helpers) that we do not vendor. They are reported in the skipped_unsupported bucket. To enable, install bfcl-eval from upstream and the runtime will fall through to the upstream helpers.

Evaluation

Single-turn

AST equality between the predicted and ground-truth call list, using the faithful BFCL AST checker logic. The AST checker preserves a small set of intentional quirk-tolerance fixes (annotated in evaluators/ast_evaluator.py) — these are documented overrides of upstream behaviour that the upstream issue tracker also reports as undesirable.

Multi-turn

Per-turn agent loop:

  1. Feed the current user turn (plus any prior assistant + tool result messages) into the agent.
  2. Decode the upstream-canonical python-list-of-calls from the agent's response (decode_python_calls).
  3. Execute the calls against a per-test ExecutableRuntime that holds the vendored upstream tool instances (GorillaFileSystem, MathAPI, TwitterAPI, ...).
  4. Repeat for the next turn (state persists across turns).
  5. At the end, also execute the ground-truth trajectory against a fresh runtime and compare final per-class instance state.

Executable evaluator

The previous evaluator used synthetic always-success mock handlersexec_accuracy was always 1.0 regardless of the model's calls. That behaviour is removed. The new evaluator actually invokes the upstream tool implementations and compares output state. Unregistered functions return failure, NOT auto-success.

CLI

# List available models / providers
python -m benchmarks.bfcl models

# Sample run (50 stratified tests)
python -m benchmarks.bfcl run --sample 50

# Run a specific category set
python -m benchmarks.bfcl run --categories simple,multiple,multi_turn_base

# Full benchmark, with network-gated categories enabled
python -m benchmarks.bfcl run --full --enable-network

# Local data path (avoids HuggingFace)
python -m benchmarks.bfcl run --local-data ./data/bfcl

# Run all + show baselines
python -m benchmarks.bfcl info --baselines

Reporting

The run summary now distinguishes:

  • total_tests — number of tests that contributed to accuracy.
  • passed_tests / failed_tests — among total_tests.
  • skipped_tests — excluded from accuracy.
  • skipped_by_reason — bucketed by status:
    • skipped_no_credentials
    • skipped_no_ground_truth
    • skipped_unsupported

License

Vendored upstream sources are Apache License 2.0 (Berkeley/Gorilla). See executable_runtime/NOTICE for attribution.