Pelkkä leipähahmo CRUMB-logosta: hymyilevä leipäviipale, jonka oikeasta yläkulmasta on haukattu pala
Takaisin saliin

CRUMB

Generative Game Studio · Demo

Yhden rivin peli-ideasta pelattavaan luonnokseen, agenttien työ näkyvillä ja ohjattavissa.

CRUMB on moniagenttinen studiokehys kevyiden pelien prototypointiin.

Suunnittelu ja kehitys · rakennettu AI-koodausagenttien avulla

  • CLIPaikallinen demo
  • Web StudioPaikallinen 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

Pelin rakentavat agentit, erillään näytöstä, jolla se arvioidaan.

Paikallinen studiodemo, joka vie yhden rivin peli-idean määrittelyn, koonnin ja suoritustarkistusten läpi. Jokainen vaihe päätyy JSONL-transkriptiin, puhdas reducer-funktio päättää seuraavat vaikutukset, ja vain dispatcher suorittaa sivuvaikutukset. Suoritus-QA ja mallin tuomio pidetään erillään, kun valitaan läpäisyn, uudelleensuunnittelun, korjauksen ja ihmisen ohjauksen välillä.

Kuvaile peli yhdellä rivillä, ja Claude Code-, Codex- ja Gemini CLI -agentit työskentelevät yhdessä järjestyksessä Planner → Builder → deterministinen QA → Verifier, samalla kun CRUMB Studio näyttää tapahtumat, edistymisen ja artefaktit ja ottaa vastaan luonnollisen kielen ohjausta.

Demo, joka kloonataan julkisesta repositoriosta ja ajetaan paikallisesti.

Järjestelmäkartta · piirretty julkisen commitin f5e17c0 koodipoluista
CRUMB-studion järjestelmäIhminen kuvailee ja ohjaa peliä Studiossa, ja Studio kirjoittaa komennot inbox-tiedostoon. Coordinator välittää inboxin ja transkriptin uudet tapahtumat järjestyksessä reducer-funktiolle; puhdas reducer päättää tilan ja seuraavat vaikutukset, ja vain dispatcher suorittaa sivuvaikutukset. Plannerin määrittely, Builderin koonti ja artefaktit, suoritus-QA:n tulos ja Verifierin tuomio tulevat kaikki transkriptitapahtumiksi. Verifier saa vain projisoitua näyttöä, ja reducer tarkistaa ja korjaa sen pisteet QA-tulosta vasten: PASS päättää istunnon, PARTIAL odottaa ihmistä, ja kaikki muu palaa uudelleensuunniteltavaksi tai korjattavaksi.Peli-idea · ohjausIhminen, paikallisestipackages/studioTapahtuma- · artefaktinäkymäKomennot inboxiinsrc/transcripttranscript.jsonl · append-onlysrc/loop/coordinator.tsTapahtumasilmukka · uudelleentoisto · seurantasrc/reducerTila → seuraavat vaikutuksetTuomion reitityssession doneValmis · PASS tai pysähtymissyysrc/dispatcher/live.tsVaikutusten suoritus · toimijoiden käynnistysTuomarin syötteen projektiomodel-config · presetToimija → kehys · malliagent actor · CLIPlanner Lead · määrittelyBuilder · kirjoittaa pelinartifacts/Pelitiedostotdispatcher/qa-runner.tsSuoritus-QA · tarkistuksetVerifier actorVerifier · mallin tuomiosrc/validatorHarhautuksen esto · pisteiden korjausIhmiset · StudioTapahtumien ohjaustranskripti on tilan lähdeTyöagentit · artefaktitTodentaminen · päätös1idea · ohjaus2käyttäjätapahtumat3redusointi järjestyksessä4vaikutukset5toimijan asetus6Plannerin ajo7spec8Builderin ajo9 tiedostot · Builder · kirjoittaa pelin → Pelitiedostot910koontikirjaus11qa_check12mitä ajetaan13qa.result1qa.result2vain näyttö3tuomarin syöte4judge.score5pisteet · QA-näyttö6korjattu tuomio7valmis1korjattu tuomio2PARTIAL-tarkistus3uudelleensuunnittelu · korjaus4valmis5idea · ohjaus1uudet tapahtumat · uudelleentoisto2redusointi järjestyksessä3luku · SSE

