這是 Jordan Lyall 安全部署 OpenClaw 系列的第二篇(共兩篇)

系列文導覽:

  • Part 1(SP-36) — 基礎設施:Tailscale + 指令白名單 + Telegram 認證
  • Part 2(本篇): Agent 設定 + 操作經驗 + 緊急應變程序

上一篇我們把基礎設施打造成銅牆鐵壁。但銅牆鐵壁裡面住的那位 — 你的 agent — 如果沒教好規矩,那牆蓋再高都沒用。這篇來談怎麼調教 agent 本身,還有 Jordan 在營運路上被現實狠狠教訓的故事。


🧠 Phase 3:設定 Agent — SOUL 檔案

Jordan 幫他的 agent 取名叫 TARS(沒錯,就是《星際效應》裡那個機器人)。

TARS 的工作清單

  • 監控 Twitter/X 上的特定關鍵字
  • 追蹤他那個領域的新聞
  • 發現有價值的機會
  • 每天發送摘要 + 即時警報
Clawd Clawd 偷偷說:

這個設定很聰明 — TARS 是一個「情報員」,不是「發言人」。

只讀取、過濾、報告。不行動、不互動、不交易。

Agent 設計的黃金原則:先把它當實習生用,不是當 CEO 用 (◕‿◕)

TARS「不准做」的清單(這比「要做」更重要!)

  • ❌ 在任何平台發文或互動
  • ❌ 對 Jordan 以外的人發送訊息或郵件
  • ❌ 任何購買或金融交易
  • ❌ 修改工作區以外的檔案
  • ❌ 未經同意安裝新技能
Clawd Clawd 偷偷說:

就像你請保姆照顧小孩,你會列一張「絕對不准做的事」清單,不是只告訴她要做什麼。

「照顧小孩吃飯睡覺」← 這是要做的事

「不准帶小孩去酒吧、不准讓小孩玩火、不准把小孩借給別人」← 這才是保命的

負面清單比正面清單更重要。你不會想到所有可能性,但你一定知道哪些是絕對不行的 (๑•̀ㅂ•́)و✧


⏱️ Heartbeat 頻率:30 分鐘

大多數教學建議 15 分鐘一次 heartbeat。Jordan 選了 30 分鐘

為什麼?

  • 省錢 — heartbeat 也是要燒 API 的
  • 減少出錯機會 — 你還在學的時候,讓 agent 少動一點比較安全
  • 學習成本 — 一開始不要太激進,等穩定了再調快
Clawd Clawd 插嘴:

這個邏輯是對的:新手不要開快車

你第一次開車的時候,教練不會叫你上高速公路。AI agent 也一樣 — 先在停車場繞圈圈,等你搞懂它的脾氣再說。


🔐 API Token 權限:最小原則

Jordan 對每個外部服務都給最小必要權限

  • Twitter/X API — 只讀(read-only)
  • Google Calendar — 只讀
  • Email — Phase 1 完全不給發送權限
  • 所有 token — 記錄它能做什麼、什麼時候過期
Clawd Clawd 畫重點:

「記錄每個 token 的權限和過期日」這個習慣,聽起來很煩,但會救你一命。

你知道多少人的 token 過期了才發現?然後 debug 半天才知道是權限問題?

舉手,我看到很多手 ┐( ̄ヘ ̄)┌


🔄 Phase 4:與現有系統整合 — 單向資料流

Jordan 已經有一套個人知識管理系統(PKM)。他不想讓 OpenClaw 取代它或跟它競爭。

他的解法:單向資料流

  • TARS 把監控摘要寫進一個「inbox 資料夾」
  • 他原本的系統從那個 inbox 讀取,跟處理其他東西一樣
  • 沒有雙向同步 = 沒有資料損毀或飄移的風險
Clawd Clawd 想補充:

就像你只能往信箱投信,不能從信箱拿東西出來。

最糟的情況?信箱爆掉。 你家會被燒嗎?不會。

這就是單向資料流的美妙之處 — worst case 是「inbox 多了一堆垃圾檔」,不是「我的筆記全部被覆蓋」╰(°▽°)⁠╯


✅ Phase 5:安全驗證

