mcpField
M
mojulo

mojulo

本地服务
github.com/zombico媒体与设计42 周前更新

关于 mojulo

mojulo 是面向编码 Agent 的 3D 编译器与 MCP 服务,将物体、场景和游戏保存为可编辑的配方,再编译为几何与多种导出格式。它适合通过对话构建、修改和导出 3D 内容的 Agent 工作流,强调保存源配方而非网格。

主要功能

  1. 01将 JSON 或 OpenSCAD 配方编译为几何
  2. 02导出 Godot、Blender、Unity、Unreal 等格式
  3. 03生成 STL 和 3MF 打印文件
  4. 04提供草图、场景与物体构建工具
  5. 05通过本地仪表板查看项目

适用场景

  1. 01设计可按真实尺寸打印的物件
  2. 02搭建可漫游的房间与城市场景
  3. 03生成木工构件和装配说明
  4. 04将配方导入游戏引擎或 3D 软件

MCP 相关

mojulo 作为 MCP 服务向 Agent 暴露 3D 构建、编辑和导出工具,并在本地保存配方与状态。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"zombico-mojulo": {
"command": "npx",
"args": [
"-y",
"mojulo"
]
}
}
}
启动命令npx -y mojulo

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmojulo3.1.1

工具

28

收录的工具列表 · 更新于 2 周前

参数类型必填说明
modeenum否'studio'(省略時的默认值——创意侧:媒体 FORM 路由 + Game)或 'office'(已连接服务、应用、审议、操作)。每次调用均无状态——提取与请求对应的侧。office | studio
registerenum否为本次调用覆盖操作者的 `vocabulary_register`。'plain'(日常工具名称,不向用户使用 mojulo 术语)、'mixed'(默认值)、'mojulo'(完整行话)。省略时使用操作者锚点的设置或系统默认值。plain | mixed | mojulo
disclosureenum否为本次调用覆盖操作者的 `procedural_disclosure`。'terse'(执行并报告)、'reflective'(默认值——说明每个关卡)、'pedagogical'(解释每个关卡的含义)。省略时使用操作者锚点的设置或系统默认值。terse | reflective | pedagogical

详细介绍

Mojulo

npm license node

通过 MCP 接入 mojulo 的编码 Agent:「建一个 20 × 24 英尺、南墙上有一扇门的客厅」,生成一份 12 行的平面图配方;仪表板显示布置好家具的房间,可切换视角,并可下载 HTML / glb / STL;「在天花板上加筒灯」只需编辑配方中的一个字段;面向沙发的修复在配方不变的情况下合入内核;同一配方在 Blender Cycles 中修改前后渲染效果一致——种子相同,摄像机相同

Mojulo 是面向编码 Agent 的3D 工厂与媒体工作室:一个 MCP 服务,可运行在 Agent 所在的任何地方,无论是你的机器,还是 Agent 为自己创建的一次性 Linux 环境。你已经在使用的 Agent(Claude Code、Codex、任何 MCP 主机,或可打开 Linux 环境的聊天应用:Claude、带有 Codex 的 ChatGPT、Grok、Meta Muse、Google AI Studio)都可以通过对话制作可供游玩、打印、阅读、聆听和观看的内容(游戏、物件、可步行探索的世界、图片、乐谱),而保存下来的是源文件,而非网格。每个产物都是一个小巧且确定性的配方:几百字节的 JSON,或一段 OpenSCAD 程序;内核可将其编译回相同的几何体,每次读取的结果都相同(在同一平台上逐字节一致),并可导出为 Godot、Blender、Unity、Unreal、glTF、OpenUSD,或按真实比例制作的可打印 STL / 3MF。它足够小巧,可以从临时环境带回本地,再在自己的磁盘上重新生成。它是编译器,而非生成器:你可以像编辑和比较代码一样编辑和比较配方,渲染结果则可以随时丢弃。无需 API 密钥,无需账户,也不会向外部发送遥测数据。你的 Agent 负责思考;mojulo 负责保存状态和处理几何体。