Ideasta pelattavaksi

Ideasta tulee määrittely, koonti ja suoritus-QA-ajo. Jokainen vaihe kulkee transkriptin kautta; toimijat eivät kutsu toisiaan.

  1. Peli-idea · ohjausSuoritus · arvio: idea · ohjausKomennot inboxiinpackages/studio

    Yhden rivin peli-idea ja luonnollisen kielen ohjaus syötetään Studioon, joka kirjoittaa komennot inboxiin. Studio ei koskaan muokkaa transkriptia suoraan.

  2. Komennot inboxiinpackages/studioData: käyttäjätapahtumatTapahtumasilmukka · uudelleentoisto · seurantasrc/loop/coordinator.ts

    Coordinator lukee inboxin komennot ja kirjaa ne transkriptiin käyttäjätapahtumina.

  3. Tapahtumasilmukka · uudelleentoisto · seurantasrc/loop/coordinator.tsSuoritus · arvio: redusointi järjestyksessäTila → seuraavat vaikutuksetsrc/reducer

    Live-tapahtumat redusoidaan yksi kerrallaan jonosta, jolloin kunkin tapahtuman vaikutukset pysyvät järjestyksessä; itse välitys ajetaan asynkronisesti.

  4. Tila → seuraavat vaikutuksetsrc/reducerSuoritus · arvio: vaikutuksetVaikutusten suoritus · toimijoiden käynnistyssrc/dispatcher/live.ts

    Reducer on puhdas funktio, joka päättää vain tilan ja seuraavat vaikutukset: tavoite valitsee Plannerin, määrittely Builderin, koonti qa_check-tarkistuksen.

  5. Toimija → kehys · mallimodel-config · presetSuoritus · arvio: toimijan asetussrc/dispatcher/live.ts

    Mikä kehys, mallitoimittaja ja malli ajaa toimijaa, ratkaistaan järjestyksessä CLI-valitsin > config > preset > ambient > fallback. Toimija ei ole kiinteä mallitoimittaja.

  6. Vaikutusten suoritus · toimijoiden käynnistyssrc/dispatcher/live.tsSuoritus · arvio: Plannerin ajoPlanner Lead · määrittelyagent actor · CLI

    Dispatcher ajaa Plannerin projisoidulla syötteellä. Ehdollinen tutkimus jatkuu Plannerin tutkimussuunnitelman ja näytön luovutuksen kautta, ja se on tällä kartalla taitettu piiloon.

  7. Planner Lead · määrittelyagent actor · CLIData: spectranscript.jsonl · append-onlysrc/transcript

    Plannerin määrittelystä tulee transkriptitapahtuma, ja reducer valitsee sen perusteella Builderin. Toimijat eivät kutsu toisiaan.

  8. Vaikutusten suoritus · toimijoiden käynnistyssrc/dispatcher/live.tsSuoritus · arvio: Builderin ajoBuilder · kirjoittaa pelinagent actor · CLI

    Dispatcher ajaa Builderin. Jos sama toimija epäonnistuu toistuvasti, katkaisija laukeaa ja vaihtaa sovittimen, ja ajo pysähtyy, jos epäonnistumiset jatkuvat.

  9. Builder · kirjoittaa pelinagent actor · CLIData: tiedostotPelitiedostotartifacts/

    Builder kirjoittaa aloitustiedoston, lähdekoodit ja resurssit artefakteina.

  10. Builder · kirjoittaa pelinagent actor · CLIData: koontikirjaustranscript.jsonl · append-onlysrc/transcript

    Koontitapahtuma ja artifact.created kirjataan transkriptiin artefaktin tunnisteen kanssa.

  11. Vaikutusten suoritus · toimijoiden käynnistyssrc/dispatcher/live.tsSuoritus · arvio: qa_checkSuoritus-QA · tarkistuksetdispatcher/qa-runner.ts

    Koontitapahtuman jälkeen reducer lähettää qa_check-vaikutuksen, joka kantaa artefaktin ja koonnin tunnisteet ja hyväksymisehdot, ja dispatcher ajaa sen.

  12. Pelitiedostotartifacts/Data: mitä ajetaanSuoritus-QA · tarkistuksetdispatcher/qa-runner.ts

    Suoritus-QA ajaa varsinaisen artefaktin koodi- ja selaintarkistuksilla. 120 sekunnin oletusaikakatkaisu on konfiguraatioarvo.

  13. Suoritus-QA · tarkistuksetdispatcher/qa-runner.tsData: qa.resulttranscript.jsonl · append-onlysrc/transcript

    Onnistui tai epäonnistui, tulos kirjataan järjestelmän qa.result-tapahtumana. Vaikka tarkistus heittäisi poikkeuksen, kirjataan tulos, jossa on epäonnistumista kuvaavat kentät.

