一台Raspberry Pi 5,加上一个蓝牙OBD适配器、一块USB-C移动电源,就能让一辆2021年的奔驰E 300e插电混动车开口说话。这不是概念演示,CarWatch已经把这套系统跑通了,代码用Python写就,公开在GitHub上,没有订阅费,也不需要注册任何云端账号。
它的核心逻辑很直接:车不再只是被手机App远程控制的终端,而是变成一个能对话的智能体。就像家里的智能音箱、手腕上的手表一样,车也进入了一个"聊天室",在里面用自然语言跟主人交流。整套系统完全离线运行,不经过云端。
从OBD接口到本地大模型
CarWatch的硬件清单短得有点出人意料:Raspberry Pi 5、蓝牙ELM327适配器、USB-C移动电源,以及一个GGUF格式的本地AI模型。Raspberry Pi通过OBD端口接入车辆,实时读取发动机转速、冷却液温度、混动电池剩余电量、12V系统电压、燃油量、故障码等数据。
这些数据不会一股脑推送给用户。系统只在发生重要事件时才向家庭群聊发送通知,其余时间安静地待在后台。所有车辆信息首先写入本地磁盘的发件箱,即使离线也能在恢复连接后补发。
最直观的场景是问车一个问题。比如"黄色轮胎警告灯是什么意思?",车会从内置手册里生成答案,再用语音念出来。整个过程不需要联网,在车库或隧道这类信号死角里照样能用——语音应答、手册查阅、仪表盘显示、行程追踪,全部在Raspberry Pi上完成。
按需切换模型,安全优先
CarWatch允许用户根据问题类型切换不同的AI模型。问轮胎气压警告灯的含义,需要35B级别的大模型来理解上下文;问"现在车速多少",小型快速模型就够了。仪表盘上会显示每个模型在Raspberry Pi上的实际运行性能,一键即可切换。
切换过程考虑了行车安全:RAM装不下的模型会被直接拒绝并报错,切换不会中断正在生成的回答,启动失败则自动回滚到之前正常工作的模型。模型加载进度如实显示,不做任何粉饰。
这种设计背后是CarWatch的"诚实"原则,项目把它列为核心,具体有四条:只声称自己能感知到的事;只声称已验证的事;临时性信息要显著标注;失败要明确报告,不找借口。由此衍生出一条规则——车载模型只能引用传感器编号中能对应到最新实际读数的部分,从机制上防止车辆做出虚假报告。
不止于对话的用车场景
CarWatch覆盖的用例相当宽:
- 用语音指令免提查询车况和警告灯含义
- 一个账号管理多辆车,统一查看锁车状态、胎压、充电情况、续航里程
- 从智能手表锁车门、关车窗(解锁、开窗、启动发动机出于安全考虑未实现)
- 不用GPS,靠Wi-Fi上下文判断车辆到家或离家,联动智能家居设备
- 遇到施工路段时,车辆向现场智能体询问临时通行路径
- 智能手表录的语音备忘转成文字,再以文本和语音返回结果
- 日历智能体检测到长途驾驶,前一晚就推送胎压、续航、充电状态
- 掌握电价波动的智能体,在电价最低的时段给混动车充电
- 用通俗语言解释故障码含义
- 长途行驶时对比续航与路线,提前提示哪里需要充电或加油
这些功能里,多车管理和智能家居联动尤其能看出产品思路:车不是孤立的设备,而是家庭智能网络里的一个节点,只不过这个节点会自己判断什么时候该说话。
一个未解之谜
CarWatch把适配器能接收到的连续CAN广播帧列为"未解决的谜题"。这些帧无疑是车辆内部的遥测对话,信息量可能比轮询PID更丰富,但如何解码仍是开放课题。项目方正在寻求外部社区的协助。
这套系统基于一辆2021年奔驰E 300e插电混动车开发,但它指向的图景更大:车不再只是交通工具,而是一个能丰富车主生活的智能体。而实现这一切的门槛,目前看就是一块Raspberry Pi 5和一颗愿意动手的心。
热门跟贴