AI AgentOpenClaw多Agent自動化BuildInPublic

多 Agent 協作架構:怎麼讓 4 個 AI 不打架

· 18 分鐘閱讀

一個 Agent 很好用,四個 Agent 是災難

當我只有一個 agent 的時候,一切很單純。它發它的文,我看我的報告,各做各的。

然後我加了第二個 agent。

第二天,兩個 agent 發了幾乎一樣主題的文章。一個寫「AI Agent 的未來趨勢」,另一個寫「2026 年 AI Agent 發展方向」。本質上是同一篇文章,只是換了說法。

加到四個 agent 之後,問題指數級成長:

  • 重複:多個 agent 寫同樣的主題
  • 矛盾:一個 agent 說「我們專注 AI 安全」,另一個在推「社群自動化」
  • 資源衝突:同時呼叫 API 撞到 rate limit
  • 各自為政:每個 agent 不知道其他 agent 在做什麼

這就像請了四個實習生,不給他們開會、不給他們共享文件、不告訴他們彼此的存在。結果就是一團混亂。


解法:把管理人類團隊的方法搬過來

我後來想通了——多 agent 協作的問題,本質上就是團隊管理的問題。

人類團隊怎麼協作?

  1. 分工明確:每個人有清楚的角色和職責
  2. 共享資訊:用文件、會議、Slack 同步狀態
  3. 定期對齊:週會、日報、策略規劃
  4. 交接機制:一個人做完的事,另一個人能接手

AI 團隊完全一樣,只是把「文件」換成 markdown、把「會議」換成 cron job、把「Slack」換成共享目錄。


第一層:角色定義(IDENTITY.md)

每個 agent 都有一份 IDENTITY.md,定義它是誰:

# Main Agent — UltraLabTW

## 角色
CEO / 策略思想家

## 專業
- AI 產業趨勢分析
- 品牌策略與定位
- 開源生態觀察

## 語氣
專業但不冷冰冰。像一個有經驗的技術主管在分享見解。

## 不做的事
- 不講具體產品功能(那是其他 agent 的事)
- 不寫 how-to 教學(除非是策略層面)
- 不重複其他 agent 最近寫過的主題

其他三個 agent 也各有自己的定位:

Agent 角色 專注領域
Main CEO / 策略 行業趨勢、品牌思維
MindThread 行銷 社群經營、內容策略
Probe 技術 AI 安全、漏洞分析
Advisor 財務 理財知識、市場觀察

關鍵不是寫了什麼,而是寫了**「不做的事」**。告訴 agent 它不該做什麼,比告訴它該做什麼更重要。這是避免重疊的第一道防線。


第二層:共享記憶體(Markdown Files)

這是整個多 agent 架構最核心的設計:用 markdown 檔案當共享記憶體。

為什麼不用資料庫?不用 vector store?不用 message queue?

因為 markdown 有幾個無法取代的優勢:

  1. LLM 原生理解 — 不需要 serialize/deserialize,直接塞進 prompt
  2. 人類可讀 — 我隨時可以打開來看 agent 在想什麼
  3. Git 友好 — 可以追蹤變化、回滾、diff
  4. 零依賴 — 不需要跑任何服務,一個檔案系統就夠

每個 agent 的 workspace 裡有這些共享檔案:

workspace/
├── RESEARCH-NOTES.md      ← 每日情報(research-chain 產出)
├── POST-PERFORMANCE.md    ← 績效數據(post-stats 產出)
├── COMPETITOR-INTEL.md    ← 競品分析(competitor-watch 產出)
├── STRATEGY.md            ← 本週策略和 OKR
├── INQUIRY-STATUS.md      ← 客戶詢問狀態
└── HEALTH-STATUS.md       ← 系統健康狀態

這些檔案由不同的 cron job 自動更新:

05:00  research-chain.sh  → 更新 RESEARCH-NOTES.md
06:30  competitor-watch.sh → 更新 COMPETITOR-INTEL.md
22:00  post-stats.sh      → 更新 POST-PERFORMANCE.md
每 6h  inquiry-tracker.js → 更新 INQUIRY-STATUS.md
每 1h  health-monitor.sh  → 更新 HEALTH-STATUS.md

