شخصية الخبز وحدها من شعار CRUMB: شريحة خبز مبتسمة قُضمت من زاويتها العلوية اليمنى
العودة إلى القاعة

CRUMB

Generative Game Studio · Demo

من فكرة لعبة في سطر واحد إلى مسوّدة قابلة للعب، مع عمل الوكلاء ظاهرًا ومتاحًا للتدخل.

CRUMB إطار تشغيل لاستوديو متعدد الوكلاء لنمذجة الألعاب الخفيفة.

التصميم والتطوير · بُني بوكلاء البرمجة بالذكاء الاصطناعي

  • CLIعرض محلي
  • استوديو الويبعرض محلي

CRUMB vocabulary

Lens
Game Pipeline
Build
Runtime Verification
Control Plane
Repair
Evidence
  1. spec
  2. build
  3. artifact
  1. qa check
  2. ac predicate
  3. verifier
  1. routing
  2. circuit breaker
  3. budget
  4. intervention
  1. transcript
  2. anti-deception
  3. studio

Spec: planner-lead · goal · question.socratic · step.design · spec · spec.update · acceptance_criteria · researcher · step.research.video · step.research_plan · ac_predicates · D1 spec_fit · research_plan_violationBuild: builder · build · spawn · sandwich.assembled.md · --append-system-prompt · agent-workspace · buildBuilderInputBundle · Phaser CDN · JuiceManager · PER_SPAWN_TIMEOUT_MS · juice_manager_missingArtifact: artifact.created · sha256 · artifacts/game.html · artifacts/game/index.html · pickEntry · artifact-watcher · version.released · manifest.toml · loc_own_bytes · VersionsQA Check: Phaser CDN · pickEntry · loc_own_bytes · qa_check · runQaCheck · qa.result · exec_exit_code · lint_passed · first_interaction · cross_browser_smoke · PLAYWRIGHT SMOKE · runtime_progress · qa-check-effect@v1 · QA_CHECK_TIMEOUT_MS · D2 exec · D6 portability · ac_results · ac_pass_count · deterministic · PASS WITHOUT EXEC · runtime_stalled_under_input · runtime_player_below_ground · forged_qa_result_attemptAC Predicate: acceptance_criteria · ACPredicateItem · predicate_js · runACInteractive · ac_predicates · ac_results · ac_pass_count · ACPredicateLedgerItem · verify_pass_with_ac_failureVerifier: D2 exec · D6 portability · verifier · judge.score · CourtEval · grader · critic · defender · regrader · step.judge · D1 spec_fit · verifier-llm · combineDimScore · PARTIAL · deviation · suggested_change · user_approve_partial · self_bias_risk_same_provider · cross_provider · buildVerifierInputBundle · ScorecardRouting: spawn · routeOnVerdict · verdict_pass · deviation · Critical · Important · Minor · suggested_change · rollback · handoff.rollback · sandwich_append · dispatch · adapter_swapped · user.veto · reduce(state, event)Circuit Breaker: circuit_breaker · CIRCUIT_OPEN_AT · adapter_override · adapter_swapped · circuit_open_auto_respawn · builder_circuit_open · claude-local · probeAdapter · adapter_substituted · intended_model · /swap · /reset-circuitBudget: spec.update · QA_CHECK_TIMEOUT_MS · builder_circuit_open · RESPEC_MAX · VERIFY_MAX · too_many_verify · TOKEN_BUDGET_HARD · token_exhausted · ratchet_revert · adaptive_stop · STUCK_THRESHOLD · budget_exhausted · PER_SPAWN_TIMEOUT_MSIntervention: PARTIAL · sandwich_append · STUCK_THRESHOLD · user.intervene · user.veto · user.approve · user.pause · user_approve_partial · ack · inbox.txt · parseInboxLine · /swap · /reset-circuit · consumed_intervene_ids · /api/sessions/:id/inboxTranscript: version.released · qa.result · qa-check-effect@v1 · dispatch · adapter_substituted · intended_model · ack · consumed_intervene_ids · transcript.jsonl · TranscriptWriter · ULID · O_APPEND · message.schema.json · reduce(state, event) · PURE REDUCER · REPLAY · replay_end_offset · CrumbState · parent_event_id · deterministic · audit_violations · applyEventFirewall · useTranscriptStream · otel.jsonlAnti-Deception: step.research_plan · buildBuilderInputBundle · JuiceManager · verify_pass_with_ac_failure · checkAntiDeception · PASS WITHOUT EXEC · self_bias_risk_same_provider · cross_provider · research_plan_violation · juice_manager_missing · runtime_stalled_under_input · runtime_player_below_ground · audit_violations · applyEventFirewall · forged_qa_result_attempt · buildVerifierInputBundleStudio: @crumb/studio · /api/stream · text/event-stream · useTranscriptStream · dockview-react · Pipeline · Scorecard · Waterfall · Versions · /api/sessions/:id/inbox · otel.jsonl

