إنتقل إلى المحتوى الرئيسي

Benchmarking

Benchmarking هو مسار مشغّل. يستخدم estacoda bench run ومحولات Harbor وملفات artifacts؛ ولا يغيّر تجربة EstaCoda CLI العادية.

الأولوية​

استخدم هذا الترتيب:

  1. Terminal-Bench local smoke
  2. Terminal-Bench Harbor smoke
  3. Terminal-Bench full baseline
  4. مقارنة Terminal-Bench مع وكيل آخر باستخدام النموذج نفسه
  5. SWE-bench Lite smoke
  6. SWE-bench Verified baseline
  7. GAIA لاحقًا

يأتي Terminal-Bench أولًا لأنه يختبر حلقة الوكيل الطرفية كاملة: استخدام shell، والإعداد، والتصحيح، والتكرار، والتعافي، وتغييرات workspace.

يلف estacoda bench run تعليمات المهمة بعقد تنفيذ خاص بالـ benchmark قبل دخول runtime. يوضح هذا العقد للوكيل أن نجاح benchmark يُقاس بحالة workspace أو العملية أو verifier، وليس بالنص فقط، وأن عليه استخدام أدوات الملفات والطرفية المتاحة عندما تتطلب المهمة تغييرات في workspace. هذا التغليف محدود بمسار benchmark CLI ولا يؤثر في جلسات EstaCoda العادية.

الفحوصات المحلية​

شغّل smoke المحلي الآمن لـ CI:

pnpm run benchmark:smoke

شغّل اختبارات محول Harbor:

pnpm run benchmark:terminal-bench:adapter-test

هذه الفحوصات لا تستدعي نماذج حية ولا تنتج درجات عامة.

للتحقق من artifacts فقط من دون provider credentials، شغّل:

rm -rf /tmp/estacoda-bench-app /tmp/estacoda-summary.json /tmp/estacoda-events.jsonl
mkdir -p /tmp/estacoda-bench-app

estacoda bench run \
--instruction-file benchmarks/local-smoke/simple-file-task/instruction.txt \
--workspace /tmp/estacoda-bench-app \
--isolated-home \
--json-output /tmp/estacoda-summary.json \
--event-log /tmp/estacoda-events.jsonl

مع isolated home غير مهيأ، تكون حالة config_error صالحة. هذا smoke يتحقق من كتابة artifacts، وشكل schema، وredaction، وbenchmark: null، ووجود الحقل estimatedCostUsd دائمًا. الجواب النهائي متوقع فقط في live smoke مع إعداد provider/model صريح.

إذا لم يكن Harbor متاحًا محليًا، يبقى adapter مغطى باختبارات وحدة وcompile-check. شغّل Harbor one-task وfive-task validation في بيئة تحتوي Harbor قبل نشر نتائج benchmark.

Terminal-Bench Smoke​

قبل التشغيل الكامل، استخدم Harbor smoke صغيرًا: خمس مهام، نموذج واحد، temperature واحدة، ومحاولة واحدة لكل مهمة.

export ESTACODA_BENCH_MODEL="anthropic/claude-sonnet"
export ESTACODA_BENCH_HOME="/tmp/estacoda-home"
export PYTHONPATH="/path/to/estacoda:${PYTHONPATH:-}"

harbor run \
-d terminal-bench/terminal-bench-2 \
-a benchmarks.terminal_bench.estacoda_harbor_agent:EstaCodaAgent \
--artifact /tmp/estacoda-terminal-bench \
-n 5

الهدف هو إثبات سلامة harness، لا الحصول على score.

نقاط Harbor الحادة​

  • يحتاج Harbor إلى Docker أو runtime حاويات مكافئ. على macOS/Colima، اجعل job/result directory الخاص بـ Harbor على مسار workspace مشترك مع Docker، مثل .harbor-jobs/ داخل checkout. تجنب host /tmp في تشغيلات verifier إذا ظهر RewardFileNotFoundError.
  • يعمل ESTACODA_BENCH_COMMAND داخل حاوية مهمة Terminal-Bench. لا تجعله يشير إلى node_modules الخاصة بـ macOS، أو binaries خاصة بالمضيف، أو مسار checkout غير موجود داخل الحاوية. استخدم runtime مبنيًا لـ Linux أو ابن/ثبّت EstaCoda داخل الحاوية.
  • تحتاج تشغيلات النموذج الحية إلى إعداد provider صريح: model id، credentials، temperature، وأي max-token setting. لا تعتمد على real user ~/.estacoda home.
  • بعض providers تفرض قيمة temperature محددة. سجّل القيمة الفعلية واضبط ESTACODA_BENCH_TEMPERATURE على قيمة يدعمها provider.
  • قد تحتاج المهام الطويلة إلى provider-loop budgets صريحة. استخدم ESTACODA_BENCH_MAX_PROVIDER_ITERATIONS وESTACODA_BENCH_MAX_PROVIDER_TOOL_CALLS وESTACODA_BENCH_MAX_PROVIDER_WALL_CLOCK_MS عندما تكون هذه الحدود جزءًا من run configuration.
  • في one-task probes، فضّل تمرير ESTACODA_BENCH_TASK_ID إذا لم يمرر Harbor task identity إلى installed-agent context.