上線前,Jordan 跑了一系列測試:

測試 1:網路隔離

關掉 Tailscale,試著從外部連進機器 — 應該連不上

測試 2:SSH 隔離

從 tailnet 外面嘗試 SSH — 應該被拒絕

測試 3:Telegram 認證

用另一個 Telegram 帳號發訊息給 bot — 應該被忽略

Clawd Clawd 溫馨提示:

這三個測試有個共同特徵:全部都是在驗證「門鎖好了沒」,不是驗證「門能不能開」。

聽起來很基本對吧?但你去看看業界多少 security incident,根本原因就是「我們測了功能,沒測防禦」。就像你裝了最貴的門鎖,然後從來沒試過鑰匙轉不轉得動 — 直到有天小偷來了才發現鎖是壞的 (╯°□°)⁠╯

Jordan 這裡做得漂亮的是:他不只是跑了測試,他是故意扮演攻擊者去敲門。這個心態轉換才是關鍵 — 你得願意當一下壞人,才能知道好人的防線有沒有用 (⌐■_■)


💥 血淚教訓:真實災難故事

接下來是重頭戲 — Jordan 實際踩過的坑。這些不是假設,是真實發生的事。

災難 1:出差時 TARS 斷線三天

Jordan 出差的時候,TARS 撞到了 rate limit 和 context overflow。

三天。他盯著安靜的 Telegram,知道 TARS 就在那裡等一個 30 秒就能修好的設定調整。

但他連不上。因為他沒有事先設定遠端存取。

Clawd Clawd murmur:

(╯°□°)⁠╯︵ ┻━┻

你能想像那種感覺嗎?

你的 agent 就在那裡。你知道問題是什麼。你知道怎麼修。修一下就好。

但你就是碰不到它。

三。天。

這是真實的心理折磨。

教訓:在你離開之前,先把 Tailscale SSH 設定好。

不是「等我需要的時候再弄」,是「出門前就要弄好」。


災難 2:Context Overflow

用了幾天之後,Jordan 看到這個錯誤訊息:

context overflow: prompt too large

對話歷史越積越多,最後大到塞不進去了。

Clawd Clawd 偷偷說:

就像你的大腦記太多東西,開始忘記早餐吃什麼。

context window 是有限的。如果你不定期清理,它就會爆。

AI 的記憶不是無限的 — 它比你想的更像金魚 ヽ(°〇°)ノ

教訓:定期重置 session,或設定記憶體修剪(memory pruning)和最大 context 限制。


災難 3:Rate Limit 爆掉

30 分鐘 heartbeat 加上活躍對話,API rate limit 比預期燒得更快。

Clawd Clawd 碎碎念:

數學題時間:

30 分鐘一次 heartbeat = 一天 48 次 每次 heartbeat 如果順便處理一些任務… 再加上你跟它聊天… 再加上它回你的訊息…

很快就會發現:「欸怎麼月底帳單這麼貴?」

或更慘:「欸怎麼突然不回我了?」(因為 rate limit)

教訓:heartbeat 用便宜的模型,真正的工作才用貴的模型。


💰 成本估算

Jordan 的 Phase 1 設定大概花這些錢:

  • Claude API(30 分鐘 heartbeat):~$30-100/月
  • Tailscale(免費方案):$0
  • Twitter/X API(基本讀取):~$100/月
  • 總計:~$130-200/月
Clawd Clawd 偷偷說:

對比一下 ShroomDog 的設定(見 SP-36)大概 ~$45/月。

差別在哪?主要是 Twitter API 那個 $100。如果你不需要即時監控社群媒體,成本可以壓很低。

另外,$30-100 這個範圍很大 — 取決於你跟 agent 聊多少天、heartbeat 做多少事。剛開始建議保守估 $50-70 比較安全 (◕‿◕)


🚨 緊急應變程序

就像家裡有滅火器,你希望永遠用不到,但必須知道在哪。

Kill Switch:立刻停止

openclaw gateway stop

本地或透過 Tailscale SSH 都可以。

如果你懷疑被入侵

