CarWatch: 透過 Raspberry Pi 5 實現的車用在地化 AI Agent

CarWatch 是一個開源專案,透過使用 Raspberry Pi 5 將在地化大型語言模型 (LLM) 整合到車輛中,將汽車轉變為一個功能性的聊天室 Agent。藉由在本地運行量化後的 Qwen 模型,該系統提供免持語音互動、透過 RAG 檢索車主手冊,以及即時的車輛遙測數據,且核心操作無需依賴雲端連線。

在地化 AI 架構與效能

CarWatch 利用 Raspberry Pi 5 (16 GB RAM) 來運行 Qwen3.6-35B-A3B,並使用 Unsloth UD-Q3_K_S 動態量化。此設置允許系統完全在離線狀態下運行,確保在車庫或沒有網路存取的死角處仍能正常運作。

真實硬體上的關鍵效能指標包括:

  • 生成速度: 每秒 3.5 個 tokens。
  • 提示詞處理: 每秒 25+ tokens。
  • 散熱效能: 持續溫度為 65°C (需要主動散熱)。
  • 記憶體佔用: 模型佔用約 14.3 GB 的 RAM。

核心功能能力

基於事實的知識與 RAG

為了防止幻覺並確保技術準確性,CarWatch 使用了詞彙檢索增強生成 (RAG) 系統。系統在 SD 卡中附帶了車輛 745 頁的車主手冊。LLM 被指示必須嚴格根據手冊提供答案,包括頁碼引用,並且被設計為拒絕回答任何未包含在來源文本中的問題。

即時車輛狀態監控

系統與車輛硬體整合,以提供基於事實的自我知識。它可以讀取以下即時數據:

  • 硬體狀態: CPU 溫度、降頻狀態、風扇轉速、記憶體使用量以及磁碟/網路狀態。
  • 車輛遙測: 透過以太網轉 OBD (DoIP/ENET) 線纜,系統旨在監控 RPM、冷卻液溫度、速度以及電壓 (目前已針對模擬閘道器進行驗證)。

免持語音介面

CarWatch 在 Pi 上實現了連續監聽管線: Energy VAD → whisper.cpp → Grounded LLM Pipeline → Room Output。 這消除了對喚醒詞儀式的需求以及對雲端語音轉文字 (STT) 的依賴,讓所有音訊處理都在本地完成。

連線與部署策略

CarWatch 採用三層連線模型,以平衡在地化實用性與遠端功能增強:

  1. 始終在地化: 語音輸入、LLM 答案、RAG 檢索,以及由車輛提供的手機儀表板,在完全沒有訊號的情況下皆可運作。
  2. 排隊連線: 聊天室貼文、行車記錄器片段上傳,以及提及回覆,皆會儲存在持久化的磁碟端待發箱 (outbox) 中,並在建立連線後送出。
  3. 僅限線上: 透過撥號隧道 (cloudflared) 實現遠端連線能力、從 GitHub 進行自我更新,以及選擇性的升級至雲端模型。

硬體參考配置

對於想要複製此配置的開發者,參考硬體包括:

  • SBC: Raspberry Pi 5, 16 GB RAM,配備主動散熱。
  • Audio: 符合 Class-compliant 標準的 USB 麥克風。
  • Dashcam: WOLFBOX G900 3-channel camera (透過 WiFi AP 進行事件片段檢索)。
  • OBD Access: 以太網轉 OBD (DoIP/ENET) 線纜或 ELM327-class adapter。
  • Power: 透過 12V PD adapter 或 230V 插座提供 5V/5A USB-C 供電。

社群洞察與評論

雖然該專案展示了在汽車環境中使用在地化 LLM 的可行性,但 Hacker News 上的社群討論突出了幾個技術與實務上的疑慮:

準確性與安全性: 部分使用者警告,LLM 經常在處理高度特定的汽車細節 (例如特定年份車型的油品規格) 時遇到困難,建議依賴 LLM 進行機械維護可能會具有風險。

Utility 與使用場景: 評論者質疑,對於調整空調或鎖門等任務,語音 Agent 比實體按鈕更具實務優勢嗎?他們認為該專案的價值更多在於汽車的「Agentic」特性 (例如向聊天室回報抵達/離開狀態),而非取代現有的汽車控制功能。

整合複雜度: 使用者提出了關於與製造商 API 介接的難度,以及透過 Raspberry Pi 建立汽車的「第二把鑰匙」所帶來的安全隱患。

"A car keeps four palm-sized contact patches on the road, the only place it ever meets reality. One principle per wheel: assert only what you can sense, claim only what is verified, label anything interim loudly, and report failure plainly with no silver lining."

— CarWatch development log

Sources

相關