OpenClaw + Telegram:自架 AI 助手的安裝與安全性設定

教學指南

AI 文章延伸

AI 幫你讀這篇文章

選擇平台後可直接帶入閱讀脈絡,快速整理重點、補齊盲點,並延伸到同站相關文章。

我們想要一個隨時可用的 AI 助手,直接在 Telegram 裡對話就能用,不需要開瀏覽器、不需要切換 app。OpenClaw 是一個開源的個人 AI 助手框架,跑在自己的機器上,支援接入 WhatsApp、Telegram、Discord、Slack 等二十幾種通訊平台。

這篇記錄我們從零開始安裝 OpenClaw、串接 Telegram Bot、設定安全性防護的完整過程,包含踩到的幾個坑。

安裝 OpenClaw

OpenClaw 需要 Node.js 22 以上。確認版本後,用 npm 全域安裝:

npm install -g openclaw@latest

安裝完跑一下版本確認:

openclaw --version
# 2026.3.2

裝好之後,執行 onboarding wizard 進行初始化設定:

openclaw onboard --install-daemon

wizard 會引導你設定 Gateway、模型認證和通訊平台。它會自動安裝一個 LaunchAgent(macOS)或 systemd service(Linux),讓 Gateway 在背景持續運作。

設定 OpenAI 模型認證

OpenClaw 支援多種模型供應商。我們選了 OpenAI,用 OAuth 方式認證——不用管理 API Key,直接用 ChatGPT 訂閱帳號。

在 onboard wizard 中選擇 OpenAI Codex (OAuth) 認證方式,流程是:

  1. wizard 給你一個瀏覽器 URL
  2. 在瀏覽器登入 ChatGPT 帳號授權
  3. 瀏覽器重導到一個 localhost URL(頁面會顯示錯誤,這是正常的)
  4. 把完整的 localhost URL 複製貼回終端機

完成後 OAuth token 會自動儲存並定期刷新,不需要手動管理。

如果你不想用 OAuth,也可以改用 API Key:

openclaw models auth paste-token --provider openai

然後貼上 sk-... 開頭的 API Key。

安全性設定:預設不夠安全

onboard wizard 跑完之後,我們打開 ~/.openclaw/openclaw.json 檢查設定,發現幾個需要手動補強的地方。

Gateway 認證

wizard 已經幫我們設了 token 認證,但我們額外確認了幾個關鍵設定:

{
  "gateway": {
    "bind": "loopback",
    "auth": {
      "mode": "token",
      "allowTailscale": false
    },
    "controlUi": {
      "allowInsecureAuth": false,
      "dangerouslyAllowHostHeaderOriginFallback": false
    }
  }
}

bind: "loopback" 確保 Gateway 只監聽本機,外部完全連不進來。allowInsecureAuth: false 則強制所有連線都要經過認證。

檔案權限

OpenClaw 的設定檔裡包含 token 和 bot 密鑰,預設權限可能太寬鬆。我們手動收緊:

chmod 700 ~/.openclaw/
chmod 600 ~/.openclaw/openclaw.json
chmod 600 ~/.openclaw/.env
chmod 700 ~/.openclaw/credentials/
chmod 700 ~/.openclaw/identity/
chmod 700 ~/.openclaw/devices/

這樣只有當前使用者能讀寫這些檔案。

日誌脫敏

在設定檔裡加上日誌敏感資訊過濾,避免 API Key 或 token 出現在 log 裡:

{
  "logging": {
    "redactSensitive": "tools",
    "redactPatterns": [
      "api[_-]?key",
      "token",
      "password",
      "secret"
    ]
  }
}

安全性檢查

設定完跑一次安全性審計:

openclaw security audit --deep

結果是 0 critical、2 warning。兩個 warning 分別是 Gateway 沒啟動(正常)和 Telegram 群組 allowlist 為空(還沒加入群組 ID)。沒有嚴重問題。

Sandbox 模式:隔離執行環境

OpenClaw 的 agent 可以執行 shell 指令、讀寫檔案。如果有人透過 Telegram 傳入惡意指令,理論上可以操作整台電腦。Sandbox 模式就是為了防這個。

~/.openclaw/openclaw.json 裡的 agents.defaults 區塊加入:

{
  "agents": {
    "defaults": {
      "sandbox": {
        "mode": "all",
        "scope": "agent",
        "workspaceAccess": "none",
        "docker": {
          "dangerouslyAllowReservedContainerTargets": false,
          "dangerouslyAllowExternalBindSources": false,
          "dangerouslyAllowContainerNamespaceJoin": false
        }
      }
    }
  }
}

Sandbox 需要 Docker。我們用的是 OrbStack,一個輕量的 Docker Desktop 替代方案。

