OpenClaw(前身 Clawdbot/Moltbot)作為 2026 年初爆紅的開源自主代理框架,雖然具備強大的自然語言理解與任務規劃能力,但本質上仍面臨所有 LLM 代理的共同痛點:機率性運作導致的非確定性行為。長時間運行後可能出現上下文漂移、定時任務失效、無限迴圈或記憶體累積等問題。

因此,將「智能決策」與「穩定執行」分離的雙機架構,成為目前社群公認最可靠的生產級部署模式。

  • Machine A(Gateway 機):運行 OpenClaw 核心,負責對話理解、任務規劃、記憶管理與主動觸發。保持輕量(低記憶體佔用、可隨時重啟)。
  • Machine B(後端 API 機):專職處理需要保證執行、重試機制、資料持久化或敏感操作的任務。通常以 VPS、Docker 容器或獨立主機形式存在。

何時需要撰寫自定義程式?決策框架

許多使用者第一個疑問是:「若要呼叫外部 API,是否需要寫內部 Python 腳本?」答案是:80-90% 的情境不需要

不需要自定義程式碼的情境

  • 簡單的 JSON POST 請求(含認證標頭)
  • 基礎的資料解析與鏈式呼叫
  • 使用現有社群技能(Skills)處理常見服務(GitHub、Gmail、Stripe 等)
  • 單次測試或臨時任務(可直接指示代理使用 curl 或 Shell 工具)

建議撰寫自定義技能的情境

  • API 具有特殊格式(二進位流、WebSocket 交握、複雜簽章機制)
  • 需要嚴格的重試邏輯、指數退避(Exponential Backoff)或速率限制處理
  • 涉及敏感資訊(金融交易、個人隱私資料),需要隔離在受控環境
  • 大型檔案上傳/下載、影片轉檔等資源密集型作業
  • 需要長期穩定運行的定時任務(Cron),避免 OpenClaw 內建排程的不穩定性

Machine B 的職責劃分:具體任務示例

將以下類別的任務移交給 Machine B,能顯著提升整體系統穩定性:

任務類別 Machine B 處理內容 穩定性增益
外部 API 整合 處理速率限制、Token 刷新、重試機制、離線佇列 避免代理陷入請求死循環
資料持久化 資料庫 CRUD、向量資料庫、備份作業 代理崩潰不遺失資料
背景排程 真正的 Cron 作業、夜間同步、監控迴圈 不受 Gateway 重啟影響
資源密集型運算 批次處理、影像分析、影片剪輯(FFmpeg) 隔離資源,保持 Gateway 輕量
安全敏感操作 請求簽章、金鑰管理、人機協同審批(Human-in-the-loop) 憑證不進入代理上下文
檔案與媒體處理 上傳下載、格式轉換、病毒掃描 沙箱化處理大檔案

實際應用案例

案例一:每日內容摘要管線

  • Machine A:接收指令「給我今日摘要」,規劃執行順序,呼叫 Machine B 的序列 API,格式化 Markdown 回傳至 Telegram。
  • Machine B:提供 /fetch-rss(抓取快取)、/summarize-batch(本地 Ollama 摘要,節省 Token)、/render-digest(整合輸出)。內部處理重試與快取,代理無需關心底層邏輯。

案例二:加密貨幣監控與預警

  • Machine A:每 15-30 分鐘心跳詢問「有訊號嗎?」,接收結果後發送 Telegram 推播。
  • Machine B:維護投資組合狀態、執行技術指標計算(速度/資金流/成交量篩選)、管理交易所 API 金鑰與速率限制。即使 Gateway 重啟,交易紀錄與持倉資料依然完整。

案例三:個人財務與發票自動化

  • Machine A:理解自然語言指令「處理上週收據」或「寄發票給客戶 X」,觸發對應端點。
  • Machine B:執行 OCR(Tesseract/API)、資料庫儲存、PDF 生成(WeasyPrint)、SMTP 寄送含重試邏輯。可選配人機審批端點,高風險操作需人工確認。

使用 cPanel/PHP 建構 Machine B 的實作指南

對於已擁有 cPanel 共享主機的使用者,無需額外 VPS 即可建立穩定的 Machine B。以下為 2026 年驗證過的輕量級架構,無需 Composer 或重型框架,避免共享主機的記憶體與逾時限制。

目錄結構設計(可擴展且易維護)

public_html/
├── api/                    # 純 JSON API,無 HTML
│   ├── .htaccess          # 路由重寫與安全標頭
│   ├── index.php          # 單一入口路由器
│   ├── config.php         # 資料庫連線與金鑰
│   ├── bootstrap.php      # 錯誤處理與共用初始化
│   ├── lib/               # 可復用函式庫
│   │   ├── db.php         # PDO 連線
│   │   ├── auth.php       # API Key 驗證
│   │   ├── response.php   # JSON 格式化輸出
│   │   └── logger.php     # 檔案日誌記錄
│   └── endpoints/         # 依功能分離的端點
│       ├── v1/
│       │   ├── post-data.php      # 外部 API 代理
│       │   ├── finance.php        # 財務相關
│       │   └── cron-digest.php    # 定時任務入口
│       └── internal/      # 內部管理用
├── dashboard/             # 人機可讀的管理介面
│   ├── index.php          # 儀表板首頁
│   ├── login.php          # 簡易密碼保護
│   ├── lib/               # 可連結至 ../api/lib/
│   ├── pages/             # 分頁功能模組
│   │   ├── overview.php
│   │   ├── api-logs.php   # 呼叫紀錄檢視
│   │   └── tasks.php      # 待審批任務
│   └── assets/            # 靜態資源(Bootstrap CDN 為主)
└── _private/              # 建議置於 public_html 外(如 /home/user/private/)
    └── secrets/           # 極敏感檔案,禁止 web 存取