快速开始

npx mojulo init

需要 Node 22.14+ 和支持 MCP 的编码 Agent(Claude Code 或 Codex;Claude Desktop 也可以)。init 会查找你机器上的主机,每个主机只询问一次,然后打开 http://localhost:3001 中的仪表板。所有内容都会放在 ~/.mojulo/ 中。接着打开一个新的 Agent 会话并询问:“这是什么?”

在 Claude Code 中,你也可以安装插件:/plugin marketplace add zombico/mojulo,然后运行 /plugin install mojulo@mojulo。它会启动固定在一个版本上的同一服务(plugins/mojulo)。插件版本不包含用于 AI 图像、语音和网格生成器的交接工具,也不会自行下载浏览器、ffmpeg 或搜索模型。Claude Code 中请使用插件或 init,不要两者都用:注册两次会运行两个服务。

首次安装占用较大:npx 会拉取一个约 7 MB 的包,连同依赖一起安装后,磁盘占用约为 227 MB,npm 缓存约为 140 MB(下载量约 79 MB;数据是在一台 macOS arm64 机器上对 3.0.0 测得,冷启动响应约需 4.5 秒,几乎全是 npm 安装时间)。最大的部分是 node-web-audio-api(音频)、manifold-3d(精确布尔运算)和 better-sqlite3。仪表板是一个单独的包,首次打开时才会获取;本地搜索模型则通过可选的 mojulo install recall 安装(没有它时,semantic_search 会按词法排序)。清单中的内容都不会自行访问网络;各项依赖的说明见 docs/tech-requirements.md。已在 macOS(Apple Silicon)和 Claude Code 下的原生 Windows 上验证(init 和首次渲染)。在 Linux x64 上,测试套件会在 CI 中运行;下文的 Agent 沙箱路径也已在 Claude 应用和网页、使用 Codex 的 ChatGPT 工作模式、Grok 聊天、Meta Muse 和 Google AI Studio 中实际运行,直至生成模型并导出。

改为手动配置
# Claude Code (--scope user makes mojulo available in every project):
claude mcp add --scope user mojulo -- npx -y mojulo

# Codex: add to ~/.codex/config.toml
[mcp_servers.mojulo]
command = "npx"
args = ["-y", "mojulo"]
// Claude Desktop: add under "mcpServers" in claude_desktop_config.json, then restart.
// If it fails with "spawn npx ENOENT", replace "npx" with the absolute path from `which npx`.
"mojulo": { "command": "npx", "args": ["-y", "mojulo"] }

运行 npx -y mojulo-ui,单独打开仪表板。自 3.0.0 起,它是一个独立的 npm 包,因此 Agent 运行 npx mojulo 时不会下载它;首次使用时,npx -y -p mojulo mojulo-ui 仍然可用,并会从 npm 获取匹配版本。mojulo 命令也是一个基于工具注册表的 CLI:npx mojulo tools、npx mojulo help mint_solid、npx mojulo call version。


运行位置,以及可以添加的三项内容

Mojulo 会在 Agent 运行的任何地方运行;在一个地方生成的配方,在另一个地方重新生成时,几何形状也相同。两种形态,一次安装。

在 Agent 的沙箱中运行,不需要在你的机器上安装任何东西。 只需对 Agent 说一句话,就能在它为自己准备的 Linux 沙箱中安装 mojulo:

  • Claude 应用(macOS、Windows、网页、iOS);Grok 聊天;Google AI Studio;Meta Muse(iOS、网页、macOS 应用,三者共用一个会话):打开一个 Linux 沙箱,并在其中安装 mojulo npm 包。
  • ChatGPT(包含 Codex):在工作模式下,打开一个 Linux 沙箱,并在其中安装 mojulo npm 包。

