Samotná postavička chleba z loga CRUMB: usmiaty krajec chleba s odhryznutým pravým horným rohom
Späť do sály

CRUMB

Generative Game Studio · Demo

Od jednovetého nápadu na hru k hrateľnému návrhu, s prácou agentov na očiach a otvorenou zásahom.

CRUMB je multiagentový štúdiový harness na prototypovanie casual hier.

Návrh a vývoj · vytvorené s kódovacími agentmi AI

  • CLILokálne demo
  • Web StudioLokálne demo

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

Agenti, ktorí hru stavajú, oddelene od dokladov, ktoré ju posudzujú.

Lokálne demo štúdia, ktoré vedie jednovetý nápad na hru cez špecifikáciu, build a kontroly vykonania. Každý krok skončí v prepise JSONL, čistý reducer rozhoduje o ďalších efektoch a vedľajšie účinky vykonáva len dispatcher. QA vykonania a rozhodnutie modelu sa držia oddelene, aby sa rozhodlo medzi úspechom, prepracovaním, opravou a ľudským riadením.

Stačí hru opísať jednou vetou a agenti Claude Code, Codex a Gemini CLI spolupracujú v rade Planner → Builder → deterministické QA → Verifier, zatiaľ čo CRUMB Studio ukazuje udalosti, postup a artefakty a prijíma zásahy v prirodzenom jazyku.

Demo, ktoré sa naklonuje z verejného repozitára a spustí lokálne.

Mapa systému · nakreslené podľa ciest kódu vo verejnom commite f5e17c0
Systém štúdia CRUMBČlovek v Studiu navrhuje hru a riadi ju a Studio zapisuje príkazy do inboxu. Koordinátor odovzdáva reduceru po poradí nové udalosti z inboxu a prepisu; čistý reducer rozhoduje o stave a ďalších efektoch a vedľajšie účinky vykonáva len dispatcher. Špecifikácia Plannera, build a artefakty Buildera, výsledok QA vykonania a posúdenie Verifiera sa stávajú udalosťami prepisu. Verifier dostáva len premietnuté doklady a reducer jeho skóre kontroluje a opravuje podľa výsledku QA: PASS reláciu ukončí, PARTIAL čaká na človeka a všetko ostatné sa vracia na prepracovanie alebo opravu.Nápad na hru · riadenieČlovek, spúšťa lokálnepackages/studioZobrazenie udalostí · artefaktovZápis príkazov do inboxusrc/transcripttranscript.jsonl · append-onlysrc/loop/coordinator.tsSlučka udalostí · replay · tailsrc/reducerStav → ďalšie efektySmerovanie podľa rozhodnutiasession doneKoniec · PASS alebo dôvod zastaveniasrc/dispatcher/live.tsVykonávanie efektov · spúšťanie aktérovProjekcia vstupu sudcumodel-config · presetAktér → harness · modelagent actor · CLIPlanner Lead · špecifikáciaBuilder · píše hruartifacts/Súbory hrydispatcher/qa-runner.tsQA vykonania · kontrolyVerifier actorVerifier · rozhodnutie modelusrc/validatorOchrana proti klamaniu · oprava skóreĽudia · StudioRiadenie udalostíprepis je zdrojom stavuPracovní agenti · artefaktyOverenie · rozhodnutie1nápad · riadenie2udalosti user3redukcia v poradí4efekty5nastavenie aktéra6spustenie Plannera7spec8spustenie Buildera9súbory10záznam buildu11qa_check12čo sa spúšťa13qa.result1qa.result2len doklady3vstup sudcu4judge.score5skóre · doklady QA6opravené rozhodnutie7koniec1opravené rozhodnutie2kontrola PARTIAL3prepracovanie · oprava4koniec5nápad · riadenie1nové udalosti · replay2redukcia v poradí3čítanie · SSE

Od nápadu k hraniu

