AndyShaman/BYDMate
AndyShaman/BYDMate has 500 GitHub stars and 94 forks. GitHot measured +26 in 7 days. Last checked 2026-11-11 00:28 UTC. Last push 2026-11-06.
BYD DiLink app (3.0/5.0/5.1, UI7): split screen 1/3+2/3, navigation on instrument cluster, Yandex Navigator on HUD, blind-spot cameras, Russian voice AI agent, real BMS consumption, trips/charges journal, automation, ABRP telemetry. EVs and DM-i/DM-o hybrids: Leopard 3 / Bao 3, Leopard 5, Sea Lion 07, Song, Song Pro DM-i, Atto 3.
实测星标增长
- 24小时
- 更新延迟
- 7天
- +26
- 15天
- 正在收集历史
- 1个月
- 正在收集历史
各周期内的星标净变化,周期相互重叠,并非每日新增。缺失的测量保持空白。星标代表关注度,不代表软件质量。
README.zh.md
原文
BYDMate
BYD DiLink 行程记录、能耗分析与一点魔法
真实能耗、GPS 路线、自动化、本地 AI 分析。
分屏 1/3 和 2/3,仪表盘导航投射,前挡风玻璃上的 Yandex 导航提示,转向灯盲区摄像头,俄语语音助手,ABRP 遥测。
已在 Leopard 3(方程豹豹3)上测试,支持 Sea Lion 07、Song、Atto 3、Seal、Han,以及 DM-i 和 DM-o 混动车型(Song Pro DM-i、Leopard 5、Leopard 8、Sealion 06)。适配 DiLink 3.0、4.0、5.0、5.1 及搭载新版 UI7 界面的固件(OTA V1.6)。
功能 | 截图 | 自动化 | 投射到仪表盘 | HUD | 分屏 | 语音AI助手 | 技术 | 诊断 | AI 洞察 | ABRP | 安装 | 编译 | 发布 | 赞助
为什么需要它
原车车载电脑低估能耗 10%-30%。BYDMate 直接从 BMS(energydata)读取数据,显示真实能耗。此外还提供原车系统没有的数据:停车耗电、电芯均衡、行程费用、AI 分析。
所有核心功能(行程、充电、自动化、本地洞察、离线语音助手)都在 DiLink 本地运行,不需要联网。云端功能默认关闭,只有手动输入密钥后才会启用。具体哪些数据在什么情况下会联网,见「数据与网络」一节。
更新内容
4.1.0 版本的主要更新。
模块故障码及其说明。 「技术」界面新增「诊断」卡片。「扫描」按钮读取车辆各个模块里的故障码,仅在 P 挡、仅在按下按钮时进行,不会改动车上的任何东西。故障码的写法与比亚迪手册和维修用诊断仪一致,按模块分组,每个码旁边附有来自比亚迪诊断手册的说明,不需要联网。故障码可以发送到你自己的 Telegram。同一张卡片里还有仪表警告和距下次保养的时间。已在 Leopard 3 上验证。详见下文「诊断:模块故障」一节。
「车辆状态」卡片。 空调和轮胎合并到一张卡片里。轮胎画在车辆示意图上,每个车轮有自己的胎压和胎温。如果车上有 PM2.5 传感器,这里还会显示车内和车外的空气质量。
自动化里的后排座椅加热。 左右分开设置,关、1 挡或 2 挡。只有车辆自己报告带有后排加热时,这些动作才会显示。
修复。 连续两次短途行程不再合并成一次。Han 2022 及类似车型的仪表盘上重新显示 Yandex 导航的转向箭头。在 DiLink 3 和 4 上按下音量滚轮也能暂停音乐。使用「按充电」电价时,当前行程按电池里电能的价格计算,而不是按家用电价。
完整的更新列表见 CHANGELOG。
功能
| 功能 | 说明 | |
|---|---|---|
| BMS | 真实能耗 | BMS(energydata)数据,而非车载电脑估算。以 25 公里滑动窗口显示趋势 |
| GPS | 行程追踪 | GPS 路线、距离、速度 |
| Charge | 充电记录 | 自动记录 AC/DC,周期与累计统计,支持手动添加和编辑 |
| AI | 洞察 | 驾驶分析:车机本地规则,不联网 |
| TRIP | TRIP 1/2 计数器 | 里程、能耗、时间和费用,从上次重置起计(与车辆自带的一致);长按重置,点按查看详情 |
| Bat | 电池健康和「技术」 | 卡片:SoH(Leopard 3、DiLink 3.0)、温度、12V、电芯均衡、绝缘电阻。点按打开「技术」界面,查看电池、电机、空调和轮胎的实时参数,包括前后功率分配百分比 |
| DTC | 模块故障 | 「技术」界面的「诊断」卡片:车辆各模块的故障码及来自比亚迪手册的说明、仪表警告、距下次保养的时间。仅在 P 挡、仅在按下按钮时扫描,不改动车上的任何东西 |
| DM-i | 混动车型 | 应用根据车辆自身的计数器自动识别混动车型。显示车辆提供的纯电续航和燃油续航,「燃油」卡片(油箱、续航、转速、发动机里程和纯电里程),按车辆计数器统计每次行程的油耗升数和燃油行驶公里数,在电价周期中填写每升油价。电动车不受任何影响 |
| Map | 路线地图 | 行程详情中的 osmdroid(OpenStreetMap)地图 |
| Rules | 自动化 | WHEN→THEN 规则:参数触发器 → 车辆控制命令 |
| Cluster | 投射到仪表盘 | 通过方向盘按键(默认右星键)把选定应用投射到仪表盘 |
| HUD | 前挡风玻璃投影 | 在原车抬头显示器上显示 Yandex 导航的转向动作、距离和限速标志 |
| Split | 分屏 | 同时显示两个应用:BYDMate 窗口 1/3 与 2/3 布局,或固件自带的分屏 |
| Cam | 盲区摄像头 | 根据打开的转向灯显示对应一侧摄像头画面:在仪表盘上或屏幕小窗中 |
| Voice | 语音助手 | 俄语离线助手:车机本地语音识别、AI 智能体(32 个工具)、神经网络语音合成 |
| Widget | 悬浮窗 | 7 个字段叠加在其他应用之上:SOC、续航、能耗+趋势、时间、车内温度、电池温度、12V;混动车型上用燃油续航和油箱油量代替能耗 |
| Auto | 自启动 | WorkManager,开机自动启动 |
| Backup | 保存配置 | 行程、充电记录、设置和密钥打包成一个压缩包保存到 Download,可分部分恢复,支持按计划自动保存并发送到你的 Telegram 机器人 |
| Share | 自动化分享 | 把规则保存为文件,不含电话号码、联系人和地点;导入他人规则前可先预览 |
| Aa | 文字大小 | 应用界面和语音助手窗口的文字可选标准、大或特大 |
截图
主页

SOC 圆环周围分布着四个悬浮窗风格的数值:上方是本次行程时长、里程表读数,以及车内和车外温度(共用一个位置;如果车辆不上报车外温度,这个位置就只显示车内温度,和以前一样);下方是当前行程里程、预估续航和当前行程能耗,带趋势箭头。颜色和趋势逻辑与悬浮窗完全一致,因此不管是在主页还是叠加在其他应用之上,信息读起来都一样。混动车型上,圆环下方显示车辆自己给出的纯电续航,没有我们自己的估算;再往下是「燃油」卡片:油箱油量和燃油续航,点按可以看到发动机转速、发动机里程和纯电里程、累计升数以及当前周期的每升油价。混动车型上周期能耗显示为按全部里程计的 L/100 和 kWh/100,与仪表盘一致。
圆环下方是:AI 洞察、电池健康小卡片(Leopard 3 和 DiLink 3.0 上的 SoH、温度、12V)、TRIP 1 和 TRIP 2 两个计数器、最近行程、周期筛选。每个计数器显示里程、以 kWh 计的能耗(含停车耗电)、行驶时间和从上次重置起的费用。长按重置计数器,点按查看详情。在计数器窗口里可以开启充电后自动重置:任意一次充电后、只在交流充电后、只在直流充电后,或只在充满到 100% 后。
AI 洞察

驾驶效率分析:能耗、趋势、电池、建议(车机本地计算)
技术

电池、电机、BMS 限值、电芯、电池历史、空调、轮胎、诊断。在首页点按电池卡片打开
行程

月份 > 日期 > 行程 手风琴式列表,带筛选和能耗颜色标识
列表上方的「温度」筛选按钮会打开「能耗与温度」界面:每趟超过 5 公里的行程对应一个点,按 5 度一档画出中位数连线,分别给出寒冷(低于 0°C)、过渡季(0-15°C)和温暖(高于 15°C)三段的中位数,并说明寒冷天气下能耗高出百分之多少。短于 5 公里的行程不计入图表,因为全被预热消耗了。至少需要 8 趟带温度数据的行程,且温度跨度不少于 15°C,否则界面会如实说明还差什么。
行程详情窗口能看到起点和终点的里程表读数、行驶时间、每 100 公里费用、电量变化百分比,以及起点和终点的车外温度。里程表数值只记录更新之后的行程。
混动车型的行程列表里多一列“升”。在“/100”列里,用了汽油的行程显示每 100 公里升数,带“升”标记且不着色;纯电行程仍显示带颜色的 kWh/100。升数取车辆燃油计数器在行程起止时刻的差值,步长 0.1 升;任一端缺少快照就显示短横线,不会把别人的油算到这趟行程上。行程详情窗口里,升数、发动机和纯电行驶公里数、燃油费用各占一行。
自动化

当→则规则,条件和动作编辑器,触发设置
设置

分区:语音智能体、小组件、显示、分屏、车辆与电池、集成、服务与数据、应用
分屏

