
CRUMB
Generative Game Studio · Demo
Dari ide gim satu baris hingga draf yang dapat dimainkan, dengan pekerjaan agen terlihat dan dapat diintervensi.
CRUMB adalah harness studio multi-agen untuk pembuatan prototipe gim kasual.
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
Agen yang membangun gim, dipisahkan dari bukti yang menilainya.
Demo studio lokal yang membawa ide gim satu baris melalui spesifikasi, build, dan pemeriksaan eksekusi. Setiap langkah tercatat di transkrip JSONL, reducer murni menentukan efek berikutnya, dan hanya dispatcher yang menjalankan efek samping. QA eksekusi dan putusan model dipisahkan untuk menentukan antara lolos, desain ulang, perbaikan, dan pengarahan manusia.
Ajukan ide gim dalam satu baris, lalu agen Claude Code, Codex, dan Gemini CLI berkolaborasi melalui Planner → Builder → QA deterministik → Verifier, sementara CRUMB Studio menampilkan event, progres, dan keluaran serta menerima intervensi dalam bahasa alami.
Demo yang di-clone dari repositori publik dan dijalankan secara lokal.
Dari ide hingga bermain
Ide menjadi spesifikasi, build, dan eksekusi QA. Setiap langkah melewati transkrip; actor tidak saling memanggil.
Ide gim · pengarahanEksekusi · penilaian: ajukan · arahkanTulis perintah inbox
packages/studioIde gim satu baris dan pengarahan dalam bahasa alami dimasukkan di Studio, yang menulis perintah ke inbox. Studio tidak pernah mengedit transkrip secara langsung.
Tulis perintah inbox
packages/studioData: event penggunaLoop event · replay · tailsrc/loop/coordinator.tsCoordinator membaca perintah inbox dan mencatatnya di transkrip sebagai event pengguna.
Loop event · replay · tail
src/loop/coordinator.tsEksekusi · penilaian: reduce berurutanStatus → efek berikutnyasrc/reducerEvent langsung di-reduce satu per satu dari antrean, menjaga urutan efek setiap event; dispatch itu sendiri berjalan asinkron.
Status → efek berikutnya
src/reducerEksekusi · penilaian: efekJalankan efek · spawn actorsrc/dispatcher/live.tsReducer adalah fungsi murni yang hanya menentukan status dan efek berikutnya: goal memilih Planner, spec memilih Builder, build memilih qa_check.
Actor → harness · model
model-config · presetEksekusi · penilaian: penyiapan actorsrc/dispatcher/live.tsHarness, penyedia, dan model yang menjalankan actor ditentukan dengan urutan CLI flag > config > preset > ambient > fallback. Actor bukan penyedia yang tetap.
Jalankan efek · spawn actor
src/dispatcher/live.tsEksekusi · penilaian: jalankan PlannerPlanner Lead · spesifikasiagent actor · CLIDispatcher menjalankan Planner dengan input yang diproyeksikan. Riset bersyarat berlanjut melalui rencana riset dan serah terima bukti Planner, yang dilipat pada peta ini.
Planner Lead · spesifikasi
agent actor · CLIData: spectranscript.jsonl · append-onlysrc/transcriptSpesifikasi Planner menjadi event transkrip, dan reducer memilih Builder darinya. Actor tidak saling memanggil.
Jalankan efek · spawn actor
src/dispatcher/live.tsEksekusi · penilaian: jalankan BuilderBuilder · menulis gimagent actor · CLIDispatcher menjalankan Builder. Bila actor yang sama terus gagal, circuit terbuka dan menukar adapter, dan berhenti bila kegagalan berlanjut.
Builder · menulis gim
agent actor · CLIData: berkasBerkas gimartifacts/Builder menulis berkas entri, sumber, dan aset sebagai keluaran.
Builder · menulis gim
agent actor · CLIData: catatan buildtranscript.jsonl · append-onlysrc/transcriptEvent build dan artifact.created dicatat di transkrip bersama identitas keluaran.
Jalankan efek · spawn actor
src/dispatcher/live.tsEksekusi · penilaian: qa_checkQA eksekusi · pemeriksaandispatcher/qa-runner.tsSetelah event build, reducer memancarkan efek qa_check yang membawa identitas keluaran dan build serta syarat penerimaan, lalu dispatcher menjalankannya.
Berkas gim
artifacts/Data: yang dijalankanQA eksekusi · pemeriksaandispatcher/qa-runner.tsQA eksekusi menjalankan keluaran sebenarnya dengan pemeriksaan kode dan browser. Timeout bawaan 120 detik adalah nilai konfigurasi.
QA eksekusi · pemeriksaan
dispatcher/qa-runner.tsData: qa.resulttranscript.jsonl · append-onlysrc/transcriptBerhasil atau gagal, hasilnya dicatat sebagai event qa.result sistem. Bahkan bila pemeriksaan melempar exception, hasil dengan field yang gagal tetap dicatat.
Batas kepercayaan verifikasi
QA eksekusi adalah bukti dari benar-benar menjalankan keluaran; Verifier adalah model yang menilai bukti yang diproyeksikan. Reducer merekonsiliasi keduanya sebelum memilih jalur berikutnya.
QA eksekusi · pemeriksaan
dispatcher/qa-runner.tsData: qa.resulttranscript.jsonl · append-onlysrc/transcriptBerhasil atau gagal, hasilnya dicatat sebagai event qa.result sistem. Bahkan bila pemeriksaan melempar exception, hasil dengan field yang gagal tetap dicatat.
transcript.jsonl · append-only
src/transcriptData: bukti sajaProyeksi input penilaisrc/dispatcher/live.tsInput Verifier diproyeksikan dari goal, spec, build, qa.result, dan artifact.created terbaru ditambah bukti riset terpilih. Ini mempersempit konteks; ini tidak membuktikan isolasi atau tiadanya kebocoran.
Proyeksi input penilai
src/dispatcher/live.tsData: input penilaiVerifier · putusan modelVerifier actorDispatcher menjalankan Verifier dengan input yang diproyeksikan.
Verifier · putusan model
Verifier actorData: judge.scoretranscript.jsonl · append-onlysrc/transcriptPutusan Verifier dicatat sebagai event judge.score. Ini penilaian model, bukan fakta tentang eksekusi.
Status → efek berikutnya
src/reducerEksekusi · penilaian: skor · bukti QAAnti-penipuan · koreksi skorsrc/validatorSaat judge.score masuk, reducer meneruskannya ke pemeriksaan anti-penipuan bersama hasil QA, penyedia Builder, serta rencana dan bukti riset.
Anti-penipuan · koreksi skor
src/validatorData: putusan terkoreksiPerutean putusansrc/reducerPASS tanpa eksekusi yang berhasil menjadi FAIL, dan skor terkait eksekusi dikoreksi dari QA deterministik. Aturan lainnya adalah koreksi bersyarat, bukan bukti umum kejujuran.
Perutean putusan
src/reducerData: selesaiSelesai · PASS atau alasan berhentisession donePASS mengakhiri sesi sebagai done. Penghentian karena anggaran dan circuit juga berakhir sebagai done tetapi menyimpan alasan berhentinya, sehingga done tidak selalu PASS.
Kegagalan dan pengarahan manusia
PARTIAL menuju seseorang, Critical ke desain ulang, Important atau Minor ke perbaikan, dan penghentian karena anggaran atau circuit meninggalkan alasan berhenti.
Anti-penipuan · koreksi skor
src/validatorData: putusan terkoreksiPerutean putusansrc/reducerPASS tanpa eksekusi yang berhasil menjadi FAIL, dan skor terkait eksekusi dikoreksi dari QA deterministik. Aturan lainnya adalah koreksi bersyarat, bukan bukti umum kejujuran.
Perutean putusan
src/reducerEksekusi · penilaian: pemeriksaan PARTIALIde gim · pengarahanPARTIAL menunggu seseorang memeriksa.
Perutean putusan
src/reducerEksekusi · penilaian: desain ulang · perbaikisrc/dispatcher/live.tsDi antara FAIL dan REJECT, Critical kembali ke Planner untuk desain ulang dan Important atau Minor ke Builder sebagai umpan balik perbaikan, semuanya dijalankan sebagai efek dispatcher.
Perutean putusan
src/reducerData: selesaiSelesai · PASS atau alasan berhentisession donePASS mengakhiri sesi sebagai done. Penghentian karena anggaran dan circuit juga berakhir sebagai done tetapi menyimpan alasan berhentinya, sehingga done tidak selalu PASS.
Ide gim · pengarahanEksekusi · penilaian: ajukan · arahkanTulis perintah inbox
packages/studioIde gim satu baris dan pengarahan dalam bahasa alami dimasukkan di Studio, yang menulis perintah ke inbox. Studio tidak pernah mengedit transkrip secara langsung.
Pemutaran ulang dan observasi
Membangun ulang status dari transkrip tidak menjalankan efek apa pun, dan Studio membaca catatan yang sama untuk menampilkannya.
transcript.jsonl · append-only
src/transcriptData: event baru · replayLoop event · replay · tailsrc/loop/coordinator.tsWriter memvalidasi skema, memberikan ULID dan waktu, lalu menambahkannya. Saat pemutaran ulang, event lama hanya di-reduce; efeknya tidak dijalankan lagi.
Loop event · replay · tail
src/loop/coordinator.tsEksekusi · penilaian: reduce berurutanStatus → efek berikutnyasrc/reducerEvent langsung di-reduce satu per satu dari antrean, menjaga urutan efek setiap event; dispatch itu sendiri berjalan asinkron.
transcript.jsonl · append-only
src/transcriptObservasi · laporan: baca · SSETampilan event · keluaranpackages/studioStudio membaca transkrip dan keluaran lalu menampilkan progres, metrik, dan keluaran melalui SSE. Ini bukan telemetri yang dikirim ke layanan jarak jauh.
Setiap koneksi dengan bobot yang sama. Pilih alur untuk menyorot hanya jalurnya, dengan langkah bernomor.
- Garis utuh · arah input, hasil, dan catatan
- Garis putus · eksekusi, penilaian, permintaan
- Titik panjang · observasi dan pelaporan, terpisah dari penilaian
- Garis hitam tebal · alur yang dipilih; angka menunjukkan urutan
- Kotak · batas kode atau status, namanya di bagian kepala
- Chip dalam · komponen dari batas itu
- Kotak bertitik · di luar batas itu
- Garis tepi oranye · tempat model memutuskan
- Loop event · reducer · dispatcher
- Catatan · penyiapan · keluaran
- Pemeriksaan deterministik · koreksi
- Studio · actor
Digambar dari jalur kode pada commit publik f5e17c0. Actor adalah peran saat runtime, berbeda dari agen pemrograman yang dipakai untuk membangun repositori ini.
- Sumber status
- Transkrip adalah sumber status dan reducer adalah fungsi murni. Hanya dispatcher yang menjalankan efek samping (menjalankan actor, QA, menulis berkas), sehingga pemutaran ulang membangun ulang status tanpa efek.
- Cakupan pemutaran ulang
- Pemutaran ulang menghasilkan status yang sama; ini tidak membuat pembuatan oleh LLM atau perilaku browser dan jaringan menjadi deterministik.
- Cakupan putusan
- QA eksekusi hanya memeriksa pemeriksaan yang dikonfigurasi, dan skor Verifier adalah satu saluran bukti. Keduanya tidak mengukur setiap perilaku gim, keseruan, atau kepuasan pengguna.