Samotná postavička chleba z loga CRUMB: usměvavý krajíc chleba s ukousnutým pravým horním rohem
Zpět do sálu

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.

Návrh a vývoj · vytvořeno s kódovacími agenty AI

  • CLILokální demo
  • Web StudioLokální 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, 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ě.

Mapa systému · nakresleno podle cest kódu ve veřejném commitu f5e17c0
Systém studia CRUMBČlověk ve Studiu navrhuje hru a řídí ji a Studio zapisuje příkazy do inboxu. Koordinátor předává reduceru po pořadě nové události z inboxu a přepisu; čistý reducer rozhoduje o stavu a dalších efektech a vedlejší účinky provádí jen dispatcher. Specifikace Planneru, build a artefakty Builderu, výsledek QA provedení a posouzení Verifieru se stávají událostmi přepisu. Verifier dostává jen promítnuté doklady a reducer jeho skóre kontroluje a opravuje podle výsledku QA: PASS relaci ukončí, PARTIAL čeká na člověka a vše ostatní se vrací k přepracování nebo opravě.Nápad na hru · řízeníČlověk, spouští lokálněpackages/studioZobrazení událostí · artefaktůZápis příkazů do inboxusrc/transcripttranscript.jsonl · append-onlysrc/loop/coordinator.tsSmyčka událostí · replay · tailsrc/reducerStav → další efektySměrování podle rozhodnutísession doneKonec · PASS nebo důvod zastavenísrc/dispatcher/live.tsProvádění efektů · spouštění aktérůProjekce vstupu soudcemodel-config · presetAktér → harness · modelagent actor · CLIPlanner Lead · specifikaceBuilder · píše hruartifacts/Soubory hrydispatcher/qa-runner.tsQA provedení · kontrolyVerifier actorVerifier · rozhodnutí modelusrc/validatorOchrana proti klamání · oprava skóreLidé · StudioŘízení událostípřepis je zdrojem stavuPracovní agenti · artefaktyOvěření · rozhodnutí1nápad · řízení2události user3redukce v pořadí4efekty5nastavení aktéra6spuštění Planneru7spec8spuštění Builderu9 soubory · Builder · píše hru → Soubory hry910záznam buildu11qa_check12co se spouští13qa.result1qa.result2jen doklady3vstup soudce4judge.score5skóre · doklady QA6opravené rozhodnutí7konec1opravené rozhodnutí2kontrola PARTIAL3přepracování · oprava4konec5nápad · řízení1nové události · replay2redukce v pořadí3čtení · SSE

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í.

  1. Nápad na hru · řízeníSpuštění · rozhodnutí: nápad · řízeníZápis příkazů do inboxupackages/studio

    Jednově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.

  2. Zápis příkazů do inboxupackages/studioÚdaje: události userSmyčka událostí · replay · tailsrc/loop/coordinator.ts

    Koordinátor čte příkazy z inboxu a zaznamenává je do přepisu jako události user.

  3. Smyčka událostí · replay · tailsrc/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ě.

  4. Stav → další efektysrc/reducerSpuštění · rozhodnutí: efektyProvádění efektů · spouštění aktérůsrc/dispatcher/live.ts

    Reducer je čistá funkce, která rozhoduje jen o stavu a dalších efektech: cíl vybere Planner, specifikace Builder, build qa_check.

  5. Aktér → harness · modelmodel-config · presetSpuštění · rozhodnutí: nastavení aktérasrc/dispatcher/live.ts

    Který 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.

  6. Provádění efektů · spouštění aktérůsrc/dispatcher/live.tsSpuštění · rozhodnutí: spuštění PlanneruPlanner Lead · specifikaceagent actor · CLI

    Dispatcher 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é.

  7. Planner Lead · specifikaceagent actor · CLIÚdaje: spectranscript.jsonl · append-onlysrc/transcript

    Specifikace Planneru se stane událostí přepisu a reducer podle ní vybere Builder. Aktéři se navzájem nevolají.

  8. Provádění efektů · spouštění aktérůsrc/dispatcher/live.tsSpuštění · rozhodnutí: spuštění BuilderuBuilder · píše hruagent actor · CLI

    Dispatcher 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í.

  9. Builder · píše hruagent actor · CLIÚdaje: souborySoubory hryartifacts/

    Builder zapíše vstupní soubor, zdroje a assety jako artefakty.

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

    Událost build a artifact.created se zaznamenají do přepisu s identitou artefaktu.

  11. Provádění efektů · spouštění aktérůsrc/dispatcher/live.tsSpuštění · rozhodnutí: qa_checkQA provedení · kontrolydispatcher/qa-runner.ts

    Po události build vyšle reducer efekt qa_check s identitou artefaktu a buildu a podmínkami přijetí a dispatcher ho provede.

  12. Soubory hryartifacts/Údaje: co se spouštíQA provedení · kontrolydispatcher/qa-runner.ts

    QA provedení spouští skutečný artefakt s kontrolami kódu a prohlížeče. Výchozí časový limit 120 sekund je hodnotou konfigurace.

  13. QA provedení · kontrolydispatcher/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.

  1. QA provedení · kontrolydispatcher/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í.

  2. transcript.jsonl · append-onlysrc/transcriptÚdaje: jen dokladyProjekce vstupu soudcesrc/dispatcher/live.ts

    Vstup 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.

  3. Projekce vstupu soudcesrc/dispatcher/live.tsÚdaje: vstup soudceVerifier · rozhodnutí modeluVerifier actor

    Dispatcher spustí Verifier s promítnutým vstupem.

  4. Verifier · rozhodnutí modeluVerifier actorÚdaje: judge.scoretranscript.jsonl · append-onlysrc/transcript

    Rozhodnutí Verifieru se zaznamená jako událost judge.score. Jde o úsudek modelu, nikoli o fakt o provedení.

  5. Stav → další efektysrc/reducerSpuštění · rozhodnutí: skóre · doklady QAOchrana proti klamání · oprava skóresrc/validator

    Př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.

  6. Ochrana proti klamání · oprava skóresrc/validatorÚdaje: opravené rozhodnutíSměrování podle rozhodnutísrc/reducer

    PASS 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.

  7. Směrování podle rozhodnutísrc/reducerÚdaje: konecKonec · PASS nebo důvod zastavenísession done

    PASS 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í.

  1. Ochrana proti klamání · oprava skóresrc/validatorÚdaje: opravené rozhodnutíSměrování podle rozhodnutísrc/reducer

    PASS 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.

  2. Směrování podle rozhodnutísrc/reducerSpuštění · rozhodnutí: kontrola PARTIALNápad na hru · řízení

    PARTIAL čeká na kontrolu člověkem.

  3. Směrování podle rozhodnutísrc/reducerSpuštění · rozhodnutí: přepracování · opravasrc/dispatcher/live.ts

    Z 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.

  4. Směrování podle rozhodnutísrc/reducerÚdaje: konecKonec · PASS nebo důvod zastavenísession done

    PASS 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.

  5. Nápad na hru · řízeníSpuštění · rozhodnutí: nápad · řízeníZápis příkazů do inboxupackages/studio

    Jednově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.

  1. transcript.jsonl · append-onlysrc/transcriptÚdaje: nové události · replaySmyčka událostí · replay · tailsrc/loop/coordinator.ts

    Writer 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í.

  2. Smyčka událostí · replay · tailsrc/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ě.

  3. transcript.jsonl · append-onlysrc/transcriptPozorování · zpráva: čtení · SSEZobrazení událostí · artefaktůpackages/studio

    Studio č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ů.