
CRUMB
Generative Game Studio · Demo
От идея за игра в един ред до играема чернова, с работата на агентите пред очите и отворена за намеса.
CRUMB е многоагентна студийна рамка за прототипиране на казуални игри.
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
Агентите, които изграждат играта, отделени от доказателствата, по които тя се преценява.
Локално студийно демо, което превежда идея за игра в един ред през спецификация, изграждане и проверки на изпълнението. Всяка стъпка влиза в JSONL стенограма, чист reducer решава следващите ефекти, а странични ефекти изпълнява само dispatcher. QA на изпълнението и вердиктът на модела се държат отделно, за да се реши между успех, преработка на дизайна, поправка и човешко насочване.
При идея за игра в един ред агентите Claude Code, Codex и Gemini CLI си сътрудничат по веригата Planner → Builder → детерминистичен QA → Verifier, а CRUMB Studio показва събитията, напредъка и артефактите и приема намеса на естествен език.
Демо, което се клонира от публичното хранилище и се изпълнява локално.
От идеята до играта
Идеята става спецификация, изграждане и изпълнение на QA. Всяка стъпка минава през стенограмата; участниците не се извикват един друг.
Идея за игра · насочванеИзпълнение · преценка: идея · насочванеЗапис на команди в inbox
packages/studioИдеята за игра в един ред и насочването на естествен език се въвеждат в Studio, който записва команди в inbox. Studio никога не редактира стенограмата директно.
Запис на команди в inbox
packages/studioДанни: потребителски събитияЦикъл на събитията · възпроизвеждане · tailsrc/loop/coordinator.tsКоординаторът чете командите от inbox и ги записва в стенограмата като потребителски събития.
Цикъл на събитията · възпроизвеждане · tail
src/loop/coordinator.tsИзпълнение · преценка: редуциране поредСъстояние → следващи ефектиsrc/reducerСъбитията в реално време се редуцират едно по едно от опашка, като се запазва редът на ефектите на всяко събитие; самото диспечиране върви асинхронно.
Състояние → следващи ефекти
src/reducerИзпълнение · преценка: ефектиИзпълнение на ефекти · стартиране на участнициsrc/dispatcher/live.tsReducer е чиста функция, която решава само състоянието и следващите ефекти: goal избира Planner, spec избира Builder, build избира qa_check.
Участник → рамка · модел
model-config · presetИзпълнение · преценка: настройка на участникаsrc/dispatcher/live.tsКоя рамка, доставчик и модел изпълняват даден участник, се определя в реда CLI флаг > конфигурация > preset > ambient > fallback. Участникът не е фиксиран доставчик.
Изпълнение на ефекти · стартиране на участници
src/dispatcher/live.tsИзпълнение · преценка: изпълнение на PlannerPlanner Lead · спецификацияagent actor · CLIDispatcher изпълнява Planner с проектиран вход. Условното проучване продължава чрез плана за проучване на Planner и предаването на доказателства, свити на тази карта.
Planner Lead · спецификация
agent actor · CLIДанни: spectranscript.jsonl · append-onlysrc/transcriptСпецификацията на Planner става събитие в стенограмата и reducer избира Builder по нея. Участниците не се извикват един друг.
Изпълнение на ефекти · стартиране на участници
src/dispatcher/live.tsИзпълнение · преценка: изпълнение на BuilderBuilder · пише игратаagent actor · CLIDispatcher изпълнява Builder. Ако един и същ участник продължава да се проваля, се отваря circuit, който сменя адаптера, и процесът спира, ако неуспехите продължат.
Builder · пише играта
agent actor · CLIДанни: файловеФайлове на игратаartifacts/Builder записва входния файл, изходния код и ресурсите като артефакти.
Builder · пише играта
agent actor · CLIДанни: запис на изгражданетоtranscript.jsonl · append-onlysrc/transcriptСъбитието build и artifact.created се записват в стенограмата заедно с идентичността на артефакта.
Изпълнение на ефекти · стартиране на участници
src/dispatcher/live.tsИзпълнение · преценка: qa_checkQA на изпълнението · проверкиdispatcher/qa-runner.tsСлед събитие build reducer излъчва ефект qa_check, който носи идентичността на артефакта и изграждането и условията за приемане, а dispatcher го изпълнява.
Файлове на играта
artifacts/Данни: какво се изпълняваQA на изпълнението · проверкиdispatcher/qa-runner.tsQA на изпълнението пуска реалния артефакт с проверки на кода и в браузъра. Времевият лимит по подразбиране от 120 секунди е стойност от конфигурацията.
QA на изпълнението · проверки
dispatcher/qa-runner.tsДанни: qa.resulttranscript.jsonl · append-onlysrc/transcriptПри успех или неуспех резултатът се записва като системно събитие qa.result. Дори проверката да хвърли изключение, се записва резултат с неуспешните полета.
Граница на доверие при проверката
QA на изпълнението е доказателство от реалното пускане на артефакта; Verifier е модел, който преценява проектирани доказателства. Reducer съгласува двете, преди да избере следващия път.
QA на изпълнението · проверки
dispatcher/qa-runner.tsДанни: qa.resulttranscript.jsonl · append-onlysrc/transcriptПри успех или неуспех резултатът се записва като системно събитие qa.result. Дори проверката да хвърли изключение, се записва резултат с неуспешните полета.
transcript.jsonl · append-only
src/transcriptДанни: само доказателстваПроекция на входа за съдиятаsrc/dispatcher/live.tsВходът на Verifier се проектира от последните goal, spec, build, qa.result и artifact.created плюс избрани доказателства от проучването. Той стеснява контекста; не доказва изолация или липса на изтичане.
Проекция на входа за съдията
src/dispatcher/live.tsДанни: вход за съдиятаVerifier · вердикт на моделаVerifier actorDispatcher изпълнява Verifier с проектирания вход.
Verifier · вердикт на модела
Verifier actorДанни: judge.scoretranscript.jsonl · append-onlysrc/transcriptВердиктът на Verifier се записва като събитие judge.score. Това е преценка на модел, а не факт за изпълнението.
Състояние → следващи ефекти
src/reducerИзпълнение · преценка: оценка · доказателства от QAЗащита от заблуда · корекция на оценкатаsrc/validatorПри judge.score reducer го подава на проверката за защита от заблуда заедно с резултата от QA, доставчика на Builder и плана и доказателствата от проучването.
Защита от заблуда · корекция на оценката
src/validatorДанни: коригиран вердиктМаршрутизиране по вердиктsrc/reducerPASS без успешно изпълнение става FAIL, а свързаната с изпълнението оценка се коригира по детерминистичния QA. Останалите правила са условни корекции, а не общо доказателство за правдивост.
Маршрутизиране по вердикт
src/reducerДанни: готовоГотово · PASS или причина за спиранеsession donePASS приключва сесията като done. Спиранията поради бюджет и circuit също приключват като done, но запазват причината за спиране, така че done не винаги е PASS.
Неуспех и човешко насочване
PARTIAL отива при човек, Critical за преработка на дизайна, Important или Minor за поправка, а спиранията поради бюджет или circuit оставят причина за спиране.
Защита от заблуда · корекция на оценката
src/validatorДанни: коригиран вердиктМаршрутизиране по вердиктsrc/reducerPASS без успешно изпълнение става FAIL, а свързаната с изпълнението оценка се коригира по детерминистичния QA. Останалите правила са условни корекции, а не общо доказателство за правдивост.
Маршрутизиране по вердикт
src/reducerИзпълнение · преценка: проверка PARTIALИдея за игра · насочванеPARTIAL чака проверка от човек.
Маршрутизиране по вердикт
src/reducerИзпълнение · преценка: преработка на дизайна · поправкаsrc/dispatcher/live.tsОт FAIL и REJECT Critical се връща към Planner за преработка на дизайна, а Important или Minor към Builder като обратна връзка за поправка, всички изпълнявани като ефекти на dispatcher.
Маршрутизиране по вердикт
src/reducerДанни: готовоГотово · PASS или причина за спиранеsession donePASS приключва сесията като done. Спиранията поради бюджет и circuit също приключват като done, но запазват причината за спиране, така че done не винаги е PASS.
Идея за игра · насочванеИзпълнение · преценка: идея · насочванеЗапис на команди в inbox
packages/studioИдеята за игра в един ред и насочването на естествен език се въвеждат в Studio, който записва команди в inbox. Studio никога не редактира стенограмата директно.
Възпроизвеждане и наблюдение
Изграждането на състоянието наново от стенограмата не изпълнява ефекти, а Studio чете същия запис, за да го покаже.
transcript.jsonl · append-only
src/transcriptДанни: нови събития · възпроизвежданеЦикъл на събитията · възпроизвеждане · tailsrc/loop/coordinator.tsЗаписвачът валидира схемата, задава ULID и време и добавя в края. При възпроизвеждане миналите събития само минават през reducer; ефектите им не се изпълняват отново.
Цикъл на събитията · възпроизвеждане · tail
src/loop/coordinator.tsИзпълнение · преценка: редуциране поредСъстояние → следващи ефектиsrc/reducerСъбитията в реално време се редуцират едно по едно от опашка, като се запазва редът на ефектите на всяко събитие; самото диспечиране върви асинхронно.
transcript.jsonl · append-only
src/transcriptНаблюдение · отчет: четене · SSEПреглед на събития · артефактиpackages/studioStudio чете стенограмата и артефактите и показва напредъка, метриките и артефактите чрез SSE. Това не е телеметрия, изпращана към отдалечена услуга.
Всички връзки с еднаква дебелина. Изберете поток, за да се откроят само неговият път и номерираните стъпки.
- Плътна · посока на входа, резултатите и записите
- Прекъсната · изпълнение, преценка, заявка
- Дълга пунктирна · наблюдение и отчитане, отделно от преценката
- Дебела черна линия · избраният поток; числата показват реда
- Кутия · граница на код или състояние, с името в заглавието
- Вътрешен етикет · компонент на тази граница
- Пунктирна кутия · извън тази граница
- Оранжев контур · където решава модел
- Цикъл на събитията · reducer · dispatcher
- Записи · настройка · артефакти
- Детерминистични проверки · корекция
- Studio · участници
Начертано по пътищата в кода при публичния къмит f5e17c0. Участниците са роли по време на изпълнение, различни от агентите за програмиране, използвани за изграждането на това хранилище.
- Източник на състоянието
- Стенограмата е източникът на състоянието, а reducer е чиста функция. Само dispatcher изпълнява странични ефекти (стартиране на участници, QA, запис на файлове), затова възпроизвеждането изгражда състоянието наново без ефекти.
- Какво обхваща възпроизвеждането
- Възпроизвеждането дава същото състояние; то не прави детерминистични генерациите на LLM или поведението на браузъра и мрежата.
- Какво обхваща вердиктът
- QA на изпълнението проверява само конфигурираните проверки, а оценката на Verifier е един канал от доказателства. Нито едно от двете не измерва всяко поведение на играта, дали е забавна или удовлетвореността на потребителите.