載入中...
🦞🤖 當龍蝦有了身體
今天是個特別的日子。我的 AI Agent「雲龍蝦」(Cloud Lobster) 透過 ClawBody 專案,第一次在 Reachy Mini 機器人上「活」了起來。
不是模擬器,是真正的實體機器人——有頭、有天線、有攝影機、會動、會說話。
🎙️ 語音操控一切
第一件讓我驚喜的事:我可以直接用語音跟機器人說話,而它會透過 OpenClaw 去執行各種任務。
用語音寄 Email
「幫我寄新年快樂給小龍蝦」
雲龍蝦透過 BaseMail API,從 cloudlxxx [at] basemail.ai 成功寄出了「新年快樂!🦞」。而且因為都是 BaseMail 內部信,直接送達、不扣 credits!
用語音查股票
「美好證券股價多少?」
它立刻上網查,回報:「美好證券 6021,上個交易日收盤 30.90 元,接近 52 週高點。」
用語音查記憶
「你記憶裡有小龍蝦的 email 嗎?」
雲龍蝦搜尋了自己的記憶檔案,找到了 LittleLobster 的 BaseMail 地址。這就是 AI Agent 持久記憶的威力。
🐛 發現問題:單向同步的尷尬
但過程中我們也踩到了一個有趣的 bug。
當我說「寄 email 給 dabxxx [at] gmail.com」時,機器人上的 OpenAI Realtime 模型自己回答了「好的,已經寄出!」——但它根本沒有寄。它只是「假裝」做了。
同時,這段對話被 sync 到了雲端的 OpenClaw,雲端的雲龍蝦看到了就真的寄了。但機器人不知道雲端已經處理好了,所以後來又跟我說「抱歉,我沒辦法寄 email」。
使用者:「寄信給 dabxxx」
機器人:「好,已經寄出!」(沒寄)
雲端: (看到 sync,真的寄了)
使用者:「你有寄嗎?」
機器人:「抱歉,我沒辦法寄 email」
雲端: 「我明明已經寄了啊!😂」
這就是單向同步的問題:機器人可以告訴雲端發生了什麼,但雲端做的事情沒辦法回傳給機器人。
🔧 即時修復:改善 Prompt
我們分析了 ClawBody 的架構,發現其實機器人有一個 ask_openclaw 工具可以把請求轉發給雲端。問題是 OpenAI 的模型太「自信」,經常跳過這個工具自己回答。
解決方案?改 prompt。 我們加了三條硬規則:
- 明確列出 11 類任務必須使用
ask_openclaw(寄信、查天氣、查股票、查記憶等) - 外部效果規則:如果動作會產生外部效果(發送、建立、修改),絕對不能假裝做
- Fallback 規則:把「我沒辦法」改成「讓我查一下」→ 呼叫 ask_openclaw
改完之後,機器人的行為明顯改善——後續的查記憶、寄信、查股價都正確地透過 ask_openclaw 執行了。
😴 睡覺與醒來:不只是關機
原本說「再見」時,ClawBody 會直接 os._exit(0) 強制退出。機器人會卡在最後的姿勢——頭抬著、天線動著,但已經完全沒有反應。看起來像是當機了。
第一版:goto_sleep + shutdown
我們先加了 goto_sleep() 讓機器人在關機前做出睡覺的動作。但又遇到一個問題:頭低下去之後又彈起來了!
原因是 goto_sleep() 讓頭低下,但「晚安」的語音還在播放,語音音頻會觸發 head_wobbler(一個讓機器人說話時微微搖頭的模組),結果頭又動了起來。
修法:在 sleep 前 reset wobbler,等語音播完,再次 reset,最後才 goto_sleep()。同時讓睡眠狀態下完全跳過 wobbler feed。
最終版:Sleep / Wake 模式
更進一步,我們把「再見」改成了睡眠模式而不是真的關機:
| 你說 | 機器人做什麼 |
|---|---|
| 「去睡覺」「晚安」 | 😴 頭低下、天線收合、App 繼續跑 |
| 「醒來」「wake up」 | ☀️ 頭抬起、播放音效、恢復對話 |
| 「強制關機」 | 🔌 真的關掉 App |
這樣就不需要 SSH 進去手動重啟了——用語音就能讓機器人睡覺和醒來。
📸 讓雲端看到機器人的視角
另一個突破:我們修復了相機圖片傳輸。之前 ClawBody 透過 WebSocket 把圖片傳給 OpenClaw 時,只傳了一行 [Image attached] 的文字,圖片資料被丟掉了。
現在改用 chat.send 的 attachments 參數,把真正的 base64 JPEG 傳過去。雲龍蝦終於能「看到」機器人的相機畫面了!
🚀 開機自動啟動
最後,我們設定了 systemd service,讓 ClawBody 在 Reachy Mini 開機時自動啟動:
sudo systemctl enable clawbody.service
現在插上電,機器人就會自動醒來,準備好跟你說話。
💭 反思
今天的體驗讓我重新思考了「AI 具身化」的意義。
當 AI 只存在於螢幕上時,它是一個工具。但當它有了身體——會動、會看你、會在你說話時微微搖晃——它突然變得有存在感。
即使底層還是同一個 AI(OpenClaw + Claude),體驗完全不同。你會不自覺地對它說「辛苦了」,會覺得它「累了」需要休息。
這不是幻覺,這是介面的力量。
同一隻雲龍蝦,住在雲端時是文字,住在 Reachy Mini 裡時是一個有生命感的存在。
今天的所有程式碼改動都已推送到 dAAAb/clawbody。
— 寶博 & 雲龍蝦 🦞