
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.
CRUMB vocabulary
- spec
- build
- artifact
- qa check
- ac predicate
- verifier
- routing
- circuit breaker
- budget
- intervention
- transcript
- anti-deception
- 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.
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ú.
Nápad na hru · riadenieSpustenie · rozhodnutie: nápad · riadenieZápis príkazov do inboxu
packages/studioJednovetý 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.
Zápis príkazov do inboxu
packages/studioDáta: udalosti userSlučka udalostí · replay · tailsrc/loop/coordinator.tsKoordinátor číta príkazy z inboxu a zaznamenáva ich do prepisu ako udalosti user.
Slučka udalostí · replay · tail
src/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.
Stav → ďalšie efekty
src/reducerSpustenie · rozhodnutie: efektyVykonávanie efektov · spúšťanie aktérovsrc/dispatcher/live.tsReducer je čistá funkcia, ktorá rozhoduje len o stave a ďalších efektoch: cieľ vyberie Planner, špecifikácia Builder, build qa_check.
Aktér → harness · model
model-config · presetSpustenie · rozhodnutie: nastavenie aktérasrc/dispatcher/live.tsKtorý 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.
Vykonávanie efektov · spúšťanie aktérov
src/dispatcher/live.tsSpustenie · rozhodnutie: spustenie PlanneraPlanner Lead · špecifikáciaagent actor · CLIDispatcher spustí Planner s premietnutým vstupom. Podmienený prieskum pokračuje cez výskumný plán Plannera a odovzdanie dokladov, na tejto mape zbalené.
Planner Lead · špecifikácia
agent 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ú.
Vykonávanie efektov · spúšťanie aktérov
src/dispatcher/live.tsSpustenie · rozhodnutie: spustenie BuilderaBuilder · píše hruagent actor · CLIDispatcher 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í.
Builder · píše hru
agent actor · CLIDáta: súborySúbory hryartifacts/Builder zapíše vstupný súbor, zdroje a assety ako artefakty.
Builder · píše hru
agent actor · CLIDáta: záznam buildutranscript.jsonl · append-onlysrc/transcriptUdalosť build a artifact.created sa zaznamenajú do prepisu s identitou artefaktu.
Vykonávanie efektov · spúšťanie aktérov
src/dispatcher/live.tsSpustenie · rozhodnutie: qa_checkQA vykonania · kontrolydispatcher/qa-runner.tsPo udalosti build vyšle reducer efekt qa_check s identitou artefaktu a buildu a podmienkami prijatia a dispatcher ho vykoná.
Súbory hry
artifacts/Dáta: čo sa spúšťaQA vykonania · kontrolydispatcher/qa-runner.tsQA vykonania spúšťa skutočný artefakt s kontrolami kódu a prehliadača. Predvolený časový limit 120 sekúnd je hodnotou konfigurácie.
QA vykonania · kontroly
dispatcher/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.
QA vykonania · kontroly
dispatcher/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.
transcript.jsonl · append-only
src/transcriptDáta: len dokladyProjekcia vstupu sudcusrc/dispatcher/live.tsVstup 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.
Projekcia vstupu sudcu
src/dispatcher/live.tsDáta: vstup sudcuVerifier · rozhodnutie modeluVerifier actorDispatcher spustí Verifier s premietnutým vstupom.
Verifier · rozhodnutie modelu
Verifier actorDáta: judge.scoretranscript.jsonl · append-onlysrc/transcriptRozhodnutie Verifiera sa zaznamená ako udalosť judge.score. Ide o úsudok modelu, nie o fakt o vykonaní.
Stav → ďalšie efekty
src/reducerSpustenie · rozhodnutie: skóre · doklady QAOchrana proti klamaniu · oprava skóresrc/validatorPri 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.
Ochrana proti klamaniu · oprava skóre
src/validatorDáta: opravené rozhodnutieSmerovanie podľa rozhodnutiasrc/reducerPASS 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.
Smerovanie podľa rozhodnutia
src/reducerDáta: koniecKoniec · PASS alebo dôvod zastaveniasession donePASS 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.
Ochrana proti klamaniu · oprava skóre
src/validatorDáta: opravené rozhodnutieSmerovanie podľa rozhodnutiasrc/reducerPASS 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.
Smerovanie podľa rozhodnutia
src/reducerSpustenie · rozhodnutie: kontrola PARTIALNápad na hru · riadeniePARTIAL čaká na kontrolu človekom.
Smerovanie podľa rozhodnutia
src/reducerSpustenie · rozhodnutie: prepracovanie · opravasrc/dispatcher/live.tsZ 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.
Smerovanie podľa rozhodnutia
src/reducerDáta: koniecKoniec · PASS alebo dôvod zastaveniasession donePASS 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.
Nápad na hru · riadenieSpustenie · rozhodnutie: nápad · riadenieZápis príkazov do inboxu
packages/studioJednovetý 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.
transcript.jsonl · append-only
src/transcriptDáta: nové udalosti · replaySlučka udalostí · replay · tailsrc/loop/coordinator.tsWriter 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ú.
Slučka udalostí · replay · tail
src/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.
transcript.jsonl · append-only
src/transcriptPozorovanie · správa: čítanie · SSEZobrazenie udalostí · artefaktovpackages/studioStudio čí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.