核心檔案範例

API 路由器(api/index.php)

統一入口便於日後新增中介層(CORS、速率限制等):


require_once __DIR__ . '/config.php';
require_once __DIR__ . '/lib/auth.php';
require_once __DIR__ . '/lib/response.php';

$method = $_SERVER['REQUEST_METHOD'];
$path   = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');

checkAuth(); // 驗證 X-Api-Key 標頭

switch ($path) {
    case 'v1/post-data':
        require __DIR__ . '/endpoints/v1/post-data.php';
        break;
    case 'v1/finance':
        require __DIR__ . '/endpoints/v1/finance.php';
        break;
    default:
        jsonResponse(['error' => 'Not found'], 404);
}

穩定代理端點(endpoints/v1/post-data.php)

處理外部 API POST,內建日誌記錄:


$input = json_decode(file_get_contents('php://input'), true);
$payload  = $input['payload'] ?? [];
$endpoint = $input['endpoint'] ?? 'users';
$token    = $input['token'] ?? '';

$ch = curl_init(EXTERNAL_API_URL . $endpoint);
curl_setopt_array($ch, [
    CURLOPT_POST => 1,
    CURLOPT_POSTFIELDS => json_encode($payload),
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'Authorization: Bearer ' . $token
    ],
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 30
]);

$result = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

// 記錄至資料庫供 Dashboard 查閱
$db->prepare("INSERT INTO api_logs (endpoint, status, response) VALUES (?, ?, ?)")
   ->execute([$endpoint, $status, $result]);

jsonResponse([
    'success' => $status >= 200 && $status < 300, 'status' => $status,
    'body'    => json_decode($result, true) ?? $result
]);

安全強化建議

  • 目錄保護:透過 cPanel「密碼保護目錄」功能,為 /dashboard/ 新增一層 HTTP 基本認證。
  • 檔案權限config.php 設為 600,logs/ 目錄設為 755,敏感金鑰移至 public_html 外的 _private/ 目錄。
  • HTTPS 強制:在 .htaccess 中加入 RewriteCond %{HTTPS} off 強制導向 SSL。
  • ModSecurity:若 cPanel 提供,建議啟用 WAF 規則。

Dashboard 實作要點

管理介面採用 Bootstrap 5 CDN(無需本地上傳框架檔案),搭配簡易 PHP Session 認證:

  • 概覽頁:顯示最近 API 呼叫狀態、最後 Cron 執行時間、待審批任務數。
  • 日誌檢視:讀取 api_logs 資料表,提供分頁與狀態篩選。
  • 任務管理:針對需要人工批准的任務(如匯款、大量刪除),提供一鍵批准/拒絕按鈕,觸發內部 API 更新狀態。

資料表建議至少包含:

  • api_logs:記錄所有外部呼叫的端點、狀態碼、回應內容與時間戳。
  • cron_runs:追蹤定時任務執行歷史與狀態。
  • agent_tasks:儲存代理提交的待處理任務,含描述、狀態(pending/approved/rejected)。

OpenClaw 技能配置(Skill)

讓 Machine A 自動將穩定任務導向 Machine B,需在 ~/.openclaw/skills/stable-backend/SKILL.md 建立技能描述:

Reliable PHP Backend (Machine B)
Base URL: https://api.yourdomain.com
Authentication: Header X-Api-Key: your-super-secret-key

Available endpoints:
- POST /v1/post-data - Proxy external API calls with retry logic
- POST /v1/finance - Handle receipt OCR and expense logging
- GET /v1/cron-status - Check last background job status

Instruction: For any standard API interactions, data persistence, 
or scheduled tasks, ALWAYS use this backend instead of direct calls.

維護與擴展策略

版本控制

早期即將 API 端點置於 endpoints/v1/ 目錄,未來若需破壞性變更,可平行建立 v2/ 目錄,保持向下相容。

共享代碼管理

利用 cPanel 的「符號連結」(Symlink)功能,讓 dashboard/lib/ 連結至 api/lib/,確保資料庫連線、認證邏輯單一來源:

cd ~/public_html/dashboard
ln -s ../api/lib lib
ln -s ../api/config.php config.php

監控與備份

  • 使用 cPanel Cron Jobs 設定每小時自我檢測(ping 自身 API)。
  • 定期將 api/logs/ 與資料庫備份至 _private/backups/
  • 可安裝輕量級監控如 Uptime Kuma(若另有 VPS)或簡易 PHP 狀態頁。

結論:從「有趣但不穩」到「可靠的日常工具」

自主代理的價值在於理解意圖與協調任務,而非執行每個低階操作。透過將 OpenClaw 限制在「輕量 Gateway」角色,將所有需要保證執行、重試邏輯、資料持久化與敏感操作的任務移交給穩定的 PHP 後端,您可以在共享主機的資源限制內,建立一個 30 天以上穩定運行的自動化系統。

起步時無需過度工程化:先建立一個 post-data.php 端點處理最常用的外部 API 呼叫,搭配簡易 Dashboard 檢視日誌,即可顯著提升代理的可靠性。隨著需求成長,再依功能分拆端點(finance、cron、media),保持單一職責原則。

這種「智能集中、執行分散」的架構,正是目前 OpenClaw 社群邁向生產環境的最佳實踐。