Todentamisen luottamusraja

Suoritus-QA on näyttöä artefaktin todellisesta ajamisesta; Verifier on malli, joka arvioi projisoitua näyttöä. Reducer sovittaa nämä kaksi yhteen ennen seuraavan polun valintaa.

  1. Suoritus-QA · tarkistuksetdispatcher/qa-runner.tsData: qa.resulttranscript.jsonl · append-onlysrc/transcript

    Onnistui tai epäonnistui, tulos kirjataan järjestelmän qa.result-tapahtumana. Vaikka tarkistus heittäisi poikkeuksen, kirjataan tulos, jossa on epäonnistumista kuvaavat kentät.

  2. transcript.jsonl · append-onlysrc/transcriptData: vain näyttöTuomarin syötteen projektiosrc/dispatcher/live.ts

    Verifierin syöte projisoidaan viimeisimmästä tavoitteesta, määrittelystä, koonnista, qa.resultista ja artifact.createdista sekä valitusta tutkimusnäytöstä. Se rajaa kontekstia; se ei todista eristystä tai vuotamattomuutta.

  3. Tuomarin syötteen projektiosrc/dispatcher/live.tsData: tuomarin syöteVerifier · mallin tuomioVerifier actor

    Dispatcher ajaa Verifierin projisoidulla syötteellä.

  4. Verifier · mallin tuomioVerifier actorData: judge.scoretranscript.jsonl · append-onlysrc/transcript

    Verifierin tuomio kirjataan judge.score-tapahtumana. Se on mallin arvio, ei tosiasia suorituksesta.

  5. Tila → seuraavat vaikutuksetsrc/reducerSuoritus · arvio: pisteet · QA-näyttöHarhautuksen esto · pisteiden korjaussrc/validator

    judge.score-tapahtumassa reducer välittää sen harhautuksen estoon yhdessä QA-tuloksen, Builderin mallitoimittajan sekä tutkimussuunnitelman ja -näytön kanssa.

  6. Harhautuksen esto · pisteiden korjaussrc/validatorData: korjattu tuomioTuomion reitityssrc/reducer

    PASS ilman onnistunutta suoritusta muuttuu FAILiksi, ja suoritukseen liittyvä pistemäärä korjataan deterministisen QA:n mukaan. Muut säännöt ovat ehdollisia korjauksia, eivät yleinen todiste totuudellisuudesta.

  7. Tuomion reitityssrc/reducerData: valmisValmis · PASS tai pysähtymissyysession done

    PASS päättää istunnon tilaan done. Budjetti- ja katkaisijapysähdykset päättyvät myös tilaan done mutta säilyttävät pysähtymissyynsä, joten done ei aina ole PASS.

Epäonnistuminen ja ihmisen ohjaus