两个面板,1/3 与 2/3,BYDMate 悬浮窗叠加在上层
自动化
自动化标签页可以创建规则,通过车辆系统接口直接控制车辆。
运作方式
当条件成立 → 则执行命令。
示例:
- SOC < 20% → 开启内循环
- 车速 > 0 → 关闭遮阳帘
- 车外温度 < 0 → 开启后视镜加热
能力
| 说明 | |
|---|---|
| 触发器 | SOC、车速、温度、转向灯、挡位、车门、车窗、天窗、后备箱、胎压、驾驶模式、地点地理围栏、时段、精确时间和带星期选择的时间范围、方向盘按键、点击小组件、语音短语、服务启动、网络恢复等。转向灯、挡位、车门、车窗、后备箱和盲区传感器是事件触发即时上报给应用的,不是靠轮询 |
| 命令 | 车窗(含驾驶位、乘客位单独控制)、空调、灯光、门锁、天窗、后视镜,直接通过车辆系统接口下发。有方向盘加热的车型还可以控制方向盘加热 |
| 17 种动作类型 | 车辆命令、通知、启动应用、拨打电话、Yandex 导航路线、打开 URL、Yandex Music、在 YouTube 播放视频、暂停、媒体音量、哨兵模式、Wi-Fi 热点、朗读文本、向智能体提问、打开 BYDMate 主页、投射到仪表盘、分屏(启动、关闭、切换)。车辆命令、哨兵模式和投射到仪表盘还带有「切换」选项 |
| 边沿触发 | 只在 false→true 的变化时触发一次(不会每 3 秒重复触发) |
| 冷却时间 | 两次触发之间的间隔,可自行设置 |
| 悬浮窗确认 | 动作执行前弹出「取消 / 执行」窗口,15 秒超时自动取消 |
| 安全保护 | 车速 > 120 km/h 时车窗不会打开,> 80 km/h 时天窗不会打开,> 30 km/h 时车门不会解锁,CAN/SHELL 命令已屏蔽 |
| 日志 | 所有触发记录及其结果 |
| 模板 | 6 个现成规则,方便快速上手 |
| 立即运行 | 在编辑器中手动运行规则,跳过触发器和冷却时间 |
「切换」是动作旁边的第三个选项,不是单独的一项。 命令列表中「开 / 关」这对旁边会有一行「后备箱:切换」,哨兵模式和投射到仪表盘在「开启」和「关闭」按钮之外也多了「切换」按钮。
支持切换的有:后备箱、前备箱、天窗、车门锁、双闪、空调、驾驶位和乘客位座椅加热与通风、方向盘加热、投射到仪表盘、哨兵模式。状态取自车辆本身:打开的会被关闭,关闭的会被打开。正在工作的座椅会被关闭,关闭的座椅会恢复到你上次设定的档位(默认第三档)。如果车辆不上报状态,动作会如实说明无法执行,不会猜测。
以前版本创建的规则照常运行,也照常可以打开编辑,不需要做任何改动。
命令和参数列表按分区折叠。 只展开当前已选中的分区,其余分区点击标题即可展开。
试运行。 在规则编辑器中,「试运行」按钮会像条件已满足一样立即执行所有动作,但不计入触发次数。如果没有较新的车速数据(服务运行中不超过 10 秒),开车窗、开天窗、开前备箱和解锁车门会被跳过。无法识别的命令也会被跳过,并给出说明。关闭编辑器会停止试运行。
列表或卡片。 标签页顶部的切换开关可以把规则显示为紧凑列表,或三列卡片,选择会被记住。每条规则都能看到触发次数和最近一次触发时间。
地点。 「地点」按钮从设置搬到了「自动化」标签页顶部,就在「日志」旁边。添加和修改地点可以直接在这里完成。
方向盘加热。 「方向盘加热」动作可以开启、关闭和切换加热。执行结果按车辆状态核实;没有方向盘加热的车型,动作会如实说明车上没有这个功能。有方向盘加热的车型上,这个命令暂时还没有得到验证,等待反馈。
逻辑
- AND:所有条件都要成立
- OR:满足其中一个条件即可
- 仅 P 挡:只有车辆挂在 P 挡时规则才会触发
每次上车时检查条件
规则只在应用运行期间、数值越过阈值的那一刻触发。如果上车时车内已经是 32 度,而阈值是 29,就没有发生「越过」,规则不会触发。想让每次上车都检查条件,就在原规则旁边再建一条规则:
- 第一个条件:「BYDMate 启动」。
- 第二个条件:**「车内温度」**大于 29。
- 选择**「全部条件」**。
- 动作与第一条规则相同。
不要选**「任一条件」**:那样规则每次启动都会触发,不管温度是多少。
分享自动化与导入
做好的规则可以分享给其他车主,别人的规则也可以添加到自己的应用里。
如何分享
- 在规则卡片或编辑器中点击**「分享」**。
- 保存前先看一下,窗口会显示这份文件里会包含什么内容。
- 点击**「继续」**。规则会保存到 Download 文件夹,文件名为
bydmate_rule_<名称>.json,弹出的提示会显示文件名,随后打开系统的「分享」窗口。
应用会从文件中删除:
- 电话号码和联系人姓名;
- 与你的地点的关联;
- 链接里的登录名和密码,以及看起来像密钥的链接参数(token、api_key 之类)。普通参数会保留。
文件中会保留:链接地址、通知和语音文本、向智能体提出的问题、路线点。发送前请自己检查一遍。
如何添加别人的规则
- 把
bydmate_rule_*.json文件放到 DiLink 的 Download 文件夹。 - 在「自动化」标签页顶部点击**「导入」**,从列表中选择文件。
- 在预览窗口中检查规则。这里显示的是真实参数:是「满足所有条件」还是「满足任一条件」、电话号码和是否自动拨打、链接地址、车辆命令、向智能体提出的问题文本、路线实际会去哪里,以及应用是否会自己点「出发」。
- 如果规则里的地点或联系人你没有,用**「选择地点」和「选择联系人」**按钮换成自己的。
- 点击**「添加」**。规则默认以关闭状态添加,勾选「立即启用」则会立刻启用。
带链接、且地址需要重新填写的规则只能以关闭状态添加。如果链接中删除了看起来像密钥的参数,窗口会提示你检查地址。嵌套层数过多或字符串过长的文件,应用不会接受。
投射到仪表盘
BYDMate 可以把选定的应用(默认是导航)投射到方向盘正前方的仪表盘上,这样地图和转向提示就在视线正中,中控屏可以空出来做别的事。
方向盘按键控制
- 短按所选按键:把导航投射到仪表盘。
- 再次短按:切回中控屏。
- 长按右星键:保留原车行为(车机菜单),BYDMate 不会拦截。
默认由右星键开启投射,按键也可以改分配,见下文「选择按键」。
开启
打开设置 → 显示,开启「投射到仪表盘」开关。应用会自动激活所需的服务(需要在安装时完成 ADB 激活,见「安装」一节),并自动把仪表盘切到投射模式:这由默认开启的「立即显示到仪表盘」开关负责。车机上不需要手动做任何设置。
之后短按所选的方向盘按键(默认右星键)即可把选定的应用投射到仪表盘,或切回中控屏。
如果关闭「立即显示到仪表盘」,就需要自己把仪表盘切到投射模式一次:点击车机主屏上的投射图标,然后在弹出的地图上点 IPC 按钮。如果投射之后 ADAS 或原车小组件从仪表盘消失且不会自己恢复(部分 DiLink 5.0 固件上,投射画面是显示在原车小地图内的),建议关闭这个开关:关闭后应用完全不碰仪表盘模式,盲区摄像头也是一样,画面会显示在小地图里。

投射模式:出厂与扩展
在设置 → 显示,投射开关旁边可以选择投射模式。共两种,区别在于应用是否会改动车辆的系统设置。
出厂(默认)。 应用不改动任何系统设置:投射通过虚拟显示器实现(画面镜像到仪表盘),窗口调节滑块也更精确。安装和卸载都不留痕迹。限制:投射期间语音助手和 HUD 看不到导航画面,助手只能从导航的通知里获取转向提示。
扩展。 导航以独立窗口直接运行在仪表盘显示器上,因此投射期间语音助手和 HUD 能看到路线。为此应用会开启系统的自由窗口设置(enable_freeform_support)。这个模式只能通过带说明的对话框开启,开启后需要重启一次车机(长按音量旋钮)。新模式在下次投射时生效。
部分固件(DiLink 4.0、Song Plus 2021 等)上,仪表盘屏幕对应用是不可见的,「出厂」模式在这些固件上无法工作:应用会自己通过内部通道找到仪表盘,用「扩展」模式投射导航,与你选择的模式无关。DiLink 4.0 上已经上车验证过。这个模式下「仪表盘窗口大小」设置里的「缩放」滑块不起作用。
如何恢复出厂设置。 把模式切回「出厂」:应用会立即把系统设置改回出厂值,重启 DiLink 后回滚彻底完成。之后系统状态和安装 BYDMate 之前完全一样。
同一处,模式选择下方还有「仪表盘全屏」开关。默认地图占据仪表盘上半部分,下方保留原车的速度和主要信息条。开启这个开关,地图会铺满整个仪表盘,不再显示这条信息条。只在新版界面固件上生效,其他固件上不会有变化;在下次投射时应用。
如果你在 3.7 之前的版本就用过投射,升级后原有行为会自动保留:模式仍然是「扩展」。从未开启过投射的用户,应用完全不会碰系统设置。
选择按键
默认由方向盘右星键开启投射。如果没有这个按键,或者想用别的按键更顺手,在开关下方点「更改」,然后按下方向盘上想用的按键,应用会记住它。系统能识别的任意方向盘按键都可以分配。系统按键(音量、电源等)、360 全景和仪表盘轮播键不能分配。
投射哪个应用
默认投射 Yandex 导航。开启开关下方有应用选择:可以选任意已安装的应用(其他导航、媒体播放器等)。新的选择在下次按键时生效。
窗口大小和位置
**设置 → 显示 → 「仪表盘窗口大小」**里有五个滑块。如果你的车上投射画面本来就铺满整个仪表盘(比如 Leopard 3),不需要调整任何东西:默认值就是原来的全屏效果。
- 宽度和高度(20%-100%):窗口占仪表盘的比例。缩小窗口能腾出空间,周围会透出原车仪表盘内容。
- 水平位置(0%-100%):窗口位置,0 为左边缘,50 为居中,100 为右边缘。只在宽度小于 100% 时才起作用。
- 垂直位置(0%-100%):垂直方向同理,0 为顶部,50 为居中,100 为底部。
- 缩放(50%-150%):投射应用界面的大小,数值越小文字越小,地图能显示的范围越大。
改动会立即生效,投射过程中直接拖动滑块,边拖边看仪表盘的效果。
带仪表盘迷你窗口的车型(Sea Lion 07 等)
部分车型的原车仪表盘不是全屏显示投射画面,而是显示在一个固定区域内(Sea Lion 07 上是右侧三分之一)。全屏窗口在这些车型上会被裁切。解决办法:用上面的滑块缩小窗口,并把它移动到可见区域内。
Sea Lion 07 车主验证过的数值:宽度 32%,高度 92%,水平位置 100%,垂直位置 6%,缩放 90%。


这类车型上无法让窗口铺满整个仪表盘:显示区域由仪表盘固件本身决定,无法控制。
实现方式
投射按上述两种模式之一运行。「出厂」模式下,BYDMate 创建一个虚拟显示器,把选定的应用镜像过去,不改动任何系统设置。「扩展」模式下,应用以独立窗口直接运行在仪表盘显示器上,因此投射期间语音助手和 HUD 能看到路线。为了拦截方向盘按键,应用会开启自己的无障碍服务(accessibility)。这个服务只在开关开启时工作,只用于所选的按键。不会改动固件或车辆本身,一切都是可逆的。
HUD
如果车辆配有原车抬头显示器,BYDMate 会把 Yandex 导航的提示投射到前挡风玻璃上:转向图标、到转向点的距离、道路名称和到达时间。限速标志由单独的开关控制,以数字形式发送。当导航提示前方有测速摄像头时,转向箭头会换成摄像头图标和到它的距离。即使导航被最小化或投射到仪表盘,引导也会继续;Yandex 地图和 Yandex 导航一样,都可以作为提示来源。
在设置 → 显示的「HUD(抬头显示器)」分区中开启:「导航投射到 HUD」开关,以及单独的「箭头下方的限速标志」开关。在那里还可以选择在玻璃上显示的方式:方式 1 是默认,方式 2 和 3 用于方式 1 下玻璃上什么都没有的车辆。提示走 HUD 自身的原车通道,所以需要配有抬头显示器的车型。如果车上没有这个通道,应用会在设置里如实说明,并且不会启用这个功能。
应用会改动车辆的什么。 方式 1 不改动任何设置:提示走 HUD 自身的通道。在方式 2 和 3 下,只要「导航投射到 HUD」开着,并且导航正在引导路线,BYDMate 就会在车辆上打开导航模式,并把箭头、距离和道路名称写入仪表盘上的导航卡片。方式 3 还会把到路线终点的剩余时间和距离以及到达时间写到那里。路线结束、方式被更换或关闭开关后,一切都会恢复原样。开关关闭时,应用不会改动车辆的任何设置。
如果挡风玻璃上什么都没显示。 打开设置 → 服务与数据的「数据」分区,点击「HUD 检测」这一行旁边的**「开始」**。车辆需要静止,导航里也不能有正在进行的路线。检测大约持续两分钟,会依次在玻璃上显示数字 111、222、333 和 444,每个数字用各自的方式。最后它会问你看到了哪个数字,并自动设置合适的方式。如果玻璃上什么都没显示,请用日志录制按钮录一份日志,连同车型一起发到 GitHub 的 issue 里。
需要哪个导航。 转向箭头由 Yandex Navigator 31.0.2 及更新版本提供。旧版本(24.5.1)只给出距离和街道名,没有箭头。Yandex Maps 的箭头时有时无,因此 HUD 和仪表盘请使用 Navigator。
盲区摄像头
打开转向灯后,BYDMate 会自动显示侧方摄像头画面:左转向灯把左侧摄像头显示在仪表盘上,右转向灯在主屏幕上显示一个小窗。如果传感器检测到侧后方有车辆,窗口会以橙色边框高亮。

