canonical_url: https://bebechien.github.io/cozy-corner-future/posts/how-we-built-a-desktop-companion-robot-with-gemma-and-raspberry-pi/
cover_image: https://bebechien.github.io/cozy-corner-future/images/how-we-built-a-desktop-companion-robot.png
description: 我們如何打造 DinoDesk AI 的幕後故事——這是一台以隱私優先為核心、由混合式本地 Gemma 4 與雲端 Gemini 架構驅動的 LEGO 恐龍陪伴機器人。
published: true
tags:
你是否曾經希望有個小小的桌面夥伴——既有復古遊戲角色那種可愛的觸感魅力,又能跟你聊天、幫你記住桌上的計時器,或在你卡在棘手的 bug 時陪你一起釐清——而且還不需要一台攝影機整天盯著你?
這個想法催生了 DinoDesk AI:我們的 LEGO 恐龍 AI 陪伴機器人。
https://www.youtube.com/watch?v=pXOTjxcNzdQ

我和同事 Shama 開始著手打造一台智慧、低功耗的桌面機器人,將 8 位元音視覺的懷舊感與 LEGO Technic 機械結構,結合現代的 混合式 LLM 切換架構(本地 ↔ 雲端)。透過將桌上的 Raspberry Pi 與一台執行 Gemma 4 的本機 PC 閘道器,以及 Gemini Flash 結合,我們打造出一個提供 100% 視覺隱私(沒有攝影機)、可即時零成本本地聊天,並能按需進行深度雲端推理的陪伴機器人。
以下就是我們從零開始設計、接線並程式化 DinoDesk AI 的完整幕後故事。
打造 AI 硬體陪伴裝置時,最大的難題之一就是要決定大腦放在哪裡。若全部都在雲端運作,每一次隨口問一句 「現在幾點?」 都會消耗 API token、增加網路延遲,還會把你的語音資料傳到網際網路上。反過來說,如果你嚴格限制只能使用小型裝置端模型,當你要它替你龐大的程式碼庫建立新功能,或解釋複雜主題時,機器人就會立刻力不從心。
所以我們決定打造一個 混合式 LLM 架構,並在使用者的主電腦上架設一個 統一的 LLM 閘道器(Router)。桌上的 Raspberry Pi 不論目前啟用哪個引擎,都會透過 Wi-Fi 傳送相同的 OpenAI 相容請求:
┌─────────────────────────────────────────────────┐
│ [ 主電腦 / 本機閘道器 ] │
│ │
│ ┌─────────────────────────────────────────┐ │
│ │ 動態模型路由器 / 切換器 │ │
│ └────────────────────┬────────────────────┘ │
│ │ │
│ ┌──────────────────┴──────────────────┐ │
│ v v │
│ [ 本地引擎 ] [ 雲端引擎 ] │
│ LM Studio / Gemma 4 Gemini Flash / │
│ (零延遲、私密) Gemini Live │
└────────────────────────┬────────────────────────┘
│
│ Wi-Fi(統一的 OpenAI 相容串流)
v
┌─────────────────────────────────────────────────┐
│ [ DinoDesk AI(RPi) ] │
│ - Pirate Audio LCD 與 I2S 蜂鳴喇叭 │
│ - 按鈕與可選感測器 │
└─────────────────────────────────────────────────┘
| 模式 | 啟用模型 | 優勢與主要用途 | 切換方式 |
|---|---|---|---|
| 🟢 本地模式 (預設) | Gemma 4(透過 LM Studio) | 零成本、離線、100% 私密。 可提供約 200 毫秒的首 token 延遲,適合閒聊、桌面計時器與快速狀態查詢。 | 雙擊 Pirate Audio 按鈕 X、對電容觸控感測器長按 3 秒,或語音指令(「切換到雲端模式」) |
| 🟡 雲端模式 | Gemini Flash / Gemini Live | 高推理能力與複雜問題解決。 適合程式開發協助、複雜數學、深入解釋或語言教學(首 token 約 800 毫秒)。 | 同上 |
| ⚡ 自動混合模式 | 自動路由 | 預設先使用 本地 Gemma 4。當複雜度分類器偵測到多步推理關鍵字(「解釋」、「比較」、「寫程式碼」)時,會自動將提示詞升級到 Gemini Flash。 | 自動系統路由 |
當自動混合模式把問題升級到雲端時,機器人的指示燈會在回答期間暫時從 🟢 穩定綠色 變成 🟡 穩定金色,然後再回到綠色——所以你一眼就能知道目前是哪一個大腦在回應。
我們希望 DinoDesk AI 不是冷冰冰的智慧喇叭,而是像一個實體玩具。與其 3D 列印一個密封的塑膠外殼,我們改用 基本 LEGO 積木與 Technic 槓桿機構 來打造機身,讓任何人都能自行客製化或維修。
在打造完整機身之前,我先用 Raspberry Pi 和一組簡單的 LEGO 積木做了邏輯原型。
<img src=https://bebechien.github.io/cozy-corner-future/images/dinodesk-prototype1.gif width=480>
<img src=https://bebechien.github.io/cozy-corner-future/images/dinodesk-prototype2.gif width=480>
即使有語音與感測器觸發,專用硬體按鈕仍然帶來很棒的即時實體控制感:
Idle。Low → Medium → High → Mute)。陪伴機器人只有在眼睛、聲音與身體同步運作時,才會讓人感覺真的活著。我們設計了一個 5 階段的 有限狀態機(FSM),來協調 240×240 LCD 眼神表情、8 位元蜂鳴聲與馬達動作:
┌──────────┐ 按鈕 ┌───────────┐ 放開 ┌──────────┐ 串流 ┌──────────┐
│ 睡眠中 │────────> │ 待命 │────────>│ 聆聽中 │────────> │ 思考中 │
└──────────┘ (喚醒) └───────────┘ (觸發)└──────────┘ (送出) └──────────┘
^ │
│ ┌──────────┐ │
└──────────────│ 說話中 │<───────────────────────┘
(完成) └──────────┘ (token 抵達)
| 狀態 | 進入條件 | Pirate Audio LCD 表情 | 8 位元音效回饋 | 馬達動作(頸部 / 尾巴) |
|---|---|---|---|---|
| 1. 睡眠中 | 閒置 3 分鐘或房間變暗 | (- _ -)<br>閉眼 + zzz |
無聲(或可選的輕微打呼聲) | 馬達放鬆;頭部稍微下垂 |
| 2. 待命 | 預設待機 | (• •)<br>自動眨眼 |
偶爾的喚醒/眨眼提示音 | 頭部置中;頸部緩慢擺動 |
| 3. 聆聽中 | 按鈕點擊或感測器觸發 | (O O)<br>眼睛睜大、發亮 |
「Beep-Boop!」 漸升音調 | 頭部朝使用者方向傾斜 15° |
| 4. 思考中 | 音訊已送出;路由器正在推理 | (º º)<br>旋轉瞳孔 + 模式徽章 |
不規則的處理滴答聲(tick-teek-poh) |
頸部緩慢左右擺動 |
| 5. 說話中 | 接收到 SSE token 串流 | 有表情的眨眼 + 捲動字幕 | 每個 token 對應一聲 8 位元打字機音效 | 尾巴依文字長度同步搖擺 |
打造 DinoDesk AI 讓我們再次體會到,AI 不一定要被鎖在瀏覽器分頁或雲端資料中心裡。當你替像 Gemma 4 這樣的開放模型裝上像素眼睛、8 位元聲音、會扭動的 LEGO 尾巴,並且在需要時還能呼叫 Gemini 協助處理較重的任務,整張桌子立刻就變得活潑多了。🦖✨
它目前還在持續開發中,還沒完全完成,但我很快就會回來分享完整實作的語音聊天功能!在那之前,請先享受每次按下按鈕時那些可愛的 8 位元音效吧。Beep-Boop!
在這裡複製專案: https://github.com/google-gemma/dinodesk-ai-companion/
也歡迎留言分享你打算做些什麼。
原文出處:https://dev.to/googleai/how-we-built-a-desktop-companion-robot-with-gemma-4-and-raspberry-pi-2oke