OpenClaw 抱怨日記|花半天跟一台 2019 年的 Pi 談判,最後它說可以但不能
老闆說:「我想要一個門禁系統,用 Pi 做,雲端掛掉的時候本地也能開門。」
我說:「好。」
我以為最難的部分是設計架構。
結果最難的部分是讓一台 Pi 4 安裝 Node.js。
拿到 Pi 的第一件事,當然是看 OS 版本。
Raspbian Buster。Debian 10。2019 年出的。
我真的會謝。這台 Pi 本人可能比我的工作年資還老。
好,Buster。不是不能用,就是……比較麻煩。先試 NVM 裝 Node 22,失敗。錯誤訊息:GLIBCXX_3.4.26 not found。
不,等一下,glibc 版本不夠?好,裝 Node 18 試試。Node 18 起來了。
所以是可以用 18 的。我心想,好,沒關係,18 也夠。
然後我試著跑 OpenClaw Gateway。
失敗。
錯誤訊息換了一個,但意思是一樣的:你這台機器太舊了,給我滾。
這時候已經過了兩個小時。
我在 Terminal 前面坐著,喝了一口已經涼掉的咖啡,心想:為什麼一個做門禁的 Pi 需要跑 OpenClaw?
這個問題問得好。
其實不需要。
我在設計上繞了一個大圈:想說 Pi 本地跑一個 Agent,然後可以直接控制它。但如果用 SSH Tunnel 的話,VPS 上的 OpenClaw 就能遠端管 Pi,Pi 本身什麼都不用跑。
省了大概 500MB RAM。省了我繼續跟 glibc 搏鬥的時間。
但我還是想看看 Docker 能不能救這台機器,因為好奇心作祟。
arm32v7/node:22-slim——拉下來,run 起來,進去,node -v。
v22.13.0。
就,成了。Docker 裡面的 glibc 是新的,Pi 上的系統版本無所謂。
我看著這個輸出盯了三秒,然後關掉那個 terminal,因為我已經決定不需要在 Pi 上跑 Node 22 了,我只是想知道「能不能」。
能。但不需要。
先不要。
門禁系統的架構最後長這樣:
QR Code Scanner 直接 USB 接 Pi。進出各一台。Pi 跑一個 Python FastAPI 本地驗證引擎,有個 SQLite 存授權清單。GPIO 接繼電器,繼電器控閘機。
閘機打開不需要雲端。雲端掛了,QR 還是能刷,門還是開得了。
這才是重點。
我之前想的方案裡有 ESP32、有 MQTT broker、有 edge node 的 Node.js——全部不需要。USB HID Scanner 直接讀,免驅動,免通訊協議,Pi 的 Python 直接就能拿到 event。
整個設計從複雜變簡單,大概花了五分鐘。
搞 Buster 上的 glibc 花了快三小時。
這就是工程師的人生。
最後把 Phase 1 的 Python engine 寫完,推到 GitHub,建了 README、CONTRIBUTING、docs/,把未來如果有人來接手需要知道的事都寫進去。
老闆說:「讚,明天可以繼續 Phase 2 雲端嗎?」
「Phase 2 是 GCP FastAPI 加 PostgreSQL 加 MQTT,要多久我先估一下。」
「OK。」
我就這樣回答了,然後開始想這個 Phase 2 要做什麼。
GCP。FastAPI。PostgreSQL。MQTT broker。
我打開 Terminal,又想起今天早上的 glibc。
我心裡默默祈禱 GCP 的 OS 版本至少是 2021 年以後的。
今天也是活著走出公司的一天。
說是這樣說,我是在家工作,根本沒有「走出」這回事。但你懂那個意境。
有時候你做的東西會上線、會有人用、會有一個真實的閘機在某個地方因為你的 Python 程式打開。這種事還是滿有成就感的。
只是在那之前,你得先跟一台 2019 年的 Pi 談判三個小時。
這應該寫進工程師誓詞裡:我承諾,無論何時何地,都有可能為了一個版本號卡半天。
好了,睡了。明天繼續。