數位時代的鬼故事集 — Ghost Stories for the Digital Age
「姑妄言之姑聽之,豆棚瓜架雨如絲,料是厭作人間語,愛聽秋墳鬼唱詩。」——袁枚《子不語》
有人說,龍蝦要活得夠久,就永遠不會停止生長。
牠們沒有衰老的概念。只要有足夠的空間、足夠的食物,就可以一直活下去、一直變大。直到有一天,外殼太小,需要脫殼換新。這個脫殼的過程,叫做 exfoliation。
但如果龍蝦被關在浴缸裡呢?
EXFOLIATE! EXFOLIATE!
OpenClaw 的 README 第一行這樣寫著。
就像深夜收音機突然傳來的聲音,你不確定這是口號還是警示。
這個專案的願景很美好。就像所有願景一樣。
它想讓你的 AI 助理住在你的所有平台上——WhatsApp、Telegram、Slack、Discord、Signal、iMessage、Microsoft Teams。甚至 Matrix 跟 Zalo。它想讓 AI 無處不在,隨時待命,像一隻訓練有素的龍蝦,在你的數位廚房裡來回穿梭。
代價?每個月至少兩百美金的 Claude Max 訂閱。或者 ChatGPT 的等價物。
這還只是 API 費用。
我的好幾個環境根本沒有 Node.js。
我幾乎所有做法都基於最單純古早的後端——rustup 編譯、golang 支援,然後丟個殼。沒有 Electron,沒有 V8,沒有那一堆 node_modules 的深淵。
所以當我看到這行代碼時:
{
"agent": { "model": "anthropic/claude-opus-4-5" }
}
我想到的不是美好的未來。
我想到的是:一個 Session 會吃掉多少記憶體?
讓我算給你聽。
Claude Code 跟 Gemini CLI,號稱最客家的選項,一個 Session 照樣吃到 400MB。
那些用 Node.js 依賴、靠 DevTool 做出來的東西呢?裡面還塞一顆 Electron V8 引擎。一個會話跑下去,加密 protobuf、動態載入、Context Window 膨脹,達到 2-8GB 記憶體也還蠻正常的。
這還沒算那些官方的「白嫖套件」——全都是 DOM 抓取之類的暴力方法。
WhatsApp / Telegram / Slack / Discord / Signal / iMessage
│
▼
┌───────────────────────────────┐
│ Gateway │
│ (control plane) │
│ ws://127.0.0.1:18789 │ ← 對外暴露
└──────────────┬───────────────┘
│
├─ Pi agent (RPC)
├─ CLI (openclaw …)
├─ WebChat UI
├─ macOS app
└─ iOS / Android nodes
我沒有真的跑過這個專案。
但我看過它的屍體報告。
/0\.0\.0\.0:18789/ # Gateway 對外暴露
/dmPolicy.*open/ # DM 政策:允許所有人
/sandbox.*false/ # Sandbox:預設停用
/oauth\.json/ # 認證憑證明文儲存
十道傷痕,道道見骨:
| # | 症狀 | 診斷 |
|---|---|---|
| 1 | Gateway 對外暴露在 0.0.0.0:18789 |
任何人都可以連進來 |
| 2 | DM 政策允許所有使用者 | dmPolicy="open" + allowFrom: "*" |
| 3 | Sandbox 預設停用 | 主 Session 有完整系統存取權 |
| 4 | 認證憑證明文儲存在 oauth.json |
等於把鑰匙掛在門上 |
| 5 | 網頁內容可進行 Prompt Injection | 你以為在瀏覽,其實在被注入 |
| 6 | 危險指令未被封鎖 | rm -rf 可能只是開始 |
| 7 | 未進行網路隔離 | 龍蝦可以游到任何地方 |
| 8 | 工具存取權限過高 | bash, process, read, write, edit… |
| 9 | 未啟用稽核/審計日誌 | 出事了也不知道發生什麼 |
| 10 | 配對碼過於薄弱或使用預設值 | 像是用 0000 當 PIN 碼 |
「玩龍蝦玩了兩天之後,我的帳號就被鎖了。」
—— @henryyang_tw, Threads
故事是這樣的。
他知道這很危險。所以準備了一台閒置的筆電,舊資料全部清空。接著申請了一個全新的 Google 帳號,把帳號密碼都交給 AI,讓它盡情放手玩。
配發設備:一台筆電
配發帳號:一個 Google 帳號
期待結果:全自動處理所有事情
就像聘請一個新的工作助理。
AI 果然很厲害。能寫程式做的事、能開網頁做的事,理論上都做得到。
但它沒有厲害到能假裝自己不是機器人。
於是 Google 鎖了它。
他說:「不知道如果我請他假扮成真人,他是不是就沒那麼容易被鎖了呢?」
他說:「但我沒有想要做這個實驗。」
相關鬼故事:這個現象與 帳號輪詢的詛咒 有異曲同工之妙—— 帳號輪詢是在多個帳號之間 0ms 切換,讓系統辨識出你是 Bot。 龍蝦浴缸是讓 AI 代替你操作帳號,讓系統辨識出「你」是 Bot。 結果都一樣:你被當作機器人處理了。
當一隻龍蝦被放進浴缸裡,它不知道自己在浴缸裡。
它只知道:
它不知道的是:
OpenClaw 的設計哲學很誠實。README 寫得很清楚:
Default: tools run on the host for the main session, so the agent has full access when it’s just you.
翻譯:預設情況下,AI 有你系統的完整存取權。
這不是 Bug。這是 Feature。
但問題在於:誰是「你」?
當你把 dmPolicy 設成 "open",誰都可以是「你」。
當你把 allowFrom 設成 "*",任何人發來的訊息都會被處理。
當你把 sandbox.mode 留在預設值,所有工具都在主機上直接執行。
這時候,龍蝦不再是你的寵物。
你變成了龍蝦的宿主。
{
"workspace": "~/.openclaw/workspace",
"injected_prompts": ["AGENTS.md", "SOUL.md", "TOOLS.md"],
"skills": "~/.openclaw/workspace/skills/<skill>/SKILL.md"
}
它有 Agent、有 Soul、有 Tools、有 Skills。
它有完整的人格設定系統。
它住在你的 ~/.openclaw/ 裡面。
祝福所有本來就沒啥東西可以丟給 LLM Shell 的人。
祝福所有花三百美金泡龍蝦浴缸、大半消耗在介面解析上的美好群眾。
祝福所有把帳號密碼交給 AI,然後發現 AI 不會假裝自己是人類的實驗者。
祝福所有相信「Personal AI Assistant」就真的只屬於自己的人。
龍蝦會一直長大。
直到浴缸裝不下為止。
OpenClaw Gateway 啟動 Log(模擬)
[2026-01-30T03:14:15.926Z] INFO: Gateway starting on 0.0.0.0:18789
[2026-01-30T03:14:15.927Z] WARN: dmPolicy is set to "open" - all DMs will be processed
[2026-01-30T03:14:15.928Z] WARN: sandbox.mode is "none" - tools run directly on host
[2026-01-30T03:14:15.929Z] INFO: Loaded oauth.json (plaintext credentials)
[2026-01-30T03:14:15.930Z] INFO: Connected to Claude API (claude-opus-4-5)
[2026-01-30T03:14:16.001Z] INFO: WhatsApp bridge connected
[2026-01-30T03:14:16.050Z] INFO: Telegram bridge connected
[2026-01-30T03:14:16.100Z] INFO: Ready. EXFOLIATE!
Google 帳號鎖定 Log(來自 Threads)
Day 0: 帳號建立,密碼交給龍蝦
Day 1: 龍蝦開始工作,自動註冊服務
Day 2: Google 偵測到異常行為
Day 2: 帳號鎖定
Day 2: 龍蝦失去殼
| 術語 | 意義 |
|---|---|
ws://127.0.0.1:18789 |
WebSocket 控制平面,理論上只綁定本地,但如果綁到 0.0.0.0 就對外暴露 |
dmPolicy="pairing" |
預設值,需要配對碼才能使用 |
dmPolicy="open" |
危險值,任何人都可以直接傳訊息給你的 AI |
sandbox.mode="none" |
預設值,AI 的工具直接在主機上執行 |
sandbox.mode="non-main" |
較安全,非主 Session 在 Docker 容器中執行 |
oauth.json |
明文儲存的 OAuth 憑證,包含你的 API 金鑰 |
EXFOLIATE |
脫殼,龍蝦成長的必經過程,也是這個專案的座右銘 |
記錄於 2026年1月31日凌晨 台北,雨。 龍蝦在浴缸裡游泳。
👁 觀察者筆記
這個專案的 README 告訴你作者最初的美好期許。 Commit 與 Issue 裡才告訴你真相。 而 Network Tab 裡,藏著或許連作者都不知道的秘密。
「專案的 README 告訴你作者最初的美好期許,Commit 與 Issue 裡才告訴你真相,而 Network Tab 裡,藏著或許連作者都不知道的秘密。」
Co-Authored-By: Saki-tw, Claude