
CRUMB
Generative Game Studio · Demo
Od jednovětého nápadu na hru k hratelnému návrhu, s prací agentů na očích a otevřenou zásahům.
CRUMB je multiagentní studiový harness pro prototypování casual her.
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, kteří hru staví, odděleně od dokladů, které ji posuzují.
Lokální demo studia, které vede jednovětý nápad na hru přes specifikaci, build a kontroly provedení. Každý krok skončí v přepisu JSONL, čistý reducer rozhoduje o dalších efektech a vedlejší účinky provádí jen dispatcher. QA provedení a rozhodnutí modelu se drží odděleně, aby se rozhodlo mezi úspěchem, přepracováním, opravou a lidským řízením.
Stačí hru popsat jednou větou a agenti Claude Code, Codex a Gemini CLI spolupracují v řadě Planner → Builder → deterministické QA → Verifier, zatímco CRUMB Studio ukazuje události, postup a artefakty a přijímá zásahy v přirozeném jazyce.
Demo, které se naklonuje z veřejného repozitáře a spustí lokálně.
Od nápadu ke hraní
Nápad se stane specifikací, buildem a během QA provedení. Každý krok prochází přepisem; aktéři se navzájem nevolají.
Nápad na hru · řízeníSpuštění · rozhodnutí: nápad · řízeníZápis příkazů do inboxu
packages/studioJednovětý nápad na hru a řízení v přirozeném jazyce se zadávají ve Studiu, které zapisuje příkazy do inboxu. Studio nikdy neupravuje přepis přímo.
Zápis příkazů do inboxu
packages/studioÚdaje: události userSmyčka událostí · replay · tailsrc/loop/coordinator.tsKoordinátor čte příkazy z inboxu a zaznamenává je do přepisu jako události user.
Smyčka událostí · replay · tail
src/loop/coordinator.tsSpuštění · rozhodnutí: redukce v pořadíStav → další efektysrc/reducerŽivé události se redukují po jedné z fronty, se zachováním pořadí efektů každé události; samotný dispatch běží asynchronně.
Stav → další efekty
src/reducerSpuštění · rozhodnutí: efektyProvádění efektů · spouštění aktérůsrc/dispatcher/live.tsReducer je čistá funkce, která rozhoduje jen o stavu a dalších efektech: cíl vybere Planner, specifikace Builder, build qa_check.
Aktér → harness · model
model-config · presetSpuštění · rozhodnutí: nastavení aktérasrc/dispatcher/live.tsKterý harness, poskytovatel a model spustí aktéra, se určuje v pořadí přepínač CLI > konfigurace > preset > ambient > fallback. Aktér není pevným poskytovatelem.
Provádění efektů · spouštění aktérů
src/dispatcher/live.tsSpuštění · rozhodnutí: spuštění PlanneruPlanner Lead · specifikaceagent actor · CLIDispatcher spustí Planner s promítnutým vstupem. Podmíněný průzkum pokračuje přes výzkumný plán Planneru a předání dokladů, na této mapě sbalené.
Planner Lead · specifikace
agent actor · CLIÚdaje: spectranscript.jsonl · append-onlysrc/transcriptSpecifikace Planneru se stane událostí přepisu a reducer podle ní vybere Builder. Aktéři se navzájem nevolají.
Provádění efektů · spouštění aktérů
src/dispatcher/live.tsSpuštění · rozhodnutí: spuštění BuilderuBuilder · píše hruagent actor · CLIDispatcher spustí Builder. Pokud tentýž aktér opakovaně selhává, otevře se circuit a vymění adaptér, a pokud selhání pokračují, vše se zastaví.
Builder · píše hru
agent actor · CLIÚdaje: souborySoubory hryartifacts/Builder zapíše vstupní soubor, zdroje a assety jako artefakty.
Builder · píše hru
agent actor · CLIÚdaje: záznam buildutranscript.jsonl · append-onlysrc/transcriptUdálost build a artifact.created se zaznamenají do přepisu s identitou artefaktu.
Provádění efektů · spouštění aktérů
src/dispatcher/live.tsSpuštění · rozhodnutí: qa_checkQA provedení · kontrolydispatcher/qa-runner.tsPo události build vyšle reducer efekt qa_check s identitou artefaktu a buildu a podmínkami přijetí a dispatcher ho provede.
Soubory hry
artifacts/Údaje: co se spouštíQA provedení · kontrolydispatcher/qa-runner.tsQA provedení spouští skutečný artefakt s kontrolami kódu a prohlížeče. Výchozí časový limit 120 sekund je hodnotou konfigurace.
QA provedení · kontroly
dispatcher/qa-runner.tsÚdaje: qa.resulttranscript.jsonl · append-onlysrc/transcriptÚspěch nebo neúspěch, výsledek se zaznamená jako systémová událost qa.result. I když kontrola vyhodí výjimku, zaznamená se výsledek s poli selhání.
Hranice důvěry ověření
QA provedení je dokladem ze skutečného spuštění artefaktu; Verifier je model posuzující promítnuté doklady. Reducer obojí sladí, než zvolí další cestu.
QA provedení · kontroly
dispatcher/qa-runner.tsÚdaje: qa.resulttranscript.jsonl · append-onlysrc/transcriptÚspěch nebo neúspěch, výsledek se zaznamená jako systémová událost qa.result. I když kontrola vyhodí výjimku, zaznamená se výsledek s poli selhání.
transcript.jsonl · append-only
src/transcriptÚdaje: jen dokladyProjekce vstupu soudcesrc/dispatcher/live.tsVstup Verifieru se promítá z nejnovějších goal, spec, build, qa.result a artifact.created a vybraných dokladů z průzkumu. Zužuje kontext; nedokazuje izolaci ani absenci úniku.
Projekce vstupu soudce
src/dispatcher/live.tsÚdaje: vstup soudceVerifier · rozhodnutí modeluVerifier actorDispatcher spustí Verifier s promítnutým vstupem.
Verifier · rozhodnutí modelu
Verifier actorÚdaje: judge.scoretranscript.jsonl · append-onlysrc/transcriptRozhodnutí Verifieru se zaznamená jako událost judge.score. Jde o úsudek modelu, nikoli o fakt o provedení.
Stav → další efekty
src/reducerSpuštění · rozhodnutí: skóre · doklady QAOchrana proti klamání · oprava skóresrc/validatorPři judge.score ho reducer předá kontrole ochrany proti klamání spolu s výsledkem QA, poskytovatelem Builderu a výzkumným plánem a doklady.
Ochrana proti klamání · oprava skóre
src/validatorÚdaje: opravené rozhodnutíSměrování podle rozhodnutísrc/reducerPASS bez úspěšného provedení se změní na FAIL a skóre související s provedením se opraví podle deterministického QA. Ostatní pravidla jsou podmíněné opravy, nikoli obecný důkaz pravdivosti.
Směrování podle rozhodnutí
src/reducerÚdaje: konecKonec · PASS nebo důvod zastavenísession donePASS ukončí relaci jako done. Zastavení kvůli rozpočtu a circuitu také končí jako done, ale ponechávají si důvod zastavení, takže done neznamená vždy PASS.
Selhání a lidské řízení
PARTIAL jde k člověku, Critical k přepracování, Important či Minor k opravě a zastavení kvůli rozpočtu nebo circuitu zanechávají důvod zastavení.
Ochrana proti klamání · oprava skóre
src/validatorÚdaje: opravené rozhodnutíSměrování podle rozhodnutísrc/reducerPASS bez úspěšného provedení se změní na FAIL a skóre související s provedením se opraví podle deterministického QA. Ostatní pravidla jsou podmíněné opravy, nikoli obecný důkaz pravdivosti.
Směrování podle rozhodnutí
src/reducerSpuštění · rozhodnutí: kontrola PARTIALNápad na hru · řízeníPARTIAL čeká na kontrolu člověkem.
Směrování podle rozhodnutí
src/reducerSpuštění · rozhodnutí: přepracování · opravasrc/dispatcher/live.tsZ FAIL a REJECT se Critical vrací k Planneru k přepracování a Important či Minor k Builderu jako zpětná vazba k opravě; vše běží jako efekty dispatcheru.
Směrování podle rozhodnutí
src/reducerÚdaje: konecKonec · PASS nebo důvod zastavenísession donePASS ukončí relaci jako done. Zastavení kvůli rozpočtu a circuitu také končí jako done, ale ponechávají si důvod zastavení, takže done neznamená vždy PASS.
Nápad na hru · řízeníSpuštění · rozhodnutí: nápad · řízeníZápis příkazů do inboxu
packages/studioJednovětý nápad na hru a řízení v přirozeném jazyce se zadávají ve Studiu, které zapisuje příkazy do inboxu. Studio nikdy neupravuje přepis přímo.
Přehrávání a pozorování
Obnovení stavu z přepisu nespouští žádné efekty a Studio čte stejný záznam, aby ho zobrazilo.
transcript.jsonl · append-only
src/transcriptÚdaje: nové události · replaySmyčka událostí · replay · tailsrc/loop/coordinator.tsWriter ověří schéma, přidělí ULID a čas a připíše záznam. Při přehrávání se minulé události jen redukují; jejich efekty se znovu nespouštějí.
Smyčka událostí · replay · tail
src/loop/coordinator.tsSpuštění · rozhodnutí: redukce v pořadíStav → další efektysrc/reducerŽivé události se redukují po jedné z fronty, se zachováním pořadí efektů každé události; samotný dispatch běží asynchronně.
transcript.jsonl · append-only
src/transcriptPozorování · zpráva: čtení · SSEZobrazení událostí · artefaktůpackages/studioStudio čte přepis a artefakty a přes SSE zobrazuje postup, metriky a artefakty. Nejde o telemetrii posílanou vzdálené službě.
Každé spojení se stejnou váhou. Výběr toku zvýrazní jen jeho cestu s očíslovanými kroky.
- Plná čára · směr vstupu, výsledků a záznamů
- Přerušovaná čára · spuštění, rozhodnutí, požadavek
- Dlouhé tečky · pozorování a vykazování, odděleně od rozhodnutí
- Silná černá čára · zvolený tok; čísla udávají pořadí
- Rámeček · hranice kódu nebo stavu, pojmenovaná v záhlaví
- Vnitřní štítek · komponenta této hranice
- Tečkovaný rámeček · mimo tuto hranici
- Oranžový obrys · místo, kde rozhoduje model
- Smyčka událostí · reducer · dispatcher
- Záznamy · nastavení · artefakty
- Deterministické kontroly · oprava
- Studio · aktéři
Nakresleno podle cest kódu ve veřejném commitu f5e17c0. Aktéři jsou role za běhu, odlišné od kódovacích agentů použitých ke stavbě tohoto repozitáře.
- Zdroj stavu
- Přepis je zdrojem stavu a reducer je čistá funkce. Vedlejší účinky (spouštění aktérů, QA, zápis souborů) provádí jen dispatcher, takže přehrávání obnoví stav bez efektů.
- Co přehrávání pokrývá
- Přehrávání dává stejný stav; nečiní deterministickým generování LLM ani chování prohlížeče a sítě.
- Co rozhodnutí pokrývá
- QA provedení ověřuje jen nastavené kontroly a skóre Verifieru je jedním kanálem dokladů. Ani jedno neměří každé chování hry, zábavnost ani spokojenost uživatelů.