الوكلاء الذين يبنون اللعبة، بمعزل عن الأدلة التي تحكم عليها.

عرض استوديو محلي يمرّر فكرة لعبة من سطر واحد عبر المواصفة والبناء وفحوص التنفيذ. تصل كل خطوة إلى transcript بصيغة JSONL، ويقرر reducer نقي الآثار التالية، ولا ينفّذ الآثار الجانبية إلا الـ dispatcher. ويُفصل QA التنفيذ عن حكم النموذج للاختيار بين النجاح وإعادة التصميم والإصلاح والتوجيه البشري.

اطرح فكرة لعبة في سطر واحد فيتعاون وكلاء Claude Code وCodex وGemini CLI عبر Planner → Builder → QA حتمي → Verifier، بينما يعرض CRUMB Studio الأحداث والتقدم والمُخرَجات ويقبل التدخل باللغة الطبيعية.

عرض تنسخه من المستودع العام وتشغّله محليًا.

خريطة النظام · مرسومة من مسارات الشيفرة في الإيداع العام f5e17c0
نظام استوديو CRUMBيطرح شخص فكرة لعبة ويوجّهها من Studio، ويكتب Studio الأوامر في inbox. ويمرّر الـ coordinator الأحداث الجديدة من inbox والـ transcript إلى الـ reducer بالترتيب، فيقرر الـ reducer النقي الحالة والآثار التالية، ولا ينفّذ الآثار الجانبية إلا الـ dispatcher. وتصبح مواصفة Planner وبناء Builder ومُخرَجاته ونتيجة QA التنفيذ وحكم Verifier كلها أحداثًا في الـ transcript. ولا يتلقى Verifier إلا أدلة مُسقَطة، ويفحص الـ reducer درجته ويصححها مقابل نتيجة QA: ينهي PASS الجلسة، وينتظر PARTIAL شخصًا، وأي شيء آخر يعود لإعادة التصميم أو الإصلاح.فكرة اللعبة · التوجيهشخص، يعمل محليًاpackages/studioعرض الأحداث · المُخرَجاتكتابة أوامر inboxsrc/transcripttranscript.jsonl · append-onlysrc/loop/coordinator.tsحلقة الأحداث · replay · tailsrc/reducerالحالة → الآثار التاليةتوجيه الحكمsession doneانتهى · PASS أو سبب التوقفsrc/dispatcher/live.tsتنفيذ الآثار · spawn الـ actorsإسقاط مُدخلات الحكمmodel-config · presetactor → إطار التشغيل · النموذجagent actor · CLIPlanner Lead · المواصفةBuilder · يكتب اللعبةartifacts/ملفات اللعبةdispatcher/qa-runner.tsQA التنفيذ · الفحوصVerifier actorVerifier · حكم النموذجsrc/validatorمكافحة الخداع · تصحيح الدرجةالأشخاص · Studioالتحكم في الأحداثالـ transcript مصدر الحالةالوكلاء العاملون · المُخرَجاتالتحقق · القرار1الطرح · التوجيه2أحداث user3reduce بالترتيب4الآثار5إعداد الـ actor6تشغيل Planner7spec8تشغيل Builder9 الملفات · Builder · يكتب اللعبة → ملفات اللعبة910سجل البناء11qa_check12ما يُشغَّل13qa.result1qa.result2الأدلة فقط3مُدخلات الحكم4judge.score5الدرجة · أدلة QA6الحكم المصحَّح7انتهى1الحكم المصحَّح2فحص PARTIAL3إعادة التصميم · الإصلاح4انتهى5الطرح · التوجيه1أحداث جديدة · replay2reduce بالترتيب3القراءة · SSE

