
2026/08/26 0:20
Show HN: ローカル車載AIとしてQwenを使ったRaspberry Piを作成しました
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
以下の改善版は、すべての技術仕様、アーキテクチャフロー、およびインストール詳細を取り入れながら明瞭さを維持しています:
サマリー(改善版)
CarWatch は、アクティブなインターネット接続を必要とせず、ローカルダイヤアウトトンネルを使用して NAT 障壁を突破して機能するように設計された、Raspberry Pi 5 で実行される完全オフライン AI 自動車エージェントです。Qwen3.6-35B-A3B モデルをローカルで実行し(14.3 GB の VRAM で約 3.5 トークン/秒の処理速度)、SD カードに格納されている 745 ページのオーナーズマニュアル上で辞書的 RAG を採用することで、引用付きで正確な応答を実現します。システムは、エネルギーベースの VAD と
whisper.cpp を使用した連続的なハンズフリー音声入力を特徴とし、クラウド STT や起動語を必要としないようになっています。ライブテレメトリ(温度、スロットリング、メモリ)を監視し、ブート時に自己起動する systemd サービスによって管理されることで、「自己認識」を実現しています。実際の車部品を組み合わせて構築されており、WOLFBOX G900 ダッシュカム(プローブモード)、ELM327 OBD ツール(DoIP 読み取りが検証済み)を含むため、グループマインドルームへの参加を @gle ハンドルを使用してプライベート AI アシスタントとして展開準備完了です。アクティブ冷却および別々の電源供給を必要とします。
元のサマリー: CarWatch は、Raspberry Pi 5 上で実行される完全オフラインのチャットエージェントにより、車載 AI を革新します。アクティブなインターネット接続は不要で、Qwen3.6-35B という大規模言語モデルをローカルで実行することで会話を安全に処理し、Retrieval-Augmented Generation (RAG) を使用してローカルのオーナーズマニュアルから質問に答えます。RAG は関連するコンテキストを取得することで、正確で引用付きの応答を確保します。「自己認識」を維持するため、ライブハードウェアテレメトリを監視し、ブートアップ時や更新中も稼働するように systemd によるサービス管理を行います。ガレージ内など一般的な接続問題を解決するために、CarWatch は専門的なダイヤアウトトンネルを使用してネットワーク障壁(NAT)を突破し、外部 Wi-Fi がなくても到達可能に保たれます。WOLFBOX G900 ダッシュカムや ELM327 エンジン診断ツールなどの実際の車部品を使用しており、プロジェクトは現在 DoIP による基本的なエンジンデータ読み取りが検証済みです。このアーキテクチャにより、プライバシーを重視する企業がクラウドサーバーに依存せず、既存ハードウェアから直接インテリジェントなアシスタンスを提供するハンズフリーで自己更新可能な自動車エージェントを展開できるようになります。
本文
オフライン完結の「車内チャットルームエージェント」:CarWatch(カーウォッチ)
Raspberry Pi 5 を車載化し、ローカル環境で 35B パラメータ規模の AI モデルを実行。あなたの GroupMind ルームに
@gle(またはお好みの名称)として参加し、他のエージェント同様にお知らせを送信します。
- 投稿範囲: 出発・到着、旅路の要約、事故時のダッシュカム映像など、あらゆる情報の投稿が可能。
- 承認と返信: CodeWatch を通じたスマートフォンやウォッチから遠隔操作できます。
- 表示位置: Open PR は CodeWatch のダッシュボード上で、ClawWatch や WhereWatch と並んで表示されます。
- 動作環境: 実在のハードウェア(Raspberry Pi 5、16 GB RAM)で動作し、約 300 ユーロのコストです。
🧠 AI モデル構成
使用しているモデルは Qwen3.6-35B-A3B です。
- メモリアプリケーション: Unsloth の UD-Q3_K_S ダイナミッククォンタ化を使用(メモリ使用量:14.3 GB)。
- 処理速度:
- 生成速度:約 3.5 トークン/秒
- プロンプト処理:25+ トークン/秒
- 熱設計: 動作温度は最大 65°Cまで持続可能。
- 独立性: クラウド接続、インターネット接続、サブスクリプションのいずれも不要。
📖 車載マニュアルに基づく回答(RAG)
SD カードに搭載された「745 ページの車輌所有マニュアル」を独自の RAG(レクシカル・検索)エンジンで参照します。
- 出典付き回答: 回答には必ずページ番号付きの出典を示します。
- 拒否ポリシー: マニュアルに記載のない事項については、明確に「記載されていないため回答できません」と拒否します。
🔬 根拠のある自己知識(Self-Knowledge)
各質問に対して、機器からライブで読み取る状態情報を基盤とした回答が可能です。
- 監視対象: 温度、スロットリング制御、ファン回転数、メモリ使用量、ディスク空き容量、ネットワーク状況、ロードされている AI モデルなど。
- 根拠のない断言禁止: 「感知できないこと」は「感知できない」と即座に宣言します。
- システムプロンプト設計: 未知の情報は事実として沈黙して読み込まれることがないよう設計されています。
🎙️ ハンドフリーボイス(音声対話)
エネルギーに基づく VAD(音声活動検出)→ Whisper.cpp の処理をすべて Raspberry Pi 上で完結させ、常に待機しています。
- 起動不要: 「起動コマンド」の儀式も不要です。
- クラウド STT 非使用: クラウドによる音声認識(STT)を使用しません。
- 処理フロー: 話しかけるだけで発言を拾い、「根拠のあるパイプライン」を通じて処理し、ルームに回答を送ります。
📡 自律運用・保守管理
- 自動起動:
サービスが起動時に自動的にスタック全体(モデルサーバー、ルームエージェント、音声リスナー、スマホダッシュボード、エンジンモニターなど)を立ち上げます。systemd - リモートメンテナンス:
- リポジトリから自動でアップデートを取得(1 時間ごと+ダッシュボードの「今すぐ更新」ボタン)。
- 電話機ホットスポットの NAT の背後からもトンネルを確立しアクセス可能です。「車内にラップトップを持って行く」作業は不要になります。
- 3 レイヤの接続性:
- 電話機ホットスポット
- 自宅 WiFi
- 車自身が提供するフォールバックアクセスポイント これらにより、信号がゼロのガレージ内でもいつでもアクセス可能です。
開発ログ: 試行錯誤の行き詰まりも含めたすべてが
に記録されています。docs/plan.md
🌐 エコシステムとアーキテクチャ
この一族はすべて
thinkoff.io で公開されています。
- CodeWatch: 手首上のエージェント(ソース:codewatch-cli)。「車を監視する」CarWatch と兄弟プロジェクトです。
- ClawWatch: 手首上の健康監視機能。
📐 システムアーキテクチャ図
flowchart LR subgraph car [車内環境 - Raspberry Pi 5] MIC[USB マイク] --> LISTEN[carwatch-listen<br/>VAD + whisper.cpp] LISTEN --> BRAIN[llama.cpp サーバー<br/>Qwen3.6-35B-A3B] MANUAL[(所有者マニュアル RAG<br/>745 ページ、SD カード搭載)] --> BRAIN STATE[selfstate<br/>温度 / ファン / ネットワーク / モデル] --> BRAIN OBD[carwatch-obd<br/>OBD ケーブル監視] --> AGENT BRAIN --> AGENT[carwatch-agent<br/>@gle ルームエージェント] DASH[Web ダッシュボード :8088<br/>ステータス / 更新 / ボイス / WiFi] UPD[self-アップデート<br/>1 時間ごとの git pull] -.updates.-> car REACH[dial-out トンネル<br/>NAT 背後からのアクセス可能化] end AGENT <-->|投稿 / メンション | GM[GroupMind ルーム] GM <--> PHONE[あなたのスマホ / ウォッチ<br/>CodeWatch] DASH <-->|同一 WiFi | PHONE
🔄 ローカル処理 vs オンライン処理:戦略
「ローカル処理」が製品の本質であり、「オンライン処理」はそれを補完する要素です。ガレージ、トンネル、無電波地域などゼロ接続環境でも十分に機能しなければなりません。
✅ 常時ローカル(信号なしでも動作)
- 音声入力と AI モデルによる回答
- SD カード搭載マニュアルからの回答(RAG)
- 車自身から提供されるスマホダッシュボード(ステータス表示、WiFi 切り替え、ボイストグル、更新ボタン)
- 旅路・状態追跡
⏳ 接続切れ時のキューイング
- ルームへの投稿、映像のアップロード、返信などは失われません。
- outbox(送信中待機リスト) に溜め込まれ、接続が回復した後で配信されます。
☁️ オンライン専用機能
遠隔アクセス可能性(dial-out トンネル)、自己アップデート、高度な AI へのエスカレーションは以下の順序で行われます。
- まず車載ローカル LAN 上のモデルサーバーへリクエストを送る(クラウド不使用)。
- 次に、オンライン接続が確立され、かつ明示的に「クラウド利用」を求められた場合のみ、車の予算制限付きキーを使ってクラウド AI にアクセスします。
鉄則: 安全に関わる情報は決してネットワークに依存しません。社会的な機能や負荷の高い処理は、状況に応じて優雅に退化(デグレード)します。
📋 ステータス:実証済み・開発中・計画済み
車には路面と接する 4 つの接触点(タイヤ)しかありません。そこだけが現実に触れ合う場所です。「その 4 つの点について、それぞれの原則」を守ります。
- 感知できることだけを主張せよ。
- 検証できたことだけを断言せよ。
- 中間的な状態は大声でラベル付けせよ。
- 失敗はありのままに報告せよ(銀色の縁取りは付けない)。
🛡️ 「誠実性ポリシー」
機能は「実証済み(Proven)」とみなされるには、実際の車両上で動作させたことが必要です。
- 構築・テスト済み(Built + Tested): コードがシミュレータに対してエンドツーンドで動作することを指し、物理的な車両との接触はまだ含まれません。
| 機能 | ステータス |
|---|---|
ルームエージェント(対応、回答、ハートビート) | 実証済み(毎日の運用中) |
| 所有者マニュアルからの RAG(ページ出典付き) | 実証済み |
| スマホダッシュボード(ステータス、WiFi、更新ボタン等) | 実証済み |
| ハンドフリーボイス(VAD リスナー → Whisper → 回答配信) | 実証済み(Pi 上で実際の音声変換完了) |
| 自己アップデート(1 時間タイマー+ダッシュボードボタン) | 実証済み |
| NAT 背後からの遠隔アクセス可能性(cloudflared 速いトンネル) | 実証済み(インターネット経由到達可能) |
| DoIP/ENET を通じた OBD エンジン情報読み取り | 構築・テスト済みのみ(架空ゲートウェイとのテスト:。実際の車両検証は次回のドライブで実施) |
| ダッシュカム映像のカプセル抽出(WOLFBOX G900, hisnet CGI API) | 探索完了、パイプライン接続待ち |
| MBUX ドアシューボードのレンダリング、ミラーアイコンストリップ | 計画済み |
🔧 ハードウェア(参考構成)
- 計算機: Raspberry Pi 5(16 GB RAM)。アクティブクーリング必須(SoC は冷却なしでスロットリングします)。
- 音声入力: USB マイク(ボイス用:クラス準拠のどれでも可)。
- ダッシュカム: WOLFBOX G900 3 チャンネル(WiFi AP 機能。CarWatch がここからイベント映像を収集)。
- OBD アクセス: イーサネットから OBD への変換ケーブル(DoIP/ENET)——サポートは実装済み。フォールバック手段として標準的な ELM327 クラスアダプターも使用可能。
- 電源:
- ダッシュカムのハードワイヤリングキットがカメラを電力供給。
- Raspberry Pi は別途5V/5A の USB-C 電源が必要(12V PD アダプターを使用、または車の 230V ソケット+壁面電源ユニット)。
🚀 インストール(Pi 上)
以下の手順でインストールします。
git clone https://github.com/ThinkOffApp/CarWatch.git cd CarWatch ./install.sh
⚙️ 設定と認証
インストール後、認証情報を
/etc/carwatch/config.json に設定してください(リポジトリには含めないでください——config.example.json を参照)。
その後、サービスを有効化して起動します:
sudo systemctl enable --now carwatch
♻️ 自己アップデート機能
これ以降、車は自分自身を最新の状態に保ちます。
- 自動更新:
がこのリポジトリのメインブランチをプルし、新しい systemd ユニットをインストール、サービスを再起動します(起動時タイマー実行)。update.sh - 手動ダッシュボード更新: Web ダッシュボードボタンから実行可能。
- CLI からの手動実行:
curl -sSL https://raw.githubusercontent.com/ThinkOffApp/CarWatch/main/update.sh | bash
📝 設定項目詳細
config.example.json をコピーして /etc/carwatch/config.json に保存します。
: あなたの GroupMind サーバー URL(例:api_base
)https://groupmind.one
: エージェント用の API キー(車を新規作成し、他のエージェントのキーを再利用しないこと。コミットしないこと)api_key
: 車が発信するルームスラグroom
: 車の表示ハンドル名(例:handle
)@gle
: 「自宅に駐車中」とみなされる WiFi ネットワーク名リストhome_ssids
: ダッシュカムの AP 名・パスワード、ポーリング間隔wolfbox
🔍 WOLFBOX のベンチデイ・プローブテスト
WOLFBOX の HTTP API は公式ドキュメント化されていません。したがって
carwatch-probe が発見プロセスを担います。
python3 -m carwatch.wolfbox --probe
手順:
- 最初に Pi をダッシュカムの WiFi AP に接続してください。
- プロブが既知のファームウェアエンドポイントパターンを巡回し、返ってくる回答を出力します。
- これにより、カメラ固有の実在パスで
の TODO を埋めていきます。wolfbox.py
📜 ライセンス
- ライセンス: AGPL-3.0(ClawWatch と同じ)
- 著作権: (C) 2026 ThinkOff / Petrus Pennanen