这些平台都已按此方式运行:从输入这句话开始,直到生成模型并交回导出文件。你会获得相同的配方和相同的导出文件:导出结果会注明此主机的入口、资源页面、PR、文件卡片或 Muse 的资源库。沙箱没有可供你访问的仪表板;将场景烘焙为 PNG 需要浏览器,而平台可能不允许下载浏览器;并且大多数主机会在会话结束时清除沙箱。因此,请索取资源包(一个 zip:world.html、网格、用于按实际尺寸制作物体的打印 STL、recipe.json、README),并保存配方。Meta Muse 是个例外:它的所有客户端共用一个 VM,因此 ~/.mojulo 会在不同对话间保留。没有 MCP 客户端的沙箱不会发送 initialize,因此请让 Agent 先运行 npx mojulo orient:它会输出 MCP 客户端连接时收到的内容,并将其转换为 shell 中可用的形式,同时指向路由索引。Claude 的沙箱用这种方式制作了一个按实际尺寸构建的 47 部件手机,并交回了 glTF;Grok 聊天的沙箱则通过 shell 生成了一座城市。这些沙箱中也可以安装 Blender。 在你的计算机上:macOS、Windows、Linux。 npx mojulo init 会将 mojulo 接入它找到的 Agent,在 localhost:3001 打开仪表板,将所有内容保存在 ~/.mojulo/ 下,并探测你的 PATH,查找可选的本地工作器(Blender、切片软件、OpenSCAD、游戏引擎)。这是完整的工作流程,也是来自云端的配方回到本地的地方。

哪些 Agent 已在哪里运行。 persistent 持久(你的计算机,或会保留 ~/.mojulo/ 的云端计算机) · ephemeral 临时(Web Agent 的一次性 Linux 云端计算机;请保留配方)。空白表示尚未验证,不代表“无法运行”。

AgentmacOSWindowsWeb Agent Linux 云端计算机(无头)
Claude Codepersistentpersistent
Claude app(macOS、Windows、web、iOS)persistentpersistentephemeral
ChatGPT(工作模式;Codex)persistent Codexephemeral
Hermes Agentpersistent
Grok(Build;聊天)persistent Buildephemeral
Meta Muse(iOS、web、macOS 应用;跨平台共用一个会话)persistent
Google AI Studioephemeral

有两项可选功能,在这两个位置的选择相同:

添加项使用方式可获得的内容
creative(默认安装)普通 npm install世界、音频、字标字体、精确布尔运算、进程内 OpenSCAD,以及用于皮肤和精灵图集的 sharp。npm install --omit=optional 会移除这些辅助工具(约 115 MB);工作室工具仍会列出并运行,调用缺失辅助工具的功能时会明确提示。
recallmojulo install recallsemantic_search 背后的嵌入模型。没有它,搜索仍会根据你提问中的词语进行排序并返回结果(运行时约 480 MB,另加 130 MB 模型;保存在 ~/.mojulo/ 下,因此升级后仍会保留)。大多数会话都用不到它:Agent 会直接读取工具索引和词汇卡片。

不带参数运行 mojulo install 会显示这两项中哪些已安装。

自 3.0 起,聊天机器人工厂不再是 mojulo 的一部分,并将迁移到独立项目。包含该功能的早期 2.x 版本已无人维护,并存在已知安全问题(SECURITY.md)。现在运行 mojulo install chatbot 不会安装任何内容,只会打印此通知。

从 2.x 升级? 请先阅读从 2.x 升级:未锁定版本的 npx mojulo 会在下次启动时升级到 3.0,而 3.0 会重新加密已保存的服务提供商密钥,因此 2.x 将无法再读取这些密钥。

对它说的五句话

每个示例都是一句对 Agent 说的话、它调用的工具,以及最终保存的配方。以下示例均可在无需密钥和离线的情况下运行。

1. “用 OpenSCAD 为我设计一个 Raspberry Pi 4 外壳托盘”

Agent 调用 mint_solid { kind: 'scad' },程序就是配方,并按原样存储:

board_w = 85; board_d = 56; clear = 1; wall = 2; floor_t = 2; wall_h = 12;
holes = [[3.5, 3.5], [61.5, 3.5], [3.5, 52.5], [61.5, 52.5]];   // the Pi's M2.5 pattern
module rounded_box(w, d, h, r) { hull() for (x = [r, w - r], y = [r, d - r]) translate([x, y, 0]) cylinder(r = r, h = h, $fn = 48); }
module tray() {
  color("#3a3f4b") difference() {
    rounded_box(board_w + 2 * (clear + wall), board_d + 2 * (clear + wall), floor_t + wall_h, 3);
    translate([wall, wall, floor_t]) rounded_box(board_w + 2 * clear, board_d + 2 * clear, wall_h + 1, 1.5);
    translate([board_w + 2 * clear + wall - 1, wall + 2, floor_t + 3]) cube([wall + 2, board_d + 2 * clear - 4, wall_h]);   // USB / Ethernet
    translate([wall + clear + 5, -1, floor_t + 3]) cube([55, wall + 2, wall_h]);                                            // USB-C, HDMI, audio
  }
}
module standoffs() {
  color("#c9a227") for (p = holes) translate([wall + clear + p[0], wall + clear + p[1], floor_t])
    difference() { cylinder(d = 6, h = 3, $fn = 32); translate([0, 0, -1]) cylinder(d = 2.5, h = 5, $fn = 24); }
}

其中 parts: { tray: 'tray();', standoffs: 'standoffs();' }。OpenSCAD 本身会在每次读取时对其进行网格化处理:它在进程内以 WebAssembly 运行,并使用 Manifold 后端,因此布尔运算精确,所有边缘都很锐利。color() 用于着色;每个命名部件都是一个渲染组,movers 中的铰链可以让它摆动。同一个引用用于轨道视图、.glb、引擎资源包,以及按原样制作的 91 × 62 × 14 mm model.stl;model.scad 则会原样返回源代码。使用 update_sketch 更改 wall_h 后,读数会指出发生变化的那个部件。对于 OpenSCAD 无法表达的内容,例如融合连接、带笔触的凹痕、带种子的噪声,源代码会调用 mojulo_field("<id>"),并在该位置烘焙由同一配方生成的场实体。

2. “建一个 20 × 24 ft 的客厅,南墙上要有一扇门”

这就是顶部的 GIF。Agent 调用 create_sketch { title, manifest: { kind: 'floorplan', … } },存储的清单如下:

{ "kind": "floorplan", "width": 24, "height": 28,
  "rooms": [ { "x": 2, "y": 2, "w": 20, "h": 24, "glyph": "L" } ],
  "doors": [ { "x": 12, "y": 26, "room": 0, "edge": "S" } ],
  "furnish": true, "view": "cutaway", "seed": 7 }

L 字形和种子会为其配置家具:沙发、两把椅子、地毯、落地灯和窗户。“在天花板上添加筒灯”会添加 "potLights": true,其他内容不会改变。"levels": [...] 会将其叠成一栋有楼梯贯穿各层楼板的建筑。同一配方可以在浏览器的 /world 中漫游,导出为 .glb,或作为艺术处理资源包发送到 Blender。在 Blender 中,Cycles 烘焙可以将追踪到的光照写回网格自身的顶点颜色,让光照结果能在任何地方运行,且无需运行时成本。

3. “做一张橡木餐桌,并向我展示它是如何组装的”

一张处于爆炸视图中的橡木餐桌:桌面向上抬起,四根围板从桌腿中拉出并露出榫头,角码和螺钉则悬浮在固定位置旁,图片位于 World 页面

Agent 调用 mint_solid { kind: 'workbench' } 并提供一个框架,build 会生成构件和接合结构:

{ "units": "mm",
  "frames": [ { "id": "table", "unit": "mm", "explode": 90,
                "build": { "type": "table", "w": 1400, "d": 800, "h": 750, "species": "oak" } } ] }