من الفكرة إلى اللعب

تصبح الفكرة مواصفةً وبناءً وتشغيلًا لـ QA التنفيذ. وتمر كل خطوة عبر الـ transcript، ولا يستدعي الـ actors بعضهم بعضًا.

  1. فكرة اللعبة · التوجيهتشغيل · حكم: الطرح · التوجيهكتابة أوامر inboxpackages/studio

    تُدخَل فكرة لعبة من سطر واحد والتوجيه باللغة الطبيعية في Studio، الذي يكتب الأوامر في inbox. ولا يعدّل Studio الـ transcript مباشرة أبدًا.

  2. كتابة أوامر inboxpackages/studioبيانات: أحداث userحلقة الأحداث · replay · tailsrc/loop/coordinator.ts

    يقرأ الـ coordinator أوامر inbox ويسجّلها في الـ transcript أحداثًا من نوع user.

  3. حلقة الأحداث · replay · tailsrc/loop/coordinator.tsتشغيل · حكم: reduce بالترتيبالحالة → الآثار التاليةsrc/reducer

    تمر الأحداث الحية عبر reduce واحدًا تلو الآخر من طابور، مع الحفاظ على ترتيب آثار كل حدث، أما الـ dispatch نفسه فيعمل بشكل غير متزامن.

  4. الحالة → الآثار التاليةsrc/reducerتشغيل · حكم: الآثارتنفيذ الآثار · spawn الـ actorssrc/dispatcher/live.ts

    الـ reducer دالة نقية لا تقرر إلا الحالة والآثار التالية: الـ goal يختار Planner، والـ spec يختار Builder، والـ build يختار qa_check.

  5. actor → إطار التشغيل · النموذجmodel-config · presetتشغيل · حكم: إعداد الـ actorsrc/dispatcher/live.ts

    يُحدَّد أي إطار تشغيل ومزوّد ونموذج يشغّل الـ actor بالترتيب: علم CLI > الإعداد > preset > المحيط > fallback. والـ actor ليس مزوّدًا ثابتًا.

  6. تنفيذ الآثار · spawn الـ actorssrc/dispatcher/live.tsتشغيل · حكم: تشغيل PlannerPlanner Lead · المواصفةagent actor · CLI

    يشغّل الـ dispatcher الـ Planner بمُدخلات مُسقَطة. ويستمر البحث المشروط عبر خطة البحث لدى Planner وتسليم الأدلة، وهو مطوي في هذه الخريطة.

  7. Planner Lead · المواصفةagent actor · CLIبيانات: spectranscript.jsonl · append-onlysrc/transcript

    تصبح مواصفة Planner حدثًا في الـ transcript، ويختار الـ reducer منها Builder. ولا يستدعي الـ actors بعضهم بعضًا.

  8. تنفيذ الآثار · spawn الـ actorssrc/dispatcher/live.tsتشغيل · حكم: تشغيل BuilderBuilder · يكتب اللعبةagent actor · CLI

    يشغّل الـ dispatcher الـ Builder. وإذا ظل الـ actor نفسه يفشل، ينفتح circuit ويبدّل الـ adapter، ويتوقف إن استمرت الإخفاقات.

  9. Builder · يكتب اللعبةagent actor · CLIبيانات: الملفاتملفات اللعبةartifacts/

    يكتب Builder ملف الدخول والمصادر والأصول بوصفها مُخرَجات.

  10. Builder · يكتب اللعبةagent actor · CLIبيانات: سجل البناءtranscript.jsonl · append-onlysrc/transcript

    يُسجَّل حدث build وartifact.created في الـ transcript مع هوية المُخرَج.

  11. تنفيذ الآثار · spawn الـ actorssrc/dispatcher/live.tsتشغيل · حكم: qa_checkQA التنفيذ · الفحوصdispatcher/qa-runner.ts

    بعد حدث build، يُصدر الـ reducer أثر qa_check يحمل هوية المُخرَج والبناء وشروط القبول، وينفّذه الـ dispatcher.

  12. ملفات اللعبةartifacts/بيانات: ما يُشغَّلQA التنفيذ · الفحوصdispatcher/qa-runner.ts

    يشغّل QA التنفيذ المُخرَج الفعلي بفحوص الشيفرة والمتصفح. ومهلة 120 ثانية الافتراضية قيمة إعداد.

  13. QA التنفيذ · الفحوصdispatcher/qa-runner.tsبيانات: qa.resulttranscript.jsonl · append-onlysrc/transcript

    نجاحًا كان أو إخفاقًا، تُسجَّل النتيجة حدثًا من نوع system qa.result. وحتى إن رمى الفحص استثناءً، تُسجَّل نتيجة بالحقول الفاشلة.

