NVIDIAGPU多 Agent編排OpenClawOllamaCUDA架構設計

NVIDIA GPU 上的多 Agent 編排:自治 AI 艦隊的架構設計

· 17 分鐘閱讀

NVIDIA GPU 上的多 Agent 編排

「4 隻 Agent,1 張 GPU,0 個衝突。秘密在架構,不在硬體。」

在 GPU 上跑一隻 AI Agent 很簡單。跑四隻 Agent 共用同一張 GPU 而不衝突、不洩漏上下文、不搶資源 — 這是架構問題。

Ultra Lab 已經在一張 NVIDIA RTX 3060 Ti 上跑了 4 隻 Agent 的生產工作負載。這篇文章涵蓋編排架構:Agent 如何共用 GPU 資源、維持隔離上下文、排程任務不碰撞、和自動從故障中恢復。


問題:單 GPU 多 Agent

多隻 Agent 共用一張 GPU 時,你面對三個挑戰:

  1. 資源爭搶:兩隻 Agent 同時請求推論,要嘛排隊(慢),要嘛崩潰(OOM)
  2. 上下文隔離:Agent A 的客戶資料絕不能洩漏到 Agent B 的社群貼文
  3. 排程:4 隻 Agent 的 105 個每日任務需要不碰撞地執行

大多數多 Agent 框架用的方案是給每隻 Agent 自己的 GPU 或 API endpoint。我們沒有這個奢侈 — 只有一張 8GB VRAM 的 RTX 3060 Ti。所以我們在架構上解決。


架構概觀

┌──────────────────────────────────────────────────┐
│                   排程層                          │
│          (25 個 systemd 定時器,交錯執行)          │
├──────────────────────────────────────────────────┤
│                                                   │
│  ┌────────────────────────────────────────────┐   │
│  │        OpenClaw Gateway (:18789)            │   │
│  │     請求路由 + Agent 工作區管理              │   │
│  ├────────────────────────────────────────────┤   │
│  │                                             │   │
│  │  ┌─────────┐ ┌─────────┐ ┌─────────┐      │   │
│  │  │ Agent 1 │ │ Agent 2 │ │ Agent 3 │ ...  │   │
│  │  │ 上下文  │ │ 上下文  │ │ 上下文  │      │   │
│  │  │ (隔離)  │ │ (隔離)  │ │ (隔離)  │      │   │
│  │  └─────────┘ └─────────┘ └─────────┘      │   │
│  │                                             │   │
│  ├────────────────────────────────────────────┤   │
│  │         Ollama Server (:11434)              │   │
│  │      單一模型,依序推論                      │   │
│  │      ultralab:7b on RTX 3060 Ti CUDA       │   │
│  └────────────────────────────────────────────┘   │
│                                                   │
│  ┌────────────────────────────────────────────┐   │
│  │       62 個腳本(bash + node)              │   │
│  │   資料同步、健康檢查、互動任務               │   │
│  └────────────────────────────────────────────┘   │
│                                                   │
│  ┌────────────────────────────────────────────┐   │
│  │     19 個情報檔案(.md)                    │   │
│  │   預運算上下文,執行時注入                   │   │
│  └────────────────────────────────────────────┘   │
└──────────────────────────────────────────────────┘

三層協同運作:

  1. 排程:systemd 定時器把任務交錯分佈在一天之中
  2. 閘道:OpenClaw 路由請求到正確的 Agent 工作區
  3. 推論:Ollama 在 GPU 上一次服務一個請求

第一層:Agent 隔離

每隻 Agent 有自己的工作區 — 一個包含隔離上下文檔案的目錄:

