Do not vibecode, spellcode
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗CodeWizards is an open-source local app, in development, that turns the AI coding agents you already use into a tower of pixel-art wizards in the style of the Game Boy Color. A small process on your computer drives the official agent CLIs with your own accounts and opens the room in your browser, so your work spends the plan limits or free quotas you already have instead of pay-per-token credit. Each project is a room, each agent is a wizard, and every action is a spell you can see, approve and audit.
Status: v1.7.0. The room now runs on a local core:
codewizards demowith simulated wizards, and an experimentalcodewizards servethat drives your own Claude Code on a repository. It is not on npm yet (changelog). Try the demo: simulated agents, interface still in Spanish.
codewizards.app comes with the first release.| Milestone | What | Status |
|---|---|---|
| 0 · Mockup | GBC room, spell book and blackboard with simulated agents | Done · v1.0 |
| 1 · Specialisation | Steps 1 to 7 polish their parts on the mockup | In progress · steps 1 and 2 done (v1.1, v1.2) |
| 2 · Local app | Local core with the room in the browser, CI with a browser smoke test and a test package | In progress · core, CI and test package in v1.2 |
| 3 · Claude, for real | Claude Code with the user's own Claude account | — |
| 4 · More accounts | Codex, Google's CLI and others, routed by remaining quota | — |
| 5 · Launch | Download page at codewizards.app, desktop app decision, launch plan and published release | — |
You need Node 22 or newer and git. For serve, also Claude Code, installed and signed in with your own account. With Nix, nix develop gives you node, npm, git and the Python the art needs.
git clone https://github.com/poligle/codewizards && cd codewizards
nix develop # optional, with Nix
npm ci --ignore-scripts
node apps/core/bin/codewizards.js # La Torre: your rooms, enter one or found a new one
node apps/core/bin/codewizards.js demo # the room with simulated wizards
node apps/core/bin/codewizards.js doctor # checks node, git, gh and claude
node apps/core/bin/codewizards.js serve --repo PATH # experimental: your Claude Code on PATH
The room opens at http://127.0.0.1:PORT/#token=…; keep that address to yourself. Caps, sandbox and data folders are described in docs/arquitectura.md (in Spanish).
What happens when you cast a spell in codewizards serve --repo PATH. The repository needs at least one commit, because each task branches from it. It needs nothing from Claude Code inside it: your Claude Code login lives in your home folder, not in the repository.
cw/t1-<name> from your current commit and a separate working copy of it (a git worktree) in its own data folder. Your checkout is not touched while the wizard works.git status, git diff, git log and the command you allow with --test-command, inside Claude Code's sandbox. It cannot push or reach the network. Anything denied shows up in the scroll.cw/t1-<name> and the copy is removed. Your branch does not move: the blackboard offers Merge into my branch (a fast-forward, never forced) and shows the git merge that does the same. Start serve with --merge to fast-forward on approval, or with --open-prs to push the branch and open a draft pull request with your own gh.ANTHROPIC_API_KEY or ANTHROPIC_AUTH_TOKEN is set, CodeWizards leaves it out so the plan pays; --use-api-key bills the API instead. If you turned on extra usage in your Claude account, work past the plan's limit is billed at API rates.The Archmage's table lives in ranks.json: for each rank a model and an effort (Apprentice haiku at low effort, Young Mage sonnet at medium, Grand Sage opus at high: aliases that pick the newest model your Claude Code supports, shown in the room), its turns and a short system note. Change it in ~/.config/codewizards/ranks.json, or pick the model and the effort for one spell in the spell book. The tasks panel has what is in progress, what is done (the history), a notes editor for what is still to do, and a read-only explorer of the repository's committed files. Leftovers are ordinary git: git branch -D cw/t1-<name> and git worktree prune. --record keeps each turn's raw output, with known secret formats masked, next to the room's log, to turn real runs into test recordings.
| Path | Contents |
|---|---|
apps/room/ | The room (formerly the mockup): src/ is served as is (world, simulator, renderer, interface, live link); build.py exports the art to src/assets.gen.js; test/ |
apps/core/ | The local core: the codewizards command, the local server, the event log, the rooms (demo and Claude Code), the adapters and their tests |
packages/contract/ | Event contract v2 as code, with its validator |
evals/ | The Archmage's evals: 20 small tasks with hidden tests (in Spanish: evals/README.md) |
tools/smoke.mjs | Browser smoke test (Playwright, Chromium) |
codewizards-art/ | GBC-style pixel art painted by code and retouched by hand: assets, palettes, meta.json and the generator in 04_source/ |
docs/ | agentes.md (development plan, event contract and agent prompts), arquitectura.md (architecture), concepto/ and img/; in Spanish |
auditorias/ | Step reports and the hand-off log, in Spanish |
licenses/ | Third-party components and their licenses |
.github/ | CI (art, room, core on Linux, macOS and Windows, smoke test), demo deploy to Pages, secret scan and Dependabot |
The first art round, in SNES style, was retired in v1.1 and lives in tag v1.0.
The room knows nothing about LLMs: it only replays events (room.opened, task.created, agent.summoned, agent.assigned, context.read, code.write, command.run, command.denied, artifact.present, tokens.used, quota.updated, review.requested, review.approved, review.rejected, agent.error, agent.blocked, agent.unblocked, task.done, task.merged, task.failed, task.cancelled, agent.idle). The simulator and the Claude Code adapter emit the same ones, and the core checks every event against packages/contract/contract.js before it stores or sends it. Each event carries a sequence number, so replaying the log never doubles anything. Full table in docs/agentes.md.
nix develop # optional: node, npm, git, Python with numpy and Pillow, and `codewizards` on the PATH
npm ci --ignore-scripts # ws, plus Playwright for the smoke test
npm test # core, contract and room tests
npx playwright install chromium && npm run smoke # the room in a real browser
node tools/evals.mjs --self-check # the eval bank (see evals/README.md before a real run)
nix develop .#smoke -c npm run smoke # the same on NixOS, with nixpkgs' Chromium
python3 -m pip install -r codewizards-art/04_source/requirements.txt # numpy, Pillow
python3 codewizards-art/04_source/gen/build.py # regenerate art, previews and the art demo
python3 codewizards-art/04_source/gen/check.py # validate art: format, palettes, colours, names, orphans
python3 apps/room/build.py # export the art to apps/room/src/assets.gen.js
CI runs the art check, the room tests and the assets.gen.js check, the core tests on Linux, macOS and Windows, and the smoke test on the package installed as a user would. Pages publishes only the room demo. A separate workflow scans the whole history for secrets.
git am, so that deleted files are deleted too; it also brings its COMMIT_MSG.txt (git-ignored).package.json, CI tags it and publishes a GitHub release with its CHANGELOG section and the package.image-rendering: pixelated).CodeWizards is an independent project, not affiliated with or endorsed by Anthropic, OpenAI, Google, GitHub, DeepSeek, Alibaba Cloud or Meta. Their names only identify the models and tools that a guild or an account uses.