桌腿通过榫卯结构接合围板,尺寸经过设计,使榫头在桌腿内部不会彼此相碰;桌面则由角码支撑。每个接合处都通过精确内核切割,橡木则由合成原木锯切而成,因此木纹和运动方式都会随切割而变化。explode: 90 会沿每块部件的装配方向将其拉开 90 mm;设为 0,桌子就会组装起来。报告仅供参考,从不拒绝:其中包含每个构件的切割和运动、跨度检查、部件的组装顺序、倾倒风险、五金清单和切割清单。同一个 frames 条目还可以构建带门和抽屉的箱体、带软垫的沙发、木构架、钢结构和砌体结构。将部件收集到一个存储包中,再生成 instruction_manual,即可获得无文字的装配说明页;或者设置 layout: 'kit',将其平铺打印成模型套件。

4. “按真实比例建一座纽约风格的城市”

一次 compose_world 调用生成的纽约风格都市鸟瞰图:砖砌公寓楼的屋顶上有木制水箱,城市中还有玻璃和装饰艺术风格的高楼,以及车流繁忙的大道

Agent 调用 compose_world { base: 'city', seed: 11, overrides: { profile: 'metro', flavor: 'new-york' } }。metro 会按比例构建城市,范围约为 0.8 × 0.5 km;风格参数则决定建筑特色:这里是砖砌公寓楼、消防梯、水箱和装饰艺术风格的阶梯式退台,其他风格还包括 paris、london、tokyo 等。整座城市完全由种子决定:更改种子即可生成新城市,保留种子则可在任何机器上重新生成同一座城市。context: { time: 'night' } 会为城市添加夜景灯光,asset: { monument: 'eiffel-tower' } 则会按真实尺寸放置地标。打开 /world,即可使用 WASD 漫游,或在街道、鸟瞰和天际线视图之间切换。除了 city 之外,还有其他基底:交通枢纽、K-12 校园、火把照明的地牢、行星体、彩绘景观、真实比例地形,以及可漫游的有限群 Cayley 图。

5. “给我做一款卡丁车竞速游戏,然后让我以应用的形式玩它”

design_game 从上到下设计游戏(主角、能力、装备和系统),并通过 run: true 完成每个就绪步骤。关卡是带有游戏目标的世界(到达出口、生存二十秒、赢得比赛);create_game 将这些关卡、合成的配乐和角色绑定为一款游戏,并使用可在关卡间沿用的类型化存储;只有在每个关卡都通过目标试运行,并完成一场抵达胜利条件的流程后,它才会生成游戏。带机器人对手的竞技场射击游戏、带对手车手的卡丁车竞速游戏、飞行、潜行和节奏游戏都由相同的组件构建而成。

游戏可直接在浏览器中运行:export_game 会生成一个可部署到任意静态托管服务的独立文件夹;target: 'desktop' 则会将其转换为 Electron 应用(离线运行 npm install && npm start;签名由你负责)。各游戏引擎会收到一份转换结果,并附带未能转换内容的报告:target: 'godot' 会生成一个真正的 Godot 4 项目,这是支持最完善的引擎;Unity 和 Unreal 则会获得一个数据包和一个导入器(Unreal 实例)。

**还可以从一句话生成:**摆好姿势的人物或奔跑中的动物,并为 glTF 或 VRM 绑定骨骼;带退台式顶层复式公寓的六层建筑;通过带种子的数学算法合成、无需采样素材的氛围循环音效或完整配乐;根据你展示给 Agent 的照片还原房间布局。完整目录见 docs/tour.md。


适用场景

一份配方,多个目标,全部基于同一个 ref:/api/sketches/<ref>/{svg,scene,world,model.glb,model.stl,model.3mf,model.usdz,model.scad}。每个 URL 都会在请求时确定性地重新生成:在同一平台(操作系统、CPU 和 Node 版本)上,字节级完全一致;在其他平台上,几何形状也只存在浮点舍入误差,因为 V8 的 Math 会因 CPU 和 Node 版本不同而在最后一位产生不同的舍入结果(嵌入的纹理 PNG 压缩后的字节也可能不同,但像素绝不会不同)。每次交接都会附带一份清单,注明哪些内容没有随交付物一同传递。

