Tik duonos personažas iš CRUMB logotipo: besišypsanti duonos riekė su nukąstu viršutiniu dešiniuoju kampu
Atgal į salę

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.

Projektavimas ir kūrimas · sukurta su DI programavimo agentais

  • CLIVietinė demonstracija
  • Žiniatinklio StudioVietinė demonstracija

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

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

Sistemos žemėlapis · nubraižyta pagal kodo kelius viešame komite f5e17c0
CRUMB studijos sistemaŽmogus Studio pasiūlo žaidimą ir jį valdo, o Studio rašo komandas į inbox. Coordinator iš eilės perduoda naujus inbox ir transkripto įvykius reducer; grynas reducer nustato būseną ir kitus efektus, o šalutinius efektus vykdo tik dispatcher. Planner specifikacija, Builder build ir artefaktai, vykdymo QA rezultatas ir Verifier sprendimas – visa tampa transkripto įvykiais. Verifier gauna tik projektuotus įrodymus, o reducer patikrina ir pataiso jo balą pagal QA rezultatą: PASS baigia sesiją, PARTIAL laukia žmogaus, o visa kita grįžta perprojektuoti ar taisyti.Žaidimo idėja · valdymasŽmogus, vietinis paleidimaspackages/studioĮvykių · artefaktų peržiūraRašyti komandas į inboxsrc/transcripttranscript.jsonl · append-onlysrc/loop/coordinator.tsĮvykių ciklas · atkartojimas · tailsrc/reducerBūsena → kiti efektaiVerdikto nukreipimassession doneBaigta · PASS arba sustabdymo priežastissrc/dispatcher/live.tsVykdyti efektus · aktorių spawnTeisėjo įvesties projekcijamodel-config · presetAktorius → karkasas · modelisagent actor · CLIPlanner Lead · specifikacijaBuilder · rašo žaidimąartifacts/Žaidimo failaidispatcher/qa-runner.tsVykdymo QA · patikrosVerifier actorVerifier · modelio verdiktassrc/validatorApsauga nuo apgaulės · balo pataisaŽmonės · StudioĮvykių valdymastranskriptas yra būsenos šaltinisDarbo agentai · artefaktaiVerifikacija · sprendimas1idėja · valdymas2user įvykiai3reduce iš eilės4efektai5aktoriaus sąranka6paleisti Planner7spec8paleisti Builder9failai10build įrašas11qa_check12kas paleidžiama13qa.result1qa.result2tik įrodymai3teisėjo įvestis4judge.score5balas · QA įrodymai6pataisytas verdiktas7baigta1pataisytas verdiktas2PARTIAL patikra3perprojektavimas · taisymas4baigta5idėja · valdymas1nauji įvykiai · atkartojimas2reduce iš eilės3skaitymas · SSE

Nuo idėjos iki žaidimo

