Modly 深度研究:本地开源「图生3D」桌面应用全拆解

# Modly 深度研究 > **Local AI-powered 3D mesh generation fr...

Modly 深度研究

> Local AI-powered 3D mesh generation from images —— 本地、开源、以 GPU 跑开源 AI 模型的「图生 3D」桌面应用 > > 研究对象:lightningpixel/modly(本地克隆 C:UserslinkeWorkBuddy智柴modly-researchmodly) > 研究时间:2026-08-14 | 四路专项 Agent 并行深读 + 代码级交叉核证 + 外源(GitHub API / Releases / shields / WebSearch)核实

〇、费曼视角 · 一句话讲清

设想市面有一堆开源「图生 3D」的菜谱(Hunyuan3D、TripoSG、Trellis2……),各自要你先配齐灶台、买齐料、背熟火候,方能开火。普通人望而却步。

Modly 就是那间「双击即开的中央厨房」:Electron 当门面,内嵌一个绿色 Python 当灶具,把各家菜谱收进菜单(扩展系统),灶火是你自家的 GPU。你传张照片,它按菜谱现炒出一只 3D 模型(.glb),全程不出你家门(隐私本地)。

一句话:ComfyUI 是「给你食材和灶,自己搭厨房」,Meshy/Tripo 是「上馆子(云端 SaaS)」,Modly 是「把开源菜谱 + 自家灶 + 可视化流水线,打包成一个普通人能双击装好的厨房」——本地 AI 3D 的「发行版(distribution)」。

然则天下无免费之炊:厨房虽好,你得自备 GPU 灶联网把食材(模型权重)先搬回家、且炒出来的菜色,上限取决于你买的料(本地模型质量)。更有一桩隐忧——这厨房允许你从任意 GitHub 仓库「装新菜谱即执行」,门禁只查「是不是 github.com 来的」,不查菜谱本身安不安全。此乃后文 PK 之主战场。

一、它到底是什么(侦察结论 + 事实校正)

1.1 基本档案