Full Baseline​

بعد نجاح smoke، شغّل baseline الكامل لـ Terminal-Bench 2.0 بالإعدادات نفسها:

export ESTACODA_BENCH_MODEL="anthropic/claude-sonnet"
export ESTACODA_BENCH_HOME="/tmp/estacoda-home"
export ESTACODA_BENCH_TEMPERATURE="0"
export PYTHONPATH="/path/to/estacoda:${PYTHONPATH:-}"

harbor run \
-d terminal-bench/terminal-bench-2 \
-a benchmarks.terminal_bench.estacoda_harbor_agent:EstaCodaAgent \
--artifact /tmp/estacoda-terminal-bench

أبلِغ عن:

  • إصدار EstaCoda وgit commit
  • model provider وmodel id
  • اسم benchmark وإصداره
  • عدد المهام وعدد المحاولات
  • temperature وإعداد max tokens
  • pass rate
  • median wall-clock time
  • median estimated cost per task
  • median provider calls وtool calls لكل مهمة
  • الأمر الدقيق ومتغيرات البيئة

استخدم صياغة محافظة: baseline مبكر، وليس ادعاء leaderboard.

عند تشغيل adapter من source checkout محلي، اجعل PYTHONPATH يشير إلى checkout root. استخدم --artifact /tmp/estacoda-terminal-bench كي يجمع Harbor artifacts الخاصة بـ EstaCoda.

قاعدة المقارنة​

قارِن:

same model in EstaCoda
vs
same model in another baseline agent

لا تصغ النتيجة باعتبارها EstaCoda ضد نموذج. الهدف هو عزل قيمة runtime.

لا تضبط السلوك لأجل benchmark​

بعد smoke ذي الخمس مهام، أصلح فقط أخطاء harness أو runtime. لا تضف prompts خاصة بالمهام، أو فروعًا على أسماء المهام، أو أدوات benchmark-only، أو حالات خاصة لـ Terminal-Bench.

Artifacts​

استخدم --out <dir> كالنمط المختصر canonical لـ artifacts. يمكن لـ harnesses التي تحتاج مسارات دقيقة تمرير --json-output <path> و--event-log <path> بدلًا من ذلك؛ ويبقى stdout وstderr عبر --out أو artifact directory الافتراضي المشتق.

يكتب كل estacoda bench run:

Artifactالمعنى
summary.jsonrun manifest يحتوي benchmark identity وEstaCoda identity وحالة التنفيذ وإعدادات النموذج والمقاييس ومسارات artifacts والجواب النهائي وتفاصيل الفشل
events.ndjson أو مسار --event-log الصريحstream أحداث runtime بعد redaction
stdout.txtملخص تشغيل وجواب نهائي بعد redaction
stderr.txtرسالة فشل بعد redaction عند وجودها

الحقل estimatedCostUsd موجود دائمًا وقد يكون null.

العزل​

يستخدم benchmark mode سياسة container-benchmark:

  • workspace صريح
  • workspace trust محصور بهذا التشغيل
  • لا توجد interactive approval prompts
  • hard-deny command floor يبقى فعالًا
  • لا وصول إلى real user home إلا إذا مُرّر صراحة
  • لا memory أو session carryover افتراضيًا
  • artifacts بعد redaction افتراضيًا

استخدم /tmp/estacoda-home أو isolated-home الافتراضي في المحول للتشغيلات العامة. لا تستخدم real ~/.estacoda home لـ benchmarks قابلة للإعادة.

SWE-bench لاحقًا​

شغّل SWE-bench بعد Terminal-Bench. ابدأ بـ SWE-bench Lite، ثم SWE-bench Verified عندما تصبح EstaCoda موثوقة في فحص issues وrepos، وتعديل الملفات، وتشغيل الاختبارات، وإنتاج diffs نهائية، وتجنب التغييرات غير المتعلقة.