架构
给贡献者和好奇者的一张高层地图,看看 MUZERO 怎么搭起来的。
本地文件 / 在线来源 / AI 生成 | v Track + MediaBlob | v IndexedDB `muzero-db` <----> 可选的用户自有云盘 | v 播放器 + 可视化 | v Agent DJ / 搜索 / 分享曲目是轻量的行;音频、视频、封面的字节存在独立的 mediaBlobs 表,永不进曲目行——所以列表查询保持快,虚拟化才有意义。
回忆 + 氛围 + 最近播放 | v LLM Agent 写 TrackBrief | v 音乐生成 provider 渲染音频 | v pending track -> ready track -> 队列续写TrackBrief 是 DJ、音乐生成 provider 和数据库之间的唯一契约。DJ 写的是 provider 无关的 brief;adapter 来翻译,所以没有任何厂商概念泄漏进 DJ 或 DB。
整个 app 就是前端,跑在桌面壳层抽象后面:
- Electron —— 主力桌面壳(CORS-free fetch、本地文件访问)。
- Tauri 2 —— 保留可跑,用于移动端。
- Web —— 浏览器版本。
所有 native 访问都走同一个 bridge,所以 provider、播放器和 UI 都不需要判断自己在哪个壳里。
Tauri 2、Electron、Vite、React 19、TypeScript、Tailwind CSS v4、COSS UI、Base UI、Dexie、IndexedDB、Zustand、TanStack Query、TanStack Virtual、Vercel AI SDK、Zod、Vitest、Biome、Cloudflare R2,以及可选 hosted 控制面的 Cloudflare Workers。
代码在 MUZERO 仓库。主要区域:AI DJ 引擎、音乐生成 provider、在线源 provider、本地数据库、云同步、可视化、Electron / Tauri 壳。
想贡献?看仓库里的
CLAUDE.md/AGENTS.md,那是完整的架构手册和约定。