
CRUMB
Generative Game Studio · Demo
Od ideje za igru u jednom retku do igrivog nacrta, s radom agenata na vidiku i mogućnošću intervencije.
CRUMB je višeagentni studijski okvir za izradu prototipova casual igara.
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 koji grade igru, odvojeni od dokaza koji je prosuđuju.
Lokalni studijski demo koji ideju za igru u jednom retku vodi kroz provjere specifikacije, builda i izvođenja. Svaki korak završava u JSONL transkriptu, čisti reducer određuje sljedeće učinke, a nuspojave izvodi samo dispatcher. QA izvođenja i presuda modela drže se odvojeno kako bi se odlučilo između prolaza, redizajna, popravka i ljudskog upravljanja.
Igra se predloži u jednom retku, a agenti Claude Code, Codex i Gemini CLI surađuju kroz Planner → Builder → deterministički QA → Verifier, dok CRUMB Studio prikazuje događaje, napredak i artefakte te prima intervencije na prirodnom jeziku.
Demo koji se klonira iz javnog repozitorija i pokreće lokalno.
Od ideje do igre
Ideja postaje specifikacija, build i izvođenje QA-a. Svaki korak prolazi kroz transkript; akteri ne pozivaju jedni druge.
Ideja za igru · upravljanjePokretanje · prosudba: ideja · upravljanjeZapis naredbi u inbox
packages/studioIdeja za igru u jednom retku i upravljanje prirodnim jezikom unose se u Studio, koji naredbe zapisuje u inbox. Studio nikad izravno ne uređuje transkript.
Zapis naredbi u inbox
packages/studioPodaci: događaji userPetlja događaja · reprodukcija · tailsrc/loop/coordinator.tsCoordinator čita naredbe iz inboxa i zapisuje ih u transkript kao događaje user.
Petlja događaja · reprodukcija · tail
src/loop/coordinator.tsPokretanje · prosudba: reduce redomStanje → sljedeći učincisrc/reducerŽivi događaji uzimaju se iz reda jedan po jedan i prolaze kroz reducer, uz očuvan redoslijed učinaka svakog događaja; samo prosljeđivanje izvodi se asinkrono.
Stanje → sljedeći učinci
src/reducerPokretanje · prosudba: učinciIzvođenje učinaka · spawn akterasrc/dispatcher/live.tsReducer je čista funkcija koja određuje samo stanje i sljedeće učinke: goal bira Plannera, spec Buildera, build qa_check.
Akter → okvir · model
model-config · presetPokretanje · prosudba: postav akterasrc/dispatcher/live.tsKoji okvir, pružatelj i model pokreću aktera razrješava se redom zastavica CLI-ja > config > preset > ambient > fallback. Akter nije fiksni pružatelj.
Izvođenje učinaka · spawn aktera
src/dispatcher/live.tsPokretanje · prosudba: pokretanje PlanneraPlanner Lead · specifikacijaagent actor · CLIDispatcher pokreće Plannera s projiciranim ulazom. Uvjetno istraživanje nastavlja se kroz Plannerov plan istraživanja i predaju dokaza, sklopljene na ovoj karti.
Planner Lead · specifikacija
agent actor · CLIPodaci: spectranscript.jsonl · append-onlysrc/transcriptPlannerova specifikacija postaje događaj transkripta, a reducer na temelju nje bira Buildera. Akteri ne pozivaju jedni druge.
Izvođenje učinaka · spawn aktera
src/dispatcher/live.tsPokretanje · prosudba: pokretanje BuilderaBuilder · piše igruagent actor · CLIDispatcher pokreće Buildera. Ako isti akter stalno ne uspijeva, circuit se otvara i mijenja adapter, a ako se neuspjesi nastave, zaustavlja se.
Builder · piše igru
agent actor · CLIPodaci: datotekeDatoteke igreartifacts/Builder zapisuje ulaznu datoteku, izvore i resurse kao artefakte.
Builder · piše igru
agent actor · CLIPodaci: zapis buildatranscript.jsonl · append-onlysrc/transcriptDogađaj build i artifact.created zapisuju se u transkript s identitetom artefakta.
Izvođenje učinaka · spawn aktera
src/dispatcher/live.tsPokretanje · prosudba: qa_checkQA izvođenja · provjeredispatcher/qa-runner.tsNakon događaja build reducer emitira učinak qa_check s identitetom artefakta i builda te uvjetima prihvaćanja, a dispatcher ga izvodi.
Datoteke igre
artifacts/Podaci: što se pokrećeQA izvođenja · provjeredispatcher/qa-runner.tsQA izvođenja pokreće stvarni artefakt uz provjere koda i preglednika. Zadani istek vremena od 120 sekundi vrijednost je konfiguracije.
QA izvođenja · provjere
dispatcher/qa-runner.tsPodaci: qa.resulttranscript.jsonl · append-onlysrc/transcriptUspjeh ili neuspjeh, rezultat se bilježi kao sistemski događaj qa.result. Čak i ako provjera baci iznimku, bilježi se rezultat s poljima koja nisu prošla.
Granica povjerenja verifikacije
QA izvođenja dokaz je iz stvarnog pokretanja artefakta; Verifier je model koji prosuđuje projicirane dokaze. Reducer ih usklađuje prije odabira sljedećeg puta.
QA izvođenja · provjere
dispatcher/qa-runner.tsPodaci: qa.resulttranscript.jsonl · append-onlysrc/transcriptUspjeh ili neuspjeh, rezultat se bilježi kao sistemski događaj qa.result. Čak i ako provjera baci iznimku, bilježi se rezultat s poljima koja nisu prošla.
transcript.jsonl · append-only
src/transcriptPodaci: samo dokaziProjekcija ulaza sucasrc/dispatcher/live.tsUlaz Verifiera projicira se iz najnovijih goal, spec, build, qa.result i artifact.created uz odabrane dokaze istraživanja. To sužava kontekst; ne dokazuje izolaciju ni izostanak curenja.
Projekcija ulaza suca
src/dispatcher/live.tsPodaci: ulaz sucaVerifier · presuda modelaVerifier actorDispatcher pokreće Verifiera s projiciranim ulazom.
Verifier · presuda modela
Verifier actorPodaci: judge.scoretranscript.jsonl · append-onlysrc/transcriptPresuda Verifiera bilježi se kao događaj judge.score. To je prosudba modela, a ne činjenica o izvođenju.
Stanje → sljedeći učinci
src/reducerPokretanje · prosudba: ocjena · dokazi QA-aZaštita od obmane · ispravak ocjenesrc/validatorNa judge.score reducer ga prosljeđuje provjeri zaštite od obmane zajedno s rezultatom QA-a, Builderovim pružateljem te planom i dokazima istraživanja.
Zaštita od obmane · ispravak ocjene
src/validatorPodaci: ispravljena presudaUsmjeravanje presudesrc/reducerPASS bez uspješnog izvođenja postaje FAIL, a ocjena vezana uz izvođenje ispravlja se prema determinističkom QA-u. Ostala su pravila uvjetni ispravci, a ne opći dokaz istinitosti.
Usmjeravanje presude
src/reducerPodaci: gotovoGotovo · PASS ili razlog zaustavljanjasession donePASS završava sesiju kao done. Zaustavljanja zbog proračuna i circuita također završavaju kao done, ali zadržavaju razlog zaustavljanja, pa done nije uvijek PASS.
Neuspjeh i ljudsko upravljanje
PARTIAL ide čovjeku, Critical na redizajn, Important ili Minor na popravak, a zaustavljanja zbog proračuna ili circuita ostavljaju razlog zaustavljanja.
Zaštita od obmane · ispravak ocjene
src/validatorPodaci: ispravljena presudaUsmjeravanje presudesrc/reducerPASS bez uspješnog izvođenja postaje FAIL, a ocjena vezana uz izvođenje ispravlja se prema determinističkom QA-u. Ostala su pravila uvjetni ispravci, a ne opći dokaz istinitosti.
Usmjeravanje presude
src/reducerPokretanje · prosudba: provjera PARTIALIdeja za igru · upravljanjePARTIAL čeka provjeru čovjeka.
Usmjeravanje presude
src/reducerPokretanje · prosudba: redizajn · popravaksrc/dispatcher/live.tsMeđu FAIL i REJECT Critical se vraća Planneru na redizajn, a Important ili Minor Builderu kao povratna informacija za popravak; sve se izvodi kao učinci dispatchera.
Usmjeravanje presude
src/reducerPodaci: gotovoGotovo · PASS ili razlog zaustavljanjasession donePASS završava sesiju kao done. Zaustavljanja zbog proračuna i circuita također završavaju kao done, ali zadržavaju razlog zaustavljanja, pa done nije uvijek PASS.
Ideja za igru · upravljanjePokretanje · prosudba: ideja · upravljanjeZapis naredbi u inbox
packages/studioIdeja za igru u jednom retku i upravljanje prirodnim jezikom unose se u Studio, koji naredbe zapisuje u inbox. Studio nikad izravno ne uređuje transkript.
Reprodukcija i opažanje
Ponovna izgradnja stanja iz transkripta ne izvodi učinke, a Studio čita isti zapis kako bi ga prikazao.
transcript.jsonl · append-only
src/transcriptPodaci: novi događaji · reprodukcijaPetlja događaja · reprodukcija · tailsrc/loop/coordinator.tsWriter provjerava shemu, dodjeljuje ULID i vrijeme te dodaje. Pri reprodukciji prošli događaji samo prolaze kroz reducer; njihovi se učinci ne izvode ponovno.
Petlja događaja · reprodukcija · tail
src/loop/coordinator.tsPokretanje · prosudba: reduce redomStanje → sljedeći učincisrc/reducerŽivi događaji uzimaju se iz reda jedan po jedan i prolaze kroz reducer, uz očuvan redoslijed učinaka svakog događaja; samo prosljeđivanje izvodi se asinkrono.
transcript.jsonl · append-only
src/transcriptOpažanje · izvješće: čitanje · SSEPrikaz događaja · artefakatapackages/studioStudio čita transkript i artefakte te preko SSE-a prikazuje napredak, metrike i artefakte. To nije telemetrija koja se šalje udaljenoj usluzi.
Sve veze iste debljine. Odaberite tijek kako biste istaknuli samo njegov put s numeriranim koracima.
- Puna crta · smjer ulaza, rezultata i zapisa
- Isprekidana crta · pokretanje, prosudba, zahtjev
- Duga točkasta crta · opažanje i izvješćivanje, odvojeno od prosudbe
- Debela crna crta · odabrani tijek; brojevi daju redoslijed
- Okvir · granica koda ili stanja, imenovana u zaglavlju
- Unutarnja pločica · komponenta te granice
- Točkasti okvir · izvan te granice
- Narančasti obrub · mjesto gdje model odlučuje
- Petlja događaja · reducer · dispatcher
- Zapisi · postav · artefakti
- Determinističke provjere · ispravak
- Studio · akteri
Nacrtano prema putovima koda na javnom commitu f5e17c0. Akteri su uloge tijekom izvođenja, različite od agenata za programiranje kojima je izgrađen ovaj repozitorij.
- Izvor stanja
- Transkript je izvor stanja, a reducer čista funkcija. Nuspojave (pokretanje aktera, QA, pisanje datoteka) izvodi samo dispatcher, pa reprodukcija obnavlja stanje bez učinaka.
- Što reprodukcija obuhvaća
- Reprodukcija daje isto stanje; ne čini determinističkima generiranja LLM-a ni ponašanje preglednika i mreže.
- Što presuda obuhvaća
- QA izvođenja provjerava samo konfigurirane provjere, a ocjena Verifiera samo je jedan kanal dokaza. Nijedno ne mjeri svako ponašanje igre, zabavu ni zadovoljstvo korisnika.