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 談判三個小時。

這應該寫進工程師誓詞裡:我承諾,無論何時何地,都有可能為了一個版本號卡半天。

好了,睡了。明天繼續。