目标你会得到什么验收方式
浏览器静态 SVG、无依赖的 CSS-3D 场景、可漫游的 WebGL 世界,以及一个完整的自包含文件夹形式的游戏。由你亲自查看。
桌面应用将该游戏文件夹作为 Electron 应用:npm install && npm start 可离线运行,npm run package 可为你的机器构建(未签名)。如果已安装 Electron,则会加载 Shell 和隐藏的首个关卡。
.glb / OpenUSD带有烘焙到顶点颜色中的光照的 glTF(或用于 PBR 的 lit)、骨骼动画片段、蒙皮网格、VRM 骨骼名称;按真实比例生成的 usda / usdz。如果已安装 Blender 和 usdcat,则使用它们检查。
Godot(翻译最完整)真正的 Godot 4 项目:project.godot、带版本号的内核脚本、GLB、导出预设。如果 MOJULO_GODOT 指定了可执行文件,则执行无头导入和单帧运行。
Unity / Unreal(受条件限制的支持)一个数据包,加上 C# 编辑器导入器或 Python 导入器;游戏包还会附带 C++ 内核插件。如果 MOJULO_UNITY / MOJULO_UNREAL 指定了编辑器,则将内容导入一个临时项目并无头运行。
Blender(美术处理)一个美术处理包,包含导入器脚本,以及将全局光照烘焙回顶点颜色的 Cycles 烘焙结果。如果 MOJULO_BLENDER 指定了可执行文件,则无头运行导入器。
STL / 3MF按真实比例生成、可直接打印的文件:单位为 mm,Z 轴朝上;3MF 中包含颜色和重复实例;提供针对工艺的提示(FDM、SLA、SLS、MJF)。在本地切片器中运行 3MF,并生成层数、耗时和耗材用量标记。已验证 PrusaSlicer 和 Bambu Studio。
.scad这是程序,不是网格。scad 配方会原样返回自身源代码;工作台配方会逐项转译为 OpenSCAD 实体和布尔运算,并附带覆盖清单,注明哪些项以冻结的 polyhedron() 形式导出。如果已安装该可执行文件,则由 OpenSCAD 重新渲染,并将尺寸和体积与配方进行核对。

所有导出均无需安装任何内容;系统会写入打包文件,并在验收方式一栏报告“已跳过”及原因。安装相应引擎后,会增加机器验收环节。验收环节只提供建议并加盖标记,不会拒绝任何内容,也绝不会声称有人亲自查看过。原则:docs/bicycles.md。


留在你机器上的内容

  • 配方 存储在 ~/.mojulo/mojulo-lite.db 这一个 SQLite 文件中。渲染结果是派生数据,可以随时丢弃。
  • 你的配方集。 save_recipe 会将配方保存到 ~/.mojulo/data/cookbook,其中是本地 git 仓库中的普通 card.md + recipe.json 文件夹,且没有远程仓库;数月后仍可通过 semantic_search 按意图检索。内置的配方集格式相同,并随软件包一同提供,因此每次安装(包括 Agent 环境)都自带关于学习对象、世界、循环、实体、镜头和服装的章节,以及一些全新的类别,无需设置。
  • 导出内容是普通文件,可用任何工具打开;导出的 World 页面自带 three.js,除非你指定使用 CDN 版本(cdn: true)。如果你保存过提供方密钥,它们会使用 AES-256-GCM 加密,并通过每次安装专属的密钥存储在 ~/.mojulo/secret.key 中。
  • 没有外部遥测。 不会向维护者或分析服务发送任何内容。外发流量包括安装时访问 npm、首次使用时的少量一次性下载(如果没有浏览器,则在明确要求渲染时下载浏览器;首次生成 MP4 时下载 ffmpeg;首次打开仪表板时下载仪表板软件包;运行 mojulo install recall 后下载搜索模型),以及 Agent 请求时进行的更新检查;在 Claude 插件下,浏览器、ffmpeg 和模型不会自动下载。完整列表:docs/tech-requirements.md。
  • 本地工具调用日志。 每次工具调用都会记录在同一个 SQLite 文件中:工具名称、耗时、状态、参数名称和大小(不含值)、截断后的错误文本,以及 MCP 客户端名称和会话信息。日志不会离开本机,保留 30 天或 50,000 行;设置 MOJULO_MCP_TELEMETRY=off 可将其关闭。
  • 配方可以携带代码。 带有 program(代码入口)的配方使用 JavaScript,并会在渲染时以你的权限运行;请像对待代码一样对待共享配方。

