小爱同学,是时候给你换个脑子了

先说一个数字。
零。
不用拆机、不用刷固件、不用改硬件——一台只会报天气的老旧小爱同学,被接上了 DeepSeek 和 Ollama 的大脑。
它还是那个小爱。收音是它的,音色也是它的。 只是"想"这件事,换地方了。
01
一、老设备没有死,只是没人给它换脑子
如果你家还有一台小爱同学,大概率是这样的:
问天气,它会答。 问别的,它就装傻。
厂商早就把云端模型迭代到下一代了,但你的硬件停在原地。 扔了可惜,留着吃灰。
所有人都说:旧设备就该淘汰。 这个项目不信。
它只做了一件事——在小爱旁边多接了一条"AI 回路":
小爱收音 → MiService → LLM 思考 → TTS 说回。
收音还是小爱的嘴,播放还是小爱的嗓子。 中间那一步"想",被悄悄换掉了。

02
二、它没有造轮子,只做了三件小事
这个项目最聪明的地方,是不从零开始。
第一件:唤醒词过滤。 你说"请问"或者"深思",它才把话递给大模型; 否则小爱照常应答,互不打扰。 一个词,划出了新旧两条世界线。
第二件:多模型随便切。 DeepSeek、Ollama 本地模型、OpenAI、Claude—— 改一行 YAML 配置,零代码改动。 同一套唤醒词,同一套记忆,换个脑子而已。
第三件:它记得你刚才说了什么。 按设备加时间窗自动维护上下文,默认十分钟。 “它刚才说的那个东西再大一点”——这种指代,它也接得住。
然后,它顺便把隐私也顺手解决了: Ollama 模式下,整条链路不离开局域网。 你的对话,不出家门。
03
三、部署比你想的还懒
先说前提:你得有一台跑着 MiService 的机器——本机或同网段都行。 它是整条链路的收音口,小爱的对话流从它这里出来。
然后,四步:
第一步:克隆仓库。
code复制
CODE
git clone https://github.com/FelixQiu1/XiaoAi-LLM-Router.git
cd XiaoAi-LLM-Router
第二步:复制配置。
code复制
CODE
cp config.example.yaml config.yaml
cp .env.example .env
两个文件,双通道:YAML 管结构,环境变量管密钥。 敏感字段(小米密码、各家 API Key)建议走 .env,不落盘到 YAML 里。
第三步:填三个东西。
•
mi.username / mi.password——小米账号,和 MiService 同款;
•
mi.device_id——小爱音箱的设备号,在 MiService 控制台里查;
•
llm.default_provider + 对应那一段的 Key——DeepSeek、Ollama、OpenAI 三选一。
用 Ollama 的话,宿主机先跑一句:
code复制
CODE
docker run -d -p 11434:11434 ollama/ollama
容器里默认指向 host.docker.internal:11434,Linux 上 compose 文件已经帮你加好了 host-gateway,不用额外配。
第四步:启动。
code复制
CODE
docker compose up -d
docker compose logs -f router
日志里看到握手成功,就通了。

对着小爱说: “小爱同学,请深入思考:为什么月亮晚上才上班?”
它会接住这句话,然后用它自己的音色念给你听。
一条命令,三十秒。 老设备复活了。
04
四、它故意留了四个口子
作者把主程序写成"胶水层"——收音、模型、记忆、TTS 四个模块各自独立,每个都能单独换:
•
想加语音打断?改 TTS 那一段。
•
想让"深思"模式调日历查天气?在触发词上挂个钩子。
•
想多房间隔离?按 room 拆 session。
•
想边想边说?Ollama 流式输出加分句播报。
架构干净,是这类小项目最稀缺的品质。
05
五、真正值得抄的,是那个姿势
这个项目最值钱的不是代码,是一个判断:
旧硬件不用淘汰,缺的只是那条 AI 回路。
收音有现成的,播放有现成的,记忆有现成的—— 你只需要把"思考"这一环,接到任何大模型上。
这个思路可以复制到所有吃灰的设备上: 老音箱、老电视盒子、甚至那台只会响铃的老手机。
硬件是壳,模型是魂。 壳不用换,换个魂就行。

如果你家里也有一台被遗忘的小爱同学,把它翻出来试试。 三十秒部署,零硬件改造——让一台旧设备重新开口说话的感觉,比买新的有意思多了。
转发给那个"设备吃灰中"的朋友,他需要这条回路。
