前言我折腾智能音箱时最容易产生落差的地方不是“它不会说话”而是它明明一直在线真正能自定义的东西却很少回答风格固定想换个人设不方便想接自己的大模型和 TTS 又容易被账号、接口和设备兼容卡住。MiGPT GUI 吸引我的地方是把这些原本分散的配置集中到了一个 Web 面板里——小米账号、音箱型号、AI 接口、TTS、人设和启动状态都能从同一处调整。对我来说这种玩法真正有意思的不是“让小爱变猫娘”这个噱头而是能不能把音箱从固定回复变成一套自己能维护、能换模型、能换声音、也能随时修改设定的 AI 入口。这次我在 Windows 上用 Docker 启动migpt-server本地端口是36592再配置小米账号、小爱音箱 Pro、阿里云百炼兼容接口、deepseek-v3.2和豆包 TTS。过程中还实际遇到了小米异地登录安全验证最后通过容器内.mi.json和passToken把登录链路跑通再测试单次对话、连续对话和自定义人设。最后安装 cpolar把 MiGPT GUI 管理页面提供到公网先验证随机地址再切换到固定二级子域名migpt。整篇我会把“音箱兼容、账号凭据、AI 接口、TTS、登录修复和公网管理”分开写避免把任何一层的问题都归结成“模型没配置好”。1. MiGPT GUI 真正解决的不是“换个声音”这么简单先看一下当前效果示意。MiGPT GUI 是一个给小爱音箱接入 AI 大模型的图形化控制面板。它主要把几类配置收在一起小米账号和音箱设备AI 大模型接口TTS 文本转语音对话关键词连续对话自定义人设服务启动和状态查看。对我来说它更像一层“控制面板”。音箱本身仍然是小爱设备大模型由外部 API 提供TTS 又可能来自另一套服务。所以后面如果出了问题我会先判断到底是设备不兼容、账号没登录、AI 接口失败还是 TTS 没通。这比一看到音箱没回复就直接重装容器要有效得多。当前设备兼容情况支持类型设备1设备2设备3设备4设备5设备6✅ 支持连续对话小爱音箱 Pro小爱音箱 mini小爱音箱 Play2019万能遥控版小米 AI 音箱12代小爱智能家庭屏 10⚠️ 不支持连续对话小爱音箱小爱音箱 PlayPlay 增强版智能家庭屏 6Redmi 触屏音箱 Pro 8小爱音箱 Art❌ 无法运行小米小爱音箱 HD小爱蓝牙音箱随身版----设备差异要先看清。不是所有小爱音箱都支持连续对话也不是所有型号都能运行当前方案。2. 先用 Docker 把 migpt-server 跑起来这次演示环境是 Windows。按Win R输入cmd打开命令提示符然后执行dockerrun-d--namemigpt-server-p36592:36592 lmk123/migpt-server这条命令里几个关键点是容器名migpt-server宿主机端口36592容器端口36592镜像lmk123/migpt-server当前命令没有额外 volume 挂载也没有写 restart 策略。这一点后面处理登录凭据时会比较值得留意因为容器内手动写入的文件和“宿主持久化配置”不是一回事。3. 先确认容器真的处于 UP执行dockerps如果status显示为UP并且能看到36592端口再打开http://localhost:36592MiGPT 控制面板能够正常打开。到这里我只确认Docker → migpt-server →36592→ 本地 Web 页面已经通了。真正让音箱能和 AI 对话还要继续配账号、设备、大模型和 TTS。4. 先配置小米账号和音箱型号进入控制面板以后先选择音箱型号。当前示例设备是小爱音箱 Pro接着需要获取小米账号 ID。访问https://account.xiaomi.com/fe/service/account/profile登录自己的小米账号以后复制小米 ID。再把小米账号 ID小米账号密码填写到 MiGPT 控制面板。这里已经开始涉及账号凭据。如果后面准备把 MiGPT GUI 开放到公网我会把这一点单独记住因为这个管理页面不是普通展示页里面配置了真正的账号和接口信息。5. 设备 ID 不要凭感觉写设备 ID 需要参考米家 App 里显示的设备名称。当前示例里看到的是Xiaomi 智能音箱 Pro然后把这个名称填到设备 ID。这里我会特别注意空格也要保持一致。如果设备名称不匹配后面 AI 接口和 TTS 全都配置正确也不代表 MiGPT 一定能找到目标音箱。6. 接入 AI这次用阿里云百炼兼容接口AI 部分使用阿里云百炼做演示。当前材料记录的是新用户每个模型有 100 万免费 tokens。这类额度属于平台当前活动或政策信息我按现有环境保留不把它当作长期固定规则。进入密钥管理页面https://bailian.console.aliyun.com/?spma2c4g.11186623.0.0.60907980OAftBftabmodel#/api-key创建 API-KEY。选择归属账号后确认。然后复制 API-Key。回到 MiGPT 控制面板。接口地址填写https://dashscope.aliyuncs.com/compatible-mode/v1模型填写deepseek-v3.2当前使用deepseek-v3.2到这里AI 接口层就配置完成了。我不会把“API Key 已填”直接等同于“音箱已经能对话”。后面还有 TTS 和小米登录状态要继续验证。7. 再配置 TTS这里换成豆包语音AI 能生成文字以后还要解决让音箱用什么声音说出来。进入语音服务区域。默认 TTS 引擎是小爱音色。这里切换到豆包。切换以后需要填写几项参数。第一项是对外地址当前局域网示例是http://192.168.50.149:36592也就是http://192.168.50.149:36592如果部署环境不同这里要按实际可访问地址填写。8. 获取豆包 TTS 的 APP ID 和 Access Token进入火山引擎控制台https://console.volcengine.com/home登录以后在左上角菜单里搜索语音合成进入豆包语音点击创建应用勾选语音合成再确认。接着进入侧边栏的语音合成页面。这里能看到APP IDAccess Token把它们填回 MiGPT 控制面板。然后点击测试语音配置当前默认演示音色是灿灿这里的 APP ID 和 Access Token 都属于接口凭据。不建议放进公开截图、公开配置或公网可随意访问的管理页里。9. 想换音色可以继续查音色列表当前材料还提供了一套火山引擎 TTS 音色列表页面。地址是https://gitee.com/jun-wan/volcano-engine-tts-sound-list这个页面用于辅助查看和选择其他音色。真正替换时仍然要用自己账号对应的 APP ID 和 Access Token。10. 配置完以后先别急着改人设先看日志控制面板里点击启动然后回到 cmd。执行dockerlogs-fmigpt-server这里很快就遇到了真正的坑小米异地登录安全验证机制。这也是我为什么不愿意把这套流程写成“10 分钟无脑部署”。Docker 能启动、控制面板能打开、AI Key 能填不代表小米账号登录一定顺利。11. 当前登录问题的处理思路现有处理步骤整理如下1. 进入容器内部进入 migptgui 容器的交互式 shell2. 创建配置文件目录创建 .migptgui/default 目录3. 登录小米账号在浏览器中访问小米账户获取授权或信息4. 创建并写入 .mi.json 文件在容器内创建文件并写入 Mina 和 Miiot 的 passToken5. 验证文件是否创建成功查看 .mi.json 是否存在并显示内容6. 退出容器内部核心思路是进入容器 → 创建 MiGPT 配置目录 → 获取小米账号 passToken → 写入.mi.json→ 检查文件 → 退出。这里涉及的是账号认证凭据。passToken应按敏感凭据处理不要发到公开文章、聊天群、截图或代码仓库。12. 进入 migpt-server 容器如果前面还在运行docker logs -f migpt-server先按Ctrl C退出日志跟随。然后进入容器dockerexec-itmigpt-server /bin/sh13. 创建配置目录容器里执行mkdir-p/root/.migptgui/default目录是/root/.migptgui/default后面.mi.json就写在这里。14. 获取小米账号 passToken访问https://account.xiaomi.com按照当前流程登录小米账号并获取 passToken。这里不把实际 token 写进正文。真正使用时只使用自己账号当前获取到的 passToken并妥善保管。15. 写入 .mi.json在容器内部执行cat/root/.migptgui/default/.mi.jsonEOF { mina: { pass: { passToken: 你的小米账号Token } }, miiot: { pass: { passToken: 你的小米账号Token } } } EOF这里 Mina 和 Miiot 两处都使用你的小米账号Token占位符。实际操作时替换成自己账号对应的 passToken。这一步特别值得注意当前最初的docker run并没有把/root/.migptgui/default映射到宿主机 volume。所以如果以后删除并重建容器不要默认认为手动写进去的.mi.json一定还在。至少需要重新确认这个文件是否存在。16. 验证文件是否创建成功执行ls-la/root/.migptgui/default/确认目录里出现.mi.json以后退出容器exit到这里登录修复步骤完成。17. 重新启动容器再看一次日志由于前面的账号登录问题当前容器已经停止。重新启动dockerstart migpt-server回到 MiGPT 页面再点击启动。然后继续查看日志dockerlogs-fmigpt-server这次日志显示服务已经正常运行。18. 先测试单次 AI 对话当前单次对话调用 AI 的关键词配置是请、你、傻妞用下面这句话测试小爱同学你是谁当前结果是AI 成功响应TTS 使用前面配置的音色进行回答。这一层终于把音箱 → MiGPT → AI → TTS → 音箱回复跑通了。19. 支持的设备还可以测试连续对话个别兼容设备支持连续对话。当前连续对话唤醒指令测试为召唤 为什么地球是方的 那为什么地球是圆的可以看到连续问题都成功调用 AI。但是否支持连续对话要回到前面的设备兼容表判断不能因为小爱音箱 Pro 跑通就默认所有型号都一样。20. 对话跑通以后再改人设当基础链路稳定后再做自定义人设更合适。控制面板顶部可以看到当前人设设置。点击自定义再点击写入默认模板页面会插入默认模板。当前示例把它改成猫娘这里的人设文本本身可以自由替换。如果是家庭成员共同使用我会优先把角色设定写得简单、清楚不让 Prompt 过度复杂化。21. 覆盖模板后重新启动把新的人设覆盖默认模板。然后重新点击启动再次询问小爱同学你是谁当前测试结果显示自定义人设已经生效。所以这一层验证的是Prompt 人设 → MiGPT → AI 回复风格而不是修改了小爱音箱底层固件。22. 为什么我还会给 MiGPT GUI 配公网访问本地页面现在能做很多管理动作换人设改大模型 API调 TTS看运行状态。但只要人在外面localhost:36592就不能直接访问。这里再加入 cpolar。cpolar 在这套方案里只负责把 MiGPT GUI 的 Web 管理页面提供到公网。它不负责 DeepSeek 推理也不负责豆包 TTS更不参与小米设备登录。23. Windows 安装 cpolar进入下载页面选择立即下载 64-bit下载后解压并安装。安装完成以后打开 cmd执行cpolar version看到版本信息以后继续注册和登录。24. 注册并进入 cpolar Web UI进入 cpolar 官网注册账号。完成注册。浏览器访问http://127.0.0.1:9200使用注册好的 cpolar 账号登录。后面的公网隧道都在这个页面里配置。25. 先用随机域名测试公网访问当前说明里写的是随机域名大约每 24 小时变化一次。这个周期属于现有材料描述我按当前环境保留不把它扩大成任何套餐永远固定如此。后台默认可以看到remoteDesktop3389TCPwebsite8080HTTP编辑website隧道把它改成 MiGPT GUI 对应的信息。当前目标服务端口是36592隧道名称使用migpt更新以后进入在线隧道列表。可以看到两条migpt地址HTTPHTTPS每个用户生成的公网地址都不同。用其中的 HTTPS 地址测试。MiGPT GUI 页面能够正常打开。这一层验证的是Windows36592→ cpolar → 公网地址 → 外部浏览器。26. 长期使用再切固定二级子域名随机地址适合先验证。如果以后需要经常从外面进入 MiGPT GUI再考虑固定二级子域名。进入https://dashboard.cpolar.com/reserved在预留 → 保留二级子域名中配置固定地址。当前示例记录是地区China Top二级域名migpt二级域名具有唯一性最终以自己账号实际保留成功的名称为准。27. 把固定子域名绑定回 migpt 隧道进入隧道管理 → 隧道列表找到migpt点击编辑。把域名类型改成二级子域名再填写前面保留成功的域名。更新以后进入在线隧道列表。可以看到migpt公网地址已经变成固定二级子域名形式。最后用 HTTPS 地址测试。页面可以正常访问。28. 公网开放 MiGPT GUI真正要小心的是管理凭据这套页面里配置了小米账号 ID小米账号密码AI API Key豆包 APP IDAccess Token设备信息人设和模型配置。所以我不会把 MiGPT GUI 当成一个普通公开网页。“公网能打开”只是网络层成功。真正长期使用时更值得确认谁能访问、页面本身有什么登录保护、凭据会不会在页面里暴露、固定地址是否只分享给需要的人。cpolar 负责的是入口不会自动替应用增加业务级权限控制。总结这次真正跑通的主线是Windows → Docker →lmk123/migpt-server→36592:36592→ MiGPT GUI → 小爱音箱 Pro → 小米 ID / 密码 / 设备 ID → 阿里云百炼 →https://dashscope.aliyuncs.com/compatible-mode/v1→deepseek-v3.2→ 豆包 TTS →APP ID / Access Token→ 小米异地登录问题 → 容器/root/.migptgui/default/.mi.json→ passToken → 重启 → 单次对话 → 连续对话 → 自定义猫娘人设 → cpolar →127.0.0.1:9200→36592随机公网 → 固定二级子域名migpt。几个细节需要继续留意设备兼容性有差异是否支持连续对话要按当前兼容表判断Docker 启动命令没有 volume 和 restart 参数后面手动写进容器的.mi.json在容器重建后需要重新确认小米密码、passToken、AI API Key、APP ID、Access Token 都属于敏感凭据不适合公开deepseek-v3.2、百炼免费 tokens、随机域名约 24 小时变化等属于当前材料环境不扩展成长期不变政策TTS 对外地址示例继续保留http://192.168.50.149:36592cpolar 只负责 MiGPT GUI 的公网入口不参与 AI 推理、TTS 或小米账号认证固定二级子域名示例继续使用migpt地区是China Top把 MiGPT GUI 提供到公网后更要关注管理页本身的访问边界因为这里承载的不只是普通配置而是多套账号和接口凭据。对我来说这次最有价值的不是把小爱音箱换成某个“猫娘人设”而是把整条链真正拆开跑通设备能找到、账号能登录、模型能回答、TTS 能出声、人设能生效、远程还能进管理页。等这些基础层稳定以后想换老师、管家、游戏角色还是别的设定反而只是最后一步。
