用 Hyper3D Rodin 跑 MCP:Key 用 TaoToken,参考图仍由 GPT-6 出 1. 从 Rodin MCP 请求超时说起把 Base URL 换成 TaoToken 后我重新跑通了 3D 生成链路前几天在本地跑 Hyper3D Rodin 的 MCP 时遇到一个很典型的组合问题GPT-6 已经能正常输出参考图和前端交互代码但 Rodin MCP 在提交建模任务时一直停在polling job日志里反复出现401 Unauthorized和api base not reachable。排查后发现不是模型本身的问题而是 MCP 服务端的请求地址和 Key 没有统一到同一个供应商。我的做法是先去 TaoToken 官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentrodin_mcp_gpt6 拿到 Key再把 Rodin MCP 的请求地址设为https://taotoken.net/api。这样 GPT-6 和 Rodin 两条 Token 消耗链路都走同一个余额排查成本低很多。这篇文章不是复述“一下午做出 3D 作品集”的结果而是把中间最卡人的接入步骤拆开MCP 启动命令怎么写、Claude Code 和 Codex 分别怎么配、GPT-6 出的参考图如何交给 Rodin、Rodin 输出的 GLB 如何做零件级动画、以及 Token 消耗对不上时先查哪里。如果你也在用 Hyper3D Rodin 跑 MCP并且希望参考图仍然由 GPT-6 出下面的配置可以直接复制到本地改。需要先明确分工GPT-6 负责两件事一是生成参考图二是写 Three.js 交互代码Rodin MCP 负责把参考图变成 3D 模型BANG 负责把整体模型按结构拆成独立零件方便后面做零件级动画。两条链路都会消耗 Token所以 Key 和 Base URL 最好从一开始就统一到 TaoToken而不是一个工具用一套环境变量。2. 先拿 Key 再改 MCP 请求地址Rodin 与 GPT-6 的 Token 分工第一步不是急着启动 MCP而是先把 Key 准备好。打开 TaoToken 官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentrodin_mcp_gpt6_key 注册并进入控制台在 API Keys 页面创建一个新 Key。复制出来的字符串就是后面所有配置里的YOUR_API_KEY。不要把它写进前端代码也不要提交到 Git 仓库本地用环境变量或 MCP 宿主自己的密钥管理功能保存。拿到 Key 后先确认两件事GPT-6 出参考图和写交互代码时请求地址是否指向https://taotoken.net/api。Rodin MCP 启动时它的RODIN_API_BASE或同类配置是否也指向https://taotoken.net/api。不同 MCP 宿主的字段名可能不同但核心就是“Base URL API Key”。下面给一个通用启动命令示例把你的-Rodin-MCP-启动命令替换成你本地实际安装的 Rodin MCP 命令即可# 先把 Key 放进当前 shell 环境 export TAOTOKEN_API_KEYYOUR_API_KEY # 再启动 Rodin MCP核心是让 MCP 请求地址走 TaoToken RODIN_API_BASEhttps://taotoken.net/api \ RODIN_API_KEY$TAOTOKEN_API_KEY \ 你的-Rodin-MCP-启动命令如果你用的是 JSON 配置型 MCP 宿主可以写成这样{ mcpServers: { hyper3d-rodin: { command: npx, args: [-y, 你的-Rodin-MCP-包名], env: { RODIN_API_BASE: https://taotoken.net/api, RODIN_API_KEY: YOUR_API_KEY } } } }这里要注意https://taotoken.net/api是 Base URL不要在后面随意加/v1或/chat/completions除非你用的客户端明确要求。很多404和401不是 Key 失效而是 Base URL 被拼错了。第一次跑通时建议先用一个最小的 MCP 工具调用验证连接比如只让 Rodin 返回账户状态或模型列表再提交真正的建模任务。Token 消耗方面GPT-6 和 Rodin 是分开计的。GPT-6 出参考图、写交互代码按对话 Token 计费Rodin MCP 提交建模任务按生成任务或模型 Token 计费。两者都从 TaoToken 的余额扣。你可以在控制台的用量明细里分别看到调用来源。如果发现 Rodin 任务失败但 Token 也少了先检查是不是任务提交成功但轮询超时这种情况通常可以在 MCP 客户端里调大超时时间而不是重复提交。3. Claude Code 配置用 settings.json 让 GPT-6 写参考图提示词和交互代码如果你用 Claude Code 作为 MCP 宿主和代码助手配置入口是settings.json环境变量前缀是ANTHROPIC_*。这里要特别注意Claude Code 走的是 Anthropic 兼容配置不要把它和 Codex 的config.toml混在一起也不要把ANTHROPIC_*套到 Codex 上。一个可复制的settings.json示例如下{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: YOUR_API_KEY, ANTHROPIC_MODEL: claude-3-7-sonnet-20250219 } }保存位置根据系统不同有所差异常见路径是macOS / Linux~/.claude/settings.jsonWindows%APPDATA%\Claude\settings.json如果你的 Claude Code 版本支持项目级配置也可以放在项目根目录的.claude/settings.json。改完后重启 Claude Code让它重新读取环境变量。验证方式很简单在 Claude Code 里问一个短问题看是否正常返回如果返回401优先检查ANTHROPIC_API_KEY是否还是占位符YOUR_API_KEY如果返回404检查ANTHROPIC_BASE_URL是否误写成了https://taotoken.net/api/v1。Claude Code 在这个流程里主要负责两件事第一帮你整理 GPT-6 出参考图时用的提示词。比如你要做一个低多边形科幻工作台可以先让 Claude Code 把需求拆成“视角、背景、材质、比例、是否需要正交投影”这些字段再交给 GPT-6 生成参考图。这样比直接丢一句“帮我画个工作台”稳定得多。第二帮你检查 GPT-6 输出的 Three.js 交互代码。GPT-6 可以写加载 GLB、OrbitControls、点击高亮、零件旋转这些逻辑但生成后仍然要在本地跑一遍。Claude Code 可以帮你定位GLTFLoader路径错误、材质丢失、相机初始位置不对这类问题。注意所有命令都在你本地执行不要让 MCP 或 Agent 去直连生产数据库。另外如果你同时使用多个供应商可以用 CC Switch 做切换。CC Switch 的核心是三件套供应商名称、Base URL、API Key。新增一个供应商时这样填{ name: TaoToken, baseUrl: https://taotoken.net/api, apiKey: YOUR_API_KEY }字段名在不同版本的 CC Switch 里可能略有差异但本质就是这三项。填完后在 Claude Code 和 Codex 之间切换时就不会把两套环境变量搞混。4. Codex 配置config.toml 里让 GPT-6 出参考图与交互代码Codex 的配置文件和 Claude Code 完全不同它使用config.toml。这里再次强调不要在 Codex 里写ANTHROPIC_*那是 Claude Code 的配置方式。Codex 应该用model_providers和env_key来指定供应商。一个可复制的config.toml示例如下model_provider taotoken model gpt-6 [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY然后在本机设置环境变量export TAOTOKEN_API_KEYYOUR_API_KEYWindows PowerShell 可以用$env:TAOTOKEN_API_KEYYOUR_API_KEY配置完成后Codex 里的 GPT-6 就可以用来做两件事一是根据你的文字描述生成参考图提示词二是生成 Three.js 交互代码。比如你可以让 GPT-6 输出一个prompt.txt里面包含参考图的视角、构图、材质和背景要求再把这份提示词交给图像生成环节得到ref.png。之后把ref.png作为 Rodin MCP 的输入。如果 Codex 报401先检查env_key对应的环境变量是否真的存在以及变量名是否拼错。如果报model not found检查model gpt-6是否与你实际可用的模型名一致。如果报connection refused或timeout检查base_url是否为https://taotoken.net/api不要多写路径。Codex 和 Claude Code 可以同时装但建议用 CC Switch 管理供应商避免两套配置互相覆盖。CC Switch 里同样填三件套名称TaoToken、Base URLhttps://taotoken.net/api、API KeyYOUR_API_KEY。切换后Claude Code 用ANTHROPIC_*Codex 用config.toml各走各的不要交叉。5. Rodin MCP 启动与参考图输入从 GPT-6 出图到 3D 模型输出对照当 Key 和 Base URL 都准备好后就可以正式跑 Rodin MCP 了。建议按下面的顺序来避免一上来就提交复杂模型导致排队和超时。第一步用 GPT-6 生成参考图提示词。提示词里至少包含主体例如“低多边形科幻工作台”视角正面、四分之三侧、正交投影背景纯白或透明方便抠图材质哑光金属、塑料、发光条比例长宽比 1:1 或 4:3限制不要复杂阴影不要景深第二步把 GPT-6 生成的提示词交给图像生成流程得到ref.png。保存到本地项目目录例如./assets/ref.png。第三步在 MCP 客户端里调用 Rodin 的建模工具。不同 MCP 的工具名可能不同但参数通常包含参考图路径、提示词、输出格式。下面是一个通用调用示意具体工具名以你本地 Rodin MCP 暴露的为准{ jsonrpc: 2.0, id: 1, method: tools/call, params: { name: 你的-Rodin-建模工具名, arguments: { image_path: ./assets/ref.png, prompt: low poly sci-fi workstation, front view, white background, output_format: glb } } }第四步观察输出对照。一个稳定的参考图输入通常能得到这样的输出参考图正面视角、白色背景、低多边形、主体居中。Rodin 输出 GLB三角面数量在可接受范围内材质以基础 PBR 为主模型原点在底部中心方便后续摆进场景。如果输出比例失真优先调整参考图的长宽比和相机视角而不是反复改提示词。如果输出缺少细节检查参考图是否太小、背景是否太杂、主体是否被遮挡。第五步如果要做零件级动画Rodin 输出的整体模型还不够。可以用 BANG 按结构把模型拆成独立零件比如底座、屏幕、支架、按钮分别成为独立 Mesh。这样在 Three.js 里就可以单独旋转、浮动、高亮某个零件而不是整个模型一起动。原文作者最终把三十多个模型放进作品集网页并做到了可逛可交互关键就在于拆件这一步没有省。Token 消耗方面Rodin MCP 每次提交建模任务都会产生消耗GPT-6 出参考图和写代码也会产生消耗。建议在 TaoToken 控制台按时间查看用量确认两条链路都在同一账户下。如果发现 Rodin 任务失败但余额下降先看任务是否已经提交成功、只是轮询超时不要立刻重复提交。6. 零件级动画与作品集网页把 GLB 接进 Three.js 的最小闭环Rodin 输出 GLB 后下一步是把它接进 Three.js。GPT-6 可以帮你写这段交互代码但生成后要在本地跑起来。下面是一个最小闭环示例包含场景、相机、渲染器、轨道控制器和 GLB 加载import * as THREE from three; import { GLTFLoader } from three/addons/loaders/GLTFLoader.js; import { OrbitControls } from three/addons/controls/OrbitControls.js; const scene new THREE.Scene(); scene.background new THREE.Color(0xf5f5f5); const camera new THREE.PerspectiveCamera(45, innerWidth / innerHeight, 0.1, 1000); camera.position.set(4, 3, 6); const renderer new THREE.WebGLRenderer({ antialias: true }); renderer.setSize(innerWidth, innerHeight); renderer.setPixelRatio(Math.min(devicePixelRatio, 2)); document.body.appendChild(renderer.domElement); const controls new OrbitControls(camera, renderer.domElement); controls.enableDamping true; const loader new GLTFLoader(); loader.load(/models/workstation.glb, (gltf) { const model gltf.scene; model.traverse((child) { if (child.isMesh) { child.userData.originalColor child.material.color.clone(); } }); scene.add(model); }); function animate() { requestAnimationFrame(animate); controls.update(); renderer.render(scene, camera); } animate();如果已经用 BANG 拆件那么每个零件会是独立 Mesh。你可以在traverse里按名称区分零件然后给它们分别绑定动画const parts {}; model.traverse((child) { if (child.isMesh) { parts[child.name] child; } }); // 例如让某个按钮零件上下浮动 const button parts[button_01]; if (button) { let t 0; setInterval(() { t 0.05; button.position.y Math.sin(t) * 0.1; }, 16); }作品集网页里如果模型数量多比如三十多个精细建模性能要提前考虑。可以这样做远处模型用 LOD近处再加载高模。相同材质的小零件用 InstancedMesh。纹理压缩成 KTX2 或 WebP避免一张图几 MB。页面初始只加载首屏模型其他模型滚动到视野再加载。交互事件用射线检测不要每帧遍历所有零件。GPT-6 可以把这些优化点写成代码但建议你本地验证后再上线。所有构建命令、压缩命令、部署命令都在本地执行不要让 MCP 或 Agent 直接操作生产环境。7. 排障清单401、超时、模型名与 Token 消耗对不上跑 Rodin MCP 时最常见的几个问题如下。先按这个清单排查再考虑改代码。401 Unauthorized检查YOUR_API_KEY是否已经替换成真实 Key。检查 MCP 配置里的RODIN_API_KEY是否和 GPT-6 用的 Key 是同一个。如果 Key 正确但仍然 401检查 Base URL 是否为https://taotoken.net/api不要多写/v1。403 Forbidden通常是权限或模型未开通。去 TaoToken 控制台确认当前 Key 是否有权限调用目标模型。如果用的是新创建的 Key确认它没有被限制 IP 或额度。Timeout / polling job 卡住Rodin 建模任务可能排队MCP 客户端默认超时时间可能太短。把 MCP 客户端的超时调大或者先提交简单模型验证链路。不要因为轮询超时就重复提交否则会重复消耗 Token。模型名不匹配Claude Code 走ANTHROPIC_MODELCodex 走config.toml里的model。不要把 Claude 的模型名写到 Codex 里也不要把 GPT-6 的模型名写到 Claude Code 里。两边分开查。Token 消耗对不上GPT-6 出参考图和写代码的消耗在对话用量里看Rodin MCP 的消耗在建模任务里看。如果两边都走 TaoToken控制台会分别记录。先确认是不是同一个 Key再看时间范围是否选对。MCP 请求地址还是旧地址有些 MCP 宿主会缓存配置改完mcp.json或环境变量后需要重启宿主。Windows 上如果用了系统环境变量还要重启终端。确认RODIN_API_BASE输出确实是https://taotoken.net/api。如果你在配置过程中需要重新核对 Key 和 Base URL可以回到 TaoToken 官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentrodin_mcp_troubleshoot 查看控制台入口。整个流程里最稳的做法就是先把 Key 拿到再把所有需要调用模型的工具统一指向https://taotoken.net/api最后再启动 MCP 和 GPT-6 的生成链路。8. 文末 CTA从模型对话到 Coding Plan 的接入路径如果你已经准备好复现这套「GPT-6 出参考图 Rodin MCP 生成模型 BANG 拆件 Three.js 交互」的流程建议按下面的顺序完成接入先到模型对话页面确认 GPT-6 能正常出参考图提示词和交互代码https://taotoken.net/models/detail/chat?utm_sourcetaotoken_aicg_blog_endutm_contentrodin_mcp_chat如果这条链路会长期用于编码和 MCP 调用可以看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentrodin_mcp_coding_plan然后创建 API Key把YOUR_API_KEY替换成真实 Keyhttps://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentrodin_mcp_api_keys如果你用 Claude Code 作为宿主配置细节参考 Claude Code 文档https://taotoken.net/doc/ClaudeCodeAnthropic?utm_sourcetaotoken_aicg_blog_endutm_contentrodin_mcp_claude_code_doc最后再提醒一次Rodin MCP 的请求地址设为https://taotoken.net/apiGPT-6 的调用也走同一个 Base URLKey 用YOUR_API_KEY。先把最小链路跑通再逐步加模型、加零件、加交互。这样即使中间出现 401、超时或 Token 对不上也能快速定位到是 Key、Base URL、模型名还是 MCP 客户端配置的问题。