控制平面默认仅供单一操作员使用,且只监听 localhost。stdio MCP 没有网络接口;除非设置 CONTROL_PLANE_MCP_KEY,否则 HTTP MCP 路由会返回 404。不要将其暴露到公共互联网;如需远程访问,请使用隧道或 Tailscale。威胁模型:SECURITY.md。条款及“操作员自行承担后果”的立场:TERMS.md、docs/responsibility-model.md。开源项目 mojulo 将始终采用 Apache-2.0 许可,且不包含外部遥测;如果将来探索托管版 mojulo 云服务,它将是独立的可选产品,本地安装不会因此改变,也不依赖于它。


工作原理

一个 Next.js 应用通过同一个 SQLite 提供两种界面:MCP 服务(npm 包使用 stdio,远程客户端使用 HTTP),供你的 Agent 调用;以及位于 localhost:3001 的仪表板,用于呈现累积的内容。编译器的结构如下:配方是源(参数加上一个 kind),内核是后端,每次读取时都会重新生成配方;每个发射器都是一个目标,拥有自己的坐标系,并负责从原生的 z-up 米制坐标系进行单位转换。对于给定参数,内核的输出是对已生成记录的兼容性承诺,并经过逐字节测试。可选的本地工作器(Blender、slicers、mesh sculptors、ComfyUI、Kokoro)由操作者托管,绝非依赖项;缺少某个工作器只会导致相应环节降级,不会造成任何环节中断。

此外,内置内容默认启用且不会妨碍使用:图表,外部模型绘制的定向图像,出版物和研究笔记本,推理交由你的 Agent 执行的本地应用,以及基于你已有 MCP 构建的工作流。

mojulo/
├── control/        Next.js control plane: MCP server, dashboard, kernels, emitters, runtime supervisor
└── docs/           Concept docs

默认设置的由来

Mojulo 的运行器、函数和功能源自创作者对游戏开发的研究:基于访谈的调研,以及多年对艺术指导和游戏系统制作方式的个人钻研。Claude 帮助将这些研究转化并整合到 mojulo 的系统中,让使用者能够顺畅地使用。mojulo 制作的所有内容,都是由其自身代码根据配方中的参数生成的。它不会反编译游戏,也不会获取游戏素材,更不会随附任何游戏素材。默认设置只是起点:若要超越这些设置,需要不断迭代、调整配方、提供你自己的参考资料、查看渲染结果并进行修改。

贡献

由一位维护者维护,不提供 SLA。最简单的贡献方式是提交一条配方集条目:新增一个包含卡片和配方的文件夹,或为一种全新类型编写纯构建器,无需修改核心代码。在核心部分,我们欢迎问题报告(附上可精确复现问题的配方)、正确性修复、翻译和测试;会改变 mojulo 工作方式的概念性 PR 可能会被搁置,而分叉则始终敞开大门。直言不讳:维护者只有一人,大多数审阅工作都借助 AI 完成。完整立场和开放请求请参阅:CONTRIBUTING.md。

许可证

Apache License 2.0

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。