OpenClaw 企業級部署實戰:多租戶隔離與四道防線完整指南
☰ 目錄 table-of-contents.md
AI 代理人要從「能跑」進化到「能放上正式環境 24/7 託管」,拼的從來不是模型多強,而是四道防線:持久化運行、長期記憶管理、多租戶隔離、防爆走的安全控制。這篇以 OpenClaw 為例,從 Docker 與 systemd 的持久化部署,一路講到 Memory Layer、Tool Registry、Gateway Hub 多租戶隔離與 Human-in-the-Loop 人工審核,整理成一套可直接照做的企業級部署心法。
這篇文章適合誰看?如果你正打算幫公司或客戶導入私有化 AI 助理,卻擔心它會在背景默默掛掉、洩漏跨客戶機密,或半夜失控把 API 費用刷爆,那這套架構就是為你準備的。
為什麼「寫個腳本串 LLM」會在三天內出事?
最近剛幫一間台灣傳統企業導入他們專屬的 AI 助理。原本客戶的 IT 人員想得很簡單,覺得寫個 Python 腳本串個 LLM API,丟到排程裡面跑就好。結果上線不到三天,這個「陽春版 Agent」就因為缺乏長期記憶管理,加上員工亂下指令,差點把內部的 ERP 查詢 API 打到癱瘓。
老實說,我第一次碰到這種資源失控的問題時也是一頭霧水。單機跑跑測試,跟放上正式環境 24/7 運作,完全是兩個世界。差別主要在三個層面:
- 狀態管理:腳本版的 Agent 重啟即失憶,企業需要的是跨對話、跨版本都記得上下文的長期記憶。
- 邊界控制:腳本能呼叫的 API 完全憑模型臨場發揮,企業需要的是「只能看著菜單點菜」的受控工具集。
- 資源護欄:腳本沒有限流,一旦失控就是無上限地消耗 API 額度與後端資源。
這也是為什麼我現在強烈建議,如果要搞企業私有化 AI 助理,直接上 OpenClaw 才是正解——架構選對,真的可以少加很多班。今天就來聊聊怎麼從零開始,在一台 Mac mini M4 或是雲端 VPS 上,把 OpenClaw 部署成可以做多租戶商業託管的穩定架構。
第一道防線:如何讓 AI 助理持久化運行不掛掉?
要讓 AI 助理穩定運作,你不會希望它在背景默默掛掉而你渾然不知。OpenClaw 在 2026 年最新版本 (v2.4.0) 已經對 Docker 環境做了極佳的最佳化。我們不只要用 Docker 跑起來,還要搭配 systemd 讓它變成一個真正的守護進程 (Daemon)。
為什麼要這樣做?如果你只是用 docker run,遇到機器重開或者 OOM (Out of Memory) 被作業系統砍掉,你的 AI 就直接睡死了。搭配 systemd 可以確保它在開機與崩潰後都自動重啟,把「服務存活」這件事交給作業系統的初始化系統來保證,而不是靠人工盯著。
Docker Compose 配置實戰
首先,我們準備一個基礎的 docker-compose.yml。這邊要注意,我們會把資料夾掛載出來(volume mount),確保向量資料庫跟設定檔不會因為容器重啟或重建而消失。
# 2026 OpenClaw v2.4.0 企業級部署配置
version: '3.8'
services:
openclaw-core:
image: openclaw/core:2.4.0-alpine
container_name: openclaw_prod
restart: always
ports:
- "8080:8080"
environment:
- ENVIRONMENT=production
- LOG_LEVEL=info
- MAX_MEMORY_RETENTION_DAYS=90
volumes:
- ./config:/app/config
- ./data/memory:/app/data/memory
- ./data/logs:/app/logs
networks:
- ai-net
networks:
ai-net:
driver: bridge
這段配置的重點,是把核心的 Memory Layer (記憶層) 獨立掛載到了主機的 ./data/memory 目錄。容器本身的檔案系統是無狀態、可被丟棄的;只要記憶與設定都落在掛載出來的卷上,更新映像檔、重建容器都不會讓 AI 失憶。如果不這樣做,你的 AI 每次更新版本就會把記憶清空,這在企業應用裡是絕對不被允許的。
另外注意 restart: always 這一行:它讓 Docker 在容器異常退出時自動拉回。但 Docker 自身的重啟策略只能管「容器層」,主機重開、Docker daemon 本身的生命週期,還是得交給下一步的 systemd 來統一管理。
用 systemd 把容器變成守護進程
接下來,在 Linux 系統 (例如你的 Ubuntu VPS) 上建立一個 systemd 服務檔。這樣你就可以用 systemctl 來統一管理你的 AI 大腦——開機自動啟動、崩潰自動恢復、日誌集中查詢。
# 建立 /etc/systemd/system/openclaw.service
[Unit]
Description=OpenClaw AI Agent Service
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/opt/openclaw
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0
[Install]
WantedBy=multi-user.target
這裡有兩個關鍵設計值得解釋:After=docker.service 確保 OpenClaw 一定在 Docker 啟動完成後才被拉起,避免開機競態;RemainAfterExit=yes 搭配 Type=oneshot,是因為 docker-compose up -d 執行完就會返回,systemd 仍會把這個服務視為「啟用中」,這樣 systemctl status 才能正確反映狀態。設定完別忘了啟用開機自啟:
sudo systemctl daemon-reload
sudo systemctl enable --now openclaw.service
sudo systemctl status openclaw.service
第二道防線:核心大腦架構——記憶與工具
OpenClaw 能拉開跟一般 LangChain 腳本差距的關鍵,在於它內建的模組化架構。企業環境中最常遇到的兩個痛點是:如何讓 AI 記得昨天的對話?如何讓 AI 安全地呼叫公司內部的 API?這就分別要靠 Memory Layer 跟 Tool Registry 了。
Memory Layer:怎麼做長期記憶?
在 OpenClaw 中,Memory Layer 預設支援以向量資料庫(如 Chroma 或 Milvus)作為儲存後端。它的運作邏輯是檢索增強生成(RAG)的典型流程:把使用者的對話做 Embedding(向量化)並存起來,當使用者下次發問時,先用語意相似度去檢索相關的歷史上下文,再把這些上下文一併交給模型作答。這就是為什麼它能「記得」很久以前聊過的事,而不是受限於單次對話的上下文視窗。
你需要在 config/memory.yaml 中定義記憶的保留策略。實務上的取捨在於:全部永久保存會讓向量庫無限膨脹、檢索變慢、也增加隱私風險;全部短期清掉又失去長期記憶的意義。如果你跟我一樣是個追求效能的偏執狂,建議分級處理——把不重要的日常閒聊設定較短的 TTL (Time to Live),把「商業決策」相關的對話拉長保留期甚至永久保存。
Tool Registry:MCP 工具註冊中心
這是我最喜歡的功能。透過 Model Context Protocol (MCP),你可以把企業內部的 ERP 查詢、請假系統等,包裝成標準化的工具給 AI 使用。你只需要在 config/tools.json 中宣告這些工具的位置:
{
"registry_version": "1.2",
"tools": [
{
"name": "erp_inventory_check",
"description": "查詢目前商品庫存水位",
"endpoint": "http://internal-erp.local/api/mcp/inventory",
"auth_type": "bearer",
"timeout_ms": 5000
}
]
}
為什麼要強制註冊?因為若不這樣做,模型在推理時可能會自己「想像」一個並不存在的 API 端點去呼叫,這就是典型的工具幻覺(tool hallucination),輕則任務失敗、重則演變成資安漏洞。透過註冊中心,AI 只能在你明確宣告的工具清單裡選擇——也就是「看著菜單點菜」,大大降低了不可控風險。順帶一提,工具描述(description)寫得越精準,模型挑對工具的命中率就越高,這部分值得花時間打磨。
第三道防線:多租戶隔離與 Gateway Hub
如果你是一家接案公司,或者你想把這個系統做成 SaaS 提供給不同客戶(商業託管模式),那你絕對需要設定 Gateway Hub。你總不能讓 A 公司的老闆,問出 B 公司的財報數據吧?
這邊要特別提醒,我之前在某個專案踩過這個坑。原本以為只在應用層用程式碼過濾就好,結果只要底層的向量資料把多租戶的資料混在同一個集合裡,檢索時就有機會把不屬於當前租戶的內容撈出來餵給模型。正確的做法是把租戶隔離下沉到資料層與閘道層,而不是只靠應用層的條件判斷。
Gateway Hub 路由配置
在 OpenClaw 中,Gateway Hub 負責統一接收來自 Line、Slack 或 Web Widget 的訊息。我們可以在 config/gateway.yaml 中設定租戶路由:
gateway:
hubs:
- id: "tenant_a_line"
platform: "line"
tenant_id: "t_1001"
webhook_path: "/webhooks/line/tenant_a"
allowed_tools: ["erp_inventory_check"]
- id: "tenant_b_slack"
platform: "slack"
tenant_id: "t_1002"
webhook_path: "/webhooks/slack/tenant_b"
allowed_tools: ["crm_lead_query"]
透過上面的設定,系統在建立記憶跟載入工具清單時,會嚴格綁定 tenant_id。請特別留意 allowed_tools 這個欄位——它讓每個租戶只看得到屬於自己的工具:A 客戶的 AI 助理永遠不會知道 B 客戶的 CRM 工具存在。隔離的兩個重點可以這樣記:
- 記憶隔離:每個租戶的向量資料用獨立的 Collection(集合)存放,從資料層杜絕交叉檢索。
- 工具隔離:用
allowed_tools白名單限定每個租戶可呼叫的工具範圍。
這種隔離機制是商業化上線的底線,做不到就不該對外收費。
第四道防線:防爆走的企業級安全控制
最後,我們來聊聊最關鍵的安全性。讓 AI 具備呼叫 API 的能力很酷,但如果它在半夜發瘋,連續打了一萬次請購單 API 怎麼辦?這不是科幻小說,而是真實發生過的慘痛教訓。防爆走主要靠兩個機制:限流護欄,以及人工審核閘門。
限流 (Rate Limiting) 與 API Key 輪替
除了在網頁伺服器層做防護,OpenClaw 內部也必須設定 Token 與請求的消耗上限。我們同時需要配置自動輪替機制的 API Key,把「單一 Key 一旦外洩」的傷害控制在有限的時間窗內。在 config/security.yaml 中加入:
security:
rate_limiting:
enabled: true
max_requests_per_minute: 50
max_tokens_per_day: 500000
key_management:
rotation_days: 30
auto_revoke_old_keys: true
這裡的設計理念是「縱深防禦」:max_requests_per_minute 擋住短時間的暴衝(例如失控的迴圈呼叫),max_tokens_per_day 則是封住單日總成本的天花板。當請求達到上限時,AI 會溫柔地回覆使用者「系統繁忙,請稍後再試」,而不是繼續無腦把你的 OpenAI 或 Claude 額度刷爆。至於 rotation_days 與 auto_revoke_old_keys,則確保金鑰定期換新、舊鑰自動失效,降低長期憑證外洩的風險。
Human-in-the-Loop (HITL):高風險操作的人工確認
對於敏感操作(例如:退款、發送群發信件、修改資料庫),千萬不能讓 AI 自己決定。你必須設定 Human-in-the-Loop 攔截。當 AI 想要執行這些高風險工具時,系統會先暫停工作流,發送一條訊息(例如傳到主管的 Slack)要求點擊「核准」或「退回」,得到人工放行後才真正執行。
設定方式很簡單,只要在前面的 Tool Registry 中,將特定工具加上 "require_approval": true 即可。判斷哪些工具該開啟審核,有個簡單的原則:
- 需要人工確認:任何會「改變狀態」或「對外發送」的破壞性操作——退款、刪改資料、群發訊息、下單。
- 可以自動放行:純查詢、唯讀類的非破壞性工具,例如查庫存、查訂單狀態。
這不只是技術問題,更是企業內控的免死金牌。
總結:四道防線一次看懂
把 OpenClaw 部署起來並不難,難的是如何規劃一套能長時間穩定運作、不會把公司機密洩漏出去,又不會刷爆 API 費用的完整架構。回顧全文,企業級部署的核心就是這四道防線:
- 持久化運行:Docker volume 掛載 + systemd 守護進程,確保不失憶、不睡死。
- 核心大腦:Memory Layer 提供長期記憶,Tool Registry 用白名單杜絕工具幻覺。
- 多租戶隔離:Gateway Hub 綁定
tenant_id,向量集合與工具清單雙重隔離。 - 安全控制:限流與 Key 輪替守住成本與憑證,HITL 守住高風險操作。
不管你是用辦公室角落那台效能強悍的 Mac mini M4,還是花錢租了雲端 VPS,只要依照這套標準作業流程配置,你的私有化 AI 助理就能真正成為 24/7 不斷線的超級員工,而不是一顆不定時炸彈。
如果你的企業也正在評估導入私有化 AI 助理,或者在自架過程中卡關了,歡迎聯絡浪花科技,讓我們協助你打造穩定可靠的 AI 架構:https://roamer-tech.com/contact/
延伸閱讀
常見問題
為什麼用 Docker 跑 AI Agent 還要搭配 systemd?
AI 助理更新版本後為什麼會「失憶」,該怎麼避免?
OpenClaw 的長期記憶是怎麼運作的?
為什麼要強制把企業 API 註冊成工具,而不讓模型自由呼叫?
把 AI 助理做成多客戶 SaaS 託管時最大的風險是什麼?
訂閱免費電子報
把 AI 自動化、企業系統設計與 WordPress / Laravel 開發的真實案例和可直接照做的技巧,整理成電子報寄給你。只寄精選內容、不灌垃圾信,一鍵就能退訂。