Download scripts/smoke_framework_comparison.sh from Sayan2901/Jarvis: direct link, hf CLI and curl.
- Browser
- Download file 3.28 kB
-
https://huggingface.co/spaces/Sayan2901/Jarvis/resolve/main/scripts/smoke_framework_comparison.sh
- Command line
-
hf download hf://spaces/Sayan2901/Jarvis/scripts/smoke_framework_comparison.sh
-
curl -L -o smoke_framework_comparison.sh https://huggingface.co/spaces/Sayan2901/Jarvis/resolve/main/scripts/smoke_framework_comparison.sh
3.28 kB
| # smoke_framework_comparison.sh | |
| # | |
| # One-task-per-cell sanity check for the framework-comparison harness. | |
| # Run before kicking off a benchmark sweep. | |
| # | |
| # Required env vars: | |
| # HERMES_AGENT_PATH - path to pinned hermes-agent checkout | |
| # OPENCLAW_PATH - path to pinned openclaw checkout | |
| # JARVIS_MOCK_LLM_URL - OpenAI-compatible endpoint (Ollama or vLLM) | |
| # | |
| # Optional: | |
| # JARVIS_ALLOW_COMMIT_DRIFT=1 - bypass commit-pin enforcement | |
| set -euo pipefail | |
| : "${HERMES_AGENT_PATH:?must be set}" | |
| : "${OPENCLAW_PATH:?must be set}" | |
| : "${JARVIS_MOCK_LLM_URL:?must be set (e.g. http://localhost:11434/v1)}" | |
| # OpenClaw prerequisites: Node version + dist/ dir | |
| NODE_VERSION=$(node --version 2>&1 || echo "v0") | |
| NODE_MAJOR=$(echo "$NODE_VERSION" | sed -E 's/v([0-9]+)\..*/\1/') | |
| if [ "$NODE_MAJOR" -lt 14 ]; then | |
| echo "WARNING: Node $NODE_VERSION may be too old for OpenClaw (needs ≥14.8)" | |
| echo " OpenClaw runs may fail with 'SyntaxError: Unexpected reserved word'" | |
| fi | |
| if [ ! -f "$OPENCLAW_PATH/dist/entry.js" ]; then | |
| echo "WARNING: $OPENCLAW_PATH/dist/entry.js not found" | |
| echo " OpenClaw needs 'pnpm install && pnpm build' before use" | |
| fi | |
| REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" | |
| cd "$REPO_ROOT" | |
| echo "==> Verifying commit pins" | |
| uv run python -c " | |
| from openjarvis.evals.comparison.third_party import ( | |
| load_third_party_config, verify_commit_pin, | |
| ) | |
| cfg = load_third_party_config() | |
| for name, entry in cfg.entries.items(): | |
| print(f' {name}: {entry.path}') | |
| verify_commit_pin(entry) | |
| print(' all pins OK') | |
| " | |
| echo "==> Running one-task smoke per (framework, benchmark)" | |
| mkdir -p results/smoke | |
| CONFIG_DIR="results/smoke/configs" | |
| mkdir -p "$CONFIG_DIR" | |
| SMOKE_BENCHES=(toolcall15 pinchbench gaia) | |
| SMOKE_FRAMEWORKS=(hermes openclaw openjarvis) | |
| SMOKE_MODEL="qwen-9b" | |
| for fwk in "${SMOKE_FRAMEWORKS[@]}"; do | |
| for bench in "${SMOKE_BENCHES[@]}"; do | |
| uv run python -m openjarvis.evals.comparison.make_configs \ | |
| --framework "$fwk" \ | |
| --model "$SMOKE_MODEL" \ | |
| --benchmark "$bench" \ | |
| --output-dir "$CONFIG_DIR" >/dev/null | |
| config="${CONFIG_DIR}/${bench}-${fwk}-${SMOKE_MODEL}.toml" | |
| run_dir="results/smoke/${fwk}/${SMOKE_MODEL}/${bench}/" | |
| JARVIS_BACKEND_BASE_URL="$JARVIS_MOCK_LLM_URL" uv run python - "$config" "$run_dir" <<'PY' | |
| from pathlib import Path | |
| import re | |
| import sys | |
| path = Path(sys.argv[1]) | |
| run_dir = sys.argv[2] | |
| text = path.read_text() | |
| text = re.sub(r'^output_dir = ".*"$', f'output_dir = "{run_dir}"', text, flags=re.M) | |
| text = re.sub(r"^max_samples = \d+$", "max_samples = 1", text, flags=re.M) | |
| path.write_text(text) | |
| PY | |
| echo " ▸ $fwk × $bench" | |
| mkdir -p "$run_dir" | |
| JARVIS_BACKEND_BASE_URL="$JARVIS_MOCK_LLM_URL" \ | |
| JARVIS_BACKEND_API_KEY="${JARVIS_BACKEND_API_KEY:-smoke}" \ | |
| uv run python -m openjarvis.evals run --config "$config" \ | |
| || echo " FAILED (continuing)" | |
| done | |
| done | |
| echo "==> Generating T1 from smoke results" | |
| uv run python -m openjarvis.evals.comparison.table_gen \ | |
| --results-glob "results/smoke/**/*.summary.json" \ | |
| --tables T1 \ | |
| --output-dir results/smoke/tables/ | |
| echo "==> Verifying T1.tex non-empty" | |
| test -s results/smoke/tables/T1.tex && echo " OK: T1.tex emitted" | |
| echo "==> Smoke validation complete" | |