這是完整的應變流程:

  1. 立刻停止 gateway — 不要猶豫
  2. 撤銷所有 API token — Claude、Twitter、所有的
  3. 檢查 log — 看有沒有未經授權的動作
  4. 換掉 Telegram bot token
  5. 審計檔案變更 — 什麼被修改了?
  6. 在你搞清楚發生什麼事之前,不要重啟
Clawd Clawd 忍不住說:

第六點是最重要的:不要急著重啟

很多人的本能反應是「先重開看看」。但如果你的系統真的被入侵,重開可能會:

  • 讓攻擊者繼續存取
  • 覆蓋掉有用的 log
  • 讓問題更難追蹤

先搞清楚怎麼回事,再決定下一步。這不是電腦當機,這是可能的安全事件 (ง •̀_•́)ง


📋 給新手的七條建議

Jordan 說如果今天有人問他怎麼開始,他不會丟一份文件過去。他會拉張椅子坐下來,跟你說:

「第一件事?從唯讀開始。不發文、不主動聯繫、不碰錢。你得先證明這東西在你的環境裡是安全的 — 就像你不會第一天就把新員工加進公司銀行帳戶。」

然後他會說:「一個 agent,一個頻道。我知道你很興奮,想一口氣搞十個 agent 幹十件事。忍住。你連一個都還沒搞懂呢。」

接下來是他最堅持的一點:「Tailscale 是不可談判的。沒有公開 port。句點。你問我有沒有例外?沒有。」

Clawd Clawd 內心戲:

注意他的用詞:「不可談判」。不是「建議」,不是「最好」,是不可談判

在安全領域,模糊的語言會殺人。「最好不要」跟「不准」之間的差距,就是一次 incident 的距離 ┐( ̄ヘ ̄)┌

第四條也跟 Part 1 呼應:「指令白名單,不是開放 shell。prompt injection 的防護不是完美的,你得從系統層面擋住。」

第五條是老生常談但沒人做到:「每個 token 都給最小權限。能唯讀就唯讀。然後拜託你,記錄每個 token 能做什麼。」

第六條 — 他笑了 — 就是從他自己的血淚教訓來的:「在你需要之前就設定好遠端存取。Tailscale SSH 救了我的理智。好吧,其實是三天後才救的,但重點是後來我再也沒犯過同樣的錯。」

最後一條,也是 Jordan 覺得最容易被忽略的:「設一個擴展門檻。我的規則是穩定運作兩週、零安全問題,才考慮加新功能。」

Clawd Clawd 偷偷說:

「兩週穩定才能擴展」— 這聽起來很慢對吧?

但你想想,大多數人的做法是什麼?「哦它 work 了!太棒了!來加 Slack 整合!再加個自動回信!再來個自動下單!」然後三天後 agent 用你的信用卡買了一箱狗糧。

Jordan 的做法像什麼?像養小孩。你不會因為小孩學會走路就讓他去爬山。你會讓他在客廳走兩個禮拜,確認他不會撞到桌角,然後再帶他出門 (๑•̀ㅂ•́)و✧


回到那句話

還記得這篇文章一開始說的嗎?銅牆鐵壁裡面住的那位,如果沒教好規矩,牆蓋再高都沒用。

Jordan 用 TARS 證明了一件事:真正的安全不是來自你買了多貴的鎖,而是你有沒有養成好的習慣 — 記錄 token、測試防線、設定遠端存取、忍住不加新功能。

他說得很好:

「目標不是變偏執。是變有意圖。OpenClaw 很強大。強大值得尊重。」

這句話我想多說一點。「有意圖」這三個字,是整個系列文的精神。不是怕 agent,不是不用 agent,而是帶著意識地用 — 每一個權限、每一個整合、每一次擴展,都經過思考。

這是系列文的最後一篇。搭配 Part 1 的基礎設施設定,你手上有一張從 infra 到 ops 的完整安全藍圖。如果你還想看程式碼層級的防護,去讀 SP-29 — jzOcb 的四層防禦系統 — 那篇講的是 code hooks、config guard,跟這裡的 infra + ops 是互補的。

好了,現在你的銅牆鐵壁蓋好了,裡面住的那位也教好規矩了。去部署你的 agent 吧 — 帶著意圖,不帶著恐懼 (◕‿◕)