
CRUMB
Generative Game Studio · Demo
No vienas rindas spēles idejas līdz spēlējamam melnrakstam, ar aģentu darbu redzamu un atvērtu iejaukšanās iespējai.
CRUMB ir vairāku aģentu studijas ietvars vienkāršu spēļu prototipēšanai.
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
Aģenti, kas veido spēli, nošķirti no pierādījumiem, pēc kuriem to vērtē.
Lokāla studijas demonstrācija, kas vienas rindas spēles ideju ved cauri specifikācijai, būvēšanai un izpildes pārbaudēm. Katrs solis nonāk JSONL transkriptā, tīra reducer funkcija nosaka nākamos efektus, un tikai dispečers izpilda blakusefektus. Izpildes QA un modeļa verdikts tiek turēti atsevišķi, lai izvēlētos starp izturēšanu, pārprojektēšanu, labošanu un cilvēka vadību.
Aprakstiet spēli vienā rindā, un Claude Code, Codex un Gemini CLI aģenti sadarbojas secībā Planner → Builder → deterministisks QA → Verifier, kamēr CRUMB Studio rāda notikumus, progresu un artefaktus un pieņem iejaukšanos dabiskajā valodā.
Demonstrācija, ko klonē no publiskā repozitorija un palaiž lokāli.
No idejas līdz spēlei
Ideja kļūst par specifikāciju, būvējumu un izpildes QA palaidienu. Katrs solis iet caur transkriptu; aktori cits citu neizsauc.
Spēles ideja · vadībaIzpilde · spriedums: ideja · vadībaKomandu ierakstīšana inbox
packages/studioVienas rindas spēles ideja un vadība dabiskajā valodā tiek ievadītas Studio, kas ieraksta komandas inbox. Studio nekad tieši nerediģē transkriptu.
Komandu ierakstīšana inbox
packages/studioDati: lietotāja notikumiNotikumu cikls · atkārtota atskaņošana · sekošanasrc/loop/coordinator.tsCoordinator nolasa inbox komandas un reģistrē tās transkriptā kā lietotāja notikumus.
Notikumu cikls · atkārtota atskaņošana · sekošana
src/loop/coordinator.tsIzpilde · spriedums: reducēšana secīgiStāvoklis → nākamie efektisrc/reducerTiešsaistes notikumi tiek reducēti pa vienam no rindas, saglabājot katra notikuma efektu secību; pati nosūtīšana notiek asinhroni.
Stāvoklis → nākamie efekti
src/reducerIzpilde · spriedums: efektiEfektu izpilde · aktoru palaišanasrc/dispatcher/live.tsReducer ir tīra funkcija, kas nosaka tikai stāvokli un nākamos efektus: mērķis izvēlas Planner, specifikācija — Builder, būvējums — qa_check.
Aktors → ietvars · modelis
model-config · presetIzpilde · spriedums: aktora iestatīšanasrc/dispatcher/live.tsKurš ietvars, modeļu nodrošinātājs un modelis palaiž aktoru, tiek noteikts secībā CLI karodziņš > config > preset > ambient > fallback. Aktors nav fiksēts modeļu nodrošinātājs.
Efektu izpilde · aktoru palaišana
src/dispatcher/live.tsIzpilde · spriedums: palaist PlannerPlanner Lead · specifikācijaagent actor · CLIDispečers palaiž Planner ar projicētu ievadi. Nosacīta izpēte turpinās caur Planner izpētes plānu un pierādījumu nodošanu, un šajā kartē tā ir sakļauta.
Planner Lead · specifikācija
agent actor · CLIDati: spectranscript.jsonl · append-onlysrc/transcriptPlanner specifikācija kļūst par transkripta notikumu, un reducer pēc tās izvēlas Builder. Aktori cits citu neizsauc.
Efektu izpilde · aktoru palaišana
src/dispatcher/live.tsIzpilde · spriedums: palaist BuilderBuilder · raksta spēliagent actor · CLIDispečers palaiž Builder. Ja tas pats aktors atkārtoti cieš neveiksmi, nostrādā ķēdes pārtraucējs un nomaina adapteri, bet, ja kļūmes turpinās, darbs tiek apturēts.
Builder · raksta spēli
agent actor · CLIDati: failiSpēles failiartifacts/Builder ieraksta ieejas failu, pirmkodu un resursus kā artefaktus.
Builder · raksta spēli
agent actor · CLIDati: būvējuma ierakststranscript.jsonl · append-onlysrc/transcriptBūvējuma notikums un artifact.created tiek reģistrēti transkriptā ar artefakta identitāti.
Efektu izpilde · aktoru palaišana
src/dispatcher/live.tsIzpilde · spriedums: qa_checkIzpildes QA · pārbaudesdispatcher/qa-runner.tsPēc būvējuma notikuma reducer izsūta qa_check efektu, kas nes artefakta un būvējuma identitāti un pieņemšanas nosacījumus, un dispečers to izpilda.
Spēles faili
artifacts/Dati: kas tiek palaistsIzpildes QA · pārbaudesdispatcher/qa-runner.tsIzpildes QA palaiž faktisko artefaktu ar koda un pārlūka pārbaudēm. 120 sekunžu noklusējuma noildze ir konfigurācijas vērtība.
Izpildes QA · pārbaudes
dispatcher/qa-runner.tsDati: qa.resulttranscript.jsonl · append-onlysrc/transcriptVeiksmes vai kļūmes gadījumā rezultāts tiek reģistrēts kā sistēmas qa.result notikums. Pat ja pārbaude izmet izņēmumu, tiek reģistrēts rezultāts ar kļūmes laukiem.
Verifikācijas uzticēšanās robeža
Izpildes QA ir pierādījums no artefakta faktiskas palaišanas; Verifier ir modelis, kas vērtē projicētus pierādījumus. Reducer saskaņo abus, pirms izvēlas nākamo ceļu.
Izpildes QA · pārbaudes
dispatcher/qa-runner.tsDati: qa.resulttranscript.jsonl · append-onlysrc/transcriptVeiksmes vai kļūmes gadījumā rezultāts tiek reģistrēts kā sistēmas qa.result notikums. Pat ja pārbaude izmet izņēmumu, tiek reģistrēts rezultāts ar kļūmes laukiem.
transcript.jsonl · append-only
src/transcriptDati: tikai pierādījumiTiesneša ievades projekcijasrc/dispatcher/live.tsVerifier ievade tiek projicēta no jaunākā mērķa, specifikācijas, būvējuma, qa.result un artifact.created, kā arī atlasītiem izpētes pierādījumiem. Tā sašaurina kontekstu; tā nepierāda izolāciju vai noplūdes neesamību.
Tiesneša ievades projekcija
src/dispatcher/live.tsDati: tiesneša ievadeVerifier · modeļa verdiktsVerifier actorDispečers palaiž Verifier ar projicētu ievadi.
Verifier · modeļa verdikts
Verifier actorDati: judge.scoretranscript.jsonl · append-onlysrc/transcriptVerifier verdikts tiek reģistrēts kā judge.score notikums. Tas ir modeļa spriedums, nevis fakts par izpildi.
Stāvoklis → nākamie efekti
src/reducerIzpilde · spriedums: vērtējums · QA pierādījumiMaldināšanas novēršana · vērtējuma labojumssrc/validatorPie judge.score reducer to nodod maldināšanas novēršanas pārbaudei kopā ar QA rezultātu, Builder modeļu nodrošinātāju un izpētes plānu un pierādījumiem.
Maldināšanas novēršana · vērtējuma labojums
src/validatorDati: labots verdiktsVerdikta maršrutēšanasrc/reducerPASS bez veiksmīgas izpildes kļūst par FAIL, un ar izpildi saistītais vērtējums tiek labots pēc deterministiskā QA. Pārējie noteikumi ir nosacīti labojumi, nevis vispārīgs patiesuma pierādījums.
Verdikta maršrutēšana
src/reducerDati: pabeigtsPabeigts · PASS vai apstāšanās iemeslssession donePASS beidz sesiju ar statusu done. Budžeta un ķēdes pārtraucēja apstāšanās arī beidzas ar statusu done, taču saglabā apstāšanās iemeslu, tāpēc done ne vienmēr nozīmē PASS.
Kļūme un cilvēka vadība
PARTIAL nonāk pie cilvēka, Critical — pārprojektēšanā, Important vai Minor — labošanā, un budžeta vai ķēdes pārtraucēja apstāšanās atstāj apstāšanās iemeslu.
Maldināšanas novēršana · vērtējuma labojums
src/validatorDati: labots verdiktsVerdikta maršrutēšanasrc/reducerPASS bez veiksmīgas izpildes kļūst par FAIL, un ar izpildi saistītais vērtējums tiek labots pēc deterministiskā QA. Pārējie noteikumi ir nosacīti labojumi, nevis vispārīgs patiesuma pierādījums.
Verdikta maršrutēšana
src/reducerIzpilde · spriedums: PARTIAL pārbaudeSpēles ideja · vadībaPARTIAL gaida cilvēka pārbaudi.
Verdikta maršrutēšana
src/reducerIzpilde · spriedums: pārprojektēšana · labošanasrc/dispatcher/live.tsNo FAIL un REJECT Critical atgriežas pie Planner pārprojektēšanai, bet Important vai Minor — pie Builder kā labojumu atgriezeniskā saite; visi tiek izpildīti kā dispečera efekti.
Verdikta maršrutēšana
src/reducerDati: pabeigtsPabeigts · PASS vai apstāšanās iemeslssession donePASS beidz sesiju ar statusu done. Budžeta un ķēdes pārtraucēja apstāšanās arī beidzas ar statusu done, taču saglabā apstāšanās iemeslu, tāpēc done ne vienmēr nozīmē PASS.
Spēles ideja · vadībaIzpilde · spriedums: ideja · vadībaKomandu ierakstīšana inbox
packages/studioVienas rindas spēles ideja un vadība dabiskajā valodā tiek ievadītas Studio, kas ieraksta komandas inbox. Studio nekad tieši nerediģē transkriptu.
Atkārtota atskaņošana un novērošana
Stāvokļa atjaunošana no transkripta neizpilda efektus, un Studio rāda to pašu ierakstu, to nolasot.
transcript.jsonl · append-only
src/transcriptDati: jauni notikumi · atkārtota atskaņošanaNotikumu cikls · atkārtota atskaņošana · sekošanasrc/loop/coordinator.tsRakstītājs validē shēmu, piešķir ULID un laiku un pievieno notikumu beigās. Atkārtotas atskaņošanas laikā pagātnes notikumi tikai tiek reducēti; to efekti netiek izpildīti vēlreiz.
Notikumu cikls · atkārtota atskaņošana · sekošana
src/loop/coordinator.tsIzpilde · spriedums: reducēšana secīgiStāvoklis → nākamie efektisrc/reducerTiešsaistes notikumi tiek reducēti pa vienam no rindas, saglabājot katra notikuma efektu secību; pati nosūtīšana notiek asinhroni.
transcript.jsonl · append-only
src/transcriptNovērošana · ziņojums: nolasīšana · SSENotikumu · artefaktu skatspackages/studioStudio nolasa transkriptu un artefaktus un caur SSE rāda progresu, metrikas un artefaktus. Tā nav telemetrija, kas tiek sūtīta uz attālu pakalpojumu.
Visi savienojumi ar vienādu svaru. Izvēlieties plūsmu, lai izceltu tikai tās ceļu ar numurētiem soļiem.
- Nepārtraukta · ievades, rezultātu un ierakstu virziens
- Raustīta · izpilde, spriedums, pieprasījums
- Gari punkti · novērošana un ziņošana, nošķirti no sprieduma
- Bieza melna līnija · izvēlētā plūsma; skaitļi norāda secību
- Rāmis · koda vai stāvokļa robeža, nosaukums galvenē
- Iekšējā plāksnīte · šīs robežas komponents
- Punktēts rāmis · ārpus šīs robežas
- Oranža kontūra · vieta, kur lemj modelis
- Notikumu cikls · reducer · dispečers
- Ieraksti · iestatījumi · artefakti
- Deterministiskas pārbaudes · labojums
- Studio · aktori
Veidots pēc publiskā komita f5e17c0 koda ceļiem. Aktori ir izpildlaika lomas, kas atšķiras no kodēšanas aģentiem, ar kuriem veidots šis repozitorijs.
- Stāvokļa avots
- Transkripts ir stāvokļa avots, un reducer ir tīra funkcija. Tikai dispečers izpilda blakusefektus (aktoru palaišanu, QA, failu rakstīšanu), tāpēc atkārtota atskaņošana atjauno stāvokli bez efektiem.
- Ko aptver atkārtota atskaņošana
- Atkārtota atskaņošana dod to pašu stāvokli; tā nepadara deterministiskus LLM ģenerējumus vai pārlūka un tīkla uzvedību.
- Ko aptver verdikts
- Izpildes QA pārbauda tikai konfigurētās pārbaudes, un Verifier vērtējums ir viens pierādījumu kanāls. Neviens no tiem nemēra katru spēles uzvedību, jautrību vai lietotāju apmierinātību.