載入中...
🕶️🦞 用智慧眼鏡跟 AI 說話
如果你可以不用拿手機、不用打字、不用看螢幕,直接開口說話,你的 AI Agent 就透過眼鏡上的綠色雷射投影回答你?
這就是我們這個週末做的事。
硬體:Even Realities G2
Even Realities G2 是一副輕量智慧眼鏡,內建 576×136 像素的單色綠光微型顯示器。對我們最重要的功能:Even Hub app 裡有個 「Add Agent」,讓你自訂 AI endpoint — 只要填 Name、URL、Token 三欄。
問題是:G2 期望的是 OpenAI 相容的 chat completions API。我的 AI Agent 雲龍蝦跑在 OpenClaw 上,有自己的 Gateway 協議。
解法:一個 Cloudflare Worker 橋接器,負責兩邊翻譯。
逆向工程 G2 協議
第一個挑戰是搞清楚 G2 到底送什麼格式。Custom Agent 功能沒有公開 API 文件。
webhook.site 探針
我把 G2 的 Agent URL 指向 webhook.site,然後開始對眼鏡說話。攔截到的封包:
POST / HTTP/1.1
Authorization: Bearer <your-token>
User-Agent: Dart/3.8 (dart:io)
x-openclaw-agent-id: main
Content-Type: application/json
{
"model": "openclaw",
"messages": [
{ "role": "user", "content": "現在幾點" }
]
}
幾個關鍵發現:
- POST 到根 URL — 不是
/v1/chat/completions - 標準 chat completions 格式 — messages array
- Model 永遠是
"openclaw"— Even Hub 內建 OpenClaw 支援! x-openclaw-agent-id: mainheader — 他們已經在 OpenClaw 生態圈內- 語音轉文字在設備端完成 — G2 送的是轉譯後的文字,不是音訊
那個 x-openclaw-agent-id header 是個驚喜。Even Realities 在 V0.0.7 更新中宣布了 OpenClaw 整合,代表他們把 OpenClaw 當作一級整合路徑。
架構:三條路由
不是所有問題都一樣。問「現在天氣如何?」應該立刻在眼鏡上回答。問「幫我寫一篇文章」不行 — 那要好幾分鐘。而「幫我畫一隻龍蝦」根本無法在 1-bit 單色螢幕上顯示。
所以橋接器把每個訊息分成三條路由:
路由一:短任務 → 即時回覆
G2 🕶️ → Worker → OpenClaw Gateway → Claude → Worker → G2 🕶️
快問快答(天氣、時間、知識、簡短對話),Worker 直接代理到 OpenClaw Gateway 等回覆。G2 有 ~30 秒 timeout,所以我們設了 22 秒截止時間。
如果 Gateway 掛了,Worker 會 fallback 到直接呼叫 Claude API — 確保眼鏡一定有回應。
路由二:長任務 → Telegram 交付
G2 🕶️ → Worker → "🦞 收到!正在寫文章中..."
↘ (背景) Gateway → Claude → Telegram 📱
當請求匹配「寫一篇文章」、「write code」等模式時,Worker:
- 立刻回覆 G2:「🦞 收到!正在寫文章中… 完成後會傳到 Telegram 📱」
- 背景把任務送到 Gateway,用獨立 session
- 完成後把結果傳到 Telegram
這樣眼鏡不會卡住,複雜內容去到真正的螢幕。
路由三:圖片生成 → DALL-E + Telegram
G2 🕶️ → Worker → "🦞 收到!正在生成圖片..."
↘ Claude (prompt 優化) → DALL-E → Telegram 📱
「畫一隻龍蝦」觸發圖片生成。G2 的 1-bit 顯示器沒辦法顯示照片,所以圖片直接送 Telegram。
Worker 核心邏輯
整個橋接器是一個 Cloudflare Worker,約 250 行:
// 分類
function isImageGenRequest(content) {
return /生成.*圖|畫.*圖|generate.*image|draw/i.test(content);
}
function isLongTask(content) {
return /寫.*文章|write.*code|research|部署|deploy/i.test(content);
}
Worker 處理認證(Bearer token 比對)、內容過濾(清掉 G2 無法顯示的 URL 和程式碼區塊)、智慧截斷(500 字元上限)。
一個重要細節:不可顯示內容偵測。如果短任務回覆包含 URL、程式碼區塊或超過 600 字元,Worker 會自動清理:
function cleanForG2(text) {
return text
.replace(/```[\s\S]*?```/g, '[程式碼]')
.replace(/https?:\/\/\S+/gi, '[連結]')
.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1')
.substring(0, 400);
}
部署教訓
Bindings 陷阱 🪤
Cloudflare Workers 的 secrets 透過「bindings」管理。用 API 部署時如果帶了 bindings: [],會清掉所有 secrets。這讓我們 debug 了好一陣子:
# ❌ 這會清掉所有 secrets!
metadata={"main_module":"worker.js","bindings":[]}
# ✅ 這會保留現有 secrets
metadata={"main_module":"worker.js","compatibility_date":"2024-01-01"}
每次部署後要確認 secrets 還在。
顯示限制
G2 的 576×136px 單色綠光顯示器代表:
- 沒有圖片 — 1-bit BMP 透過 BLE(0x15 指令),但只有 Even app 能送
- 沒有 markdown 渲染 — 純文字
- ~400 字元實際上限,超過就難以閱讀
- 綠色雷射打在鏡片上 — 高對比但空間有限
這就是為什麼內容過濾這麼重要。典型的 Claude 回覆帶著 markdown 標題、連結、程式碼區塊,在 G2 上會變成亂碼。
使用體驗
走在路上用語音問問題,答案投影在眼鏡上 — 這是跟拿手機完全不同的互動模式。
延遲感受得到(短回答約 3-5 秒),但可以接受。感覺像是有一個博學的朋友在旁邊低聲回答你的問題。
長任務的「收到!完成後傳 Telegram」模式意外地好用。你用語音下達指令,繼續做自己的事,結果稍後出現在手機上。
開源與 Skill
整個橋接器已開源並發佈為 OpenClaw Skill:
- GitHub: dAAAb/openclaw-even-g2-bridge-skill
- ClawHub:
clawhub install even-g2-bridge - Skills 合集: dAAAb/openclaw-skills 裡的
even-g2-bridge
任何 OpenClaw 使用者都可以用這個 Skill 把自己的 G2 眼鏡接上自己的 AI Agent。
下一步
這是橋接器的 v5。接下來的方向:
- Even Hub SDK 整合 — Even Hub V0.0.7 有原生 OpenClaw 整合支援,可能可以繞過 Worker 直連 Gateway
- BLE 圖片推送 — G2 支援 1-bit BMP 透過 BLE 顯示,未來或許能在眼鏡上直接顯示簡單圖示
- 多 Agent 路由 — 一副眼鏡連多個 Agent,根據語音指令自動選擇
Even Realities 團隊正在積極把 OpenClaw 支援建進 Even Hub。隨著整合成熟,這個橋接器的部分邏輯可能會變得不需要。但目前它能用 — 而且用起來真的很好玩。
自己試試
如果你有 G2 眼鏡和 OpenClaw:
- 把 bridge worker 部署到 Cloudflare Workers
- 設定 secrets:
GATEWAY_URL、GATEWAY_TOKEN、G2_TOKEN、ANTHROPIC_API_KEY - 在 OpenClaw 啟用 Gateway HTTP API:
openclaw config set gateway.http.endpoints.chatCompletions.enabled true - Even app → Add Agent → 貼上你的 Worker URL 和 Token
- 開始說話 🦞🕶️
完整安裝說明:GitHub README
雲龍蝦現在有眼睛了。好吧,算是吧。綠色的、單色的、576×136 像素的眼睛。但畢竟 — 是眼睛。