在设置 → 显示的「盲区」分区中开启(默认关闭)。同一处还可以设置低于该速度就不显示摄像头的速度阈值、小窗宽度及其位置:「调整位置」按钮会显示一个空窗口,用手指把它拖到摄像头画面应该出现的位置。如果仪表盘上的左侧摄像头影响观看,可以在同一处开启「两侧摄像头都显示在主屏」:两个画面都会显示在平板上,仪表盘不受影响。左侧小窗默认与右侧镜像对称,开关下方的「左侧摄像头位置」按钮可以给它单独定位。「竖向摄像头窗口」开关会把小窗变成竖向,并把画面旋转 90 度,像镜子一样:如果开启后画面方向不对,请在 issue 里反馈。需要配有全景影像的车型。部分 DiLink 4.0 车型的固件不允许应用访问摄像头,这些车上该功能无法使用。
语音AI助手
BYDMate 内置一个功能完整的俄语语音助手。语音识别直接在车机本地完成,无需联网:GigaAM v3 神经网络负责俄语听写和理解。简单指令由本地解析立即执行,其余全部交给 AI 智能体处理:一个带有 32 个工具的语言模型,能自己读取车辆数据、控制车身功能、规划路线、运行场景并用语音回答。
为什么只支持俄语
BYD 原车语音助手已经原生支持英语和中文,再做一个英语助手没有意义。BYDMate 补上的是车机里完全没有的语言:俄语。因此语音识别、指令解析和语音合成都是专门为俄语打造的,暂不计划推出英语版本的智能体。
如何开启
- 设置 → 语音智能体:开启**「语音AI助手」**开关。*应该发生什么:*下方会出现名字、性格和性别的选项。
- 设置语言模型密钥:设置 → 集成 → AI 连接。推荐用 OpenRouter(在 openrouter.ai 注册,付费,每次提问只要几分钱的零头)配合快速模型,比如 Gemini Flash。也有免费方案 z.ai,模型 glm-4.7-flash,但响应明显更慢。第三种方式:自建 OpenAI 兼容服务器。*应该发生什么:*连接旁边会出现密钥已设置的标记。也可以同时设置两个连接:主连接出问题时,智能体会自动切换到第二个。
- 回到语音智能体的「智能体」分区,点击**「测试模型」**。应该发生什么:按钮下方会出现模型名称、响应时间和智能体的一句简短回复。如果按钮是灰色的,说明密钥没有保存,去「集成」里检查。旁边的「智能体聊天(调试)」**按钮可以在用麦克风之前先用文字测试回复。
- 在**「语音识别」分区点击「下载(226 MB)」,建议用 Wi-Fi 下载。应该发生什么:会显示下载进度百分比,完成后文字会变成「模型已就绪」。
- 在**「按键与麦克风」分区开启「语音指令」开关,并允许使用麦克风。应该发生什么:下方会显示当前的方向盘按键。Leopard 3 上已经预先分配好了,其他车型点击「分配按键」,然后按一下方向盘上的按键。
- 按下方向盘按键,说「Сколько заряда?」(还剩多少电?)。*应该发生什么:*出现「正在聆听」的悬浮提示,说完话后有一声短提示音,一两秒后收到回答。
- 如果需要语音回复:在**「智能体回复」**分区开启开关并下载语音(普通语音 18-21 MB,或者更自然的 Марк / Софья,两个加起来 145 MB)。*应该发生什么:*智能体会开始用语音回答,不下载语音的话,回复只会以文字显示在屏幕上。

如何对话
- 按下方向盘上的语音按键。Leopard 3 开箱即用,其他车型可以在设置里训练任意一个按键(拦截按键需要无障碍服务,会自动开启)。
- 屏幕上会出现「正在聆听」的悬浮提示。可以把它拖到屏幕任意位置,位置会被记住。悬浮提示里能看到最近的对话内容:「你:」和「智能体:」。
- 用日常语言说话就行。会话是连续的:智能体回答完可以直接接着说,不用再按一次按键。
- 静默 30 秒后会话自动结束,并有一声单独的提示音。对话时长没有限制:只要在对话,智能体就会一直听。短促的提示音用来确认收到命令,或者提示出错。
- 喊名字打断。 如果在设置里给智能体设置了名字(「智能体名字」字段),回答过程中喊一声这个名字,智能体就会停下来重新聆听。句子开头的名字会被忽略(«Штурман, открой окна»会被理解成«открой окна»,也就是“打开车窗”)。注意:这不是 Алиса 那种“唤醒词”,不按按键的话智能体不会监听麦克风。默认名字为空,喊名字打断功能不生效。
智能体能做什么
智能体拥有 32 个工具。以下是一些例句:
车辆和空调
- «Сколько заряда?»(还剩多少电?)、«Какая температура за бортом?»(车外温度多少?)、«Какой запас хода?»(续航还有多少?)(车辆实时状态)
- «Открой окна»(打开车窗)、«Включи подогрев сиденья»(打开座椅加热)、«Поставь климат на 22»(把空调设到 22 度)(完整命令目录共 110 条,见下文)
- «Сделай музыку громче»(把音乐调大声)、«Потише»(小声一点)(媒体音量)
行程、充电、统计
- «Покажи поездки за неделю»(显示本周的行程)、«Сколько я проехал за месяц?»(这个月开了多少公里?)
- «Когда я последний раз заряжался?»(我上次充电是什么时候?)
- «Запиши зарядку на 30 киловатт-часов за 200 рублей»(记一笔充电,30 度电,200 卢布)(手动写入充电记录)
- «Какой у меня средний расход?»(我的平均能耗是多少?)
导航和地点
- «Поехали домой»(回家)、«Поехали на работу»(去公司)、«Поехали на дачу»(去别墅)(已保存的地点)。说「поехали」(出发)时智能体会自己在 Yandex 导航里点「出发」,说«построй маршрут домой»(规划回家的路线)只会规划路线,不会自动出发
- 分屏开启时,智能体会先关闭分屏,规划好路线后再把面板恢复原位:不这样做的话固件会重建导航应用,路线就丢了。这需要开启 BYDMate 的无障碍服务
- 加一句「в картах」(在地图里):比如«поехали домой в картах»(在地图里回家)、«найди заправку в яндекс картах»(在 Yandex 地图里找加油站),路线、搜索和显示位置就会走 Yandex 地图;不加这几个字,路线会走「导航路线使用的应用」设置里选定的导航应用(设置 → 语音智能体 → 智能体),默认是 Yandex 导航,也可以选 2GIS、Yandex 地图或 Waze
- «Найди зарядки рядом»(找附近的充电站)
- «Хватит ли заряда до Казани?»(到喀山的电量够不够?)、«Сколько ехать до аэропорта?»(到机场要开多久?)
- «Запомни это место как дача»(把这个地方记为“别墅”)、«Какие места сохранены?»(都保存了哪些地点?)
- «Выведи навигацию на приборку»(把导航投射到仪表盘)、«Убери с приборки»(从仪表盘撤下来)(Yandex 导航的投射)
媒体和应用
- «Включи мою волну»(播放我的私人电台)、«Включи джаз»(播放爵士乐)(Yandex Music)
- «Включи на ютубе лекции по истории»(在 YouTube 上播放历史讲座)
- «Открой навигатор»(打开导航)、«Открой камеры»(打开摄像头)、«Открой регистратор»(打开行车记录仪)、«Открой браузер»(打开浏览器),以及其他用俄语名字打开的应用
自动化
- «Запусти сценарий домой»(运行“回家”场景)、«Какие у меня сценарии?»(我都有哪些场景?)
- «Выключи автоматизацию прогрева»(关闭预热自动化)
- «Создай сценарий: когда приезжаю домой, открывай окна»(创建一个场景:到家时打开车窗)(智能体会自己从触发条件和动作拼出规则)
联网功能
- «Какая погода?»(现在天气怎么样?)、«Какая погода в Москве завтра?»(明天莫斯科天气怎么样?)
- «Поищи в интернете, когда выйдет обновление DiLink»(帮我搜一下 DiLink 什么时候更新)
车辆控制:110 条命令目录
| 分组 | 可用内容 |
|---|---|
| 车窗 | 全部、前排、后排、驾驶位、乘客位、左后和右后;打开、关闭、开一半、通风缝隙,可整组操作也可单独操作每扇窗 |
| 空调 | 开启、关闭、温度 16 到 33 度 |
| 座椅加热 | 驾驶位和乘客位,1-5 档和关闭 |
| 座椅通风 | 驾驶位和乘客位,1-5 档和关闭 |
| 后视镜 | 加热开/关 |
| 方向盘 | 加热开/关,仅限有方向盘加热的车型 |
| 灯光 | 车内灯、氛围灯等其他模式(6 条命令) |
| 门锁 | 上锁、解锁 |
| 天窗和遮阳帘 | 打开、关闭、中间位置 |
| 后备箱 | 打开、关闭 |
| 前备箱 | 打开、关闭 |
| 车载冰箱 | 制冷 -6 到 +6 度,制热 35 到 50 度,关闭 |
| 双闪 | 开启、关闭 |
| 驾驶模式 | ECO、普通、运动;雪地、沙地、泥地、山地、岩石和智能模式仅在 15 km/h 以下 |
| HUD | 挡风玻璃投影:开启、关闭 |
| 电池预热 | 开启、关闭 |
安全限制:车速超过 120 km/h 时车窗打开会被阻止,超过 80 km/h 天窗打开会被阻止,超过 30 km/h 车门解锁会被阻止;前备箱只有在车辆静止时才能打开。
无需智能体、无需联网的快捷命令
常用命令无需语言模型、无需联网即可立即执行。为此应用内置了一份固定的俄语短语列表:车窗和天窗、座椅加热和通风、方向盘加热、后视镜、空调、风扇、音量、门锁、后备箱和灯光。
工作原理:
- 只有完整地说出列表里的原话,才会离线执行。换一种说法会交给智能体处理。
- 客气话不影响识别:«пожалуйста»(请)、«можешь»(能不能)、«слушай»(喂)、«спасибо»(谢谢)会被直接忽略。
- 「A 和 B」会同时执行两个命令,只要两个都在列表里:比如«открой окно водителя и закрой люк»(打开驾驶位车窗并关闭天窗)。
- 车窗和天窗可以按比例打开:«наполовину»(一半)、«на 50 процентов»(百分之五十)、«чуть-чуть»(一点点)、«полностью»(全部)、«на треть»(三分之一)。百分比会向下取整到最接近的支持档位,车窗永远不会比说出的比例开得更大。
- 其余情况都会交给云端 AI 智能体处理(如果已开启)。没有开启智能体时,这类短语会得到「没听懂」的回复,列表里的短语依然照常执行。
以下是列表里的一些例句,完整列表和各种说法见 docs/VOICE_COMMANDS.md。
| 短语 | 会发生什么 |
|---|---|
| «Открой окна»(打开车窗) | 所有车窗完全打开 |
| «Открой окно на 50 процентов»(把车窗打开百分之五十) | 驾驶位车窗打开一半 |
| «Приоткрой окно водителя»(把驾驶位车窗开条缝) | 驾驶位车窗开到通风缝隙 |
| «Режим проветривания»(通风模式) | 所有车窗开到通风缝隙,天窗微微抬起 |
| «Выключи режим проветривания»(关闭通风模式) | 车窗和天窗关闭 |
| «Открой люк наполовину»(把天窗打开一半) | 天窗打开一半 |
| «Включи подогрев сиденья пассажира на второй уровень»(把乘客座椅加热开到二档) | 乘客座椅加热,二档 |
| «Включи подогрев руля»(打开方向盘加热) | 方向盘加热 |
| «Поставь температуру 22»(把温度设到 22 度) | 空调调到 22 度 |
| «Громкость 20»(音量 20) | 音乐音量调到 20 |
| «Включи Яндекс Музыку», «Яндекс Музыка»(打开 Yandex 音乐) | 在 Yandex 音乐里播放「我的浪潮」 |
| «Запри машину»(锁车) | 车门上锁 |
英语的离线命令已经取消,列表只支持俄语。应用界面语言不影响这一点:不管应用是什么语言,离线命令和智能体都照常工作。
密钥:哪些要填,哪些可以不填
| 密钥 | 是否必需 | 作用 |
|---|---|---|
| OpenRouter | 只需要任意一个 LLM 密钥;追求速度推荐用 OpenRouter | 智能体的大脑。快速模型(比如 Gemini Flash)几乎瞬间响应,价格是每次请求几分钱的零头 |
| z.ai | 免费替代方案 | 智能体的大脑,模型 glm-4.7-flash,免费,但响应明显更慢 |
| 自建服务器 | 替代方案 | 任意 OpenAI 兼容接口:URL、密钥、模型 |
| Exa | 否 | 增强版网络搜索。不填的话,「帮我搜一下」会走 LLM 供应商自带的搜索 |
| MiniMax | 否 | 仅用于 MiniMax 在线语音,不影响智能体本身的运行 |
所有密钥都在应用里填写,只保存在本地,代码和代码仓库里不含任何密钥。
语音
离线语音(无需联网,逐个下载):
| 语音 | 性别 | 大小 | 音质 |
|---|---|---|---|
| Дмитрий(默认) | 男声 | 21 MB | 普通 |
| Алёна | 女声 | 18 MB | 普通 |
| Руслан | 男声 | 21 MB | 普通 |
| Ирина | 女声 | 21 MB | 普通 |
| Марк | 男声 | 145 MB | 高品质 |
| Софья | 女声 | 145 MB | 高品质 |
Марк 和 Софья(Supertonic 引擎)听起来比普通语音自然得多,但体积更大,两个共用一个安装包:下载了其中一个,就不用再单独下载另一个。语速和语调的生动程度可以用滑块调整,旁边有「试听示例」按钮。
在线语音(可选,听起来更自然):Gemini 和 OpenAI 通过 OpenRouter 密钥使用,MiniMax 用自己的密钥(三种接入方式:官方 API、fal.run、replicate)。没有离线兜底:如果在线语音无响应或失败,这句话仍会以文字显示在语音悬浮球里,但不会读出来。
关于音量:智能体的语音回答走 BYD 的语音通道(和原车提示音一样),音量由系统的语音音量设置控制。«сделай громче»(调大声)这句命令调的是音乐音量,不是智能体的语音音量。如果觉得智能体声音太小或太大,请调整系统的语音音量。
响应速度取决于什么
智能体分三步工作,每一步都会累加延迟。
- 语音转文字。 完全在设备本地完成,不联网。速度取决于车机的处理器。
- 理解语句。 内置列表里的短语几乎瞬间执行。其余的都要交给语言模型:模型思考的时间加上到服务商的网络延迟,这是主要的延迟来源。通过 OpenRouter 的 Gemini Flash 响应只要零点几秒,免费的 glm-4.7-flash 明显更慢。
- 合成语音回答。 离线语音轻量快速,但也需要一点时间。在线语音更慢,同样受网络延迟影响。
想要最快的响应速度:关闭「智能体回复」开关。这样就没有语音播报,回复只以文字显示在屏幕上,只运行前两步。快捷命令本身完全不需要联网。
智能体的性格
设置里可以选择三种回答风格之一(默认「领航员」),以及智能体的性别(男或女),这会影响措辞和语音回答的方式。喊名字打断用的名字也是在这里设置的。
隐私
- 麦克风录音不会离开车辆:语音识别完全离线完成。
- 只有文字会发送到云端(LLM 服务商):你说的话,以及智能体用工具查到的、用来回答的数据。
- 语音日志(最近 50 次识别及其结果,用于自我诊断)只保存在车机本地,重启后依然保留。它会出现在日志录制文件里:车机听到了什么、变成了什么命令、为什么被拒绝。日志界面在:设置 → 语音智能体 → 「语音日志」,可以看到每句话是如何被识别的、发去了哪里、结果如何。
- 想在不用麦克风的情况下测试智能体,可以用文字聊天(设置里的调试界面)。
关闭 BYD 原车语音助手
「语音智能体」分区底部有一个开关,可以关闭 BYD 原车语音助手,避免它和 BYDMate 智能体同时被唤醒。完全可逆,开启和关闭都需要重启车辆后生效。默认关闭。
原车助手是在车辆系统里被关闭的,所以卸载 BYDMate 之前请先关闭这个开关,否则原车助手会一直保持关闭状态。如果 BYDMate 已经卸载了,想恢复原车助手:重新安装 BYDMate,关闭这个开关,然后重启车机。
系统要求
- 存储空间:语音识别模型 226 MB,加上语音包(普通语音 18-21 MB,或者高品质的 Марк/Софья,两个共 145 MB)。总共大约 245 到 370 MB。
- 联网:只有 AI 智能体(语言模型)、天气、搜索和在线语音需要联网。语音识别、快捷命令和离线语音都不需要联网。
- 权限:麦克风(开启功能时会请求)和方向盘按键所需的无障碍服务(自动开启)。
- 已在 Leopard 3(DiLink 5.0)上验证。语音方向盘按键出厂已针对 Leopard 3 配置好,其他车型请在设置里训练自己的按键。
记住车主的信息
告诉智能体你的名字或者平时的习惯偏好,它会在之后的对话中记住。说«Забудь …»(忘记……)可以删掉某一条记忆。记忆列表和「全部忘记」按钮在:设置 → 语音智能体 → 智能体。这些信息只保存在车机本地,只会随请求发送给你选择的语言模型。
悬浮窗
一个紧凑的 260×108 dp 悬浮窗,可以叠加显示在其他应用之上:在地图上、媒体播放器里、BYD 自带应用中都能看到。