Nápad sa stane špecifikáciou, buildom a behom QA vykonania. Každý krok prechádza prepisom; aktéri sa navzájom nevolajú.

  1. Nápad na hru · riadenieSpustenie · rozhodnutie: nápad · riadenieZápis príkazov do inboxupackages/studio

    Jednovetý nápad na hru a riadenie v prirodzenom jazyku sa zadávajú v Studiu, ktoré zapisuje príkazy do inboxu. Studio nikdy neupravuje prepis priamo.

  2. Zápis príkazov do inboxupackages/studioDáta: udalosti userSlučka udalostí · replay · tailsrc/loop/coordinator.ts

    Koordinátor číta príkazy z inboxu a zaznamenáva ich do prepisu ako udalosti user.

  3. Slučka udalostí · replay · tailsrc/loop/coordinator.tsSpustenie · rozhodnutie: redukcia v poradíStav → ďalšie efektysrc/reducer

    Živé udalosti sa redukujú po jednej z frontu, so zachovaním poradia efektov každej udalosti; samotný dispatch beží asynchrónne.

  4. Stav → ďalšie efektysrc/reducerSpustenie · rozhodnutie: efektyVykonávanie efektov · spúšťanie aktérovsrc/dispatcher/live.ts

    Reducer je čistá funkcia, ktorá rozhoduje len o stave a ďalších efektoch: cieľ vyberie Planner, špecifikácia Builder, build qa_check.

  5. Aktér → harness · modelmodel-config · presetSpustenie · rozhodnutie: nastavenie aktérasrc/dispatcher/live.ts

    Ktorý harness, poskytovateľ a model spustí aktéra, sa určuje v poradí prepínač CLI > konfigurácia > preset > ambient > fallback. Aktér nie je pevným poskytovateľom.

  6. Vykonávanie efektov · spúšťanie aktérovsrc/dispatcher/live.tsSpustenie · rozhodnutie: spustenie PlanneraPlanner Lead · špecifikáciaagent actor · CLI

    Dispatcher spustí Planner s premietnutým vstupom. Podmienený prieskum pokračuje cez výskumný plán Plannera a odovzdanie dokladov, na tejto mape zbalené.

  7. Planner Lead · špecifikáciaagent actor · CLIDáta: spectranscript.jsonl · append-onlysrc/transcript

    Špecifikácia Plannera sa stane udalosťou prepisu a reducer podľa nej vyberie Builder. Aktéri sa navzájom nevolajú.

  8. Vykonávanie efektov · spúšťanie aktérovsrc/dispatcher/live.tsSpustenie · rozhodnutie: spustenie BuilderaBuilder · píše hruagent actor · CLI

    Dispatcher spustí Builder. Ak ten istý aktér opakovane zlyháva, otvorí sa circuit a vymení adaptér, a ak zlyhania pokračujú, všetko sa zastaví.

  9. Builder · píše hruagent actor · CLIDáta: súborySúbory hryartifacts/

    Builder zapíše vstupný súbor, zdroje a assety ako artefakty.

  10. Builder · píše hruagent actor · CLIDáta: záznam buildutranscript.jsonl · append-onlysrc/transcript

    Udalosť build a artifact.created sa zaznamenajú do prepisu s identitou artefaktu.

  11. Vykonávanie efektov · spúšťanie aktérovsrc/dispatcher/live.tsSpustenie · rozhodnutie: qa_checkQA vykonania · kontrolydispatcher/qa-runner.ts

    Po udalosti build vyšle reducer efekt qa_check s identitou artefaktu a buildu a podmienkami prijatia a dispatcher ho vykoná.

  12. Súbory hryartifacts/Dáta: čo sa spúšťaQA vykonania · kontrolydispatcher/qa-runner.ts

    QA vykonania spúšťa skutočný artefakt s kontrolami kódu a prehliadača. Predvolený časový limit 120 sekúnd je hodnotou konfigurácie.

  13. QA vykonania · kontrolydispatcher/qa-runner.tsDáta: qa.resulttranscript.jsonl · append-onlysrc/transcript

    Úspech alebo neúspech, výsledok sa zaznamená ako systémová udalosť qa.result. Aj keď kontrola vyhodí výnimku, zaznamená sa výsledok s poľami zlyhania.

Hranica dôvery overenia

QA vykonania je dokladom zo skutočného spustenia artefaktu; Verifier je model posudzujúci premietnuté doklady. Reducer oboje zosúladí, kým zvolí ďalšiu cestu.

  1. QA vykonania · kontrolydispatcher/qa-runner.tsDáta: qa.resulttranscript.jsonl · append-onlysrc/transcript

    Úspech alebo neúspech, výsledok sa zaznamená ako systémová udalosť qa.result. Aj keď kontrola vyhodí výnimku, zaznamená sa výsledok s poľami zlyhania.

  2. transcript.jsonl · append-onlysrc/transcriptDáta: len dokladyProjekcia vstupu sudcusrc/dispatcher/live.ts

    Vstup Verifiera sa premieta z najnovších goal, spec, build, qa.result a artifact.created a vybraných dokladov z prieskumu. Zužuje kontext; nedokazuje izoláciu ani absenciu úniku.

  3. Projekcia vstupu sudcusrc/dispatcher/live.tsDáta: vstup sudcuVerifier · rozhodnutie modeluVerifier actor

    Dispatcher spustí Verifier s premietnutým vstupom.

  4. Verifier · rozhodnutie modeluVerifier actorDáta: judge.scoretranscript.jsonl · append-onlysrc/transcript

    Rozhodnutie Verifiera sa zaznamená ako udalosť judge.score. Ide o úsudok modelu, nie o fakt o vykonaní.

  5. Stav → ďalšie efektysrc/reducerSpustenie · rozhodnutie: skóre · doklady QAOchrana proti klamaniu · oprava skóresrc/validator

    Pri judge.score ho reducer odovzdá kontrole ochrany proti klamaniu spolu s výsledkom QA, poskytovateľom Buildera a výskumným plánom a dokladmi.

  6. Ochrana proti klamaniu · oprava skóresrc/validatorDáta: opravené rozhodnutieSmerovanie podľa rozhodnutiasrc/reducer

    PASS bez úspešného vykonania sa zmení na FAIL a skóre súvisiace s vykonaním sa opraví podľa deterministického QA. Ostatné pravidlá sú podmienené opravy, nie všeobecný dôkaz pravdivosti.

  7. Smerovanie podľa rozhodnutiasrc/reducerDáta: koniecKoniec · PASS alebo dôvod zastaveniasession done

    PASS ukončí reláciu ako done. Zastavenia pre rozpočet a circuit tiež končia ako done, ale ponechávajú si dôvod zastavenia, takže done neznamená vždy PASS.

