Riêng nhân vật bánh mì từ logo CRUMB: một lát bánh mì mỉm cười bị cắn mất một miếng ở góc trên bên phải
Trở lại phòng trưng bày

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.

Thiết kế và phát triển · xây dựng với tác nhân lập trình AI

  • CLIDemo cục bộ
  • Studio trên webDemo cục bộ

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

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

Bản đồ hệ thống · vẽ từ các đường đi mã tại commit công khai f5e17c0
Hệ thống studio CRUMBMột người đề xuất và điều hướng game từ Studio, và Studio ghi lệnh vào inbox. Coordinator lần lượt chuyển các sự kiện mới từ inbox và transcript cho reducer; reducer thuần quyết định trạng thái và các tác động tiếp theo, và chỉ dispatcher thực hiện tác dụng phụ. Đặc tả của Planner, build và sản phẩm đầu ra của Builder, kết quả QA thực thi và phán định của Verifier đều trở thành sự kiện transcript. Verifier chỉ nhận bằng chứng đã được chiếu, và reducer kiểm tra và hiệu chỉnh điểm của nó theo kết quả QA: PASS kết thúc phiên, PARTIAL chờ một người, còn lại quay về thiết kế lại hoặc sửa.Ý tưởng game · điều hướngMột người, chạy cục bộpackages/studioXem sự kiện · sản phẩm đầu raGhi lệnh vào inboxsrc/transcripttranscript.jsonl · append-onlysrc/loop/coordinator.tsVòng lặp sự kiện · replay · tailsrc/reducerTrạng thái → tác động tiếp theoĐịnh tuyến theo phán địnhsession doneXong · PASS hoặc lý do dừngsrc/dispatcher/live.tsChạy tác động · spawn actorChiếu đầu vào cho bộ phán địnhmodel-config · presetActor → harness · mô hìnhagent actor · CLIPlanner Lead · đặc tảBuilder · viết gameartifacts/Tệp gamedispatcher/qa-runner.tsQA thực thi · kiểm traVerifier actorVerifier · phán định của mô hìnhsrc/validatorChống gian lận · sửa điểmCon người · StudioĐiều khiển sự kiệntranscript là nguồn của trạng tháiTác nhân làm việc · sản phẩm đầu raKiểm chứng · quyết định1đề xuất · điều hướng2sự kiện người dùng3reduce theo thứ tự4tác động5thiết lập actor6chạy Planner7spec8chạy Builder9tệp10bản ghi build11qa_check12cái được chạy13qa.result1qa.result2chỉ bằng chứng3đầu vào phán định4judge.score5điểm · bằng chứng QA6phán định đã hiệu chỉnh7xong1phán định đã hiệu chỉnh2kiểm tra PARTIAL3thiết kế lại · sửa4xong5đề xuất · điều hướng1sự kiện mới · replay2reduce theo thứ tự3đọc · SSE

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.

  1. Ý tưởng game · điều hướngChạy · phán định: đề xuất · điều hướngGhi lệnh vào inboxpackages/studio

    Mộ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.

  2. Ghi lệnh vào inboxpackages/studioDữ liệu: sự kiện người dùngVòng lặp sự kiện · replay · tailsrc/loop/coordinator.ts

    Coordinator đọc lệnh trong inbox và ghi chúng vào transcript dưới dạng sự kiện người dùng.

  3. Vòng lặp sự kiện · replay · tailsrc/loop/coordinator.tsChạy · phán định: reduce theo thứ tựTrạng thái → tác động tiếp theosrc/reducer

    Cá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ộ.

  4. Trạng thái → tác động tiếp theosrc/reducerChạy · phán định: tác độngChạy tác động · spawn actorsrc/dispatcher/live.ts

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

  5. Actor → harness · mô hìnhmodel-config · presetChạy · phán định: thiết lập actorsrc/dispatcher/live.ts

    Harness, 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.

  6. Chạy tác động · spawn actorsrc/dispatcher/live.tsChạy · phán định: chạy PlannerPlanner Lead · đặc tảagent actor · CLI

    Dispatcher 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 đồ.

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

  8. Chạy tác động · spawn actorsrc/dispatcher/live.tsChạy · phán định: chạy BuilderBuilder · viết gameagent actor · CLI

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

  9. Builder · viết gameagent 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.

  10. Builder · viết gameagent actor · CLIDữ liệu: bản ghi buildtranscript.jsonl · append-onlysrc/transcript

    Sự kiện build và artifact.created được ghi vào transcript cùng định danh của sản phẩm.

  11. Chạy tác động · spawn actorsrc/dispatcher/live.tsChạy · phán định: qa_checkQA thực thi · kiểm tradispatcher/qa-runner.ts

    Sau 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ó.

  12. Tệp gameartifacts/Dữ liệu: cái được chạyQA thực thi · kiểm tradispatcher/qa-runner.ts

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

  13. QA thực thi · kiểm tradispatcher/qa-runner.tsDữ liệu: qa.resulttranscript.jsonl · append-onlysrc/transcript

    Thà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.

  1. QA thực thi · kiểm tradispatcher/qa-runner.tsDữ liệu: qa.resulttranscript.jsonl · append-onlysrc/transcript

    Thà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.

  2. transcript.jsonl · append-onlysrc/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ỉ.

  3. Chiếu đầu vào cho bộ phán địnhsrc/dispatcher/live.tsDữ liệu: đầu vào phán địnhVerifier · phán định của mô hìnhVerifier actor

    Dispatcher chạy Verifier với đầu vào đã chiếu.

  4. Verifier · phán định của mô hìnhVerifier actorDữ liệu: judge.scoretranscript.jsonl · append-onlysrc/transcript

    Phá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.

  5. Trạng thái → tác động tiếp theosrc/reducerChạy · phán định: điểm · bằng chứng QAChống gian lận · sửa điểmsrc/validator

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

  6. Chống gian lận · sửa điểmsrc/validatorDữ liệu: phán định đã hiệu chỉnhĐịnh tuyến theo phán địnhsrc/reducer

    Mộ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.

  7. Định tuyến theo phán địnhsrc/reducerDữ liệu: xongXong · PASS hoặc lý do dừngsession done

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

  1. Chống gian lận · sửa điểmsrc/validatorDữ liệu: phán định đã hiệu chỉnhĐịnh tuyến theo phán địnhsrc/reducer

    Mộ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.

  2. Định tuyến theo phán địnhsrc/reducerChạy · phán định: kiểm tra PARTIALÝ tưởng game · điều hướng

    PARTIAL chờ một người kiểm tra.

  3. Định tuyến theo phán địnhsrc/reducerChạy · phán định: thiết kế lại · sửasrc/dispatcher/live.ts

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

  4. Định tuyến theo phán địnhsrc/reducerDữ liệu: xongXong · PASS hoặc lý do dừngsession done

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

  5. Ý tưởng game · điều hướngChạy · phán định: đề xuất · điều hướngGhi lệnh vào inboxpackages/studio

    Mộ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ị.

  1. transcript.jsonl · append-onlysrc/transcriptDữ liệu: sự kiện mới · replayVòng lặp sự kiện · replay · tailsrc/loop/coordinator.ts

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

  2. Vòng lặp sự kiện · replay · tailsrc/loop/coordinator.tsChạy · phán định: reduce theo thứ tựTrạng thái → tác động tiếp theosrc/reducer

    Cá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ộ.

  3. transcript.jsonl · append-onlysrc/transcriptQuan sát · báo cáo: đọc · SSEXem sự kiện · sản phẩm đầu rapackages/studio

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