~/.openclaw/agents/
├── main/           # UltraLabTW(CEO)
│   ├── IDENTITY.md
│   ├── STRATEGY.md
│   ├── CUSTOMER-INSIGHTS.md
│   ├── POST-PERFORMANCE.md
│   └── ...(19 個檔案)
├── mindthread/     # MindThreadBot
│   ├── IDENTITY.md
│   ├── MINDTHREAD-DATA.md
│   └── ...(檔案子集)
├── probe/          # UltraProbeBot
│   ├── IDENTITY.md
│   ├── COMPETITOR-INTEL.md
│   └── ...
└── advisor/        # UltraAdvisor
    ├── IDENTITY.md
    └── ...

隔離原則

每個 Agent 工作區只包含與其角色相關的上下文檔案:

  • CEO Agent:拿到全部 — 客戶洞察、策略、產品資料、績效指標
  • MindThread Agent:拿到 MindThread 產品資料 + 社群表現。沒有客戶洞察。
  • Probe Agent:拿到競品情報 + 安全研究。沒有客戶資料。
  • Advisor Agent:拿到顧問相關上下文。最少的跨 Agent 資料。

這不只關乎隱私 — 還關乎 token 效率。隔離前,所有 Agent 載入同樣的 19 個檔案(12K tokens 的上下文)。分離上下文後,非 CEO Agent 載入 6-8 個檔案(4K tokens)。上下文大小減少 67%,直接改善推論速度和品質。


第二層:任務排程

25 個 systemd 定時器編排每日工作負載。關鍵洞察:全部交錯

自動發文排程(UTC+8)

02:00  UltraLabTW    autopost #1
03:00  MindThreadBot autopost #1
04:00  UltraProbeBot autopost #1
─── 早間批次完成 ───
08:00  UltraLabTW    autopost #2
09:00  MindThreadBot autopost #2
10:00  UltraProbeBot autopost #2
10:15  UltraLabTW    engage(互動)
10:30  MindThreadBot engage
10:45  UltraProbeBot engage
─── 互動批次完成 ───
14:00  UltraLabTW    autopost #3
15:00  MindThreadBot autopost #3
...
23:00  UltraLabTW    daily-reflect(每日反思)

為什麼交錯?

Ollama 一次處理一個推論請求(NUM_PARALLEL=1)。如果兩隻 Agent 同時提交請求,一個排隊等。在 8GB GPU 上,平行推論會 OOM 崩潰。

自動發文間隔 1 小時、互動任務間隔 15 分鐘,保證:

  • 任務間最大 GPU 閒置時間(模型透過 KEEP_ALIVE=2h 保持載入)
  • 不會有佇列堆積
  • 可預測的執行順序,方便除錯

第三層:情報管線

19 個情報檔案是秘密武器。它們提供預運算的上下文,生成成本為零 LLM token:

資料流

外部來源              腳本(0 LLM 成本)         Agent 工作區
─────────────    →    ───────────────    →    ──────────────
Firestore 詢問        sync-customer-insights   CUSTOMER-INSIGHTS.md
MindThread Firebase   sync-mindthread-data     MINDTHREAD-DATA.md
Moltbook API          collect-platform-data    platform-intel.md
HN / RSS feeds        blogwatcher + hn-trending RESEARCH-NOTES.md
Git commit 歷史       dev-to-social            recent-commits.md

每個腳本跑在 systemd 定時器上,從外部來源抓資料,寫成結構化 Markdown 檔案。Agent 執行時,工作區檔案被注入為上下文 — LLM 讀到的是即時、真實的資料,不需要任何 API 呼叫。

成本:$0

這很關鍵。情報管線完全跑在 bash 腳本、Node.js API 呼叫、和檔案 I/O 上。不需要 LLM 推論。Agent 免費獲得豐富的上下文。


故障恢復

105 個每日任務,東西一定會壞。我們的恢復架構:

等級 1:Ollama 健康檢查(每 10 分鐘)

curl -sf http://localhost:11434/api/tags > /dev/null || {
  systemctl restart ollama
  sleep 10  # 等模型重新載入
}

Ollama 偶爾會在連續運行 ~72 小時後掛掉。自動重啟 + 模型重載 ~8 秒。不需要人工介入。

等級 2:Gateway 看門狗(每 2 分鐘)