三種模式的差別:

  • off:不隔離,所有 session 都直接跑在主機上
  • non-main:只有你自己的主 session 跑在主機上,Telegram 和群組的 session 跑在 Docker 容器裡
  • all:所有 session 都跑在 Docker 容器裡,包含你自己

我們一開始設成 all,後來發現這樣連自己的對話也被隔離,bot 完全無法幫忙操作本機的事。如果你的需求是「自己用可以操作電腦,但 Telegram 來的訊息要隔離」,non-main 更合適。

串接 Telegram Bot

建立 Bot

到 Telegram 找 @BotFather,用 /newbot 建立一個新的 bot,拿到 bot token。

在 onboard wizard 裡輸入這個 token,或直接寫進設定檔:

{
  "channels": {
    "telegram": {
      "enabled": true,
      "botToken": "你的-bot-token",
      "dmPolicy": "pairing",
      "groupPolicy": "allowlist",
      "streaming": "partial"
    }
  }
}

DM 配對機制

dmPolicy: "pairing" 是關鍵的安全設定。任何人第一次私訊你的 bot,都會收到一組配對碼,bot 不會處理他的訊息。只有你在本機執行核准指令後,那個人才能跟 bot 對話:

openclaw pairing approve telegram YOUR_CODE

這比直接開放好得多。你可以精確控制誰能用你的 bot。

群組安全

groupPolicy: "allowlist" 讓 bot 在群組中只回應白名單內的群組。加上 requireMention: true 可以進一步限制,bot 只在被 @ 的時候才回覆:

{
  "channels": {
    "telegram": {
      "groups": {
        "*": { "requireMention": true }
      }
    }
  }
}

串流回覆

streaming: "partial" 讓 bot 在生成回覆的過程中即時更新訊息,而不是等全部生完才一次送出。在 DM 裡它用 Telegram 原生的 draft API(Bot API 9.5 之後支援),群組裡則是用 preview message + editMessageText 的方式。

四個選項:

模式效果
off等全部生成完才送出
partial即時更新,DM 用 draft,群組用 edit
block舊版相容模式
progress等同 partial

啟動與停用

啟動 Gateway

openclaw gateway start

Gateway 以 LaunchAgent daemon 形式在背景運作,重開機也會自動啟動。

停用 Gateway

openclaw gateway stop

停掉後所有功能都會停——Telegram bot 不回覆、WebChat 關閉、CLI 的 agent 指令也無法使用。Gateway 就是 OpenClaw 的心臟。

如果只想關掉 Telegram 但保留其他功能:

openclaw config set channels.telegram.enabled false
openclaw gateway restart

狀態檢查

openclaw status --all

這個指令可以看到 Gateway 是否在跑、Telegram 連線狀態、agent 數量和 session 活動紀錄。

踩坑紀錄

整個設定過程中遇到三個問題:

  1. 沒有 OpenAI provider plugin — 執行 openclaw models auth login --provider openai 出現「No provider plugins found」。OpenAI 不是用 plugin 模式認證,要在 onboard wizard 裡選 OAuth,或用 paste-token 直接貼 API Key。
  2. Gateway 重複啟動 — 手動跑 openclaw gateway 時報錯 port 已被佔用。onboard wizard 結束後已經自動啟動了 daemon,不需要再手動啟動。用 openclaw gateway restart 就好。
  3. Sandbox 需要 Docker — 設了 sandbox mode 但 Docker daemon 沒開,非主 session 會直接失敗。確保 OrbStack 或 Docker Desktop 有在跑。

最終的安全性設定清單

設定說明
gateway.bindloopback只監聽本機
gateway.auth.modetoken需要 token 才能連 Gateway
controlUi.allowInsecureAuthfalse禁止不安全的認證
telegram.dmPolicypairingDM 需配對碼核准
telegram.groupPolicyallowlist群組白名單制
sandbox.modenon-mainallDocker 隔離執行環境
tools.elevated.enabledfalse禁止提權操作
logging.redactSensitivetools日誌脫敏
檔案權限600 / 700只有 owner 能讀寫

OpenClaw 的預設安全性對個人使用來說不算差,但如果你要接上 Telegram 這種對外的通訊平台,上面這些設定建議都做一遍。

作品案例

看看我們打造的產品與專案。從 WordPress 外掛到 AI 客服方案,每一個作品都是實戰經驗的累積。

瀏覽作品案例

服務項目

WordPress 開發、WooCommerce 電商、LINE 整合、AI 解決方案,依據你的需求提供最適合的技術服務。

瀏覽服務項目

Contact

聯絡我們

若你有任何技術需求、專案諮詢或合作想法,歡迎隨時與我們聊聊(首次諮詢免費)。

  • 想打造 WordPress 網站或 WooCommerce 電商
  • 需要 LINE 整合或 AI 功能導入
  • 有產品點子想找技術合夥人一起實現
  • 既有網站需要改版升級或效能優化
  • 尋找長期穩定的技術顧問合作夥伴