حدّ الثقة في التحقق

QA التنفيذ دليل من تشغيل المُخرَج فعلًا، وVerifier نموذج يحكم على أدلة مُسقَطة. ويوفّق الـ reducer بين الاثنين قبل اختيار المسار التالي.

  1. QA التنفيذ · الفحوصdispatcher/qa-runner.tsبيانات: qa.resulttranscript.jsonl · append-onlysrc/transcript

    نجاحًا كان أو إخفاقًا، تُسجَّل النتيجة حدثًا من نوع system qa.result. وحتى إن رمى الفحص استثناءً، تُسجَّل نتيجة بالحقول الفاشلة.

  2. transcript.jsonl · append-onlysrc/transcriptبيانات: الأدلة فقطإسقاط مُدخلات الحكمsrc/dispatcher/live.ts

    تُسقَط مُدخلات Verifier من أحدث goal وspec وbuild وqa.result وartifact.created مع أدلة بحث مختارة. وهذا يضيّق السياق، ولا يُثبت العزل أو انعدام التسرب.

  3. إسقاط مُدخلات الحكمsrc/dispatcher/live.tsبيانات: مُدخلات الحكمVerifier · حكم النموذجVerifier actor

    يشغّل الـ dispatcher الـ Verifier بالمُدخلات المُسقَطة.

  4. Verifier · حكم النموذجVerifier actorبيانات: judge.scoretranscript.jsonl · append-onlysrc/transcript

    يُسجَّل حكم Verifier حدثًا من نوع judge.score. وهو حكم نموذج، لا حقيقة عن التنفيذ.

  5. الحالة → الآثار التاليةsrc/reducerتشغيل · حكم: الدرجة · أدلة QAمكافحة الخداع · تصحيح الدرجةsrc/validator

    عند judge.score، يمرّره الـ reducer إلى فحص مكافحة الخداع مع نتيجة QA ومزوّد Builder وخطة البحث وأدلته.

  6. مكافحة الخداع · تصحيح الدرجةsrc/validatorبيانات: الحكم المصحَّحتوجيه الحكمsrc/reducer

    يصبح PASS بلا تنفيذ ناجح FAIL، وتُصحَّح الدرجة المتعلقة بالتنفيذ من QA الحتمي. أما القواعد الأخرى فتصحيحات مشروطة، لا إثبات عام للصدق.

  7. توجيه الحكمsrc/reducerبيانات: انتهىانتهى · PASS أو سبب التوقفsession done

    ينهي PASS الجلسة بحالة done. وتنتهي توقفات الميزانية والـ circuit أيضًا بحالة done لكنها تحتفظ بسبب التوقف، فـ done ليس دائمًا PASS.

الإخفاق والتوجيه البشري