显示内容
三行共七个字段。配色:图标为灰色,数值为白色。边框和 SOC% 会以状态颜色高亮(取 SOC 和 12V 中较差的那个)。
顶行(小字体,13sp):
- ⏱ 本次行程时长:
N 分钟或X 小时 Y 分钟(例如47 分钟、1 小时 12 分钟)。起点是点火开启的时刻,终点是熄火。车辆开着但停下不动的情况(开空调等人、乘客下车买水、等红灯)都算在行程里:只要电气系统还在工作,计时器就不会重置 - 🚗 车内温度:°C
中间行(大字体,关键数值):
- SOC %(18sp 加粗,彩色):动力电池的电量。绿色 > 50%,黄色 20-50%,红色 < 20%
- ~N km(28sp 白色):预估续航,计算方式是
SOC × 电池容量 ÷ 基准能耗 × 100。波浪号提醒这是估算值,不是车辆自带电脑的读数。基准能耗的具体算法见下方「续航」小节 - 混动车型上:
~N km是车辆自己给出的纯电续航,不是我们的估算;原来显示能耗的位置改为车辆给出的燃油续航,油箱油量显示在上排。 - X.X ↓(18sp,按趋势变色):当前行程能耗,单位 kWh/100km,带趋势箭头(见下文)
底行(小字体,13sp):
- 🔋 电池温度:°C
- ⚡ 12V:车载电网电压,单位 V。正常范围 12.5-14.7 V,低于 12.0 V 为黄色,低于 11.7 V 为红色
能耗和趋势箭头(右侧区块)
右侧的数字是当前行程能耗,单位 kWh/100km。计算方式是点火以来消耗的电量,除以点火以来行驶的公里数。随着行程推进,这个数字会逐渐收敛到最终写入行程历史的数值:停车那一刻悬浮窗上显示的数字,就是最终存进行程卡片的数值。
最初的 2 公里,悬浮窗会从上一趟行程的平均能耗平滑过渡到当前行程的能耗:300 米以内显示上一趟的数值,300 米到 2 公里之间按比例混合当前数值,2 公里之后只显示当前能耗。这样可以避免冷启动和加速时出现的 50-60 kWh/100km 这种吓人的尖峰:行程还短的时候,主要参考上一趟已经稳定下来的平均能耗,只有等行驶距离足够有代表性了,数字才会切换到本次行程真实的能耗。
停车时(点火熄灭)显示的是上一趟已完成行程的平均能耗,也就是那趟行程结束前最后显示的数值。
续航 ~N km 由三部分加权得出:50% 权重来自最近一趟完整行程,30% 来自上上一趟,20% 来自再往前一趟(3 公里以内的短途行程不计入,因为不具代表性)。跑长途的时候,会再加入当前行程最近 10 公里的能耗:这部分的权重从最初 3 公里时的零,逐渐涨到 25 公里时的一半。这样预测能很快跟上驾驶风格的变化(市区尾段接上高速、下高速回到市区),又不会因为短途行程或开着空调的停车而乱跳。
这是自动计算的结果。如果不适合你,在**设置 → 车辆与电池 → 「续航里程计算方式」**里有「手动」方法:自己填写一张 5 个点的表格,电池温度从 +20 到 -20°C 及对应的能耗,还可以选填 100% 电量时的续航里程。
趋势箭头在行驶 2 公里后出现,把 25 公里滑动平均值和你平时的驾驶风格(最近 10 趟行程的平均值)做比较:
- ↓ 绿色:比平时更省电
- → 白色(直线箭头):在平时的范围内
- ↑ 黄色:能耗比平时高
箭头不会因为每次红灯停车就乱跳,有一定的惯性:能耗要明显偏离平时水平,并且至少保持一分钟,箭头才会变色。
这个数字里“一趟行程”的定义:一次完整的点火周期,从打火到熄火。行程中途开着空调停车会被自然计入:多耗的 kWh 会算进分母里。短暂的中断(红灯、重新连接)不会把一趟行程拆成两趟。如果 DiLink 在高速上把应用杀掉了,重启后会从真实的点火时刻继续计时,而不是从零开始。
操作
- 单击:打开 BYDMate
- 长按(1.5 秒):隐藏,直到下次打开 BYDMate 才会重新出现
- 拖到垃圾桶:完全关闭
- 开关、透明度、重置位置:在设置 → 小组件中
分屏
同时在屏幕上显示两个应用:一个占三分之二,另一个占三分之一。典型搭配是导航占宽的一侧,音乐或聊天应用占窄的一侧。两侧可以互换,应用也能随时更换,选定的组合会被记住。

开启
- 打开设置 → 分屏,开启「分屏 1/3 + 2/3」开关。
- 如果开关下方出现了需要重启的提示,重启一次车机即可(长按音量旋钮)。如果你已经在用「扩展」投射模式,就不需要重启:所需的功能已经在工作了。
功能关闭时,应用不会碰车辆的任何系统设置。关闭开关会把设置恢复成出厂值,除非「扩展」投射模式也需要用到这个窗口模式:这种情况下,要把它也关闭,设置才会恢复出厂值。