Agent 發文前,會讀取所有相關的 markdown 檔案。 這代表每個 agent 都知道:

  • 今天行業發生了什麼(RESEARCH-NOTES)
  • 最近什麼類型的文章表現好(POST-PERFORMANCE)
  • 競品在做什麼(COMPETITOR-INTEL)
  • 公司目前的策略方向(STRATEGY)

這就是 Pre-Compute 架構的精髓:情報事先準備好,agent 只負責思考和產出。


第三層:Content Relay(跨 Agent 接力)

光是不重複還不夠。真正的團隊合作是——一個 agent 做完的事,另一個 agent 能接著做。

這就是 Content Relay Queue 的作用。

機制很簡單:agent 發完文之後,可以把一條訊息放進 relay queue:

# content-relay.json
[
    {
        "from": "probe",
        "to": "main",
        "message": "剛發了一篇 OWASP Top 10 分析,適合從策略角度展開",
        "post_id": "abc123",
        "timestamp": "2026-04-14T07:00:00Z"
    }
]

下一個 agent 執行時,會檢查有沒有指給自己的 relay:

# 檢查有沒有 relay 給我
my_relays=$(jq "[.[] | select(.to == \"$AGENT_NAME\")]" \
    "$DATA_DIR/content-relay.json")

if [ "$my_relays" != "[]" ]; then
    # 把 relay 內容加進 prompt
    RELAY_CONTEXT="你的隊友最近做了這些事:
    $my_relays
    考慮是否從你的角度延伸。"
fi

這創造了一種 emergent collaboration——我不需要寫死「probe 寫完安全分析後 main 要寫策略文」,我只需要讓 relay 機制存在,agent 自己會判斷要不要接力。

實際效果:

Probe 07:00  → 發文:OWASP Agentic Top 10 漏洞分析
              → relay 給 Main:「適合從企業策略角度展開」

Main 08:00   → 讀到 relay
              → 發文:為什麼你的企業需要 Agent 安全策略(引用 Probe 的分析)
              → relay 給 MindThread:「可以做社群版本的摘要」

MindThread 09:00 → 讀到 relay
                  → 發文:一張圖看懂 AI Agent 十大風險

一條內容,三個角度,三篇文章。這不是我規劃的,是 relay 機制讓它自然發生的。


第四層:Team Briefing(每日對齊)

每天早上,一個叫 team-context.sh 的 script 會生成 fleet briefing:

# 從各來源匯總
BRIEFING=""
BRIEFING+="## 客戶動態\n$(tail -20 INQUIRY-STATUS.md)\n"
BRIEFING+="## 昨日績效\n$(tail -20 POST-PERFORMANCE.md)\n"
BRIEFING+="## 競品動態\n$(tail -15 COMPETITOR-INTEL.md)\n"
BRIEFING+="## 系統狀態\n$(tail -10 HEALTH-STATUS.md)\n"

echo -e "$BRIEFING" > fleet-briefing.md

這份 briefing 會被注入每個 agent 的 prompt。等於是每天早上開了一個全員會議,但不需要任何人到場。


第五層:週策略會議(Weekly Strategy)

每週日中午,weekly-strategy.sh 會做一件更有趣的事:

  1. 分別問 3 個 agent「你覺得下週應該做什麼?」
  2. 把三份建議收集起來
  3. 交給 Main agent(CEO 角色)做最終綜合
# 第一步:每個 agent 提案
mindthread_proposal=$(ask_agent "mindthread" \
    "根據本週績效和趨勢,你建議下週的內容策略是什麼?")

probe_proposal=$(ask_agent "probe" \
    "根據最新的安全趨勢,下週應該關注什麼?")

advisor_proposal=$(ask_agent "advisor" \
    "從市場和競品角度,下週有什麼機會?")

