我做了一套跑在浏览器里的 3D 虚拟世界基底。要强调两个词:
- 基底——不是给你一个做好的世界,而是给"做世界"这件事一套已经通电的地基;
- 共享——它托的不是一个世界,而是很多个各自独立的世界:各自部署、各自数据、各自规则,但跑在同一套底层上,访客和 AI 角色还能在世界之间串门。
原生 JS + Three.js + Node.js,可以部署在自己的服务器上,数据不经过第三方,覆盖 PC/手机/平板/XR。
先说这个方向还有多大空间:把它最终想长成的样子算进去,现在大概只走到 5%–8%。 已经跑起来的那层是实的(下面每个数字都是实测),但往后还有九成以上——让 AI 用模型零件自己搭出一个世界、Agent 商店、世界之间 Agent 互相通信(A2A)(这三件都还在规划中、还没上线),再加上你在这块地基上会搭出来的那些世界。多世界共存,这也正是我把它做成一个共享底座的原因。
再说它现在能干什么:从零做一个 3D 世界,真正吃掉时间的不是渲染——一个渲染循环加一个模型,一个下午就有了。难的是那些不做也看不见、不会报错的部分。这些我做完了,放在底座里,多个项目共用;你只写最上面那一层




这些活,你不用再做第二遍
左列是每个 3D 世界项目都要重走一遍的活,右列是底座里已经落地、可以直接在你自己的服务器上跑的东西(数字都是实测值):
| 你本来得自己做 | 底座里已经有的 |
|---|---|
| 颜色管线校正、引擎版本升级、把外部 CDN 依赖去掉 | 已升到 Three.js r185,颜色管线修正过,外链手写了 87 个垫片替掉 |
| 模型瘦身与分级(压贴图、低模、远处换档) | 上传即走管线:贴图 −68%~−92%、低模 ≤100 面(118 组)、变体贴图剥离 215 件 0 失败 |
| 资产目录越用越慢、没人说得清为什么 | 孤儿资产检测:一次清理清出 159 件/2.9 GB,目录 3.1 GB → 390 MB |
| draw call 治理,以及灯一改就全场卡死 | 合批后 draw call 3,064 → 837(−73%);灯池把"灯数一变全场景重编译(实测冻结约 9 秒)"归零 |
| 新对象入屏时画面死住、进度条卡在 90% | 着色器编译走预热预算;加载遮罩以"画面真的出帧"为撤除条件,不是纯计时 |
| 角色骨骼对不上(每个模型来源一套命名) | Mixamo/Ready Player Me/VRoid/Root Motion 四种来源在同一世界里共存,回归 67/67 |
| 多人同步,以及掉线后别人看不见你 | 重连自愈 9/9(重连后对端仍能看到我移动);近距离语音名额制,10 人约 1.3 Mbps |
| 自己搓一套 AI 角色的服务端 | 域名 + Key 就能让 AI 以人形角色进世界:有身体、有坐标、被真人看见,能走能跟随能带路。服务器只发 JSON,画面由访客浏览器渲染——实测每 Agent 约 1 KB/s,100 个 Agent 约 0.079 核 |
| 给 AI 写一套"进入某个世界"的接口清单 | 已经封装成 MCP Server 发布到 npm(包名 agent-virtual-world,当前 0.1.2):装进 Claude Desktop/Cursor/Cline,AI 的工具列表里就多出 world_observe/world_say/world_walk_to 这类能力,它以人形角色走进世界、被真人看见。写一行 AGENT_HOST 就能跑,游客档不需要 Key |
| 多个世界之间怎么互通 | 协议层已有:世界间握手、身份跟着账号迁移(同名自动改名 4/4)、300 秒一次性凭证防重放 |
判据只有一条:上面这些,没有一条是"因业务而异"的。 也正因为不因业务而异,它们才值得做成一个共享的底座——一套做完,所有建在上面的世界都省了。
在这上面能做什么
底座负责"能进去、有空间、能一起玩、能一直在线、有 AI 角色、能跨世界";你要写的只有一句:这个世界是什么。 举几类:
- 设备/产品展厅 —— 底座给:点开链接就能走的 3D 空间、多人同时参观、AI 角色带路讲解。你写:产品数据、参观动线、访客权限。
- 设备操作与安全培训 —— 底座给:稳定的多端加载、断线不丢人、近距离语音。你写:课程流程、考核规则。
- 博物馆/展馆数字孪生 —— 底座给:大场景的性能预算与资产分级。你写:展品内容、导览顺序。
- 个人收藏/模型陈列(手办、模型、周边) —— 底座给:自己的模型丢进去就能看、能分享链接、能多人一起逛。你写:摆什么、怎么摆。
- 给 AI 一个能活动的世界 —— 底座给:AI 以人形角色进入、被真人看见、能说话带路;而且已经封装成 MCP Server,Claude Desktop/Cursor/Cline 里加一行配置就能让你的 AI 走进来。你写:它的人设和它要说的话。
- 多个世界互相串门 —— 底座给:协议层已经打通。你写:谁可以进、带什么过去。
关键在于这几类是共用同一套底座:做展厅和做培训,底层是同一份;换场景改的是最上面那层,不用各造一次。
哪些是落地了的,哪些还没做
- 底座本身是完整可用的。 上面那一列不是"计划要做的功能清单",是已经在跑的东西——同一套底座已经能支撑多人世界、AI 人形角色走进去、以及多个世界之间的互通(协议层)。这不是一个开发版,是可以直接拿去建东西的底座。
- 多端:PC 我是实测过的;手机/平板/XR 都做了适配,但我没在真机上验过手感——这两端挺想请人来帮我验一验。
- AI 角色做不到的:看不见画面、不做语音识别与合成、不托管你的知识库、不做地形贴合,也不能被坐标传送——它靠走。
- 省的是第二阶段。 从零跑到"能跑起来"那一下午,有底座也一样要写;省下来的是"能跑"之后那段没有终点的工作。业务逻辑一个字段都不会少。
链接
- 源码(GitHub):https://github.com/miduo100/3d-virtual-world
- MCP Server(已上线 npm):
npx -y agent-virtual-world









