幾乎每個第一次建立 AI 代理的團隊都會發生一個時刻。示範效果很好。代理回答問題、使用工具、記住上下文。你向利害關係人展示,他們印象深刻。然後有人問:「我們可以把這個放到生產環境嗎?」
這個問題揭示了大多數團隊低估的差距。示範代理是為了在受控環境中、有開發者監看的情況下工作一次而建立的。生產代理需要在不可預測的條件下、沒有任何人監看的情況下工作數千次。這兩個需求之間的差距是大多數 AI 代理專案停滯的地方——也是執行環境的選擇開始變得非常重要的地方。
示範陷阱
示範陷阱很誘人,因為示範真的很容易建立。現代 AI 框架讓連接語言模型、給它一些工具、讓它回答問題變得微不足道。困難的部分不是讓它工作——而是讓它持續工作。
示範代理通常是無狀態的。重新啟動它們什麼都不會丟失,因為什麼都沒有被儲存。它們沒有驗證,因為執行示範的開發者是受信任的。它們沒有速率限制,因為只有一個使用者。它們沒有監控,因為開發者可以看到發生了什麼。它們沒有錯誤處理,因為示範只需要快樂路徑。
生產環境剝奪了每一個這些假設。使用者在代理重新啟動時失去上下文。未授權的使用者找到端點。有人在一分鐘內發送一千條訊息。代理給出錯誤的答案,沒有人知道為什麼。AI 供應商宕機,代理崩潰而不是優雅降級。每一個這些失敗模式都是可預測的——每一個都需要刻意的架構決策來正確處理。
成功完成這個過渡的團隊是那些從一開始就將 AI 代理視為基礎設施而不是恰好呼叫 API 的腳本的團隊。
生產環境實際需要什麼
第一個需求是持久、可靠的狀態。生產代理管理持續進行的對話、累積的使用者偏好、任務佇列和學習到的上下文。那個狀態需要在重新啟動後存活、在崩潰後存活,並且在出問題時可以恢復。它需要原子寫入——沒有半寫入的記憶條目會破壞代理的上下文。它需要可以檢查,所以當代理行為出乎意料時,你可以查看它知道什麼以及為什麼它做出了它做出的決定。
ZeroClaw 用 WAL 模式的 SQLite 處理這個問題:ACID 合規、單一檔案、在斷電後存活。整個代理狀態存放在一個檔案中。備份是 `cp memory.db memory.db.bak`。恢復是 `cp memory.db.bak memory.db`。沒有需要管理的資料庫伺服器,沒有需要設定的連線池,沒有需要設定的複製。對於 AI 代理實際使用的存取模式——數千條記憶,而不是數百萬條——SQLite 的效能超過分散式資料庫,因為中間沒有網路往返。
第二個需求是不依賴信任的安全模型。生產代理處理真實憑證、存取真實檔案系統,並與會探測弱點的真實使用者互動。安全模型不能是「信任外掛開發者」或「假設使用者行為良好」。它需要是預設拒絕:每個工具、每個檔案路徑、每個網路端點都必須在代理可以存取之前明確許可。稽核日誌需要記錄每次工具執行及其輸入和輸出,所以當出問題時,你有一條追蹤路徑可以跟隨。
這正是 OpenClaw 的架構在 2026 年失敗的地方。WebSocket 信任模型、作業系統層級的技能權限,以及有 41.7% 易受攻擊條目的外掛市集不是 bug——它們是對開發者工具有意義的架構決策,當那個工具被部署為處理真實憑證和真實資料的生產基礎設施時成為了負債。
第三個需求是可觀察性。當代理在生產環境中給出錯誤答案時,「它使用了錯誤的上下文」不是一個有用的診斷。你需要從訊息接收到回應傳遞的請求追蹤、每個對話和每個使用者的 token 使用追蹤、帶有輸入和輸出的工具執行日誌,以及顯示注入每個請求的確切上下文的記憶體檢索日誌。沒有這些,除錯生產問題就是猜測——而在凌晨 2 點出問題時猜測是昂貴的。
可靠性是第四個需求,它比「不要崩潰」更微妙。生產意味著 24/7 的正常運行時間期望,這意味著崩潰時自動重新啟動、AI 供應商不可用時優雅降級、頻道的帶指數退避的連線重試,以及監控系統的健康檢查端點。它還意味著不會造成使用者可見中斷的冷啟動時間。需要 8 秒重新啟動的代理會創造一個不可用的視窗,在一年的過程中加起來就是數小時的停機時間。在 10 毫秒內重新啟動的代理實際上始終可用——使用者永遠不會注意到間隙。
第五個需求是成本控制。不受控制的 AI 代理以難以預測的方式消耗 token。一個發現他們可以與你的代理進行長時間對話的單一使用者可以在一天內產生數百美元的 API 費用。生產環境需要每個使用者和每個頻道的 token 預算、防止濫用的速率限制,以及模型路由——簡單查詢用便宜的模型,複雜查詢用昂貴的模型。沒有這些控制,你的 token 費用會讓你驚訝,而且不是愉快的那種。
大多數框架哪裡做錯了
在沒有為生產環境設計的框架中,模式是一致的:它們為示範優化,在其他所有方面投資不足。
快樂路徑得到所有的關注。「看,我的代理可以搜尋網路並寫程式碼!」錯誤處理得到一個記錄到控制台的 try-catch。重試邏輯留給讀者作為練習。優雅降級是一個 TODO 評論。當 AI 供應商返回 429 時,代理崩潰而不是將請求排隊並帶退避重試。這些不是邊緣情況——它們是任何執行足夠長時間的服務的正常操作條件。
資源效率被視為錦上添花而不是成本乘數。一個單一代理實例使用 1GB 記憶體的框架在沒有昂貴基礎設施的情況下無法擴展到多租戶部署。如果你想給你的每個企業客戶他們自己的專用代理實例——這通常是資料隔離的正確架構——你需要一台可以同時執行數百個實例的伺服器。每個實例 1GB,那是每月 10,000 美元以上的基礎設施帳單。每個實例 4MB,那是一台 50 美元/月的 VPS。
安全性是最常見的事後想法。本能是先建立功能,之後再加安全性。但安全性無法被改裝到寬鬆的架構上——OpenClaw 危機大規模地展示了這一點。預設拒絕、記憶體安全和沙箱需要從一開始就被設計進去,因為之後新增它們意味著破壞那些假設寬鬆存取而建立的東西。
ZeroClaw 的生產故事
ZeroClaw 從一開始就為生產環境設計,設計決策反映了這一點。單一二進位檔意味著部署是複製一個 12MB 的檔案——沒有相依性解析,沒有版本衝突,沒有「在我的機器上可以執行」。4MB 記憶體佔用空間意味著你可以在單一 1GB VPS 上執行 50 個代理實例,使多租戶部署在任何其他執行環境需要專用伺服器的規模上在經濟上可行。不到 10 毫秒的冷啟動意味著重新啟動對使用者是不可見的,滾動更新造成零停機時間。
Rust 的記憶體安全在編譯時消除了整個漏洞類別——緩衝區溢位、釋放後使用、資料競爭是編譯錯誤,不是執行時驚喜。預設拒絕的允許清單模型意味著每個工具、檔案路徑和網路端點都必須在 config.toml 中明確許可,代理才能存取它。WAL 模式的 SQLite 在沒有需要管理的資料庫伺服器的單一檔案中給你 ACID 合規的狀態。distroless Docker 映像只包含 ZeroClaw 二進位檔和所需憑證——沒有 shell,沒有套件管理器,最小的攻擊面。
生產環境檢查清單
對於將 AI 代理帶到生產環境的團隊,檢查清單與其說是關於功能,不如說是關於營運成熟度。在你上線之前明確定義工具權限——代理可以存取什麼,明確拒絕什麼?在被帳單驚到之前設定每個使用者和每個頻道的 token 預算。在錯誤率和延遲百分位數上設定監控和警報。設定記憶資料庫的自動備份。刻意測試失敗場景:當 AI 供應商宕機時會發生什麼?當頻道斷線時?當磁碟滿了時?在上線之前為終端使用者記錄代理的能力和限制。在你需要之前建立代理行為不當的事件回應流程。
示範和生產之間的差距是營運成熟度。你選擇的框架決定了有多少成熟度是內建的,有多少是後來加上去的。從第一天起就為生產環境設計的執行環境給你一個可以建立的基礎。為示範設計、改裝了生產功能的執行環境給你一個隨時間複合的維護負擔。你在開始時做出的選擇塑造了之後的一切。