内容
定位本地、开源、图生 3D 网格之桌面应用(Electron + React 前端 + Python/FastAPI 后端,全跑于本机 GPU)
作者Lightning Pixellightningpixel 组织,核心疑似 1–2 人)
首发2026-03-17(GitHub created_at
当前版本v0.4.1(2026-07-16;release 自题 "Modly Beta",诚实早期定位)
实现前端 TypeScript(Electron+Vite+React+React-Three-Fiber+@xyflow/react 节点画布);后端 Python(FastAPI,端口 8765);MCP server + stdlib-only CLI
平台Windows / Linux / Apple Silicon macOS only(Intel Mac 明确不支持)
GitHub5,541 星、582 fork、52 open issues、47 subscribers(GitHub API,2026-08-14 实测);官网 modly3d.app;独立 Discord
许可实质 MIT(可闭源商用)。附带一段 fork 署名「善意请求」,致 GitHub 自动分类为 NOASSERTION,不影响宽松性

1.2 三处事实校正(读码前极易被带偏)

常见说法核证结论依据
「默认模型是 TripoSR(stabilityai/TripoSR,改 services/model_manager.py)」失实三重:仓库内无任何 TripoSR 生成器services/model_manager.py 文件不存在services/generators/ 仅有 base.py__init__.py零内建生成器。此说出自过时之 api/README.mdapi/services/generators/ 目录、api/README.md:36-38
「代码默认 sf3d(Stable Fast 3D)」半真generator_registry.py:165 确写 os.environ.get("SELECTED_MODEL_ID", "sf3d");但 Electron 恒设该 env(空串),实际行为回退到「加载用户安装的第一个扩展」;且 sf3dHF gated 模型(需 token),主 README 扩展表竟未列它api/services/generator_registry.pyREADME.md 扩展表
「扩展经 public_key.pem 做签名校验」证伪(关键)api/resources/public_key.pem孤儿文件(113 字节,全代码零引用);requirements 里的 cryptography 依赖在 api/ 内亦无 sign/verify 用法;下载链路搜遍无 hashlib/checksum/integrity/signature当前无任何供应链完整性校验(详见第四章)代码级 grep 核实(见 §4.2)
「runs entirely on your GPU / 全本地」推理确 100% 本地、无云端 API;但「全本地」≠「完全离线」:首次必联网从 HuggingFace 拉权重,扩展从 GitHub 拉取,Agent 路由依赖本地 Ollama。离线仅在「下完权重、装好扩展」之后成立api/routers/model.pyapi/routers/agent.py、各 agent 报告一致
「本地 × 开源 × 桌面,独一份」成立:检索未见第二个「打包好、开箱即用、全本地、图生 3D」桌面 App。裸模型仓库(Hunyuan3D/TRELLIS/TripoSR)与需自搭的节点平台(ComfyUI)皆非同类WebSearch 竞品版图(见第五章)

> 结论:Modly 是一个「模型无关宿主」——二进制里不写死任何模型权重与推理代码,靠扫描 EXTENSIONS_DIR 动态注册扩展。所谓「默认模型」在 api/README、代码常量、扩展宣传表三处各说各话;真实默认是「你装的第一个扩展」。文档链已明显落后于代码与扩展生态。

1.3 时间线速览

时间事件
2026-03-17仓库创建
2026-04-21 → 05-11v0.3.2→v0.3.6,早期滚动快(1–10 天一版)
2026-06-21v0.4.0 大功能合并期(Apple Silicon、Agent CLI、扩展页重设计)
2026-07-16v0.4.1(月度维护节奏确立)
2026-08-13仍活跃推送(GitHub pushed_at

二、架构鸟瞰(技术深拆)

2.1 第一性设计:双运行时,Python 由 Electron 托管

用户 (鼠标/键盘) │ ▼ ┌──────────────────────────────────────────────────────────────────────────┐ │ Electron 主进程 (electron/main/index.ts) │ │ • whenReady → syncBuiltinExtensions() → new PythonBridge() │ │ • setupIpcHandlers() ◄──── 63KB 单体 IPC 契约 (ipc-handlers.ts) │ │ • createWindow() (frameless, contextIsolation:true, nodeIntegration:false)│ │ │ │ ipcMain.handle/on ── invoke/send ──┐ │ └────────────────────────────────────┼──────────────────────────────────────┘ │ IPC (contextIsolated, 渲染侧经 preload 类型包装) ▼ ┌──────────────────────────────────────────────────────────────────────────┐ │ 渲染进程 (React, src/) ◄── preload/electron-api.ts │ │ • three.js / react-three-fiber 3D 预览 • @xyflow/react 节点工作流画布 │ └──────────────────────────────────────────────────────────────────────────┘

主进程以 HTTP 客户端身份调用本地 FastAPI: axios / net ──▶ http://127.0.0.1:8765 │ ▼ ┌──────────────────────────────────────────────────────────────────────────┐ │ Python 后端 (api/main.py → uvicorn,由 python-bridge spawn) │ │ lifespan: generator_registry.initialize() 扫描 EXTENSIONS_DIR │ │ routers: status / settings / model / generate / optimize / extensions / │ │ export / workflow_runs / agent │ │ │ │ GeneratorRegistry ── 每扩展 = 独立 venv 子进程 + runner.py ─┐ │ │ ▼ │ │ ExtensionProcess ── stdin/stdout NDJSON ──▶ 模型推理(torch, GPU/MPS) │ │ (取消=协作后硬杀,释放显存靠进程退出) │ └──────────────────────────────────────────────────────────────────────────┘ │ ▼ (扩展 setup.py 运行时 pip install torch …) HuggingFace Hub (首次按需拉权重;gated 需 HF token)

2.2 进程模型要点

拉起方式child_process.spawn(pythonExec, ['-m','uvicorn','main:app','--host','127.0.0.1','--port',8765])。Python 用内嵌 python-build-standalone 3.11.9(构建期由 scripts/download-python-embed.js 拉取,打包为 extraResource)——零系统依赖的「绿色」运行时,用户机器无需预装 Python,venv 基于内嵌解释器创建,干净隔离。 – 端口:硬编码 8765,启动前 killProcessOnPort() 清场(应对上次异常残留)。代价:不支持并行多开实例。 – 健康:轮询 /health,最多 180×500ms≈90s/health 仅返回 {"status":"ok"}无能力级检查(不验模型/扩展是否就绪)。 – 崩溃恢复python:crashed 仅通知渲染层,无自动重启 supervisor。单点后端崩 = 当前生成任务丢失,恢复靠用户手动。此乃架构性缺口。 – 进程组隔离:Unix 下 detached 为进程组 leader,退出时整组击杀(避免被 launchd 收养成孤儿、长期占 MPS 显存);Windows 用 taskkill /PID /T /F

2.3 IPC 契约:规模合理,单体成债

ipc-handlers.ts1545 行 / 63KB,含 63 个 ipcMain.handle/on 注册点,已按 16 个 domain 分组(log/window/setup/python/fs/model/shell/system/app/settings/cache/workspace/extensions/updater/api/workflows)。 – 类型安全「半截」:preload electron-api.ts 给渲染侧提供手写类型化包装(调用端类型安全),但 IPC 契约本体是 stringly-typedchannel: string...args: unknown[]),通道名/参数靠约定对齐,无 schema 生成/编译期校验,重命名通道编译器不会报错。 – 63KB 单体 = 维护债:混入 GPU 探测(nvidia-smi 解析)、扩展安装编排(~250 行)、路径守卫、工作流、资产库等迥异职责。合理拆分(GPU→gpu.ts、扩展安装→extension-install.ts)尚未做。能跑,但债在累积

2.4 扩展宿主:应用与重模型彻底解耦

GeneratorRegistry._discover_extensions()EXTENSIONS_DIR,每扩展需 manifest.jsonid/type/generator_class/nodes[])+ generator.py(继承 BaseGenerator)。 – 节点 ID = ext_id/node_id;两种加载:subprocess 模式(扩展自带 venv → ExtensionProcess + NDJSON 子进程,新)与 direct 模式(无 venv → importlib 直载,旧)。 – 基础 requirements.txt 不含 torch;torch 等重型依赖随扩展 setup.py 即时 pip install。利好分发与隔离,但「开箱即用」门槛被推到「装扩展」阶段(数 GB 下载 + venv 等待)。