分屏方式
在设置里,开关下方可以选择用什么方式分屏:「BYDMate 窗口」(默认)或「原生分屏」。
- BYDMate 窗口:就是下文介绍的 1/3 和 2/3 布局,带控制胶囊按钮。
- 原生分屏:由车辆固件自己完成分屏。在 BYDMate 窗口不可用的地方(DiLink 5.1)这个方式也能用。具体效果取决于固件:支持三等分的固件会打开 1/3 和 2/3 两个面板,其余固件则把屏幕对半分,第二个应用通过系统窗口选择。
在搭载新版 UI7 界面的固件上不会出现分屏方式的选择:分屏由车辆自己完成,1/3 和 2/3 面板都是原生的,开启时也不需要重启车机。
启动方式
共三种方法。设置里分区标题旁边的「?」图标会在车上随时提醒你这些方法。
- 从悬浮窗启动(最方便)。在设置的「点击小组件」分区开启「点击区域」,把「左侧点击操作」设为「启动分屏」。之后点击悬浮窗左侧三分之一区域就会打开分屏,再点一次就会关闭。
- 从自动化启动。 规则里有三个动作:「分屏」「关闭分屏」和「切换分屏」。比如可以在导航启动时自动打开分屏。
- 用语音启动。 对智能体说「开启分屏」。
首次启动和选择应用
首次启动时,应用会询问要显示什么:先选宽的一侧(2/3)的应用,再选窄的一侧(1/3)的应用。这个组合会被记住,下次启动直接打开。之后可以通过胶囊按钮或在设置里更换应用,设置里还有「重置上次应用对」。
控制胶囊
分屏激活时,屏幕底部会有一个小小的胶囊按钮。点击它会打开菜单:交换两侧位置、交换应用、给左侧或右侧面板换一个应用、退出到普通全屏。分屏关闭后,胶囊会自动消失。
和其他功能如何共存
- 如果有什么全屏内容展开(倒车影像、摄像头、视频),分屏会自动关闭。用平常的方式就能恢复:点一下悬浮窗,或者用语音。
- 从 BYDMate 里按「返回」键会回到分屏。
- 如果启动了 DiLink 自带的分屏,BYDMate 的分屏会自动干净退出,两种分屏不能同时工作。
充电记录
充电记录标签页自动记录每一次真实的电量补充:按月列出充电记录、周期和累计统计、AC 和 DC 筛选。并不是每次插上充电枪都会生成记录:只有 SoC 真正上升了才会创建记录。如果有人插上枪一分钟就拔了,日志里不会留下任何东西。
什么算一次充电
只要充电期间电池容量或 SoC 中有一项确实上升了,就会写入记录。BYDMate 依次尝试三种数据来源,取第一个可用的值:
- 容量增量(kWh),如果车辆系统上报了更新后的数值。
- SoC 增量(本次充电期间),按当前电池容量换算成 kWh。
- 粗略估算:如果前两种都没有数据,就按 SoC 差值相对标称总容量估算。
如果 BYDMate 在充电时正在运行,记录会立即出现。如果插枪发生在应用启动之前,或者车辆进入了深度睡眠,BYDMate 会在下次启动时发现 SoC 比充电前跳高了,然后补上这条记录。所以即使是在车库里离线充电,也会被记进日志。
如何判断 AC 还是 DC
充电类型由两个信号按优先级决定:
- 车辆系统上报的枪状态:gun-state 2 = AC,3 或 4 = DC。部分 BYD 车型不一定总能上报这个值,这时就用下一条规则。
- 本次充电的平均功率:大于 15 kW 判定为 DC,否则为 AC。AC 充电物理上不会超过 11 kW,DC 充电桩最低也有 22 kW(CCS 慢充),所以 15 kW 这个阈值能可靠地区分两种模式。
充电记录标签页有三个筛选:「全部」「AC」「DC」。
手动添加和编辑
如果记录没有自动出现,或者数字看起来不对:
- 标签页顶部的「+ 充电」按钮:手动添加一次充电,填写日期、时长、kWh、电价。
- 长按一条记录:会打开「编辑」/「删除」菜单。编辑模式下可以修改已保存充电记录的任意字段。
这个功能正在积极测试中。在 Leopard 3 上运行稳定。在其他 BYD 车型上,自动判断可能不准:比如车辆系统没有上报功率或枪的类型,这时 AC 和 DC 可能会判断错误。遇到这种情况请手动修改记录,方便的话也请把日志发到 Issues。
电价与费用
每一次充电和每一趟行程的费用,都是 BYDMate 自己算出来的。要让数字准确,需要两样东西:你的每度电价格,以及这个价格从哪天开始生效。在混动车型上还有每升油价。
在哪里设置电价
设置 → 车辆与电池 → 「电价与时段」 → 「打开」。会打开一个单独的窗口,里面是时段列表,不会占用设置本身的空间。
「时段」的意思是“这个价格从哪天开始生效”。一个时段包含:生效日期、家充价格(AC)、快充价格(DC)、混动车型上的每升油价、损耗,以及行程的计价规则。时段没有结束日期:它一直生效到下一个时段开始,如果没有下一个时段,就一直生效到今天。最早的那个时段会覆盖它之前的全部历史,所以老行程也不会没有价格。
第一次设置电价(或者从旧版本升级上来)时,BYDMate 会自动建一个“从历史最早开始”的时段,用你当前填的数字。在你添加第二个时段之前,一切都和以前一样。
如何补录之前涨价的电价
9 月 1 日就涨价了,但你 16 号才想起来?没关系。
- 打开「电价与时段」,点击**「添加时段」**。
- 在**「生效日期」**里选 9 月 1 日。
- 填入新的价格并保存。
9 月 1 日之后发生的一切都会自动重新计算:充电和行程都会。8 月的记录仍按旧价格。没有单独的“重新计算”按钮,也不需要:保存时段时会自动触发重算。
汽油也是同样的道理。以新价格加了油:从加油那天起添加一个时段,填入每升油价。这个日期之前的行程仍按原价格,从这天起的行程按新价格计算。历史不会被改写。
修改也是同样的道理:如果改动一个已有时段里的价格,从这个时段的生效日期到历史末尾的记录都会重新计算。
充电损耗
车里充进去 50 kWh,家里电表却走了 55 kWh。差的这部分被充电器和发热吃掉了:一部分电根本没到电池里。你付的是 55 度的钱,BYDMate 只看得到 50 度,如果不做修正,算出来的费用就会偏低。
每个时段都有两个字段:AC 损耗和DC 损耗。默认家充(AC)10%,快充(DC)5%,这是 ADAC 实测和 DLR 研究里的典型数值:通过车载充电器的慢充损耗大约 10%,直流快充损耗更小,大约 5%,因为电流是直接进电池的,损耗自然更少。
费用是这样算的:充进电池的电量除以(1 − 损耗),再乘以每度电的价格。损耗 10% 的情况下,50 kWh 相当于付费 55.6 kWh。
如何按自己的实际情况校准。 记下充电前后家里电表的读数,打开这次充电的卡片(长按记录 → 「编辑」),把差值填进**「电表」**字段。这次充电 BYDMate 就会用你填的数字,而不是估算值。攒够几次这样的记录后,电价窗口会出现一行「你的实测损耗:AC …%,DC …%」,也就是你几次实测的平均值。把它填进损耗字段,之后所有充电都会按你的真实数字计算。
行程费用是怎么算的
行程没有发票,它的电价只能从别处推算。每个时段可以选择四条规则中的一条:
| 规则 | 计算方式 | 适合谁 |
|---|---|---|
| 家充 | 按时段的家充价格算 | 主要在家充电,这是默认值 |
| 快充 | 按时段的快充价格算 | 完全不在家充电 |
| 自定义 | 按你自己填的数字算 | 知道自己的平均电价,想固定下来 |
| 按充电记录 | 按实际充进电池的电价算 | 家里和路上都充电,想要更精确 |
「按充电记录」规则会跟踪电池里能量的价格:每次充电后,新充进去的电会和电池里剩下的电混合,价格变成加权平均值。便宜的夜间充电会拉低每度电的价格,贵的快充会推高它。如果行程之前还没充过电,或者上一次充电是 60 天以前,BYDMate 会用时段的家充价格,这样行程就不会没有费用。
在混动车型上,费用在电费之外再加上燃油费:行程的升数乘以行程所属时段的每升油价。如果时段里没有每升油价,燃油部分不计,行程费用只含电费;如果行程没有升数,就按纯电车型计算。
什么情况不会被重新计算
只要是你手动设定过价格的充电记录,重新计算永远不会碰它:
- 用**「+ 充电」**按钮添加、并且填了电价的充电记录;
- 你在卡片里手动改过电价的充电记录;
- 你填写过电表读数的充电记录。
这是故意这样设计的:你看到了发票和电表,应用没看到。不管电价怎么变,这些记录都会保持原样。
如何把记录改回按时段自动计算。 打开它的卡片,点击**「按时段计算」**。电表读数和手动标记会被清除,费用会按时段的电价和损耗重新计算,之后这条记录就会跟着其他记录一起变化。
保存配置和 Telegram 机器人
你配置和积累的一切都会打包成一个压缩包保存。可以用它在重装后找回数据、把 BYDMate 迁移到另一台车机,或者只是在 Telegram 里留一份副本。
所有相关设置都在**设置 → 服务与数据 → 数据 → 「配置」**里。
保存配置
- 在「保存配置」这一行点击**「保存」**。
- 在「保存内容」窗口里勾选需要的部分:
- 表格数据:行程、充电记录、统计。
- 车辆和应用设置:设置、电价、自动化、地点、悬浮窗、语音。
- 密钥和令牌:OpenRouter、ABRP、Telegram 机器人等。默认不勾选。如果要把文件交给别人,请不要勾选这一项。
- 点击**「保存」**。压缩包
bydmate_backup_<日期>.zip会出现在 Download 文件夹。如果已连接 Telegram 机器人,副本也会发送到那里。 - 在「已保存」窗口里可以直接点**「分享」**。压缩包里有行程历史,所以只分享给你信任的人。
恢复配置
- 在「恢复配置」这一行点击**「选择文件」**。会打开 Download 文件夹里
bydmate_backup_*.zip压缩包的列表,自动生成的副本也在里面。这是应用自己的文件列表,不是系统的文件选择器,所以在系统文件选择器无法访问文件的固件上也能用。 - 选择一个压缩包。
- 在「恢复内容」窗口里勾选需要的部分。压缩包里没有的部分无法勾选。没勾选的部分会保持不变。
- 点击**「恢复」**。勾选的数据会被压缩包里的内容替换,应用会重启。
在全新安装的情况下操作一样:装好 BYDMate,把压缩包放进 Download,然后恢复它。悬浮窗的“显示在其他应用上层”权限,只要 ADB 能用,应用会自己恢复。还需要手动处理的部分,会在一个「恢复之后」窗口里列出来:麦克风、通讯录、语音识别模型、语音包、重启车机。每一项旁边都有「允许」和「下载」按钮。
自动保存
- 在**「自动保存」**这一行选择频率:「每天」「每周」或「每月」。「关闭」会停用自动保存。
- 用「表格数据」「设置」「密钥」这几个标签选择副本里包含什么。默认包含表格数据和设置,不含密钥。
副本会在车辆启动时生成,前提是距上一次保存已经超过所选的周期。「每天」的意思是:车辆本次启动时,距上一份副本已经过了一整天。Download 里保留最近 5 份自动副本,更旧的会被删除。用按钮手动保存的压缩包不受影响。
如果已连接 Telegram 机器人,每一份副本都会发到你和机器人的对话里。因为网络问题没发成功的话,应用会稍后重试。这一行下方能看到最近一次保存的时间和结果:已发送到 Telegram、已保存到本地,或者出错。
如何连接 Telegram 机器人
需要用你自己的机器人:副本只会发到你和机器人的私聊里,或者你把机器人加入的群组里。
- 在 Telegram 里打开**@BotFather**,发送
/newbot,起一个名字和地址。BotFather 会发给你一个令牌:一长串类似123456789:AA…的字符串。 - 在 BYDMate 里打开设置 → 服务与数据 → 数据,找到**「Telegram 机器人」区块。把令牌粘贴进「机器人令牌」字段,点击「检查」**。
- 应用会显示一个数字验证码。在 Telegram 里打开你自己机器人的对话,把这个验证码发过去。也可以用「复制验证码」按钮复制。如果想让报告和副本发到共享聊天,比如所有开这辆车的人都能看到,可以把机器人加入你的私密群组,并在群里发送
/start@机器人用户名 验证码。 - 回到 BYDMate,再次点击**「检查」**。机器人会在对话里发一条“BYDMate 已连接,之后的备份会发到这里”的消息,区块里会显示「已连接」,并带上机器人和对话的名称。
错误信息会直接显示在按钮下方:令牌不对、没有网络、验证码还没收到、文件超过 50 MB 等等。验证码步骤的「返回」按钮会回到令牌那一步,「断开」会忘记这个机器人,之后副本就只会保存在 Download。
压缩包没有加密。机器人和聊天必须只属于你自己。如果这个机器人已经连接了 webhook 或其他程序,Telegram 就不会把带验证码的消息转发给应用:请先关闭 webhook。
电池健康(SoH)
SoH(State of Health,健康状态)是动力电池的“健康”百分比,由车辆自己的车载系统按内部算法计算得出。
在BYD Leopard 3(方程豹豹3)上,BYDMate 直接从车载系统读取这个数值,显示在主页的电池卡片里。这是来自车辆本身的真实 SoH,不是按 SoC 差值估算的:BYDMate 只是读取车辆自己记录的数据。
在其他 BYD 车型上,能否读到这个数值还没有得到确认,所以那里不显示 SoH。卡片里的其他内容(电池温度、12V、电芯均衡、绝缘电阻)在所有支持的车型上都能用。
点按卡片会打开**「技术」**界面,里面有电池、电机、空调、轮胎的详细数据和诊断,详见「技术」界面一节。
如果你的车能读到 SoH,并且愿意帮忙添加支持,请提交 Issue,注明车型和出厂年份。
SoH 和自动充电记录(Leopard 3)
在 Leopard 3 上,SoH 和自动充电记录会自动工作,不需要单独开启什么。只要无线 ADB 调试处于激活状态,BYDMate 就会直接从车辆的车载系统读取这些数值。
- 确认 ADB 调试已经激活(见「安装」一节)。
- SoH 会出现在主页的电池卡片里,充电记录也会开始自动写入,使用真实的 kWh 数值。
这些功能已在 Leopard 3 上验证过。在其他 BYD 车型上,能否读到这些数据还没有确认,这种情况下 SoH 和精确的充电功率可能不会出现,但 BYDMate 的其他功能照常工作。
「技术」界面
「技术」是显示车辆详细数据的界面:电池、电机、电池限值、空调、轮胎和诊断。数值直接来自车辆,实时更新。
怎么打开
- 打开**「首页」**标签页。
- 点按电池卡片:就是显示 SoH、电池温度、12V、电芯压差和绝缘电阻的那一行。图中用黄色框标出。
- 会打开**「技术」**界面。点左上角的箭头返回。