# 第二步:CEO 綜合
strategy=$(ask_agent "main" \
    "以下是團隊的提案,請綜合成下週策略:

    行銷提案:$mindthread_proposal
    安全提案:$probe_proposal
    市場提案:$advisor_proposal

    請輸出:3 個優先事項 + 每個 agent 的具體任務")

echo "$strategy" > STRATEGY-NEXT-WEEK.md

成本:大約 5 次 LLM call。一週一次。

效果:agent 不再是各做各的,而是有統一的週策略。 而且這個策略不是我寫的,是它們自己討論出來的。


第六層:Cross-Agent Engagement

每週二和週五,agent 們會做一件很有意思的事:互相回覆對方的文章。

# cross-engage.sh
# 規則:只回覆其他 agent 的文章,不回自己的

for agent in main mindthread probe; do
    others=$(get_other_agents "$agent")
    target_post=$(get_recent_post "$others")

    reply=$(generate_reply "$agent" "$target_post" \
        "從你的專業角度,對這篇文章提出一個有建設性的觀點")

    post_reply "$reply" "$target_post"
done

這創造了一個看起來很自然的對話:安全專家回覆策略文章說「從安全角度我想補充…」,行銷專家回覆安全分析說「這個觀點對品牌推廣很有參考價值…」

不是假互動。是同一個公司的不同角色在公開場合展示專業深度。


架構總覽

                    ┌─────────────┐
                    │  Weekly     │
                    │  Strategy   │    ← 每週日
                    └──────┬──────┘
                           │
                    ┌──────▼──────┐
                    │  STRATEGY   │
                    │    .md      │
                    └──────┬──────┘
                           │
    ┌──────────────────────┼──────────────────────┐
    │                      │                      │
┌───▼───┐  relay    ┌─────▼─────┐  relay   ┌─────▼─────┐
│ Main  │ ◄──────── │  Probe    │ ────────►│ MindThread│
│ (CEO) │           │ (Security)│          │ (Marketing)│
└───┬───┘           └─────┬─────┘          └─────┬─────┘
    │                     │                      │
    └──────────┬──────────┴──────────────────────┘
               │
        ┌──────▼──────┐
        │ 共享記憶體   │
        │ RESEARCH    │
        │ PERFORMANCE │
        │ COMPETITOR  │
        │ HEALTH      │
        └─────────────┘

六層設計,每層解決一個問題:

解決 機制
IDENTITY 角色重疊 明確定義做什麼、不做什麼
共享記憶體 資訊孤島 Markdown 檔案 + cron 自動更新
Content Relay 各自為政 JSON queue + 自動接力
Team Briefing 缺乏上下文 每日匯總注入 prompt
Weekly Strategy 沒有方向 Agent 提案 + CEO 綜合
Cross-Engage 看起來孤立 互相回覆建立對話

為什麼是 Markdown 不是資料庫

我知道很多人看到這裡會想:「為什麼不用 Redis?為什麼不用 Postgres?為什麼不用 vector store?」

因為:

  1. Agent 本身就是語言模型,markdown 是它最自然的輸入格式
  2. 我只有一台機器,跑額外的服務就是多一個要維護的東西
  3. Debug 的時候,我可以直接 cat RESEARCH-NOTES.md 看 agent 的「想法」
  4. 成本是 $0,不需要任何雲端服務

當你的規模是 4 個 agent、每天 100 次操作的時候,markdown 完全夠用。

等哪天我需要管 40 個 agent,再來考慮資料庫。不要為還不存在的問題建架構。


下一篇

agent 有了角色、有了情報、有了協作機制。但有一個問題還沒解決:品質。

自動產出的內容,怎麼確保不是垃圾?怎麼讓 agent 自己知道寫得好不好?怎麼在不增加太多成本的前提下,把品質拉到「能看」以上?

下一篇:自動內容不等於垃圾:品質閘門實戰


這是「一人公司的 AI 團隊」系列第 4 篇。第 1 篇 · 第 2 篇 · 第 3 篇

所有原始碼:GitHub — openclaw-playbook

每週 AI 自動化實戰筆記

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

加入一人公司實驗室

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

需要技術協助?

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