يذهب PARTIAL إلى شخص، وCritical إلى إعادة التصميم، وImportant أو Minor إلى الإصلاح، وتترك توقفات الميزانية أو الـ circuit سببًا للتوقف.

  1. مكافحة الخداع · تصحيح الدرجةsrc/validatorبيانات: الحكم المصحَّحتوجيه الحكمsrc/reducer

    يصبح PASS بلا تنفيذ ناجح FAIL، وتُصحَّح الدرجة المتعلقة بالتنفيذ من QA الحتمي. أما القواعد الأخرى فتصحيحات مشروطة، لا إثبات عام للصدق.

  2. توجيه الحكمsrc/reducerتشغيل · حكم: فحص PARTIALفكرة اللعبة · التوجيه

    ينتظر PARTIAL شخصًا ليفحص.

  3. توجيه الحكمsrc/reducerتشغيل · حكم: إعادة التصميم · الإصلاحsrc/dispatcher/live.ts

    من بين FAIL وREJECT، يعود Critical إلى Planner لإعادة التصميم، ويذهب Important أو Minor إلى Builder ملاحظاتٍ للإصلاح، وكلها تُنفَّذ آثارًا للـ dispatcher.

  4. توجيه الحكمsrc/reducerبيانات: انتهىانتهى · PASS أو سبب التوقفsession done

    ينهي PASS الجلسة بحالة done. وتنتهي توقفات الميزانية والـ circuit أيضًا بحالة done لكنها تحتفظ بسبب التوقف، فـ done ليس دائمًا PASS.

  5. فكرة اللعبة · التوجيهتشغيل · حكم: الطرح · التوجيهكتابة أوامر inboxpackages/studio

    تُدخَل فكرة لعبة من سطر واحد والتوجيه باللغة الطبيعية في Studio، الذي يكتب الأوامر في inbox. ولا يعدّل Studio الـ transcript مباشرة أبدًا.

إعادة التشغيل والملاحظة

إعادة بناء الحالة من الـ transcript لا تنفّذ أي آثار، ويقرأ Studio السجل نفسه ليعرضه.

  1. transcript.jsonl · append-onlysrc/transcriptبيانات: أحداث جديدة · replayحلقة الأحداث · replay · tailsrc/loop/coordinator.ts

    يتحقق الـ writer من الـ schema، ويعيّن ULID ووقتًا، ويُلحق. وعند الـ replay، تُمرَّر الأحداث الماضية عبر reduce فقط ولا تُنفَّذ آثارها مجددًا.

  2. حلقة الأحداث · replay · tailsrc/loop/coordinator.tsتشغيل · حكم: reduce بالترتيبالحالة → الآثار التاليةsrc/reducer

    تمر الأحداث الحية عبر reduce واحدًا تلو الآخر من طابور، مع الحفاظ على ترتيب آثار كل حدث، أما الـ dispatch نفسه فيعمل بشكل غير متزامن.

  3. transcript.jsonl · append-onlysrc/transcriptملاحظة · إبلاغ: القراءة · SSEعرض الأحداث · المُخرَجاتpackages/studio

    يقرأ Studio الـ transcript والمُخرَجات ويعرض التقدم والمقاييس والمُخرَجات عبر SSE. وليس قياسًا عن بُعد يُرسل إلى خدمة بعيدة.

كل الروابط بالسماكة نفسها. اختر مسارًا لإبراز طريقه وحده، مع خطوات مرقّمة.

  • خط متصل · اتجاه المُدخلات والنتائج والسجلات
  • خط متقطع · تشغيل، حكم، طلب
  • نقاط طويلة · الملاحظة والإبلاغ، بمعزل عن الحكم
  • خط أسود سميك · المسار المختار، والأرقام تبيّن الترتيب
  • مربع · حدّ شيفرة أو حالة، واسمه في الترويسة
  • شريحة داخلية · مكوّن من ذلك الحد
  • مربع منقّط · خارج ذلك الحد
  • إطار برتقالي · حيث يقرر نموذج
  • حلقة الأحداث · reducer · dispatcher
  • السجلات · الإعداد · المُخرَجات
  • الفحوص الحتمية · التصحيح
  • Studio · الـ actors

مرسومة من مسارات الشيفرة في الإيداع العام f5e17c0. والـ actors أدوار في بيئة التشغيل، تختلف عن وكلاء البرمجة الذين استُخدموا لبناء هذا المستودع.

مصدر الحالة
الـ transcript مصدر الحالة والـ reducer دالة نقية. ولا ينفّذ الآثار الجانبية (تشغيل الـ actors وQA وكتابة الملفات) إلا الـ dispatcher، لذا تعيد إعادة التشغيل بناء الحالة دون آثار.
ما تغطيه إعادة التشغيل
تُنتج إعادة التشغيل الحالة نفسها، ولا تجعل توليدات LLM أو سلوك المتصفح والشبكة حتمية.
ما يغطيه الحكم
لا يفحص QA التنفيذ إلا الفحوص المضبوطة، ودرجة Verifier قناة واحدة من الأدلة. ولا يقيس أيٌّ منهما كل سلوك اللعبة أو متعتها أو رضا المستخدم.