2.5 工作流引擎:前端拓扑驱动,后端无 DAG 调度

– 节点画布用 @xyflow/reactpreflight.ts 做静态类型/连线校验(类型不匹配、缺连接、Wait 分支合并等→WorkflowPreflightIssue[]),校验失败直接阻止运行(比 README「只是警告」更严)。 – 真正执行在 workflowRunStore.ts(前端)identifyBranches() 拓扑排序、遇 waitNode 暂停交用户 Continue、逐节点调 /generate/from-image(模型)或 extensions.runProcess(过程)。后端 workflow_runs.py 仅暴露单图→网格 + 轮询,无全局 DAG 调度器

> 架构评价:思路清晰、细节打磨扎实(stall 检测、MPS 显存回收、AppImage 稳定化、Windows 锁文件重试、extension-path-guard 防穿越)。短板集中在:63KB 单体 IPC、后端无自动恢复、测试偏薄、macOS 未签名/手动更新、本地化不彻底。「Beta 0.4.1」自我定位准确。

三、模型与生成管线

3.1 模型技术谱系(Web 核实)

模型图生 3D 方法架构要点显存门槛备注
Hunyuan3D 2 / 2 Mini(腾讯)两阶段高质量图/文生 3D形状:Hunyuan3D-DiT(Rectified-Flow 扩散 Transformer + Shape VAE);纹理:Hunyuan3D-Paint(扩散烤 PBR)形状 ~6GB;全量 ~16–24GBVAE+扩散;2 Mini 为轻量蒸馏(0.6B),Turbo/Fast 为加速版;Apache-2.0
TripoSG(VAST)单图→高保真 3D 形状(SOTA 形状)Rectified-Flow Transformer(1.5B),3D VAE 用 SDF+法线+eikonal 混合监督≥8GB(约 15s)仅形状、无内置纹理
Trellis / Trellis2(微软)结构化潜扩散,多格式输出SLAT(稀疏体素+多视角特征)= Rectified-Flow Transformer;解码到 Radiance Field / 3DGS / Mesh≥16GB1.2B;GGUF 量化是社区扩展,降显存但以质为代价
TripoSR(Stability+Tripo)单图快速重建(LRM 类)前馈 Transformer,非扩散,<0.5s/次~6GB顶点色/烘焙纹理,MIT;对称/遮挡歧义明显
Stable Fast 3D / sf3d(Stability)单图→3D(TripoSR 后继)同系前馈 + 纹理管线,依赖 texture_baker+uv_unwrapper中等(gated,需 token即代码默认 sf3d;未列于主 README 扩展表

谱系分野:前馈回归(LRM:TripoSR/sf3d) 快而廉,细节与多视角一致性弱;潜扩散/Rectified-Flow(Hunyuan3D-DiT、TripoSG、Trellis) 质高而慢、吃显存。

3.2 端到端管线

┌────────────┐ │ Input Image│ POST /generate/from-image (model_id, remesh, enable_texture, params) └─────┬──────┘ ▼ ┌─────────────────────────────────────────────────────────────┐ │ ExtensionProcess 子进程(per-extension venv + runner.py) │ │ ├─ 解码图像 → generator.generate(image, params) │ │ │ 产出原始网格(隐式/体素 → marching cubes → mesh) │ │ └─ 可选:纹理阶段(Hunyuan3D-Paint / sf3d 烘焙) │ └─────┬───────────────────────────────────────────────────────┘ ▼ 返回 .glb 路径 → WORKSPACE_DIR// ┌────────── 后处理(可独立触发,亦可编入节点图)────────────────┐ │ A. UV 展开 (uv_unwrapper, box-projection) │ │ B. 贴图烘焙 (texture_baker, 重心坐标光栅化) │ │ C. 网格优化 (optimize.py, trimesh+pymeshlab): │ │ decimation(quadric edge collapse) / laplacian smoothing / transform │ │ D. 3D Gaussian Splatting 转换 (.ply → .splat) │ └─────┬──────────────────────────────────────────────────────────┘ ▼ ┌──────────────┐ 导出 glb / stl / obj / ply │ Export .glb │ glb 直出;余者 trimesh 转换 └─────┬────────┘ ▼ 3D Viewer(Three.js)展示,可入资产库

关键事实:基础 /generate/from-image 已能直接吐 .glb。UV/烘焙/减面平滑是可选叠加,既可由用户手动触发,亦可作为「process 扩展节点」编入工作流。

3.3 「全本地 GPU 跑」真实性

推理 100% 本地,无云端推理 API:模型在 ExtensionProcess 子进程内 torch 直推,权重在 MODELS_DIR,全程不离开本机 GPU;后处理皆本地库。 – 唯一外网依赖 = 权重下载hf_download / BaseGenerator._auto_download() 走 HuggingFace Hub(可带 HF token,gated 模型用);代码内无任何第三方推理 SaaS 调用。 – caveat:首次必联网下数 GB 权重;texture_baker/uv_unwrapper 仅提供 Windows cp310 预编译 .pyd,Linux/macOS 需源码重编(CUDA/Metal);pymeshlab 在受控 Windows 环境可能被白名单拦截(503)。 – 质量上限:单图重建固有限制(背面/遮挡靠先验「想象」、对称歧义),开源本地模型对人物近看有「融化蜡像」感——此非 Modly 之过,乃单图重建通病。

四、扩展生态与安全(PK 主战场)

4.1 安装与执行全链路

Models 页 → Install from GitHub → 输入 URL │ ▼ [Electron 主进程] extensions:installFromGitHub (ipc-handlers.ts:1023-1233) [1] 解析 URL:仅校验 hostname===’github.com’ 且 path 形如 owner/repo ⚠ 不校验 owner 身份、不校验仓库存在、不钉扎 commit [2] 下载 tarball(HEAD, 可变):GET api.github.com/repos/{o}/{r}/tarball/HEAD ⚠ 无 SHA256 / 签名校验 [3] 解包到 temp(tar 条目未做穿越审计) [4] 校验 manifest.json(结构完整性;assertSafeExtensionId 限 id 字符集) [5] staging(含 esbuild 编译攻击者 TS)→ 原子 rename(先备份旧版) [6] Setup(真正执行第三方代码): ├─ Python 扩展: 运行 setup.py ⚠ 当前用户权限,无沙箱 └─ JS 扩展: npm install –omit=dev ⚠ 拉取攻击者 package.json 依赖 [7] 清 marker,触发 /extensions/reload

执行时:模型扩展 → ExtensionProcess(venv 子进程,NDJSON,继承宿主全部环境含 HF_TOKEN);进程扩展 → process-runner.ts spawn。内置扩展(build-builtins.mjs 编译随包)不经 GitHub 安装路径,是「出厂自带可信代码」。

4.2 三层防护各防什么、防不住什么(亲验结论

防什么防不住什么
extension-path-guard.ts扩展 id 路径穿越到系统目录(测试充分)扩展代码本身是否可信(合规 id 如 evil-mesh 照常装)
extension-install-utils.tsmanifest 结构完整性(id/type/entry/nodes)代码来源/内容(任意合法 manifest 即可装)
artifact-registry-service.ts工作区资产路径穿越(限 Workflows/Exports 根)与扩展安装无关

> 路径/结构层纵深防御做得好且可验证;代码信任层从安装入口起就是全开。 此结构性取舍,非配置疏漏。

关于「签名校验」之 PK 决断:D 卷据 api/resources/public_key.pem + cryptography 依赖推断「扩展有签名校验」;C 卷经代码检索称「下载链路无任何 hash/签名/完整性校验」。吾亲验: – public_key.pem 确存在(113 字节),但 api/ 内零处引用grep public_key/.pem/sign/verify 在 api 仅命中无关词); – cryptographyrequirements.txt,但 api/ 内无任何 sign/verify/import cryptography; – 下载链路(model.py:125-278extension_process.py:55-58)无 hashlib/checksum/integrity/signature

拍板:C 卷成立、D 卷推断证伪。Modly 当前无任何扩展/权重供应链完整性校验。 public_key.pem 系孤儿文件(疑似作者曾设想、未接线),此「想做而未做」本身即安全成熟度信号。

4.3 安全发现清单

🔴 高危

#发现说明
H1任意 GitHub 仓库 = 以用户权限执行第三方代码(设计性 RCE)仅校验 github.com 主机名 + owner/repo 形态;无代码签名、无维护者 allowlist、无人工审阅闸门
H2模型权重无完整性校验 + hf_repo 由扩展可控 = 供应链 RCEPyTorch 权重 pickle.load 即代码执行;无 hash/签名;repo_id 由扩展 manifest 声明(攻击者可控)
H3扩展子进程无沙箱、继承宿主全部环境(含 HF_TOKEN/SSL_CERT_FILE/代理)恶意扩展 = 完整主机沦陷(读密钥、外联 C2、写自启)
H4POST /extensions/setup/{ext_id} 路径穿越(未 sanitize)安装路径有守卫,但此 HTTP 端点无 assertSafeExtensionId;任意 ext_id(如 ../../x)可指向他处 setup.pysys.executable 执行;无鉴权 localhost 即可触发

🟠 中危

#发现
M1无版本/commit 钉扎,tarball/HEAD 可变,安装不可重现、无法审计「当时装了什么」
M2FastAPI 控制平面 127.0.0.1:8765 完全无鉴权;任意本地进程/智能体/已装恶意扩展可调生成、导入网格、触发 /extensions/reload/extensions/setup
M3「官方可信注册表」仅作 UI 徽章,非执行闸门;离线拉取失败失败开放(返回空集,照样随意装)
M4HF token 以 URL query 传递(model.py:131/309),易落日志/SSE/进程列表
M5JS 扩展 npm install 拉取攻击者 package.json 依赖(无 lockfile 校验要求)
M6tar 解包未审计条目穿越(symlink/../ 历史 CVE;落 temp 内仍可被滥用)

🟡 低危

L1 typo-squat / 同名仓库冒用(仅校验主机名,不验 owner 真实);L2 实验 comfy-* 信任可配 COMFYUI_URL,投毒指向远端即成出网通道;L3 dev ensure-server 可凭空拉起无鉴权后端,放大暴露窗。

✅ 已缓解(值得肯定)

– 扩展 id 路径穿越守卫(R1)、工作区资产路径守卫(R2)、畸形 manifest 拒绝(R3)、安装原子性+回滚(R4)、CLI 工作区路径校验(R5)、自动 pip 修复白名单克制仅 PIL→Pillow(R6)。

4.4 智能体接口(MCP / CLI):面小,底座大

MCP server(mcp_server.py,10 工具)modly_list_models / switch_model / generate_from_image / get_generation_status / decimate_mesh / smooth_mesh / import_mesh / unload_models / get_settings——是「智能体→智能体驱动」薄封装,仅覆盖生成+优化+模型管理未直接暴露扩展安装/任意进程/权重下载。面相对克制。 – CLI(tools/modly-cli/agent.py,65KB,stdlib-only):canonical health / model / workflow-run / capability / process-run + 友好 generate(驱动 /workflow-runs/from-image 并轮询导出 glb);stdout 机器可读 JSON、失败关闭(fail-closed)、模型 id 经 /model/all 校验。契约分明(legacy/experimental 与 canonical 隔离)。 – PK 要点:MCP/CLI 自身克制,但其依赖的 127.0.0.1:8765 无鉴权控制平面(M2)——「导入网格/重载扩展/重跑 setup(且 setup 端点有 H4 穿越)」等高危能力对本地一切进程敞开。面小不能抵消底座大

4.5 安全张力

1. 开放扩展生态 vs 本地应用安全:任意 GitHub 仓库即执行,仅以 github.com 为信任锚;无签名、无钉扎、无沙箱。路径层优秀,代码信任层敞开——结构性「便利压倒安全」。 2. 「本地优先 / 隐私」叙事 vs 无校验联网拉权重:强调 runs entirely on your GPU,但权重须从 HF 拉且无完整性校验hf_repo 可控、PyTorch 加载即代码执行。隐私主张与供应链风险并存。 3. 强智能体接口 vs 攻击面放大:MCP/CLI 越强,本地任意进程(含恶意扩展)可借无鉴权底座之杠杆越大。

五、产品定位与竞品

5.1 竞品对照表(维度 × 产品,质量★为相对档位)

产品形态本地/云开源价格(量级)上手质量★可扩展显存
Modly本地桌面 App本地MIT免费(自购 GPU)★★★高(扩展+节点+CLI/MCP)~6GB 起
Meshy云端 SaaS专有免费额 + ~24/月</td><td>极低</td><td>★★★★</td><td>中(API)</td><td>无</td></tr><tr><td><strong>Tripo (VAST)</strong></td><td>云端 SaaS</td><td>云</td><td>专有(部开源)</td><td>免费额 + ~20/月极低★★★★中(API)
Rodin (Hyper3D/Deemos)云端 SaaS专有生成免费,下载 ~$0.5–1.5/个★★★★★中(API)
Luma Genie云端专有免费极低★★★
TripoSR开源模型本地MIT免费★★★(白模)高(当组件)
ComfyUI开源节点平台本地GPL免费★★★★(看接啥)极高中高
TRELLIS(微软)开源模型本地MIT/Apache免费★★★★中高
Hunyuan3D(腾讯)开源模型本地开源免费★★★★中高

> 竞品量级参考(2026-08 检索):Tripo/Meshy 双雄约 27–28M 月访、9 万开发者;Rodin 出品方为 Hyper3D(影眸科技/Deemos),非微软(微软对应开源模型是 TRELLIS)。

5.2 定位图(四象限)

开源 / 开放 (上) ┌─────────────────────────────────────────────┐ │ TripoSR / TRELLIS / Hunyuan3D / │ Modly ★ │ ComfyUI / InstantMesh / Unique3D │ (本地+开源+桌面,独一份子格) ├──────────────────┼─────────────────────────────┤ │ (空白:本地开源且打包桌面 │ Meshy / Tripo │ 几乎只有 Modly) │ Rodin / Luma Genie └─────────────────────────────────────────────┘ (云端专有 SaaS) 专有 / SaaS (下)

Modly 占据「本地 × 开源」象限中「还做了桌面打包」的几乎无人占据子格——既是战略机会,也是工程风险源(要补的活最多)。

5.3 营销主张事实核查

「Turn any photo into a 3D model」:✅ 成立(Image→Generate→Add to Scene)。⚠️ 单图重建质量上限明显(背面/遮挡幻觉,人物近看「蜡像感」)。 – 「runs entirely on your GPU」:✅ 推理本地、数据不出机。⚠️ 首次必联网下权重、扩展走 GitHub;「entirely on GPU」指计算层,非「离线可用」。 – 「local, open source」:✅ MIT、全本地推理、可 clone 自跑。⚠️ macOS 仅 Apple Silicon;无 Intel Mac/移动/云。

5.4 成熟度评分卡(1–5)

维度依据
代码活跃度4月级发布、5.5k 星/582 fork、仍活跃;核心疑似 1–2 人
文档3.5README/API/扩展/Jetson/ADR/SKILL 齐;缺整体架构总览、模型显存对照
测试3pytest + node 测试接入 npm test,但用例体量小、覆盖广度有限
社区2.5Discord + 3 赞助 + 52 issues;规模小
平台覆盖3.5Win/Linux/Apple Silicon 三端;缺口 Intel Mac/移动/云
许可4.5实质 MIT 商用友好;小扣 NOASSERTION + fork 署名
综合(工程成熟度)~3.5活跃的早期 Beta:方向对、形态清,离生产稳定仍有距

5.5 适用人群

该用:隐私/数据主权优先者;已有本地 GPU、想零边际成本批量出模型者;agent builder(MCP+CLI 是真正卖点);想玩多模型/改管线者;离线/边缘(Jetson 无头)部署。 – 暂勿用/谨慎:无像样独显的笔记本(~6GB 显存门槛);要「开箱即最高质量」商业交付(云端 Rodin/Tripo 更稳);Intel Mac;需企业级 SLA 的团队;只想偶尔出一张图的 casual 用户(云端免费额更省事)。

六、趋势论之

local AI 3D generation 浪潮:2026 开源模型(Hunyuan3D-2.1 带 PBR、TRELLIS、TripoSR)质量已「能用」,把推理搬回本机具技术+需求双基。Modly 踩中。 – agent-driven 3D 创作:MCP/CLI 是 2026 明显趋势。Modly 在 README 即重投 CLI/MCP,属先行者姿态,比多数开源模型仓库更懂「给 agent 用」。 – everything local 运动:隐私+零边际成本+主权,与本地 LLM(Ollama 类)同源。Modly 是这条线在 3D 领域的对应物。 – 定位结论:在「本地 × 开源 × 桌面打包」子格,Modly 是品类定义者/先行者;但在「图生 3D 整体质量与商业成熟度」上,它是追赶者(云端双雄 27–28M 月访)。即:分发形态领先,模型质量与生态规模追赶

七、PK 拍板 · 结论与建议

7.1 四路之争的整合结论

维度四方共识关键张力(待拍板者)
架构双运行时思路清晰、绿色分发高明、路径层安全扎实63KB IPC 单体债、后端无自动重启、本地化不彻底
模型模型无关宿主、推理 100% 本地、多模型可插拔默认模型悬空(sf3d 不在宣传表)、文档漂移、质量受本地算力锁死
安全路径/结构层防护好代码信任层全开:任意仓库 RCE、权重无校验、无沙箱、控制平面无鉴权、setup 端点穿越
定位本地×开源×桌面独一份、agent 接口先行野心 ≫ 工程成熟度(1–2 人、测试薄、社区小)

最大分歧(已决):「扩展有无签名校验」——D 卷推断有、C 卷称无;吾亲验证伪 D 卷:当前零供应链完整性校验(孤儿 public_key.pem 为证)。此一决断,直接拉高安全结论的严重度。

7.2 给步子哥的一句话 verdict

> Modly 是当下「本地、开源、图生 3D 桌面 App」这一品类的独苗与先行者,方向对、体验巧、agent 接口前瞻;但 v0.4.1 仍是早期 Beta——它把「便利与开放」放在「代码信任与安全」之前,对普通用户是「传图即出模的隐私厨房」,对安全敏感场景则是「装扩展即开门揖盗」的未设防城堡。值得技术玩家与隐私党尝鲜,不宜在企业/高价值资产环境无脑装第三方扩展。

7.3 给用户(步子哥)的使用建议

1. 自用无妨,慎装扩展:只装官方 lightningpixel/* 扩展,且手动核对仓库与 commit;绝不装不知名 GitHub 仓库扩展(= 以你权限跑任意代码)。 2. 硬件门槛:独显 ≥ 8GB 显存起步(TripoSG/Hunyuan3D-Mini 下限),大模型/带纹理需更高;Intel Mac 用户请绕行。 3. 质量预期:单图重建对物体稳、对人物有「蜡像感」;要生产级拓扑仍须 Blender 收尾。 4. 隐私边界:推理不出机属实,但首次须联网下权重;gated 模型(sf3d 等)需 HF token。 5. agent 玩法:MCP/CLI 接 Claude/Codex 编工作流是真亮点,但认清底座 127.0.0.1:8765 无鉴权——别在装了不可信扩展的机器上跑 agent。

7.4 给项目方的优先修复清单(摘要)

1. 安装闸门:维护者 allowlist / 签名校验 / commit 钉扎(至少记录安装时 commit SHA 供审计),离线失败关闭而非放行。 2. FastAPI 鉴权127.0.0.1:8765 加本地令牌(MODLY_API_TOKEN,Electron/CLI/MCP 共享),至少把 /extensions/*/process-runs/hf-download 纳入。 3. 修 H4/extensions/setup/{ext_id}assertSafeExtensionId。 4. 权重完整性/hf-download 校验 expected_sha256(来自经签名 manifest),否则拒载;PyTorch 加载前做完整性断言。 5. 最小环境注入:扩展子进程勿继承 HF_TOKEN 等密钥,按需显式传入;考虑 macOS App Sandbox / Windows 低权限令牌。 6. ComfyUI URL 白名单:限 COMFYUI_URL 仅 localhost。

附:关键文件溯源

主题文件
启动/进程生命周期electron/main/index.tspython-bridge.ts
IPC 契约单体electron/main/ipc-handlers.ts(1545 行/63KB)
路径守卫electron/main/extension-path-guard.ts + .test.ts
模型注册/默认 IDapi/services/generator_registry.py:165
子进程推理宿主api/services/extension_process.pyapi/runner.py
生成/工作流接口api/routers/generation.pyworkflow_runs.py
减面/平滑/GSapi/routers/optimize.py
权重下载api/routers/model.py:125-278
MCP serverapi/mcp_server.py(10 工具)
CLItools/modly-cli/agent.py(65KB)+ SKILL.md
节点画布/前端执行src/areas/workflows/{preflight.ts,workflowRunStore.ts,WorkflowsPage.tsx}
内置过程节点src/areas/workflows/nodes/{mesh-exporter,mesh-optimizer,mesh-smoother,mesh-remesher,mesh-repair}
可信注册表(UI 徽章)electron/main/ipc-handlers.ts:854-883(失败开放)
孤儿签名文件api/resources/public_key.pem(113B,全代码零引用)

发表回复

人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 借一步网 🐾 智柴网 沪ICP备2024052574号-1