
CRUMB
Generative Game Studio · Demo
Từ ý tưởng game một dòng đến bản nháp chơi được, với công việc của các tác nhân luôn trong tầm nhìn và có thể can thiệp.
CRUMB là một harness studio đa tác nhân để tạo nguyên mẫu game casual.
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
Các tác nhân xây dựng game, được tách khỏi bằng chứng phán định nó.
Một demo studio cục bộ đưa một ý tưởng game một dòng qua đặc tả, build và kiểm tra thực thi. Mọi bước đều được ghi vào transcript JSONL, một reducer thuần quyết định các tác động tiếp theo, và chỉ dispatcher thực hiện tác dụng phụ. QA thực thi và phán định của mô hình được tách riêng để quyết định giữa đạt, thiết kế lại, sửa và điều hướng của con người.
Đề xuất một game trong một dòng, các tác nhân Claude Code, Codex và Gemini CLI cộng tác qua Planner → Builder → QA tất định → Verifier, trong khi CRUMB Studio hiển thị sự kiện, tiến độ và sản phẩm đầu ra và nhận can thiệp bằng ngôn ngữ tự nhiên.
Một demo được clone từ kho công khai và chạy cục bộ.
Từ ý tưởng đến chơi
Một ý tưởng trở thành đặc tả, build và một lượt QA thực thi. Mọi bước đều đi qua transcript; các actor không gọi lẫn nhau.
Ý tưởng game · điều hướngChạy · phán định: đề xuất · điều hướngGhi lệnh vào inbox
packages/studioMột ý tưởng game một dòng và việc điều hướng bằng ngôn ngữ tự nhiên được nhập trong Studio, nơi ghi lệnh vào inbox. Studio không bao giờ sửa trực tiếp transcript.
Ghi lệnh vào inbox
packages/studioDữ liệu: sự kiện người dùngVòng lặp sự kiện · replay · tailsrc/loop/coordinator.tsCoordinator đọc lệnh trong inbox và ghi chúng vào transcript dưới dạng sự kiện người dùng.
Vòng lặp sự kiện · replay · tail
src/loop/coordinator.tsChạy · phán định: reduce theo thứ tựTrạng thái → tác động tiếp theosrc/reducerCác sự kiện trực tiếp được reduce lần lượt từ một hàng đợi, giữ thứ tự tác động của từng sự kiện; bản thân dispatch chạy bất đồng bộ.
Trạng thái → tác động tiếp theo
src/reducerChạy · phán định: tác độngChạy tác động · spawn actorsrc/dispatcher/live.tsReducer là một hàm thuần chỉ quyết định trạng thái và các tác động tiếp theo: goal chọn Planner, spec chọn Builder, build chọn qa_check.
Actor → harness · mô hình
model-config · presetChạy · phán định: thiết lập actorsrc/dispatcher/live.tsHarness, nhà cung cấp và mô hình chạy một actor được xác định theo thứ tự CLI flag > config > preset > ambient > fallback. Một actor không phải là nhà cung cấp cố định.
Chạy tác động · spawn actor
src/dispatcher/live.tsChạy · phán định: chạy PlannerPlanner Lead · đặc tảagent actor · CLIDispatcher chạy Planner với đầu vào đã chiếu. Nghiên cứu có điều kiện tiếp tục qua kế hoạch nghiên cứu và bàn giao bằng chứng của Planner, phần này được thu gọn trên bản đồ.
Planner Lead · đặc tả
agent actor · CLIDữ liệu: spectranscript.jsonl · append-onlysrc/transcriptĐặc tả của Planner trở thành một sự kiện transcript, và reducer chọn Builder từ đó. Các actor không gọi lẫn nhau.
Chạy tác động · spawn actor
src/dispatcher/live.tsChạy · phán định: chạy BuilderBuilder · viết gameagent actor · CLIDispatcher chạy Builder. Nếu cùng một actor liên tục thất bại, một circuit mở ra và hoán đổi adapter, và dừng nếu thất bại vẫn tiếp diễn.
Builder · viết game
agent actor · CLIDữ liệu: tệpTệp gameartifacts/Builder ghi tệp điểm vào, mã nguồn và tài nguyên thành sản phẩm đầu ra.
Builder · viết game
agent actor · CLIDữ liệu: bản ghi buildtranscript.jsonl · append-onlysrc/transcriptSự kiện build và artifact.created được ghi vào transcript cùng định danh của sản phẩm.
Chạy tác động · spawn actor
src/dispatcher/live.tsChạy · phán định: qa_checkQA thực thi · kiểm tradispatcher/qa-runner.tsSau một sự kiện build, reducer phát một tác động qa_check mang định danh sản phẩm và build cùng các điều kiện chấp nhận, và dispatcher chạy nó.
Tệp game
artifacts/Dữ liệu: cái được chạyQA thực thi · kiểm tradispatcher/qa-runner.tsQA thực thi chạy sản phẩm thực tế với các kiểm tra mã và trình duyệt. Timeout mặc định 120 giây là một giá trị cấu hình.
QA thực thi · kiểm tra
dispatcher/qa-runner.tsDữ liệu: qa.resulttranscript.jsonl · append-onlysrc/transcriptThành công hay thất bại, kết quả đều được ghi là một sự kiện qa.result của hệ thống. Ngay cả khi kiểm tra ném ngoại lệ, một kết quả với các trường thất bại vẫn được ghi lại.
Ranh giới tin cậy của kiểm chứng
QA thực thi là bằng chứng từ việc thực sự chạy sản phẩm; Verifier là một mô hình phán định bằng chứng đã chiếu. Reducer đối chiếu hai thứ này trước khi chọn đường tiếp theo.
QA thực thi · kiểm tra
dispatcher/qa-runner.tsDữ liệu: qa.resulttranscript.jsonl · append-onlysrc/transcriptThành công hay thất bại, kết quả đều được ghi là một sự kiện qa.result của hệ thống. Ngay cả khi kiểm tra ném ngoại lệ, một kết quả với các trường thất bại vẫn được ghi lại.
transcript.jsonl · append-only
src/transcriptDữ liệu: chỉ bằng chứngChiếu đầu vào cho bộ phán địnhsrc/dispatcher/live.tsĐầu vào của Verifier được chiếu từ goal, spec, build, qa.result và artifact.created mới nhất cộng với bằng chứng nghiên cứu được chọn. Nó thu hẹp ngữ cảnh; nó không chứng minh sự cô lập hay không rò rỉ.
Chiếu đầu vào cho bộ phán định
src/dispatcher/live.tsDữ liệu: đầu vào phán địnhVerifier · phán định của mô hìnhVerifier actorDispatcher chạy Verifier với đầu vào đã chiếu.
Verifier · phán định của mô hình
Verifier actorDữ liệu: judge.scoretranscript.jsonl · append-onlysrc/transcriptPhán định của Verifier được ghi là một sự kiện judge.score. Đó là phán định của mô hình, không phải sự thật về việc thực thi.
Trạng thái → tác động tiếp theo
src/reducerChạy · phán định: điểm · bằng chứng QAChống gian lận · sửa điểmsrc/validatorKhi có judge.score, reducer chuyển nó cho bước kiểm tra chống gian lận cùng với kết quả QA, nhà cung cấp của Builder và kế hoạch cùng bằng chứng nghiên cứu.
Chống gian lận · sửa điểm
src/validatorDữ liệu: phán định đã hiệu chỉnhĐịnh tuyến theo phán địnhsrc/reducerMột PASS không có lượt thực thi thành công trở thành FAIL, và điểm liên quan đến thực thi được sửa theo QA tất định. Các quy tắc khác là hiệu chỉnh có điều kiện, không phải chứng minh chung về tính trung thực.
Định tuyến theo phán định
src/reducerDữ liệu: xongXong · PASS hoặc lý do dừngsession donePASS kết thúc phiên ở trạng thái done. Các điểm dừng do ngân sách và circuit cũng kết thúc là done nhưng giữ lý do dừng, nên done không phải lúc nào cũng là PASS.
Thất bại và điều hướng của con người
PARTIAL đến một người, Critical đến thiết kế lại, Important hoặc Minor đến sửa, và điểm dừng do ngân sách hay circuit để lại lý do dừng.
Chống gian lận · sửa điểm
src/validatorDữ liệu: phán định đã hiệu chỉnhĐịnh tuyến theo phán địnhsrc/reducerMột PASS không có lượt thực thi thành công trở thành FAIL, và điểm liên quan đến thực thi được sửa theo QA tất định. Các quy tắc khác là hiệu chỉnh có điều kiện, không phải chứng minh chung về tính trung thực.
Định tuyến theo phán định
src/reducerChạy · phán định: kiểm tra PARTIALÝ tưởng game · điều hướngPARTIAL chờ một người kiểm tra.
Định tuyến theo phán định
src/reducerChạy · phán định: thiết kế lại · sửasrc/dispatcher/live.tsTrong FAIL và REJECT, Critical quay về Planner để thiết kế lại, còn Important hoặc Minor đến Builder dưới dạng phản hồi sửa, tất cả đều chạy như tác động của dispatcher.
Định tuyến theo phán định
src/reducerDữ liệu: xongXong · PASS hoặc lý do dừngsession donePASS kết thúc phiên ở trạng thái done. Các điểm dừng do ngân sách và circuit cũng kết thúc là done nhưng giữ lý do dừng, nên done không phải lúc nào cũng là PASS.
Ý tưởng game · điều hướngChạy · phán định: đề xuất · điều hướngGhi lệnh vào inbox
packages/studioMột ý tưởng game một dòng và việc điều hướng bằng ngôn ngữ tự nhiên được nhập trong Studio, nơi ghi lệnh vào inbox. Studio không bao giờ sửa trực tiếp transcript.
Phát lại và quan sát
Dựng lại trạng thái từ transcript không chạy tác động nào, và Studio đọc cùng bản ghi đó để hiển thị.
transcript.jsonl · append-only
src/transcriptDữ liệu: sự kiện mới · replayVòng lặp sự kiện · replay · tailsrc/loop/coordinator.tsWriter xác thực schema, gán ULID và thời gian, rồi ghi thêm. Khi phát lại, các sự kiện cũ chỉ được reduce; tác động của chúng không chạy lại.
Vòng lặp sự kiện · replay · tail
src/loop/coordinator.tsChạy · phán định: reduce theo thứ tựTrạng thái → tác động tiếp theosrc/reducerCác sự kiện trực tiếp được reduce lần lượt từ một hàng đợi, giữ thứ tự tác động của từng sự kiện; bản thân dispatch chạy bất đồng bộ.
transcript.jsonl · append-only
src/transcriptQuan sát · báo cáo: đọc · SSEXem sự kiện · sản phẩm đầu rapackages/studioStudio đọc transcript và sản phẩm đầu ra rồi hiển thị tiến độ, chỉ số và sản phẩm qua SSE. Đây không phải telemetry gửi đến một dịch vụ từ xa.
Mọi kết nối có cùng độ đậm. Chọn một luồng để chỉ làm nổi bật đường đi của nó, kèm các bước được đánh số.
- Nét liền · hướng đi của đầu vào, kết quả và bản ghi
- Nét đứt · chạy, phán định, yêu cầu
- Chấm dài · quan sát và báo cáo, tách khỏi phán định
- Nét đen đậm · luồng được chọn; số chỉ thứ tự
- Hộp · ranh giới mã hoặc trạng thái, tên ở phần đầu
- Chip bên trong · một thành phần của ranh giới đó
- Hộp chấm · bên ngoài ranh giới đó
- Viền cam · nơi một mô hình quyết định
- Vòng lặp sự kiện · reducer · dispatcher
- Bản ghi · thiết lập · sản phẩm đầu ra
- Kiểm tra tất định · hiệu chỉnh
- Studio · actor
Vẽ từ các đường đi mã tại commit công khai f5e17c0. Actor là các vai trò lúc chạy, khác với các tác nhân lập trình được dùng để xây dựng kho mã này.
- Nguồn của trạng thái
- Transcript là nguồn của trạng thái và reducer là một hàm thuần. Chỉ dispatcher thực hiện tác dụng phụ (chạy actor, QA, ghi tệp), nên phát lại dựng lại trạng thái mà không có tác động nào.
- Phạm vi của phát lại
- Phát lại cho ra cùng một trạng thái; nó không làm cho việc sinh của LLM hay hành vi trình duyệt và mạng trở nên tất định.
- Phạm vi của phán định
- QA thực thi chỉ kiểm tra những mục đã được cấu hình, và điểm của Verifier là một kênh bằng chứng. Cả hai đều không đo mọi hành vi của game, độ vui hay sự hài lòng của người dùng.