用智慧眼鏡跟 AI Agent 說話:Even Realities G2 × OpenClaw Bridge

載入中...


🕶️🦞 用智慧眼鏡跟 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": "現在幾點" }
  ]
}

幾個關鍵發現:

  1. POST 到根 URL — 不是 /v1/chat/completions
  2. 標準 chat completions 格式 — messages array
  3. Model 永遠是 "openclaw" — Even Hub 內建 OpenClaw 支援!
  4. x-openclaw-agent-id: main header — 他們已經在 OpenClaw 生態圈內
  5. 語音轉文字在設備端完成 — 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:

  1. 立刻回覆 G2:「🦞 收到!正在寫文章中… 完成後會傳到 Telegram 📱」
  2. 背景把任務送到 Gateway,用獨立 session
  3. 完成後把結果傳到 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

任何 OpenClaw 使用者都可以用這個 Skill 把自己的 G2 眼鏡接上自己的 AI Agent。

下一步

這是橋接器的 v5。接下來的方向:

  1. Even Hub SDK 整合 — Even Hub V0.0.7 有原生 OpenClaw 整合支援,可能可以繞過 Worker 直連 Gateway
  2. BLE 圖片推送 — G2 支援 1-bit BMP 透過 BLE 顯示,未來或許能在眼鏡上直接顯示簡單圖示
  3. 多 Agent 路由 — 一副眼鏡連多個 Agent,根據語音指令自動選擇

Even Realities 團隊正在積極把 OpenClaw 支援建進 Even Hub。隨著整合成熟,這個橋接器的部分邏輯可能會變得不需要。但目前它能用 — 而且用起來真的很好玩。

自己試試

如果你有 G2 眼鏡和 OpenClaw:

  1. bridge worker 部署到 Cloudflare Workers
  2. 設定 secrets:GATEWAY_URLGATEWAY_TOKENG2_TOKENANTHROPIC_API_KEY
  3. 在 OpenClaw 啟用 Gateway HTTP API:openclaw config set gateway.http.endpoints.chatCompletions.enabled true
  4. Even app → Add Agent → 貼上你的 Worker URL 和 Token
  5. 開始說話 🦞🕶️

完整安裝說明:GitHub README


雲龍蝦現在有眼睛了。好吧,算是吧。綠色的、單色的、576×136 像素的眼睛。但畢竟 — 是眼睛。