Zlyhania a ľudské riadenie

PARTIAL ide k človeku, Critical na prepracovanie, Important či Minor na opravu a zastavenia pre rozpočet alebo circuit zanechávajú dôvod zastavenia.

  1. Ochrana proti klamaniu · oprava skóresrc/validatorDáta: opravené rozhodnutieSmerovanie podľa rozhodnutiasrc/reducer

    PASS bez úspešného vykonania sa zmení na FAIL a skóre súvisiace s vykonaním sa opraví podľa deterministického QA. Ostatné pravidlá sú podmienené opravy, nie všeobecný dôkaz pravdivosti.

  2. Smerovanie podľa rozhodnutiasrc/reducerSpustenie · rozhodnutie: kontrola PARTIALNápad na hru · riadenie

    PARTIAL čaká na kontrolu človekom.

  3. Smerovanie podľa rozhodnutiasrc/reducerSpustenie · rozhodnutie: prepracovanie · opravasrc/dispatcher/live.ts

    Z FAIL a REJECT sa Critical vracia k Plannerovi na prepracovanie a Important či Minor k Builderovi ako spätná väzba na opravu; všetko beží ako efekty dispatchera.

  4. Smerovanie podľa rozhodnutiasrc/reducerDáta: koniecKoniec · PASS alebo dôvod zastaveniasession done

    PASS ukončí reláciu ako done. Zastavenia pre rozpočet a circuit tiež končia ako done, ale ponechávajú si dôvod zastavenia, takže done neznamená vždy PASS.

  5. Nápad na hru · riadenieSpustenie · rozhodnutie: nápad · riadenieZápis príkazov do inboxupackages/studio

    Jednovetý nápad na hru a riadenie v prirodzenom jazyku sa zadávajú v Studiu, ktoré zapisuje príkazy do inboxu. Studio nikdy neupravuje prepis priamo.

Prehrávanie a pozorovanie

Obnovenie stavu z prepisu nespúšťa žiadne efekty a Studio číta rovnaký záznam, aby ho zobrazilo.

  1. transcript.jsonl · append-onlysrc/transcriptDáta: nové udalosti · replaySlučka udalostí · replay · tailsrc/loop/coordinator.ts

    Writer overí schému, pridelí ULID a čas a pripíše záznam. Pri prehrávaní sa minulé udalosti len redukujú; ich efekty sa znova nespúšťajú.

  2. Slučka udalostí · replay · tailsrc/loop/coordinator.tsSpustenie · rozhodnutie: redukcia v poradíStav → ďalšie efektysrc/reducer

    Živé udalosti sa redukujú po jednej z frontu, so zachovaním poradia efektov každej udalosti; samotný dispatch beží asynchrónne.

  3. transcript.jsonl · append-onlysrc/transcriptPozorovanie · správa: čítanie · SSEZobrazenie udalostí · artefaktovpackages/studio

    Studio číta prepis a artefakty a cez SSE zobrazuje postup, metriky a artefakty. Nejde o telemetriu posielanú vzdialenej službe.

Každé spojenie s rovnakou váhou. Výber toku zvýrazní len jeho cestu s očíslovanými krokmi.

  • Plná čiara · smer vstupu, výsledkov a záznamov
  • Prerušovaná čiara · spustenie, rozhodnutie, požiadavka
  • Dlhé bodky · pozorovanie a vykazovanie, oddelene od rozhodnutia
  • Hrubá čierna čiara · zvolený tok; čísla udávajú poradie
  • Rámček · hranica kódu alebo stavu, pomenovaná v hlavičke
  • Vnútorný štítok · komponent tejto hranice
  • Bodkovaný rámček · mimo tejto hranice
  • Oranžový obrys · miesto, kde rozhoduje model
  • Slučka udalostí · reducer · dispatcher
  • Záznamy · nastavenie · artefakty
  • Deterministické kontroly · oprava
  • Studio · aktéri

Nakreslené podľa ciest kódu vo verejnom commite f5e17c0. Aktéri sú roly počas behu, odlišné od kódovacích agentov použitých na stavbu tohto repozitára.

Zdroj stavu
Prepis je zdrojom stavu a reducer je čistá funkcia. Vedľajšie účinky (spúšťanie aktérov, QA, zápis súborov) vykonáva len dispatcher, takže prehrávanie obnoví stav bez efektov.
Čo prehrávanie pokrýva
Prehrávanie dáva rovnaký stav; nerobí deterministickým generovanie LLM ani správanie prehliadača a siete.
Čo rozhodnutie pokrýva
QA vykonania overuje len nastavené kontroly a skóre Verifiera je jedným kanálom dokladov. Ani jedno nemeria každé správanie hry, zábavnosť ani spokojnosť používateľov.