
CRUMB
Generative Game Studio · Demo
Από μια ιδέα παιχνιδιού μιας γραμμής σε ένα προσχέδιο που παίζεται, με τη δουλειά των πρακτόρων ορατή και ανοιχτή σε παρέμβαση.
Το CRUMB είναι πλαίσιο στούντιο πολλών πρακτόρων για πρωτότυπα 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
Οι πράκτορες που χτίζουν ένα παιχνίδι, χωριστά από τα τεκμήρια που το κρίνουν.
Επίδειξη τοπικού στούντιο που περνά μια ιδέα παιχνιδιού μιας γραμμής από προδιαγραφή, build και ελέγχους εκτέλεσης. Κάθε βήμα καταλήγει σε πρακτικό JSONL, ένας καθαρός reducer αποφασίζει τις επόμενες επιδράσεις, και μόνο ο dispatcher εκτελεί παρενέργειες. Το QA εκτέλεσης και η ετυμηγορία του μοντέλου κρατιούνται χωριστά για να αποφασιστεί μεταξύ επιτυχίας, επανασχεδιασμού, επιδιόρθωσης και ανθρώπινης καθοδήγησης.
Αρκεί να περιγράψετε ένα παιχνίδι σε μία γραμμή, και πράκτορες Claude Code, Codex και Gemini CLI συνεργάζονται μέσω Planner → Builder → ντετερμινιστικό QA → Verifier, ενώ το CRUMB Studio δείχνει τα συμβάντα, την πρόοδο και τα τεχνουργήματα και δέχεται παρεμβάσεις σε φυσική γλώσσα.
Επίδειξη που κλωνοποιείτε από το δημόσιο αποθετήριο και τρέχετε τοπικά.
Από την ιδέα στο παιχνίδι
Μια ιδέα γίνεται προδιαγραφή, build και εκτέλεση QA. Κάθε βήμα περνά από το πρακτικό, και οι actors δεν καλούν ο ένας τον άλλο.
Ιδέα παιχνιδιού · καθοδήγησηΕκτέλεση · κρίση: πρόταση · καθοδήγησηΕγγραφή εντολών inbox
packages/studioΜια ιδέα παιχνιδιού μιας γραμμής και η καθοδήγηση σε φυσική γλώσσα εισάγονται στο Studio, το οποίο γράφει εντολές στο inbox. Το Studio δεν επεξεργάζεται ποτέ απευθείας το πρακτικό.
Εγγραφή εντολών inbox
packages/studioΔεδομένα: συμβάντα userΒρόχος συμβάντων · replay · tailsrc/loop/coordinator.tsΟ coordinator διαβάζει τις εντολές του inbox και τις καταγράφει στο πρακτικό ως συμβάντα user.
Βρόχος συμβάντων · replay · tail
src/loop/coordinator.tsΕκτέλεση · κρίση: reduce με τη σειράΚατάσταση → επόμενες επιδράσειςsrc/reducerΤα ζωντανά συμβάντα περνούν από reduce ένα ένα από μια ουρά, διατηρώντας τη σειρά των επιδράσεων κάθε συμβάντος. Το ίδιο το dispatch εκτελείται ασύγχρονα.
Κατάσταση → επόμενες επιδράσεις
src/reducerΕκτέλεση · κρίση: επιδράσειςΕκτέλεση επιδράσεων · spawn actorssrc/dispatcher/live.tsΟ reducer είναι καθαρή συνάρτηση που αποφασίζει μόνο την κατάσταση και τις επόμενες επιδράσεις: ένα goal επιλέγει τον Planner, ένα spec τον Builder, ένα build ένα qa_check.
Actor → πλαίσιο · μοντέλο
model-config · presetΕκτέλεση · κρίση: ρύθμιση actorsrc/dispatcher/live.tsΠοιο πλαίσιο, πάροχος και μοντέλο τρέχουν έναν actor καθορίζεται με τη σειρά σημαία CLI > ρύθμιση > preset > ambient > fallback. Ένας actor δεν είναι σταθερός πάροχος.
Εκτέλεση επιδράσεων · spawn actors
src/dispatcher/live.tsΕκτέλεση · κρίση: εκτέλεση PlannerPlanner Lead · προδιαγραφήagent actor · CLIΟ dispatcher τρέχει τον Planner με προβεβλημένη είσοδο. Η υπό όρους έρευνα συνεχίζεται μέσω του ερευνητικού σχεδίου του Planner και της παράδοσης τεκμηρίων, που είναι διπλωμένη σε αυτόν τον χάρτη.
Planner Lead · προδιαγραφή
agent actor · CLIΔεδομένα: spectranscript.jsonl · append-onlysrc/transcriptΗ προδιαγραφή του Planner γίνεται συμβάν του πρακτικού, και ο reducer επιλέγει από αυτήν τον Builder. Οι actors δεν καλούν ο ένας τον άλλο.
Εκτέλεση επιδράσεων · spawn actors
src/dispatcher/live.tsΕκτέλεση · κρίση: εκτέλεση BuilderBuilder · γράφει το παιχνίδιagent actor · CLIΟ dispatcher τρέχει τον Builder. Αν ο ίδιος actor αποτυγχάνει επανειλημμένα, ανοίγει ένα circuit και αλλάζει τον προσαρμογέα, και σταματά αν οι αποτυχίες συνεχιστούν.
Builder · γράφει το παιχνίδι
agent actor · CLIΔεδομένα: αρχείαΑρχεία παιχνιδιούartifacts/Ο Builder γράφει το αρχείο εισόδου, τον πηγαίο κώδικα και τα assets ως τεχνουργήματα.
Builder · γράφει το παιχνίδι
agent actor · CLIΔεδομένα: καταγραφή buildtranscript.jsonl · append-onlysrc/transcriptΤο συμβάν build και το artifact.created καταγράφονται στο πρακτικό με την ταυτότητα του τεχνουργήματος.
Εκτέλεση επιδράσεων · spawn actors
src/dispatcher/live.tsΕκτέλεση · κρίση: qa_checkQA εκτέλεσης · έλεγχοιdispatcher/qa-runner.tsΜετά από ένα συμβάν build, ο reducer εκπέμπει μια επίδραση qa_check που φέρει την ταυτότητα τεχνουργήματος και build και τις συνθήκες αποδοχής, και ο dispatcher την εκτελεί.
Αρχεία παιχνιδιού
artifacts/Δεδομένα: τι εκτελείταιQA εκτέλεσης · έλεγχοιdispatcher/qa-runner.tsΤο QA εκτέλεσης τρέχει το πραγματικό τεχνούργημα με ελέγχους κώδικα και περιηγητή. Το προεπιλεγμένο χρονικό όριο 120 δευτερολέπτων είναι τιμή ρύθμισης.
QA εκτέλεσης · έλεγχοι
dispatcher/qa-runner.tsΔεδομένα: qa.resulttranscript.jsonl · append-onlysrc/transcriptΕπιτυχία ή αποτυχία, το αποτέλεσμα καταγράφεται ως συμβάν system qa.result. Ακόμη κι αν ο έλεγχος προκαλέσει εξαίρεση, καταγράφεται αποτέλεσμα με τα πεδία που απέτυχαν.
Όριο εμπιστοσύνης της επαλήθευσης
Το QA εκτέλεσης είναι τεκμήριο από την πραγματική εκτέλεση του τεχνουργήματος, ενώ ο Verifier είναι μοντέλο που κρίνει προβεβλημένα τεκμήρια. Ο reducer συμβιβάζει τα δύο πριν επιλέξει την επόμενη διαδρομή.
QA εκτέλεσης · έλεγχοι
dispatcher/qa-runner.tsΔεδομένα: qa.resulttranscript.jsonl · append-onlysrc/transcriptΕπιτυχία ή αποτυχία, το αποτέλεσμα καταγράφεται ως συμβάν system 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 actorΟ dispatcher τρέχει τον 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/reducerΈνα PASS χωρίς επιτυχή εκτέλεση γίνεται FAIL, και ο βαθμός που αφορά την εκτέλεση διορθώνεται από το ντετερμινιστικό QA. Οι άλλοι κανόνες είναι διορθώσεις υπό όρους, όχι γενική απόδειξη φιλαλήθειας.
Δρομολόγηση ετυμηγορίας
src/reducerΔεδομένα: τέλοςΤέλος · PASS ή αιτία διακοπήςsession doneΤο PASS τερματίζει τη συνεδρία ως done. Οι διακοπές λόγω προϋπολογισμού και circuit τελειώνουν επίσης ως done αλλά κρατούν την αιτία διακοπής, οπότε το done δεν είναι πάντα PASS.
Αποτυχία και ανθρώπινη καθοδήγηση
Το PARTIAL πηγαίνει σε άνθρωπο, το Critical σε επανασχεδιασμό, τα Important ή Minor σε επιδιόρθωση, και οι διακοπές λόγω προϋπολογισμού ή circuit αφήνουν αιτία διακοπής.
Αντι-εξαπάτηση · διόρθωση βαθμού
src/validatorΔεδομένα: διορθωμένη ετυμηγορίαΔρομολόγηση ετυμηγορίαςsrc/reducerΈνα PASS χωρίς επιτυχή εκτέλεση γίνεται FAIL, και ο βαθμός που αφορά την εκτέλεση διορθώνεται από το ντετερμινιστικό QA. Οι άλλοι κανόνες είναι διορθώσεις υπό όρους, όχι γενική απόδειξη φιλαλήθειας.
Δρομολόγηση ετυμηγορίας
src/reducerΕκτέλεση · κρίση: έλεγχος PARTIALΙδέα παιχνιδιού · καθοδήγησηΤο PARTIAL περιμένει έλεγχο από άνθρωπο.
Δρομολόγηση ετυμηγορίας
src/reducerΕκτέλεση · κρίση: επανασχεδιασμός · επιδιόρθωσηsrc/dispatcher/live.tsΜεταξύ FAIL και REJECT, το Critical επιστρέφει στον Planner για επανασχεδιασμό και τα Important ή Minor στον Builder ως ανατροφοδότηση διόρθωσης, όλα ως επιδράσεις του dispatcher.
Δρομολόγηση ετυμηγορίας
src/reducerΔεδομένα: τέλοςΤέλος · PASS ή αιτία διακοπήςsession doneΤο PASS τερματίζει τη συνεδρία ως done. Οι διακοπές λόγω προϋπολογισμού και circuit τελειώνουν επίσης ως done αλλά κρατούν την αιτία διακοπής, οπότε το done δεν είναι πάντα PASS.
Ιδέα παιχνιδιού · καθοδήγησηΕκτέλεση · κρίση: πρόταση · καθοδήγησηΕγγραφή εντολών inbox
packages/studioΜια ιδέα παιχνιδιού μιας γραμμής και η καθοδήγηση σε φυσική γλώσσα εισάγονται στο Studio, το οποίο γράφει εντολές στο inbox. Το Studio δεν επεξεργάζεται ποτέ απευθείας το πρακτικό.
Αναπαραγωγή και παρατήρηση
Η ανακατασκευή της κατάστασης από το πρακτικό δεν εκτελεί επιδράσεις, και το Studio διαβάζει την ίδια καταγραφή για να τη δείξει.
transcript.jsonl · append-only
src/transcriptΔεδομένα: νέα συμβάντα · replayΒρόχος συμβάντων · replay · tailsrc/loop/coordinator.tsΟ writer επικυρώνει το σχήμα, αποδίδει ULID και χρόνο, και προσαρτά. Στο replay, τα παλαιά συμβάντα περνούν μόνο από reduce, και οι επιδράσεις τους δεν εκτελούνται ξανά.
Βρόχος συμβάντων · replay · tail
src/loop/coordinator.tsΕκτέλεση · κρίση: reduce με τη σειράΚατάσταση → επόμενες επιδράσειςsrc/reducerΤα ζωντανά συμβάντα περνούν από reduce ένα ένα από μια ουρά, διατηρώντας τη σειρά των επιδράσεων κάθε συμβάντος. Το ίδιο το dispatch εκτελείται ασύγχρονα.
transcript.jsonl · append-only
src/transcriptΠαρατήρηση · αναφορά: ανάγνωση · SSEΠροβολή συμβάντων · τεχνουργημάτωνpackages/studioΤο Studio διαβάζει το πρακτικό και τα τεχνουργήματα και δείχνει πρόοδο, μετρικές και τεχνουργήματα μέσω SSE. Δεν είναι τηλεμετρία που στέλνεται σε απομακρυσμένη υπηρεσία.
Κάθε σύνδεση με το ίδιο πάχος. Επιλέξτε μια ροή για να επισημανθεί μόνο η διαδρομή της, με αριθμημένα βήματα.
- Συνεχής · κατεύθυνση εισόδου, αποτελεσμάτων και καταγραφών
- Διακεκομμένη · εκτέλεση, κρίση, αίτημα
- Μακριές τελείες · παρατήρηση και αναφορά, χωριστά από την κρίση
- Παχιά μαύρη γραμμή · η επιλεγμένη ροή, οι αριθμοί δίνουν τη σειρά
- Κουτί · όριο κώδικα ή κατάστασης, με το όνομά του στην κεφαλίδα
- Εσωτερικό τσιπ · στοιχείο αυτού του ορίου
- Κουτί με τελείες · εκτός αυτού του ορίου
- Πορτοκαλί περίγραμμα · σημείο όπου αποφασίζει ένα μοντέλο
- Βρόχος συμβάντων · reducer · dispatcher
- Καταγραφές · ρύθμιση · τεχνουργήματα
- Ντετερμινιστικοί έλεγχοι · διόρθωση
- Studio · actors
Σχεδιασμένο από διαδρομές κώδικα στο δημόσιο commit f5e17c0. Οι actors είναι ρόλοι του περιβάλλοντος εκτέλεσης, διαφορετικοί από τους πράκτορες κώδικα που χρησιμοποιήθηκαν για την κατασκευή αυτού του αποθετηρίου.
- Πηγή της κατάστασης
- Το πρακτικό είναι η πηγή της κατάστασης και ο reducer είναι καθαρή συνάρτηση. Μόνο ο dispatcher εκτελεί παρενέργειες (εκτέλεση actors, QA, εγγραφή αρχείων), οπότε η αναπαραγωγή ανακατασκευάζει την κατάσταση χωρίς επιδράσεις.
- Τι καλύπτει η αναπαραγωγή
- Η αναπαραγωγή δίνει την ίδια κατάσταση. Δεν κάνει ντετερμινιστικές τις παραγωγές LLM ή τη συμπεριφορά του περιηγητή και του δικτύου.
- Τι καλύπτει μια ετυμηγορία
- Το QA εκτέλεσης ελέγχει μόνο τους ρυθμισμένους ελέγχους, και ο βαθμός του Verifier είναι ένα μόνο κανάλι τεκμηρίων. Κανένα από τα δύο δεν μετρά κάθε συμπεριφορά του παιχνιδιού, τη διασκέδαση ή την ικανοποίηση των χρηστών.