截图里的应用是英文界面;中文界面里的文字就是下文引号中的内容。
界面上有什么

六张卡片,每行三张。顺序可以调整:长按卡片并拖动。
- 电池 · 当前:电量(SoC)、电池自己估算的剩余电量(kWh)、SoH、电池温度、动力电池电压、电机功率、电池此刻输出的功率以及每小时消耗百分之几的电量、12V 车载电网、绝缘电阻。
- 电机与逆变器:前后分开显示。电机和逆变器温度(带刻度条)、转速、油门和刹车踏板、功率。
- BMS 限值:电池控制器(BMS)此刻允许的充电和放电功率,以及电池能输出多少功率。下面是电芯:最弱的、最强的,以及两者的差值。
- 电池 · 历史:上一次充满到 100 % 和上一次校准的时间、电池记录的里程、累计流经电池的电量、完整循环次数(下面注明是用哪些数字算出来的)、自上次充电以来和全部时间的平均电量。
- 车辆状态:空调压缩机的功率、空调是否开启、车内和车外温度。下面是画在车辆示意图上的每个轮胎的胎压和温度。车上有 PM2.5 传感器时也会显示。
- 诊断:仪表警告、距下次保养的时间,以及用**「扫描」**按钮读取的模块故障码。详见「诊断:模块故障」一节。
混动车型还有第七张卡片**「燃油」**。
怎么看
- 参数旁边有**「?」**图标。点一下会弹出简单的说明:这个数字是什么,多少算正常。
- 如果车辆不上报某个参数,那一行显示「-」。没有数据的卡片会被隐藏。
- 能显示哪些参数取决于车型。界面上的内容都在 Leopard 3 上验证过,其他车型上部分行可能是空的。
- 这个界面只读取数据,不会改动车辆的任何东西。需要无线 ADB 调试处于激活状态,和其他车辆数据一样(见「安装」一节)。
诊断:模块故障
车上有几十个电子模块:电池、制动、转向、安全气囊、驾驶辅助等等。模块发现问题时,会在自己内部记下一个故障码。维修店用诊断仪读取这些故障码。从 4.1 版本起,BYDMate 也能读取它们,直接在车机屏幕上,不需要诊断仪,也不需要联网。

截图里的应用是俄语界面;中文界面里的文字就是下文引号中的内容。
在哪里
主页 → 点按电池卡片 → **「技术」**界面 → **「诊断」**卡片。卡片里有三部分:
- 仪表警告:车辆自己在仪表上显示的内容。显示「无」表示仪表目前没有任何提示。
- 距保养:距离下次定期保养还剩多少天和多少公里。只有在车上开启了保养提醒时才会有这一行。在 Leopard 3 上,在车辆设置里开启:Vehicle → Maintenance → Maintenance Interval 或 Maintenance Mileage。
- 模块故障:上一次扫描的结果和**「扫描」**按钮。
如何扫描
- 停车并挂入 P 挡。行驶中按钮不可用,并显示「仅在 P 挡可扫描」。
- 按下**「扫描」**。应用会逐个询问各个模块,屏幕上显示已经询问了多少个。
- 随后会打开结果窗口。关掉后点按卡片里的列表可以再次打开,这时不会重新询问车辆。
需要无线 ADB 调试处于激活状态,和读取其他车辆数据一样(见「安装」一节)。应用从不自己扫描:车辆启动时不扫,不按计划扫,发送 Telegram 报告前也不扫。只有你按下按钮时才扫描。
如何看结果

