前言
我折腾智能音箱时,最容易产生落差的地方不是“它不会说话”,而是它明明一直在线,真正能自定义的东西却很少:回答风格固定,想换个人设不方便,想接自己的大模型和 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 | 小爱音箱 Play(2019) | 万能遥控版 | 小米 AI 音箱(1&2代) | 小爱智能家庭屏 10 |
| ⚠️ 不支持连续对话 | 小爱音箱 | 小爱音箱 Play | Play 增强版 | 智能家庭屏 6 | Redmi 触屏音箱 Pro 8 | 小爱音箱 Art |
| ❌ 无法运行 | 小米小爱音箱 HD | 小爱蓝牙音箱随身版 | - | - | - | - |
设备差异要先看清。
不是所有小爱音箱都支持连续对话,也不是所有型号都能运行当前方案。
2. 先用 Docker 把 migpt-server 跑起来
这次演示环境是 Windows。
按:
Win + R
输入:
cmd
打开命令提示符,然后执行:
docker run -d --name migpt-server -p 36592:36592 lmk123/migpt-server

这条命令里几个关键点是:
- 容器名:
migpt-server - 宿主机端口:
36592 - 容器端口:
36592 - 镜像:
lmk123/migpt-server
当前命令没有额外 volume 挂载,也没有写 restart 策略。
这一点后面处理登录凭据时会比较值得留意,因为容器内手动写入的文件和“宿主持久化配置”不是一回事。
3. 先确认容器真的处于 UP
执行:
docker ps

如果 status 显示为 UP,并且能看到 36592 端口,再打开:
http://localhost:36592

MiGPT 控制面板能够正常打开。
到这里我只确认:
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/?spm=a2c4g.11186623.0.0.60907980OAftBf&tab=model#/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。
执行:
docker logs -f migpt-server

这里很快就遇到了真正的坑:
小米异地登录安全验证机制。
这也是我为什么不愿意把这套流程写成“10 分钟无脑部署”。
Docker 能启动、控制面板能打开、AI Key 能填,不代表小米账号登录一定顺利。
11. 当前登录问题的处理思路
现有处理步骤整理如下:
1. 进入容器内部,进入 migptgui 容器的交互式 shell
2. 创建配置文件目录,创建 .migptgui/default 目录
3. 登录小米账号,在浏览器中访问小米账户获取授权或信息
4. 创建并写入 .mi.json 文件,在容器内创建文件并写入 Mina 和 Miiot 的 passToken
5. 验证文件是否创建成功,查看 .mi.json 是否存在并显示内容
6. 退出容器内部
核心思路是:
进入容器 → 创建 MiGPT 配置目录 → 获取小米账号 passToken → 写入 .mi.json → 检查文件 → 退出。
这里涉及的是账号认证凭据。
passToken 应按敏感凭据处理,不要发到公开文章、聊天群、截图或代码仓库。
12. 进入 migpt-server 容器
如果前面还在运行:
docker logs -f migpt-server
先按:
Ctrl + C
退出日志跟随。
然后进入容器:
docker exec -it migpt-server /bin/sh

13. 创建配置目录
容器里执行:
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.json << 'EOF'
{
"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. 重新启动容器,再看一次日志
由于前面的账号登录问题,当前容器已经停止。
重新启动:
docker start migpt-server

回到 MiGPT 页面,再点击启动。

然后继续查看日志:
docker logs -f migpt-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 小时变化一次。
这个周期属于现有材料描述,我按当前环境保留,不把它扩大成任何套餐永远固定如此。
后台默认可以看到:
remoteDesktop:3389,TCPwebsite:8080,HTTP

编辑:
website
隧道,把它改成 MiGPT GUI 对应的信息。

当前目标服务端口是:
36592
隧道名称使用:
migpt
更新以后进入在线隧道列表。
可以看到两条 migpt 地址:
- HTTP
- HTTPS

每个用户生成的公网地址都不同。
用其中的 HTTPS 地址测试。

MiGPT GUI 页面能够正常打开。
这一层验证的是:
Windows 36592 → 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 ID;
- Access 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:36592; - cpolar 只负责 MiGPT GUI 的公网入口,不参与 AI 推理、TTS 或小米账号认证;
- 固定二级子域名示例继续使用
migpt,地区是China Top; - 把 MiGPT GUI 提供到公网后,更要关注管理页本身的访问边界,因为这里承载的不只是普通配置,而是多套账号和接口凭据。
对我来说,这次最有价值的不是把小爱音箱换成某个“猫娘人设”,而是把整条链真正拆开跑通:设备能找到、账号能登录、模型能回答、TTS 能出声、人设能生效、远程还能进管理页。等这些基础层稳定以后,想换老师、管家、游戏角色还是别的设定,反而只是最后一步。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/qq_54796785/article/details/166644383