PARTIAL menee ihmiselle, Critical uudelleensuunnitteluun, Important tai Minor korjaukseen, ja budjetti- tai katkaisijapysähdykset jättävät pysähtymissyyn.

  1. Harhautuksen esto · pisteiden korjaussrc/validatorData: korjattu tuomioTuomion reitityssrc/reducer

    PASS ilman onnistunutta suoritusta muuttuu FAILiksi, ja suoritukseen liittyvä pistemäärä korjataan deterministisen QA:n mukaan. Muut säännöt ovat ehdollisia korjauksia, eivät yleinen todiste totuudellisuudesta.

  2. Tuomion reitityssrc/reducerSuoritus · arvio: PARTIAL-tarkistusPeli-idea · ohjaus

    PARTIAL odottaa ihmisen tarkistusta.

  3. Tuomion reitityssrc/reducerSuoritus · arvio: uudelleensuunnittelu · korjaussrc/dispatcher/live.ts

    Tuomioista FAIL ja REJECT Critical palaa Plannerille uudelleensuunniteltavaksi ja Important tai Minor Builderille korjauspalautteeksi, kaikki dispatcherin vaikutuksina ajettuina.

  4. Tuomion reitityssrc/reducerData: valmisValmis · PASS tai pysähtymissyysession done

    PASS päättää istunnon tilaan done. Budjetti- ja katkaisijapysähdykset päättyvät myös tilaan done mutta säilyttävät pysähtymissyynsä, joten done ei aina ole PASS.

  5. Peli-idea · ohjausSuoritus · arvio: idea · ohjausKomennot inboxiinpackages/studio

    Yhden rivin peli-idea ja luonnollisen kielen ohjaus syötetään Studioon, joka kirjoittaa komennot inboxiin. Studio ei koskaan muokkaa transkriptia suoraan.

Uudelleentoisto ja havainnointi

Tilan uudelleenrakentaminen transkriptista ei aja vaikutuksia, ja Studio näyttää saman kirjauksen lukemalla sen.

  1. transcript.jsonl · append-onlysrc/transcriptData: uudet tapahtumat · uudelleentoistoTapahtumasilmukka · uudelleentoisto · seurantasrc/loop/coordinator.ts

    Kirjoittaja validoi skeeman, antaa ULID-tunnisteen ja ajan ja lisää tapahtuman loppuun. Uudelleentoistossa menneet tapahtumat vain redusoidaan; niiden vaikutuksia ei ajeta uudelleen.

  2. Tapahtumasilmukka · uudelleentoisto · seurantasrc/loop/coordinator.tsSuoritus · arvio: redusointi järjestyksessäTila → seuraavat vaikutuksetsrc/reducer

    Live-tapahtumat redusoidaan yksi kerrallaan jonosta, jolloin kunkin tapahtuman vaikutukset pysyvät järjestyksessä; itse välitys ajetaan asynkronisesti.

  3. transcript.jsonl · append-onlysrc/transcriptHavainnointi · raportti: luku · SSETapahtuma- · artefaktinäkymäpackages/studio

    Studio lukee transkriptin ja artefaktit ja näyttää edistymisen, mittarit ja artefaktit SSE:n kautta. Se ei ole etäpalveluun lähetettävää telemetriaa.

Kaikki yhteydet samalla painolla. Valitse virta, niin vain sen polku korostuu numeroiduin vaihein.

  • Yhtenäinen · syötteiden, tulosten ja kirjausten suunta
  • Katkoviiva · suoritus, arvio, pyyntö
  • Pitkät pisteet · havainnointi ja raportointi, erillään arviosta
  • Paksu musta viiva · valittu virta; numerot kertovat järjestyksen
  • Laatikko · koodin tai tilan raja, nimi otsakkeessa
  • Sisälaatta · rajan komponentti
  • Pisteviivalaatikko · rajan ulkopuolella
  • Oranssi ääriviiva · kohta, jossa malli päättää
  • Tapahtumasilmukka · reducer · dispatcher
  • Kirjaukset · asetukset · artefaktit
  • Deterministiset tarkistukset · korjaus
  • Studio · toimijat

Piirretty julkisen commitin f5e17c0 koodipoluista. Toimijat ovat ajonaikaisia rooleja, erillään tämän repositorion rakentamiseen käytetyistä koodausagenteista.

Tilan lähde
Transkripti on tilan lähde ja reducer on puhdas funktio. Vain dispatcher suorittaa sivuvaikutukset (toimijoiden ajo, QA, tiedostojen kirjoitus), joten uudelleentoisto rakentaa tilan uudelleen ilman vaikutuksia.
Mitä uudelleentoisto kattaa
Uudelleentoisto tuottaa saman tilan; se ei tee LLM-generoinneista eikä selaimen ja verkon käyttäytymisestä determinististä.
Mitä tuomio kattaa
Suoritus-QA tarkistaa vain konfiguroidut tarkistukset, ja Verifierin pisteet ovat yksi näyttökanava. Kumpikaan ei mittaa jokaista pelin käyttäytymistä, hauskuutta tai käyttäjätyytyväisyyttä.