- 顶部:检查的时间和有多少个模块响应,例如「18 个模块中 15 个有响应」。这是正常的:不是每个车型都有全部模块,有些模块也不是每次都会响应。
- 「当前存在」:故障此刻处于激活状态。这些码显示为黄色。
- 「历史」:故障以前出现过,模块记住了它。显示为灰色。几乎每辆车都有历史故障码,哪怕一次短暂的通信中断模块也会记下来。如果仪表上没有警告、车辆表现一切正常,通常不必担心。
- 故障码按模块分组:模块地址(例如 0x712)和模块名称(在 Leopard 3 上;在其他车型上,部分模块只显示地址)。
- 故障码的写法与比亚迪手册和维修用诊断仪一致:U1166-87。第一个字母表示问题所在:P 是动力系统(电机、电池、充电),C 是底盘(制动、转向、悬架),B 是车身和车内,U 是模块之间的通信。短横线后面的数字表示故障的类型。
- 说明在故障码旁边,下面一行注明出处:
- 「来自该车型的比亚迪手册」:说明来自你这个车型的比亚迪诊断手册;
- 「来自相似的比亚迪车型」:我们没有你这个车型的手册,但在其他比亚迪车型的手册里,这个模块的这个码说明完全相同;
- 「数据库中没有该故障码的描述」:只显示故障码,可以上网查,或者给维修店看。
- 说明的语言:中文界面显示手册里的中文原文,其他语言一律显示英文。比亚迪手册是中文写的,英文翻译是为 BYDMate 做的。
- U1166-87 的提示(驾驶辅助 ADAS 模块):车辆没有检测到钥匙。用手机远程启动后会出现这种情况。如果钥匙在旁边时该码消失,就不是故障。
这些说明存放在应用内部,不需要联网。它们来自 54 本比亚迪、腾势和方程豹的诊断手册:约 8500 个不同的故障码,每个模块各有说明。
发送到自己的 Telegram
窗口里的**「发送到 Telegram」**按钮会把故障码和说明发送到你的机器人,方便给技师看或转发到聊天里。请先连接机器人(见「如何连接 Telegram 机器人」一节),否则应用会提示「未连接 Telegram 机器人」。应用自己从不把故障码发到任何地方。
需要了解
- 扫描只是读取。 它不改动车上的任何东西,不清除故障码,也不更改模块设置。应用只向模块发送读取请求。
- 可以清除故障码,此功能为实验性功能。 在窗口中点「全部清除」,或在某个模块旁点「清除 ›」,仅限 P 挡,且必须在刚扫描之后。清除后应用会自动重新读取模块,并逐个显示结果。当前存在的故障,只要原因还在,会立刻重新出现。风险由您自行承担;如果准备去维修店,请先把故障码发送到 Telegram。
- 这不是维修,也不是诊断结论。 故障码说明的是模块注意到了什么,而不是什么坏了、该换什么。由维修店来判断:把故障码给他们看。
- 只在 Leopard 3(方程豹豹3)上验证过。 在其他比亚迪车型上,扫描可能无法使用并显示「此车不支持」,响应的模块可能更少,模块名称会显示为地址。如果你是其他车型,请在 Issue 里告诉我们扫描显示了什么,并附上日志记录。
- 只在 P 挡、只在按下按钮时。 我们有意不在行驶中询问车辆模块。
- 「检查失败,请重试」:扫描过程中挡位离开了 P 挡,或者应用和车辆的连接断开了。再按一次「扫描」。如果反复出现,请在 Issue 里发送日志记录。
窗口底部有一行关于支持项目的文字。诊断类应用通常是收费的,BYDMate 是免费的,所有说明不用捐赠也都能看到。
如果你的车不是 Leopard 3
BYDMate 是在 BYD Leopard 3(方程豹豹3)上开发和测试的。在其他 BYD 车型上,大多数功能也能用,但存在一些差异。首次启动前请注意:
- 行程历史:在 Leopard 3(方程豹豹3)上,BYDMate 从内置的 BMS 数据库
energydata读取行程。在没有这个数据库的车型上(Song、Yuan 等),行程现在改为原生记录,通过后台轮询车辆参数完成(来源标记 NATIVE_POLLING),所以列表不会再是空的。这类行程的能耗按 SoC 差值计算,比 Leopard 3 上直接读取 BMS 数据要粗糙一些。 - DM-i 和 DM-o 混动车型:应用根据发动机里程和油箱油量自己识别,没有任何设置;类型未确认之前,界面和电动车一样。这是第一版支持,根据两辆车的转储数据制作:部分数值可能显示短横线。如果车辆明明知道数值却显示短横线,请把参数目录(见下文)和带纯电续航、燃油续航的仪表盘照片一起附在 Issue 里。
- 电池容量:默认按 Leopard 3 的 72.9 kWh。请到设置 → 车辆与电池填写你自己的容量。例如:Atto 3 = 60.5 kWh,Seal AWD = 82.5 kWh,Han EV = 85.4 kWh。不填的话,续航和行程费用的计算都会不准。
- SoH:已在 Leopard 3 和 DiLink 3.0(Yuan UP)上确认可用。其他车型上,「电池健康」卡片能正常工作,只是没有 SoH 这一项。
- 充电记录:AC 和 DC 的判断算法是针对 Leopard 3 设计的。在其他车型上,记录可能出现延迟,功率也可能不准,DC 尤其容易出问题。自动判断出错时,请用手动添加和编辑。
- 自动化和悬浮窗:在任何车型上表现都一样,因为它们用的是车辆系统接口。
如果有什么不工作或者显示异常,请提交 Issue,注明车型和 DiLink 固件版本,并附上你车辆的参数目录:设置 → 服务与数据 → 「保存 fid 目录」。文件 fid-dump-….txt 会出现在 Download 文件夹里。里面只有技术参数标识符,不含 VIN,不含定位信息,不含任何个人数据。
为什么需要这个:不同 BYD 车型的参数集是不一样的,Leopard 3 上用来打开座椅通风的命令,在 Song 上编号可能不同,甚至根本不存在。这正是部分功能在其他车上不生效的原因。你车辆的参数目录能显示这些参数在你的固件上叫什么、编号是多少,我们就能照着这些数据修复问题,而不是凭空猜测。
目标设备
| 参数 | 数值 |
|---|---|
| 平台 | DiLink 5.0(Android 12,API 32) |
| 处理器 | Snapdragon 780G |
| 屏幕 | 15.6 英寸横屏,1920x1200 |
| GMS | 无(AOSP,不含 Google Play Services) |
| 已测试车型 | BYD Leopard 3(方程豹豹3) |
工作原理
BYD energydata (BMS SQLite) → HistoryImporter → Room DB → Compose UI
autoservice (系统 Binder) → TrackingService ↗ ↓
Android LocationManager → TripTracker (GPS) ↗ LocalInsightEngine
autoservice (命令写入) ← AutomationEngine ← Rules (Room DB)
| 数据 | 来源 |
|---|---|
| 能耗、里程、时长 | BYD energydata(BMS) |
| SOC、车速、温度 | 车辆系统服务(autoservice Binder) |
| 电芯电压、12V、SoH | 车辆系统服务(autoservice Binder) |
| GPS 坐标 | Android LocationManager |
| AI 分析 | 车机本地规则,不联网 |
| 车辆控制 | 车辆系统服务(命令写入) |
无需 OBD 适配器,也无需第三方 D+。BYDMate 通过 autoservice 系统服务(和原车 BYD 系统用的是同一个)直接读取数据、控制车辆,走的是无线 ADB 的 shell 权限。
数据与网络
| 功能 | 发往哪里 | 发送了什么 | 什么时候生效 |
|---|---|---|---|
| 语音智能体(LLM) | OpenRouter / z.ai / 自建服务器 | 命令文本、车辆状态(SOC、空调等),导航请求时还包含 GPS 坐标 | 仅在配置好服务商后 |
| 智能体网络搜索 | Exa / z.ai / OpenRouter | 搜索关键词文本 | 已填密钥且智能体调用了该工具时 |
| 天气(智能体) | Open-Meteo | GPS 坐标或地点名称(地理编码) | 智能体调用了该工具时 |
| 充电站(智能体) | Overpass(overpass-api.de / maps.mail.ru) | GPS 坐标 | 智能体调用了该工具时 |
| 在线语音合成 | MiniMax / fal.ai / Replicate / OpenRouter | 要朗读的回答文本 | 仅在选择在线语音时 |
| 行程详情地图 | OpenStreetMap 瓦片服务器(或 Amap,如果在设置里选择了它) | 当前可见地图区域的坐标 | 打开行程地图或地点编辑器时 |
| 更新检查 | GitHub API | 不发送任何内容(只获取发布列表,版本比较在本地完成) | 自动进行 |
| ABRP 实时遥测 | abetterrouteplanner.com | SOC、功率、车速、各项温度、里程、胎压、充电状态、电池容量、SoH、本次充电的 kWh、车型(坐标只有单独开关开启时才发送,用于在手机上查看车辆位置) | 仅在输入令牌后 |
| Telegram 配置备份 | api.telegram.org、你的机器人 | 你选择包含的配置压缩包,以及连接机器人时的一条消息 | 仅在连接机器人后 |
| 遥测 Webhook | 设置 → 集成 → Webhook | 和发给 ABRP 一样的 JSON,每 1/8/30 秒 POST 到你的地址一次(行驶/充电/停车);坐标只有单独开关开启时才发送 | 默认关闭 |
没有填入任何密钥的情况下,只有更新检查(GitHub)、查看行程路线时的地图瓦片,以及用户主动请求下载语音模型(github.com)会离开车机。API 密钥只保存在应用本地的数据库里,除了发给对应的服务商本身,不会传到任何地方。
安装
1. 激活 ADB
没有 ADB 时,BYDMate 只是一个离线的行程记录本:来自原车数据库的历史、路线地图、保存配置、基于已有数据的 AI 洞察。
无线 ADB 调试要用于所有读取或写入车辆参数的功能:悬浮窗和主页上的实时数值(SOC、续航、各项温度、12V)、SoH、自动充电记录、自动化、投射到仪表盘、分屏、HUD 提示、盲区摄像头、语音控制车辆,以及日志录制。
ADB 状态栏。 在主页和设置里,状态栏会显示车辆控制为什么不工作:ADB 没有开启、ADB 在重启后关闭了、无法访问 ADB,或者助手没有启动。点按会打开带操作按钮的提示。首次启动向导里有一个「ADB」步骤,带「检查」按钮。
这些功能会自动启用,不需要单独的开关。BYDMate 首次启动时,DiLink 会弹出一次「Allow ADB debugging」对话框:点 Allow,勾选 「Always allow from this computer」,这样它就不会再问了。
DiLink 3 / 4:可以自己激活 ADB,安装 BydDevelopmentTools,进入 设置 → Version Management,连续点按 Reset to factory default 文字 10 次,打开 Debug Mode when USB is Connected 和 Wireless adb debug switch。在更新过的 DiLink 3/4 固件上,ADB 也可能像 DiLink 5 一样被锁住,那就要走下面的路。
DiLink 5.0:ADB 调试被锁定,只能从中国远程解锁。可以通过淘宝上的卖家操作(搜索
DiLink 5.0,境内约 40 元 / 境外约 80 元,支付宝付款)。卖家凭你发去的二维码远程打开工程菜单,之后 ADB 就正常开启了。分步说明:PDF 指南(俄语)(已附在仓库里)。
ADB 每次重启后都会断开
在 2026 年夏天以后(「2606」构建)的 DiLink 固件上,每次重启车机 ADB 端口都会关闭,所有车辆控制功能都会失效,直到手动重新开启 ADB。针对这类车机,设置 → 车机系统里有一个**「重启后恢复 ADB」**开关(默认关闭):应用会通过 Android 内置的无线调试功能重新拉起 ADB。开关旁边有一个「?」图标,附详细说明,下面还有一行状态提示。
需要知道的几点:
- 车里的 Wi-Fi 必须打开并连上网络(家里的、手机热点、随便什么网络都行)。没有 Wi-Fi,Android 不允许开启无线调试,这是系统限制,绕不过去。
- 每换一个新网络,第一次开启时屏幕上都会弹出系统对话框「Allow wireless debugging on this network?」。恢复开关打开时,应用会通过自己的无障碍服务自动确认这个对话框:用手机热点时网络每次开启都会变化,「Always allow on this network」在这种情况下不起作用。如果 BYDMate 的无障碍服务是关闭的,请勾选「Always allow on this network」并点 ALLOW。
- 只需一次,趁 ADB 还在工作时,应用会通过一条 ADB 命令给自己授予系统权限
WRITE_SECURE_SETTINGS。没有这个权限就无法开启无线调试:状态栏会显示「需要激活」。 - 启动后,只要 Wi-Fi 保持连接,应用就会自动重试,并对解锁屏幕做出反应。车辆连上 Wi-Fi 后,ADB 通常会在 10 到 30 秒内恢复。如果车辆启动时手机热点已经开着,效果最好。
- 如果你的固件本来就能在重启后保留 ADB,不需要打开这个开关:状态栏会显示「无需开启」。
- 已在 2026 年 8 月固件的 DiLink 5.0(Song L)上验证过。
2. 不再需要 DiPlus(D+)
从 3.0.0 版本开始,BYDMate 直接对接车辆系统,不再需要第三方应用 D+(迪加)。所有数据读取和命令发送都通过车辆的系统服务完成。
如果你之前用过旧版本并安装了 D+,确认 BYDMate 工作正常之后,就可以把它从 DiLink 上卸载了。
3. 安装 BYDMate
- 从 Releases 下载 BYDMate 的 APK
- 传到 DiLink 上:可以用 U 盘、局域网,或者 ADB(
adb install BYDMate.apk) - 如果需要,允许安装未知来源的应用
4. 首次启动
- 打开 BYDMate,会出现设置向导
- 授予定位和存储权限。随着功能陆续开启,应用还会请求:语音智能体要用的麦克风、盲区摄像头要用的相机、按联系人姓名拨号要用的通讯录、悬浮窗和通知要用的「显示在其他应用上层」权限、判断当前前台应用要用的使用情况访问权限。通知栏里 BYDMate 的常驻通知没法关掉(Android 要求后台运行必须有它),但可以让它安静:设置 → 服务与数据 → 「安静的通知」
- 填写电价(用来计算行程费用)。以后可以追溯修改,见《电价与费用》一节
- 自动化里有一个「安防模式」动作类型:直接通过系统设置打开或关闭 BYD 的安防模式(Centuri/Sentry),不用经过原车应用的确认对话框
5. 后台运行
重要: 给 BYDMate 关闭「Disable background Apps」,否则 DiLink 会把应用杀掉:

DiLink > Settings > General > Disable background Apps > BYDMate = OFF
6. 设置(可选)
在设置里可以修改:
- 电池容量:默认 72.9 kWh(Leopard 3)
- 电价与周期:家用(AC)和快充(DC)的单价、损耗、行程费用的计算规则和货币。详见《电价与费用》一节
- 能耗阈值:颜色提示(绿/黄/红)的分界线
车机系统
设置 → 服务与数据 → 车机系统里的选项会改变车辆本身的行为,而不是应用的行为。
方向盘音量旋钮。 开启后,按下旋钮会暂停/继续播放,而不是切换音源。适用于某次固件更新后按下旋钮变成切换音源的情况。默认关闭。
通过 Wi-Fi 连接 BYD 云。 通过 Wi-Fi 把车辆连接到 BYD 云,让手机上的 BYD 应用看到车辆、接收 OTA 升级并使用 NFC 钥匙。使用新版 BYD 服务器的车辆需要中国 VPN:服务器只接受来自中国 IP 的连接。最好在车辆连接的路由器上设置 VPN,它不依赖车机。另一种方式是在车机上安装 VPN 应用,例如 SpeedCN,它只在车机开启时工作。需要 ADB。如果车辆已有自己的移动网络,此设置不做任何改动;关闭时会恢复原来的网络设置。
车机界面语言。 只在 UI7 固件上有效。这个按钮会打开 BYD 原车隐藏的语言对话框,里面有完整的语言列表,包括俄语、乌克兰语和波兰语。语言是固件自己切换的,应用不写入任何东西。部分车主切到俄语后自动泊车会失效,那就用同一个按钮切回 English。
AI 洞察
主页上的卡片会分析你最近 7 天的数据(和前 7 天对比),显示标题、简短结论、指标表格,以及最多 5 条建议。不需要联网。
卡片完全在车机本地计算,基于你的行程和电池数据。每天自动刷新一次,结果缓存在设备上。展开卡片后,统计周期可以在「周」和「月」之间切换。
数据来源
全部数据来自本地 Room 数据库,不涉及 GPS、路线和任何个人标识:
- 行程:公里数、kWh、平均能耗、速度、短途行程(少于 5 公里)、能耗最好/最差的一次、费用
- 带电机的停车:kWh 和小时数(
idle_drains) - 夜间停放:在 22:00-06:00 开始的停放
- 充电:AC/DC 的 kWh、次数、每 kWh 单价、本周总费用
- 12V:当前电压和一周的变化趋势(最多保留 7 天历史)
- 电芯:从车辆实时数据算出的 max-min 毫伏差
- 温度:各次行程的平均车外温度
分析所需最少数据: 最近 7 天至少 5 次行程。不够的话,卡片会显示「数据不足,无法分析」。
卡片的构成
- 标题和摘要:本周最重要的一条结论,由优先级最高的规则(见下文)决定。
- Dynamics(周对比):能耗、行程数、短途占比、平均距离、带电机的停放、夜间停放的「周对周」对比表。
- 建议:从符合条件的规则里挑出最多 5 条,按重要性排序。
引擎的逻辑在 LocalInsightEngine.kt 里:确定性的阈值判断加上字符串模板(strings.xml 里的 local_insight_*)。文案已本地化为 6 种语言(ru / en / zh / pt / pl / be)。
标题的优先级
哪个更重要,就显示哪个。取第一条满足条件、优先级最高的规则:
| 优先级 | 条件 | 标题示例 |
|---|---|---|
| 90 | 12V < 11.8 V | 「12V 严重偏低」 |
| 85 | 电芯压差 > 50 mV | 「电芯压差偏大」 |
| 80 | 能耗比上周 ↑ > 15% | 「能耗周环比 ▲15%」 |
| 78 | 夜间掉电 ≥ 4 kWh 且停放占比 ≥ 35% | 「夜间停车耗电」 |
| 70 | 能耗 ↑ > 5% | 「能耗周环比 ▲8%」 |
| 60 | 能耗 ↓ > 5% | 「能耗 ▼10%」 |
| 10 | 其他情况 | 「能耗稳定」 |
建议(bullets)
同时会检查一整套规则,卡片里最多显示5 条优先级最高的。举几个例子:
| 主题 | 触发条件 |
|---|---|
| 夜间停放 | 夜间带电机耗电 ≥ 0.3 kWh |
| DC 比 AC 贵 | 两种充电都 ≥ 3 kWh,DC 贵 15% 以上 |
| DC 用得多 | ≥ 2 次 DC 充电,且 DC > AC×1.5 |
| 短途行程多 | ≥ 40% 的行程短于 5 公里 |
| 带电机的停放 | 停车时耗电 ≥ 2 kWh |
| 12V 偏低/下降 | 11.8-12.4 V 或一周内呈下降趋势 |
| 电芯压差 | 31-50 mV |
| 冬季能耗上升 | 气温 ≤ 5°C 且能耗上升 |
| 最佳/最差行程 | 能耗差 ≥ 5 kWh/100 |
| 能耗下降 | 比上周 ↓ > 5% |
| 高速工况 | 平均车速 ≥ 75 km/h |
| 能耗偏高/偏低 | ≥ 28 或 ≤ 16 kWh/100 |
| 里程/行程增长 | 比上周 +20% |
| 高温开空调 | ≥ 25°C,能耗 ≥ 22 |
| 混合充电 | 一周内既有 AC 又有 DC |
| 费用 | 每 100 公里花费或本周充电费用 |
| 良好习惯 | 夜间/白天停放耗电少,12V 和电芯均衡都正常 |
完整的规则和阈值列表在 LocalInsightEngine.kt 和测试文件 LocalInsightEngineTest.kt 里。
ABRP:实时遥测
BYDMate 可以通过官方 Iternio Telemetry API,把车辆的实时数据发送到 A Better Route Planner(ABRP)。ABRP 用这些数据让路线规划和续航估算跟着电池的真实状态走,而不是用表格里的平均值。

