
CRUMB
Generative Game Studio · Demo
Nuo vienos eilutės žaidimo idėjos iki žaidžiamo juodraščio – agentų darbas matomas, į jį galima įsikišti.
CRUMB yra daugiaagentis studijos karkasas kasdienių žaidimų prototipams kurti.
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
Žaidimą kuriantys agentai atskirti nuo jį vertinančių įrodymų.
Vietinė studijos demonstracija, vedanti vienos eilutės žaidimo idėją per specifikacijos, build ir vykdymo patikras. Kiekvienas žingsnis patenka į JSONL transkriptą, grynas reducer nustato kitus efektus, o šalutinius efektus vykdo tik dispatcher. Vykdymo QA ir modelio verdiktas laikomi atskirai, kad būtų galima rinktis tarp sėkmės, perprojektavimo, taisymo ir žmogaus valdymo.
Pakanka žaidimą pasiūlyti viena eilute, ir Claude Code, Codex bei Gemini CLI agentai bendradarbiauja pagal Planner → Builder → deterministinis QA → Verifier, o CRUMB Studio rodo įvykius, pažangą ir artefaktus bei priima įsikišimą natūralia kalba.
Demonstracija, klonuojama iš viešos saugyklos ir paleidžiama vietoje.
Nuo idėjos iki žaidimo
Idėja tampa specifikacija, build ir vykdymo QA paleidimu. Kiekvienas žingsnis eina per transkriptą; aktoriai vienas kito nekviečia.
Žaidimo idėja · valdymasPaleidimas · sprendimas: idėja · valdymasRašyti komandas į inbox
packages/studioVienos eilutės žaidimo idėja ir valdymas natūralia kalba įvedami Studio, kuri komandas rašo į inbox. Studio niekada tiesiogiai neredaguoja transkripto.
Rašyti komandas į inbox
packages/studioDuomenys: user įvykiaiĮvykių ciklas · atkartojimas · tailsrc/loop/coordinator.tsCoordinator skaito inbox komandas ir įrašo jas į transkriptą kaip user įvykius.
Įvykių ciklas · atkartojimas · tail
src/loop/coordinator.tsPaleidimas · sprendimas: reduce iš eilėsBūsena → kiti efektaisrc/reducerGyvi įvykiai po vieną imami iš eilės ir pereina per reducer, išlaikant kiekvieno įvykio efektų tvarką; pats perdavimas vyksta asinchroniškai.
Būsena → kiti efektai
src/reducerPaleidimas · sprendimas: efektaiVykdyti efektus · aktorių spawnsrc/dispatcher/live.tsReducer yra gryna funkcija, nustatanti tik būseną ir kitus efektus: goal parenka Planner, spec – Builder, build – qa_check.
Aktorius → karkasas · modelis
model-config · presetPaleidimas · sprendimas: aktoriaus sąrankasrc/dispatcher/live.tsKuris karkasas, tiekėjas ir modelis paleidžia aktorių, nustatoma tvarka CLI vėliavėlė > config > preset > ambient > fallback. Aktorius nėra fiksuotas tiekėjas.
Vykdyti efektus · aktorių spawn
src/dispatcher/live.tsPaleidimas · sprendimas: paleisti PlannerPlanner Lead · specifikacijaagent actor · CLIDispatcher paleidžia Planner su projektuota įvestimi. Sąlyginis tyrimas tęsiasi per Planner tyrimo planą ir įrodymų perdavimą, šiame žemėlapyje suskleistus.
Planner Lead · specifikacija
agent actor · CLIDuomenys: spectranscript.jsonl · append-onlysrc/transcriptPlanner specifikacija tampa transkripto įvykiu, ir reducer pagal ją parenka Builder. Aktoriai vienas kito nekviečia.
Vykdyti efektus · aktorių spawn
src/dispatcher/live.tsPaleidimas · sprendimas: paleisti BuilderBuilder · rašo žaidimąagent actor · CLIDispatcher paleidžia Builder. Jei tas pats aktorius nuolat patiria nesėkmę, circuit atsijungia ir pakeičia adapterį, o nesėkmėms tęsiantis – sustabdo.
Builder · rašo žaidimą
agent actor · CLIDuomenys: failaiŽaidimo failaiartifacts/Builder įrašo įėjimo failą, šaltinius ir išteklius kaip artefaktus.
Builder · rašo žaidimą
agent actor · CLIDuomenys: build įrašastranscript.jsonl · append-onlysrc/transcriptĮvykis build ir artifact.created įrašomi į transkriptą su artefakto tapatybe.
Vykdyti efektus · aktorių spawn
src/dispatcher/live.tsPaleidimas · sprendimas: qa_checkVykdymo QA · patikrosdispatcher/qa-runner.tsPo build įvykio reducer skleidžia qa_check efektą su artefakto ir build tapatybe bei priėmimo sąlygomis, o dispatcher jį vykdo.
Žaidimo failai
artifacts/Duomenys: kas paleidžiamaVykdymo QA · patikrosdispatcher/qa-runner.tsVykdymo QA paleidžia tikrą artefaktą su kodo ir naršyklės patikromis. Numatytasis 120 sekundžių laiko limitas yra konfigūracijos reikšmė.
Vykdymo QA · patikros
dispatcher/qa-runner.tsDuomenys: qa.resulttranscript.jsonl · append-onlysrc/transcriptSėkmė ar nesėkmė – rezultatas įrašomas kaip sisteminis qa.result įvykis. Net jei patikra išmeta išimtį, įrašomas rezultatas su neišlaikytais laukais.
Verifikacijos pasitikėjimo riba
Vykdymo QA yra įrodymai iš tikro artefakto paleidimo; Verifier yra modelis, vertinantis projektuotus įrodymus. Reducer juos suderina prieš pasirinkdamas kitą kelią.
Vykdymo QA · patikros
dispatcher/qa-runner.tsDuomenys: qa.resulttranscript.jsonl · append-onlysrc/transcriptSėkmė ar nesėkmė – rezultatas įrašomas kaip sisteminis qa.result įvykis. Net jei patikra išmeta išimtį, įrašomas rezultatas su neišlaikytais laukais.
transcript.jsonl · append-only
src/transcriptDuomenys: tik įrodymaiTeisėjo įvesties projekcijasrc/dispatcher/live.tsVerifier įvestis projektuojama iš naujausių goal, spec, build, qa.result ir artifact.created bei pasirinktų tyrimo įrodymų. Tai susiaurina kontekstą; tai neįrodo izoliacijos ar nutekėjimo nebuvimo.
Teisėjo įvesties projekcija
src/dispatcher/live.tsDuomenys: teisėjo įvestisVerifier · modelio verdiktasVerifier actorDispatcher paleidžia Verifier su projektuota įvestimi.
Verifier · modelio verdiktas
Verifier actorDuomenys: judge.scoretranscript.jsonl · append-onlysrc/transcriptVerifier verdiktas įrašomas kaip judge.score įvykis. Tai modelio sprendimas, o ne faktas apie vykdymą.
Būsena → kiti efektai
src/reducerPaleidimas · sprendimas: balas · QA įrodymaiApsauga nuo apgaulės · balo pataisasrc/validatorGavęs judge.score, reducer jį perduoda apsaugos nuo apgaulės patikrai kartu su QA rezultatu, Builder tiekėju ir tyrimo planu bei įrodymais.
Apsauga nuo apgaulės · balo pataisa
src/validatorDuomenys: pataisytas verdiktasVerdikto nukreipimassrc/reducerPASS be sėkmingo vykdymo tampa FAIL, o su vykdymu susijęs balas pataisomas pagal deterministinį QA. Kitos taisyklės yra sąlyginės pataisos, o ne bendras teisingumo įrodymas.
Verdikto nukreipimas
src/reducerDuomenys: baigtaBaigta · PASS arba sustabdymo priežastissession donePASS baigia sesiją kaip done. Sustojimai dėl biudžeto ir circuit taip pat baigiasi kaip done, bet išlaiko sustabdymo priežastį, todėl done ne visada yra PASS.
Nesėkmė ir žmogaus valdymas
PARTIAL keliauja žmogui, Critical – perprojektuoti, Important ar Minor – taisyti, o sustojimai dėl biudžeto ar circuit palieka sustabdymo priežastį.
Apsauga nuo apgaulės · balo pataisa
src/validatorDuomenys: pataisytas verdiktasVerdikto nukreipimassrc/reducerPASS be sėkmingo vykdymo tampa FAIL, o su vykdymu susijęs balas pataisomas pagal deterministinį QA. Kitos taisyklės yra sąlyginės pataisos, o ne bendras teisingumo įrodymas.
Verdikto nukreipimas
src/reducerPaleidimas · sprendimas: PARTIAL patikraŽaidimo idėja · valdymasPARTIAL laukia žmogaus patikros.
Verdikto nukreipimas
src/reducerPaleidimas · sprendimas: perprojektavimas · taisymassrc/dispatcher/live.tsTarp FAIL ir REJECT Critical grąžinamas Planner perprojektuoti, o Important ar Minor – Builder kaip grįžtamasis ryšys taisymui; visa vykdoma kaip dispatcher efektai.
Verdikto nukreipimas
src/reducerDuomenys: baigtaBaigta · PASS arba sustabdymo priežastissession donePASS baigia sesiją kaip done. Sustojimai dėl biudžeto ir circuit taip pat baigiasi kaip done, bet išlaiko sustabdymo priežastį, todėl done ne visada yra PASS.
Žaidimo idėja · valdymasPaleidimas · sprendimas: idėja · valdymasRašyti komandas į inbox
packages/studioVienos eilutės žaidimo idėja ir valdymas natūralia kalba įvedami Studio, kuri komandas rašo į inbox. Studio niekada tiesiogiai neredaguoja transkripto.
Atkartojimas ir stebėjimas
Atkuriant būseną iš transkripto efektai nevykdomi, o Studio skaito tą patį įrašą, kad jį parodytų.
transcript.jsonl · append-only
src/transcriptDuomenys: nauji įvykiai · atkartojimasĮvykių ciklas · atkartojimas · tailsrc/loop/coordinator.tsWriter patikrina schemą, priskiria ULID ir laiką ir prideda įrašą. Atkartojant ankstesni įvykiai tik pereina per reducer; jų efektai iš naujo nevykdomi.
Įvykių ciklas · atkartojimas · tail
src/loop/coordinator.tsPaleidimas · sprendimas: reduce iš eilėsBūsena → kiti efektaisrc/reducerGyvi įvykiai po vieną imami iš eilės ir pereina per reducer, išlaikant kiekvieno įvykio efektų tvarką; pats perdavimas vyksta asinchroniškai.
transcript.jsonl · append-only
src/transcriptStebėjimas · ataskaita: skaitymas · SSEĮvykių · artefaktų peržiūrapackages/studioStudio skaito transkriptą ir artefaktus ir per SSE rodo pažangą, metrikas ir artefaktus. Tai nėra telemetrija, siunčiama nuotolinei paslaugai.
Visi ryšiai vienodo storio. Pasirinkite srautą, kad būtų paryškintas tik jo kelias su sunumeruotais žingsniais.
- Ištisinė · įvesties, rezultatų ir įrašų kryptis
- Brūkšninė · paleidimas, sprendimas, užklausa
- Ilga taškinė · stebėjimas ir ataskaitos, atskirai nuo sprendimo
- Stora juoda linija · pasirinktas srautas; skaičiai rodo tvarką
- Rėmelis · kodo ar būsenos riba, pavadinta antraštėje
- Vidinė plokštelė · tos ribos komponentas
- Taškinis rėmelis · už tos ribos
- Oranžinis kontūras · kur sprendžia modelis
- Įvykių ciklas · reducer · dispatcher
- Įrašai · sąranka · artefaktai
- Deterministinės patikros · pataisa
- Studio · aktoriai
Nubraižyta pagal kodo kelius viešame komite f5e17c0. Aktoriai yra vykdymo metu veikiantys vaidmenys, skirtingi nuo programavimo agentų, kuriais sukurta ši saugykla.
- Būsenos šaltinis
- Transkriptas yra būsenos šaltinis, o reducer – gryna funkcija. Šalutinius efektus (aktorių paleidimą, QA, failų rašymą) vykdo tik dispatcher, todėl atkartojimas atkuria būseną be efektų.
- Ką apima atkartojimas
- Atkartojimas duoda tą pačią būseną; jis nepadaro deterministinių LLM generavimų ar naršyklės ir tinklo elgsenos.
- Ką apima verdiktas
- Vykdymo QA tikrina tik sukonfigūruotas patikras, o Verifier balas yra vienas įrodymų kanalas. Nė vienas nematuoja visos žaidimo elgsenos, įdomumo ar naudotojų pasitenkinimo.