Idėja tampa specifikacija, build ir vykdymo QA paleidimu. Kiekvienas žingsnis eina per transkriptą; aktoriai vienas kito nekviečia.

  1. Žaidimo idėja · valdymasPaleidimas · sprendimas: idėja · valdymasRašyti komandas į inboxpackages/studio

    Vienos eilutės žaidimo idėja ir valdymas natūralia kalba įvedami Studio, kuri komandas rašo į inbox. Studio niekada tiesiogiai neredaguoja transkripto.

  2. Rašyti komandas į inboxpackages/studioDuomenys: user įvykiaiĮvykių ciklas · atkartojimas · tailsrc/loop/coordinator.ts

    Coordinator skaito inbox komandas ir įrašo jas į transkriptą kaip user įvykius.

  3. Įvykių ciklas · atkartojimas · tailsrc/loop/coordinator.tsPaleidimas · sprendimas: reduce iš eilėsBūsena → kiti efektaisrc/reducer

    Gyvi įvykiai po vieną imami iš eilės ir pereina per reducer, išlaikant kiekvieno įvykio efektų tvarką; pats perdavimas vyksta asinchroniškai.

  4. Būsena → kiti efektaisrc/reducerPaleidimas · sprendimas: efektaiVykdyti efektus · aktorių spawnsrc/dispatcher/live.ts

    Reducer yra gryna funkcija, nustatanti tik būseną ir kitus efektus: goal parenka Planner, spec – Builder, build – qa_check.

  5. Aktorius → karkasas · modelismodel-config · presetPaleidimas · sprendimas: aktoriaus sąrankasrc/dispatcher/live.ts

    Kuris karkasas, tiekėjas ir modelis paleidžia aktorių, nustatoma tvarka CLI vėliavėlė > config > preset > ambient > fallback. Aktorius nėra fiksuotas tiekėjas.

  6. Vykdyti efektus · aktorių spawnsrc/dispatcher/live.tsPaleidimas · sprendimas: paleisti PlannerPlanner Lead · specifikacijaagent actor · CLI

    Dispatcher paleidžia Planner su projektuota įvestimi. Sąlyginis tyrimas tęsiasi per Planner tyrimo planą ir įrodymų perdavimą, šiame žemėlapyje suskleistus.

  7. Planner Lead · specifikacijaagent actor · CLIDuomenys: spectranscript.jsonl · append-onlysrc/transcript

    Planner specifikacija tampa transkripto įvykiu, ir reducer pagal ją parenka Builder. Aktoriai vienas kito nekviečia.

  8. Vykdyti efektus · aktorių spawnsrc/dispatcher/live.tsPaleidimas · sprendimas: paleisti BuilderBuilder · rašo žaidimąagent actor · CLI

    Dispatcher paleidžia Builder. Jei tas pats aktorius nuolat patiria nesėkmę, circuit atsijungia ir pakeičia adapterį, o nesėkmėms tęsiantis – sustabdo.

  9. Builder · rašo žaidimąagent actor · CLIDuomenys: failaiŽaidimo failaiartifacts/

    Builder įrašo įėjimo failą, šaltinius ir išteklius kaip artefaktus.

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

  11. Vykdyti efektus · aktorių spawnsrc/dispatcher/live.tsPaleidimas · sprendimas: qa_checkVykdymo QA · patikrosdispatcher/qa-runner.ts

    Po build įvykio reducer skleidžia qa_check efektą su artefakto ir build tapatybe bei priėmimo sąlygomis, o dispatcher jį vykdo.

  12. Žaidimo failaiartifacts/Duomenys: kas paleidžiamaVykdymo QA · patikrosdispatcher/qa-runner.ts

    Vykdymo QA paleidžia tikrą artefaktą su kodo ir naršyklės patikromis. Numatytasis 120 sekundžių laiko limitas yra konfigūracijos reikšmė.

  13. Vykdymo QA · patikrosdispatcher/qa-runner.tsDuomenys: qa.resulttranscript.jsonl · append-onlysrc/transcript

    Sė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ą.

  1. Vykdymo QA · patikrosdispatcher/qa-runner.tsDuomenys: qa.resulttranscript.jsonl · append-onlysrc/transcript

    Sė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.

  2. transcript.jsonl · append-onlysrc/transcriptDuomenys: tik įrodymaiTeisėjo įvesties projekcijasrc/dispatcher/live.ts

    Verifier į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.

  3. Teisėjo įvesties projekcijasrc/dispatcher/live.tsDuomenys: teisėjo įvestisVerifier · modelio verdiktasVerifier actor

    Dispatcher paleidžia Verifier su projektuota įvestimi.

  4. Verifier · modelio verdiktasVerifier actorDuomenys: judge.scoretranscript.jsonl · append-onlysrc/transcript

    Verifier verdiktas įrašomas kaip judge.score įvykis. Tai modelio sprendimas, o ne faktas apie vykdymą.

  5. Būsena → kiti efektaisrc/reducerPaleidimas · sprendimas: balas · QA įrodymaiApsauga nuo apgaulės · balo pataisasrc/validator

    Gavęs judge.score, reducer jį perduoda apsaugos nuo apgaulės patikrai kartu su QA rezultatu, Builder tiekėju ir tyrimo planu bei įrodymais.

  6. Apsauga nuo apgaulės · balo pataisasrc/validatorDuomenys: pataisytas verdiktasVerdikto nukreipimassrc/reducer

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

  7. Verdikto nukreipimassrc/reducerDuomenys: baigtaBaigta · PASS arba sustabdymo priežastissession done

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

  1. Apsauga nuo apgaulės · balo pataisasrc/validatorDuomenys: pataisytas verdiktasVerdikto nukreipimassrc/reducer

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

  2. Verdikto nukreipimassrc/reducerPaleidimas · sprendimas: PARTIAL patikraŽaidimo idėja · valdymas

    PARTIAL laukia žmogaus patikros.

  3. Verdikto nukreipimassrc/reducerPaleidimas · sprendimas: perprojektavimas · taisymassrc/dispatcher/live.ts

    Tarp FAIL ir REJECT Critical grąžinamas Planner perprojektuoti, o Important ar Minor – Builder kaip grįžtamasis ryšys taisymui; visa vykdoma kaip dispatcher efektai.

  4. Verdikto nukreipimassrc/reducerDuomenys: baigtaBaigta · PASS arba sustabdymo priežastissession done

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

  5. Žaidimo idėja · valdymasPaleidimas · sprendimas: idėja · valdymasRašyti komandas į inboxpackages/studio

    Vienos 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ų.

  1. transcript.jsonl · append-onlysrc/transcriptDuomenys: nauji įvykiai · atkartojimasĮvykių ciklas · atkartojimas · tailsrc/loop/coordinator.ts

    Writer patikrina schemą, priskiria ULID ir laiką ir prideda įrašą. Atkartojant ankstesni įvykiai tik pereina per reducer; jų efektai iš naujo nevykdomi.

  2. Įvykių ciklas · atkartojimas · tailsrc/loop/coordinator.tsPaleidimas · sprendimas: reduce iš eilėsBūsena → kiti efektaisrc/reducer

    Gyvi įvykiai po vieną imami iš eilės ir pereina per reducer, išlaikant kiekvieno įvykio efektų tvarką; pats perdavimas vyksta asinchroniškai.

  3. transcript.jsonl · append-onlysrc/transcriptStebėjimas · ataskaita: skaitymas · SSEĮvykių · artefaktų peržiūrapackages/studio

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