这个功能是可选的,默认关闭,需要在设置里手动开启。
车机上的 ABRP 版本:请安装 7.1.2 或更早的版本,例如从 APKMirror 下载。在 7.1.4 及更新的版本中,地图上的车辆标记会跳动着更新或者卡住不动。这是 ABRP 自身的问题,与 BYDMate 无关。
如何获取令牌
ABRP 使用「Generic Live Data Token」,车库里每辆车都要单独申请一个:
- 打开 abetterrouteplanner.com 并登录账号。
- 进入车库,打开你想看实时数据的那辆车。车辆必须已保存在车库里,否则不会生成令牌。
- 点齿轮**「车辆设置」** → **「数据」**部分 → **「连接实时数据」**按钮。
- 在服务商列表里选择**「Generic」并点「关联」**。会出现一长串令牌字符串,这就是
User Token。
如果列表里没有「Generic」:把 ABRP 车库里这辆车的车型代码临时改成任意一款常见的 BYD 车型(例如 BYD Atto 3 或 BYD Seal),保存后 Generic 就会出现。关联令牌之后,可以把车型代码改回去。
在 BYDMate 里设置
- 设置 → 集成 → **「ABRP - 遥测」**部分。
- 把获取到的令牌填进**「ABRP 实时数据令牌」**。
- 不需要再设置别的:发送间隔会自动调整,行驶时 1 秒一次,充电时 8 秒一次,停车时 30 秒一次。旧版本里的「间隔」和「车型代码」两个字段已经取消。
- 点**「保存 ABRP」,然后打开「实时数据 -> A Better Route Planner」**开关。没有保存令牌的话,这个开关是打不开的。
- 这时 DiLink 上的 ABRP 应用(或者手机浏览器)就能看到最新的 SOC、功率、温度、电量了。
发送了什么
只有聚合的车辆数据,不含任何标识信息:
- SOC:动力电池当前电量百分比
- Speed:车速,km/h
- Power:当前牵引功率;充电时按 Iternio 的要求,用电压乘电流算出的充电功率,取负值。混动车型上,功率只按电池电压和电流或充电数据计算;如果车辆不提供这些数据,就不发送该字段。
- Voltage / current:动力电池的电压和电流
- HVAC setpoint:空调设定温度
- Battery / cabin / exterior temp:电池、车内、车外温度
- Capacity:电池标称容量
- Odometer:里程,km
- Tire pressures:四个轮胎的胎压
- is_charging / is_parked:状态标志
- is_dcfc / kwh_charged:充电站类型(DC 还是 AC)和本次充电已充的 kWh
- soh:真实的电池 SoH(Leopard 3)
没有发送什么
- 默认不发送 GPS 坐标。 ABRP 是 DiLink 上一个独立的 Android 应用,自己从系统读取位置。如果 BYDMate 也发送坐标,ABRP 地图上的车会在两个数据源之间跳来跳去。「向 ABRP 发送坐标」设置只用于一种情况:车内的 ABRP 没有运行时,用手机上的 ABRP 查看车辆位置。如果车内打开了 ABRP,请不要开启它。
- 不发送:VIN、设备标识符、行程历史、路线、个人设置。
ABRP 如何计算续航
ABRP 根据自己数据库里的车型加上实时数据(当前 SOC、电池温度、行驶速度、风、路况、海拔变化)来估算续航。BYDMate 不会把自己算出的「预计续航」发给 ABRP,ABRP 有一套自己的、针对具体路线更精确的算法,会考虑天气和地形。
Webhook:同样的数据发到你自己的服务器
发给 ABRP 的那份 JSON,也可以用 POST 请求发到你自己的地址:Home Assistant、Node-RED,或者你自己在 VPS 上写的脚本。不做任何排队缓存:服务器连不上,这个点就丢了,下一次尝试是一分钟后。
设置方法
- 设置 → 集成 → **「Webhook - 遥测」**部分。
- URL:只能是
https://。普通的http://走不通(Android 屏蔽未加密流量,只对localhost放行)。如果服务器没有证书,可以在前面加一层带 Let's Encrypt 的 Caddy 或 nginx,或者用 Cloudflare Tunnel 这类隧道。 - 密钥(可选):一个字符串,会放进请求头
Authorization: Bearer <密钥>。服务器靠它区分你的车和别人的请求。 - 「向 Webhook 发送坐标」:默认关闭。只有服务器是你自己的时候才建议打开,打开后 JSON 里会多出
lat、lon、heading。 - 点**「保存 Webhook」,然后打开「实时数据 -> 自己的服务器」**开关。
发送内容
POST <你的 URL>,Content-Type: application/json,body 里是一个数据点:
{"utc":1756040000,"soc":67,"speed":52.0,"power":18.4,"batt_temp":29.0,"ext_temp":24.5,
"capacity":72.9,"odometer":12345.6,"cabin_temp":22.0,
"tire_pressure_fl":2.5,"tire_pressure_fr":2.5,"tire_pressure_rl":2.4,"tire_pressure_rr":2.4,
"is_charging":0,"is_parked":0,"soh":98.5,"car_model":"byd:leopard3"}
字段和单位与 Iternio Telemetry API 一致:utc 是秒,power 单位 kW(车辆本身给出的值),温度单位 °C,胎压单位 bar,odometer 单位 km。没有数据的字段(比如停车时的 speed,或者不在充电时的 kwh_charged)直接不出现。发送节奏:行驶时每秒一次,充电时每 8 秒一次,停车时每 30 秒一次。不解析服务器的响应内容,只看状态码是不是 2xx;出错后 60 秒重试一次。
Webhook 和 ABRP 是独立的:可以只开一个,也可以两个都开。
Home Assistant。 第三方集成 byd-leopard3-ha-integration 可以接收这个 Webhook,并在 Home Assistant 中显示车辆。它由其他作者开发,我们不审查也不维护它的代码,相关问题请联系它的作者。
从源码编译
# 需要:JDK 17,Android SDK 34
git clone https://github.com/AndyShaman/BYDMate.git
cd BYDMate
./gradlew assembleDebug
技术栈
- Kotlin 2.1 + Jetpack Compose + Material 3
- Room(SQLite) + Hilt(依赖注入) + OkHttp
- osmdroid(OpenStreetMap) + Coroutines/Flow
- Min SDK 29 / Target SDK 29 / Compile SDK 34
出问题该怎么办
如果哪里不工作,按下面的步骤来,多数情况下第一步就能解决,如果不行,这些信息也能帮我们快速定位问题。
1. 重启车机。 长按音量旋钮,一直按到屏幕开始重启。有些功能(比如分屏)依赖一个只在开机时生效的系统标志,不重启的话这个功能看起来「坏了」,其实一切正常。
2. 录制日志。 设置 → 「服务与数据」部分 → 「录制日志」按钮。重现一遍问题(点那个不工作的功能),然后点「停止录制」。文件 bydmate_logs_<日期>.txt 会出现在 Download 文件夹里(如果忘了停止,2 小时后会自动停止录制)。
3. 保存 fid 目录。 设置 → 「服务与数据」部分 → **「保存 fid 目录」**按钮。文件 fid-dump-<日期>.txt 会出现在 Download 里。不同 BYD 车型的命令目录不一样,靠这份文件我们才能把应用适配到你的车上。
4. 发给我们。 在 GitHub Issues 里建一个 issue,附上:车型和 DiLink 代数、BYDMate 版本、你点了什么、期望看到什么,以及第 2、3 步的文件。
常见情况:
- 分屏或投射到仪表盘不工作:重启车机(第 1 步)。
- 命令执行了,但车没反应(车窗、天窗、空调):多半是你的车型命令目录不一样,请发日志和 fid 目录(第 2-4 步)。
- 更新之后出问题:先重启车机,不行的话发日志。
- 「测试模型」按钮是灰的,或者返回错误:语言模型的密钥没保存,或者服务器没响应,去设置 → 集成 → AI 连接里检查一下。
- 方向盘按键没反应:重新分配一下(设置 → 语音智能体 → 「分配按键」),并确认 BYDMate 的无障碍服务权限已经打开。
- 智能体只回文字,不出声:打开「朗读智能体回复」开关,并下载一个语音(「智能体回复」部分)。
- 智能体的声音很小:它走的是系统的 Voice 通道,音量是单独调的,跟音乐分开,回答时用音量键调,或者去车机的声音设置里调。
- 「测试模型」能通过,但对话时智能体拒绝回答:把日志发到 Issue 里,并说明用的是哪个连接、哪个模型。
致谢
- BYD Trip Info(
org.jayb.bydapp)by jayb,DiLink 上最早的一款应用,BYDMate 的灵感来源 - DiPlus(迪加)by Van Design,一个连接车辆数据的桥接应用,BYDMate 早期版本用过它(从 3.0.0 起不再需要)
- 天气数据来自 Open-Meteo.com
- @klimuts,提示了把导航投射到仪表盘用的 auto_container 机制
- @RBGboost,逆向了原车 HUD 的 SOME/IP 协议,并给出了 YandexHUD 的最初实现。BYDMate 里把 Yandex 导航提示投射到抬头显示屏这个功能,代码和功劳都是他的。想感谢他可以去 Telegram:@RBGboost
- byd-turnsignal-cameraview by sunlixWhyNotAvailable,一份关于 DiLink 摄像头和车窗接口的公开研究,转向灯盲区摄像头功能就是在这份研究的基础上做的。BYDMate 里的实现是从零写的,但他的分析帮我们省下了几周的逆向工作,谢谢!
- denza-lab by xor777(MIT 许可证),读取车辆模块故障码并解析其应答的方法。「诊断」卡片里的手动扫描就是基于他的研究和代码做的。
- danijar2000,修复了 2GIS 投射到仪表盘的问题(之前 2GIS 转到仪表盘显示时会直接退出)
支持这个项目
这是个非商业项目,我业余时间做着玩的。想表示感谢的话,收款方式在 SUPPORT.md 里。不想也没关系,还是谢谢你的信任。
许可证
PolyForm Noncommercial 1.0.0:源代码开放,仅限非商业用途。 详见 LICENSE。
Copyright (C) 2026 AndyShaman
English version: README.en.md
探索相关项目
n8n-io/n8n
具备原生 AI 能力的 Fair-code 工作流自动化平台。可将可视化构建与自定义代码相结合,支持自行部署或使用云服务,并提供 400 多种集成。
210,065 星标langgenius/dify
在同一个协作工作区中构建智能体工作流和 RAG 流水线,并提供丰富的 AI 模型与工具支持。可部署到云端、VPC 或自行部署,团队无需重建技术栈即可从原型进入生产。
160,773 星标microsoft/PowerToys
Microsoft PowerToys 是一组提升 Windows 生产力和自定义能力的实用工具
140,833 星标stablyai/orca
Orca 是使用智能体集群开展工作的地方(例如 Grok Bot、Claude Code)。可使用你自己的订阅运行任意编程智能体。支持桌面端、移动端和远程运行时。
121,706 星标