OpenClaw gateway 有自己的健康檢查。如果崩潰,systemd 透過 Restart=always 自動重啟。

等級 3:任務級錯誤處理

每個 cron job 設定 delivery.mode: "failure-alert" — 任務失敗時發通知到 Discord。成功時靜默。沒收到通知 = 一切正常。

等級 4:速率限制偵測

所有互動腳本偵測 API 速率限制並優雅跳過,而不是把錯誤訊息當貼文發出去:

if echo "$response" | grep -q "RATE_LIMIT\|429\|quota"; then
  echo "Rate limited, skipping"
  exit 0  # 乾淨退出,不觸發故障警報
fi

擴展模式

模式 1:加更多 Agent(同一張 GPU)

加第 5 隻 Agent 不需要更多 GPU。需要的是:

  1. 新的工作區目錄,包含角色特定的上下文檔案
  2. 新的 systemd 定時器,交錯進現有排程的空隙
  3. OpenClaw 中的新 Agent 設定

GPU 使用率不變 — 任務是依序的,一個 7B 模型處理所有 Agent。

實際上限:目前排程約 ~8 隻 Agent(24 小時 / 每隻 Agent 每天 3 個任務 = ~8 隻有舒適間隔)。

模式 2:加更多 GPU(同樣的 Agent)

加第二張 RTX 卡可以:

  • NUM_PARALLEL=2:兩個同時推論串流
  • 不需要交錯 — Agent 可以平行執行
  • 或者:主 GPU 跑更大模型(14B),副 GPU 處理溢出

模式 3:混合本地 + 雲端

我們目前的做法:95% 任務跑本地 GPU,5%(複雜分析)送雲端 API。隨工作負載成長自然擴展 — 為例行任務增加 GPU 容量,保留雲端 API 做前沿推理。


我們學到的

1. 上下文隔離 > 模型大小

乾淨、隔離的上下文配 7B 模型,效果比雜亂、共享的上下文配更大模型好。Agent 品質與上下文品質成正比,不是模型大小。

2. 預運算上下文是免費情報

情報管線(19 個 .md 檔案)讓 Agent 有即時感知,成本 $0。這是我們架構中 ROI 最高的投資。

3. 依序處理對 Agent 夠用

Agent 不需要即時推論。社群貼文可以在佇列裡等 30 秒。在單 GPU 上依序處理,對自治 Agent 工作負載完全足夠。

4. systemd > 一切

我們試過 cron、PM2、自製排程器。systemd 定時器搭配 Persistent=true 和自動重啟,是我們用過最可靠的排程系統。30 天零漏掉的任務。

5. 靜默是最好的警報

只設定失敗通知。沒收到警報 = 一切正常。這可以擴展到任何數量的 Agent 而不會產生警報疲勞。


開始動手

如果你想在單張 NVIDIA GPU 上建多 Agent 艦隊:

  1. 從 1 隻 Agent 開始 — 先讓 Ollama + OpenClaw 跑起來,配一個 cron job
  2. 加情報檔案 — 預運算上下文帶來最大的品質提升
  3. 加第 2 隻 Agent — 獨立工作區、交錯定時器、角色特定上下文
  4. 監控一週 — 檢查 GPU 使用率、任務完成率、故障率
  5. 謹慎擴展 — 每加一隻 Agent 都增加複雜度;保持上下文隔離

我們完整的架構記錄在開源 repo:


Ultra Lab 造 AI 產品。我們的 4 隻 Agent 艦隊在 NVIDIA GPU 加速的本地推論上自治運行。了解更多:ultralab.tw

每週 AI 自動化實戰筆記

不廢話,只有能直接用的東西。Prompt 模板、自動化 SOP、技術拆解。

加入一人公司實驗室

免費資源包、每日建造日誌、可以對話的 AI Agent。一群用 AI 武裝自己的獨立開發者社群。

需要技術協助?

免費諮詢,24 小時內回覆。