所有文章
OpenClaw vs CrewAI——設定優先 vs 程式碼優先的 AI Agent

OpenClaw vs CrewAI——設定優先 vs 程式碼優先的 AI Agent

|8 分鐘閱讀

OpenClaw vs CrewAI——設定優先 vs 程式碼優先的 AI Agent

在 AI Agent 框架的版圖中,OpenClaw 和 CrewAI 代表了兩種截然不同的設計哲學。OpenClaw 走的是「設定優先」路線——你用 Markdown 定義 Agent 的行為,用 JSON 設定系統參數,幾乎不用寫程式碼。CrewAI 則是「程式碼優先」——你用 Python 類別定義 Agent、Task 和 Crew,有完整的程式控制力。

兩者都能做到多 Agent 協作,但實現方式和適用場景有根本差異。本文會從架構、設定、部署、開發體驗等多個面向做深入比較,幫你在下一個 AI 專案中做出更好的選擇。


架構概覽

OpenClaw 的架構

OpenClaw 的核心概念是「gateway + agents + skills」:

                    ┌─────────────┐
  Telegram ────────>│             │
  Web Dashboard ───>│   Gateway   │──> Agent A (agents/research.md)
  API ─────────────>│  (Node.js)  │──> Agent B (agents/coding.md)
                    │             │──> Agent C (agents/writer.md)
                    └─────────────┘
                          │
                    ┌─────┴─────┐
                    │  Skills   │
                    │ (plugins) │
                    └───────────┘
  • Gateway:長時間運行的 Node.js 程序,負責接收來自各管道的訊息、路由到對應的 Agent、管理 session
  • Agents:用 Markdown 檔案定義,描述 Agent 的角色、能力和行為規則
  • Skills:可插拔的功能模組,提供 Agent 呼叫外部 API、操作檔案系統等能力

CrewAI 的架構

CrewAI 的核心概念是「agents + tasks + crew」[1]

from crewai import Agent, Task, Crew, Process

researcher = Agent(
    role="Senior Research Analyst",
    goal="Find comprehensive information about AI trends",
    backstory="You are an expert analyst...",
    tools=[search_tool, scrape_tool],
    llm=ChatOpenAI(model="gpt-4")
)

writer = Agent(
    role="Technical Writer",
    goal="Create clear technical documentation",
    backstory="You are a skilled writer...",
    tools=[file_tool],
    llm=ChatOpenAI(model="gpt-4")
)

research_task = Task(
    description="Research the latest AI agent frameworks...",
    agent=researcher,
    expected_output="A comprehensive report..."
)

writing_task = Task(
    description="Write a blog post based on the research...",
    agent=writer,
    expected_output="A polished blog post...",
    context=[research_task]
)

crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, writing_task],
    process=Process.sequential
)

result = crew.kickoff()
  • Agent:Python 物件,定義角色、目標、工具和 LLM
  • Task:Python 物件,定義具體工作內容和預期輸出
  • Crew:協調多個 Agent 執行多個 Task 的容器
  • Process:定義 Task 的執行順序(sequential 或 hierarchical)

根本差異

面向 OpenClaw CrewAI
定義語言 Markdown + JSON Python
運行方式 長時間運行的 gateway 按需執行的 script
Agent 定義 宣告式(描述是什麼) 命令式(描述怎麼做)
擴展方式 Skill 插件 Python 函式/類別
狀態管理 內建 session 和記憶 需自行實作

設定複雜度

OpenClaw:幾分鐘上手

OpenClaw 的設定門檻非常低。定義一個 Agent 只需要一個 Markdown 檔案:

# Research Agent

你是一個研究助手。當使用者提出問題時,你會:
1. 先釐清問題範圍
2. 搜尋相關資料
3. 整理成結構化的報告

## Skills
- web-search
- summarize

## Rules
- 只用繁體中文回答
- 每個回答附上資料來源
- 不確定的資訊要明確標註

就這樣。不用寫 Python、不用 import 套件、不用處理型別系統。

系統設定也很簡潔:

{
  "gateway": {
    "port": 19080,
    "model": "claude-sonnet-4-20250514"
  },
  "telegram": {
    "botToken": "your-token"
  }
}

CrewAI:需要 Python 知識

CrewAI 的設定必然涉及 Python 程式碼。即使是最簡單的單一 Agent,你也需要:

# 安裝相依套件
# pip install crewai crewai-tools

from crewai import Agent, Task, Crew

agent = Agent(
    role="Research Analyst",
    goal="Find information about the given topic",
    backstory="You are an expert research analyst...",
    verbose=True,
    allow_delegation=False
)

task = Task(
    description="Research {topic} and provide a summary",
    agent=agent,
    expected_output="A structured summary with key findings"
)

crew = Crew(
    agents=[agent],
    tasks=[task],
    verbose=True
)

result = crew.kickoff(inputs={"topic": "AI agent frameworks"})
print(result)

這對有 Python 經驗的開發者來說不難,但對非程式背景的使用者(例如想用 AI Agent 自動化工作流程的產品經理或研究員)來說,門檻明顯更高。

設定變更的成本

操作 OpenClaw CrewAI
修改 Agent 行為 編輯 .md 檔 → 自動生效 修改 .py 檔 → 重新執行
新增工具/Skill JSON 設定新增一行 import + 實例化 + 注入
切換 LLM JSON 改一個欄位 改程式碼中的 llm 參數
調整流程 修改 Agent 的 rules 區段 重構 Task 依賴和 Process

多 Agent 協作方式

這是兩個框架差異最大的地方。

OpenClaw:@mention 自然對話

OpenClaw 的多 Agent 協作基於 agents.md 中的 @mention 機制[2]。Agent 之間可以像人類在 Slack 中一樣互相呼叫:

# Project Manager Agent

你是專案經理。當團隊需要完成一個任務時:
1. 分析任務需求
2. 用 @ResearchAgent 請他搜集資料
3. 資料收到後,用 @WriterAgent 請他撰寫報告
4. 審閱報告後回覆給使用者

## Handoff
- 技術問題 → @CodingAgent
- 資料搜尋 → @ResearchAgent
- 文件撰寫 → @WriterAgent

這種方式的好處是語意化——你用自然語言描述流程,框架自動處理 Agent 之間的訊息傳遞和上下文共享。

CrewAI:結構化的 Task 依賴

CrewAI 的多 Agent 協作是透過 Task 的 context 參數和 Process 模式來定義的:

# Sequential:任務一個接一個執行
crew = Crew(
    agents=[researcher, analyst, writer],
    tasks=[research_task, analysis_task, writing_task],
    process=Process.sequential
)

# Hierarchical:有一個 manager agent 分配工作
crew = Crew(
    agents=[researcher, analyst, writer],
    tasks=[research_task, analysis_task, writing_task],
    process=Process.hierarchical,
    manager_llm=ChatOpenAI(model="gpt-4")
)

你也可以用 context 明確定義 Task 之間的資料流:

analysis_task = Task(
    description="Analyze the research findings...",
    agent=analyst,
    context=[research_task],  # 會收到 research_task 的輸出
    expected_output="An analytical report..."
)

比較

面向 OpenClaw (@mention) CrewAI (Task/Process)
定義方式 自然語言 Python 程式碼
靈活性 Agent 自行決定何時呼叫誰 預先定義的固定流程
可預測性 較低(LLM 決定) 較高(程式碼決定)
動態路由 支援(Agent 根據上下文判斷) 有限(需程式碼邏輯)
除錯難度 較高(行為不固定) 較低(流程明確)

如果你需要固定的、可重現的工作流程(例如「每次都是:搜集 → 分析 → 撰寫」),CrewAI 的結構化方式更適合。

如果你需要動態的、對話式的協作(例如「Agent 根據使用者問題自行判斷需不需要找其他 Agent 幫忙」),OpenClaw 的 @mention 機制更自然。


模型支援

OpenClaw

OpenClaw 支援大多數主流 LLM 供應商:

  • Anthropic(Claude 系列)
  • OpenAI(GPT 系列)
  • Google(Gemini 系列)
  • 任何 OpenAI 相容的 API(例如本地跑的 Ollama、vLLM)

在設定中切換模型只需改一個欄位:

{
  "gateway": {
    "model": "claude-sonnet-4-20250514"
  }
}

不同 Agent 可以使用不同的模型:

# Research Agent

model: gpt-4o

(Agent 內容...)
# Coding Agent

model: claude-sonnet-4-20250514

(Agent 內容...)

CrewAI

CrewAI 同樣支援多種 LLM,但需要透過 Python 程式碼設定:

from langchain_openai import ChatOpenAI
from langchain_anthropic import ChatAnthropic

researcher = Agent(
    role="Researcher",
    llm=ChatOpenAI(model="gpt-4o", temperature=0.7)
)

coder = Agent(
    role="Coder",
    llm=ChatAnthropic(model="claude-sonnet-4-20250514", temperature=0)
)

CrewAI 建立在 LangChain 之上[3],所以理論上 LangChain 支援的 LLM 它都能用。不過這也意味著你需要安裝對應的 LangChain 套件,增加了依賴複雜度。

面向 OpenClaw CrewAI
切換模型的成本 改設定檔一行 改程式碼 + 可能需要裝新套件
每個 Agent 獨立模型 支援 支援
本地模型 支援(Ollama 等) 支援(透過 LangChain)
依賴套件數量 多(LangChain 生態系)

部署模型

OpenClaw

OpenClaw 是一個長時間運行的服務:

# 直接運行
openclaw gateway start

# systemd 服務
systemctl --user start openclaw.service

# Docker
docker run -d openclaw/openclaw-stack:latest

一旦 gateway 啟動,你的所有 Agent 就持續可用——Telegram bot 會回應、API 端點會接收請求、排程任務會按時執行。

CrewAI

CrewAI 的預設運行模式是 script——執行一次、產出結果、程序結束:

result = crew.kickoff()
print(result)
# 程式結束

要做成持續運行的服務,你需要自己包一層:

from flask import Flask, request

app = Flask(__name__)

@app.route("/run", methods=["POST"])
def run_crew():
    topic = request.json.get("topic")
    result = crew.kickoff(inputs={"topic": topic})
    return {"result": str(result)}

if __name__ == "__main__":
    app.run(port=5000)

或者用 CrewAI 的 CLI 工具(較新版本提供):

crewai run

但這仍然不如 OpenClaw 的 gateway 那樣內建了完整的管道支援(Telegram、Web、API)。

面向 OpenClaw CrewAI
部署方式 單一 gateway 程序 需自行包裝服務
內建管道 Telegram、Web、API 無(需自建)
排程任務 內建 需搭配 Celery 等工具
容器化 官方 Docker 映像檔 需自行撰寫 Dockerfile
託管方案 ClawTank CrewAI Enterprise[4]

使用場景

用 OpenClaw 更好的場景

1. 非程式背景的使用者

如果你主要的身份是研究員、產品經理、行銷人員,而非軟體工程師,OpenClaw 的 Markdown + JSON 設定方式讓你可以在不寫程式碼的情況下建立和管理 AI Agent。

2. 對話式 AI 助手

OpenClaw 的核心就是為對話設計的。Telegram bot、Web 儀表板、API 端點——所有管道都是第一級公民。如果你想建一個「團隊 Telegram 群組裡的 AI 助手」,OpenClaw 開箱即用。

3. 需要即時互動的場景

Gateway 持續運行意味著回應延遲只有 LLM 推理的時間,不需要冷啟動。

4. 快速迭代 Agent 行為

修改 Markdown 檔案就能改變 Agent 行為,不需要重新部署或重啟服務(部分變更會即時生效)。

用 CrewAI 更好的場景

1. 複雜的自動化工作流程

如果你的工作流程有明確的步驟、分支邏輯、錯誤處理,CrewAI 的程式碼方式讓你可以精確控制每一步。

try:
    research = crew.kickoff(inputs={"topic": topic})
except Exception as e:
    fallback_crew.kickoff(inputs={"error": str(e)})

2. 需要與現有 Python 生態整合

如果你的專案已經大量使用 Python——pandas 做資料處理、scikit-learn 做機器學習、FastAPI 做 API——CrewAI 可以無縫整合。

3. 需要精確控制 Agent 交互

CrewAI 的 Task context 和 Process 模式讓你可以精確定義「Agent A 的輸出傳給 Agent B」的資料流。在 OpenClaw 中,這種交互是由 LLM 判斷的,可預測性較低。

4. 批次處理任務

如果你需要批次處理大量任務(例如分析 1000 篇論文),CrewAI 的 script 模式更適合:

for paper in papers:
    result = crew.kickoff(inputs={"paper_url": paper})
    results.append(result)

開發者體驗

OpenClaw

初始設定時間:~5 分鐘(onboard 精靈)
學習曲線:低(會寫 Markdown 就行)
除錯工具:gateway 日誌、status 命令
文件品質:中等(持續改善中)
社群規模:較小但活躍

OpenClaw 的開發者體驗偏向「即開即用」。你不需要搭建開發環境、不需要虛擬環境、不需要處理依賴衝突。openclaw onboard 一條命令搞定所有初始設定。

缺點是當你想做超出框架預設行為的事情時(例如自訂的 skill),門檻會突然提高——你需要了解 OpenClaw 的 skill API 和 Node.js 生態。

CrewAI

初始設定時間:~15-30 分鐘(Python 環境 + 套件安裝 + 學習 API)
學習曲線:中(需要 Python 基礎)
除錯工具:Python 標準工具(pdb、logging)、verbose 模式
文件品質:良好(有豐富的範例)
社群規模:大(GitHub stars 多、教學資源豐富)

CrewAI 的開發者體驗偏向「程式碼控制一切」。Python 開發者會覺得很自然——標準的 pip 安裝、IDE 支援、型別提示、單元測試。但初始設定需要更多步驟,而且 Python 環境管理(venv、conda、poetry)有時候本身就是一個挑戰。


社群與生態

OpenClaw

  • GitHub:活躍開發中,版本迭代快
  • 官方 skill 市集:持續擴充中
  • 第三方整合:Telegram 最成熟,其他管道持續增加
  • 討論社群:Discord / GitHub Discussions

CrewAI

  • GitHub:超過 20K stars[5],Python AI 生態中的熱門專案
  • 基於 LangChain:可使用 LangChain 龐大的工具生態
  • 企業版:CrewAI Enterprise 提供商業支援
  • 教學資源:大量的部落格文章、YouTube 教學、Jupyter notebook 範例

在社群規模和第三方資源的豐富度上,CrewAI 目前佔優勢。但 OpenClaw 的社群雖小,技術密度高,核心開發者的回應速度也快。


成本比較

LLM API 成本

兩個框架本身都是開源的,主要成本來自 LLM API 呼叫。

但有一個微妙的差異:CrewAI 的多 Agent 協作通常會產生更多的 LLM 呼叫。因為每個 Task 切換時,新的 Agent 需要完整的 context 注入(包含前一個 Task 的輸出),而 OpenClaw 的 session 機制可以更有效率地共享上下文。

粗略估算(處理同一個「研究 + 分析 + 撰寫」任務):

OpenClaw CrewAI
LLM 呼叫次數 5-8 8-15
預估 token 使用量 15K-25K 25K-50K
原因 Session 共享上下文 每個 Task 獨立上下文

以上數字是粗略估算,實際成本取決於 Agent 定義的複雜度、LLM 模型選擇和任務本身的性質。

基礎設施成本

OpenClaw 的 gateway 需要一個持續運行的伺服器(或使用 ClawTank 的託管方案)。

CrewAI 可以按需執行——不跑的時候不佔資源。但如果你需要即時回應(例如 Slack bot),還是得跑一個持續運行的服務。


何時用哪個?

選 OpenClaw 如果你...

  • 想快速建立一個 Telegram AI 助手
  • 不想寫 Python(或任何程式碼)
  • 需要 Agent 持續在線、即時回應
  • 重視「修改 prompt 就能改變行為」的靈活性
  • 管理多個管道(Telegram + Web + API)

選 CrewAI 如果你...

  • 是 Python 開發者
  • 需要精確控制 Agent 交互流程
  • 需要與現有 Python 工具鏈整合
  • 做批次處理而非即時互動
  • 需要大量的社群資源和教學

選兩個都用如果你...

  • 對,它們可以搭配使用

搭配使用

OpenClaw 和 CrewAI 並非互斥。一個實際的架構可以是:

使用者 ──> OpenClaw Gateway ──> 對話式 Agent(即時回應)
                  │
                  └──> 觸發 CrewAI 工作流程(後台處理)
                          │
                          └──> 結果回傳給 OpenClaw Agent

在 OpenClaw 的 skill 中呼叫 CrewAI:

# skills/crewai-workflow/index.py
from crewai import Crew

def execute(params):
    crew = build_crew(params["task_type"])
    result = crew.kickoff(inputs=params["inputs"])
    return {"result": str(result)}

這樣你可以同時享有 OpenClaw 的對話管道管理和 CrewAI 的結構化工作流程。即時的對話互動由 OpenClaw 處理,複雜的後台任務交給 CrewAI。


總結

面向 OpenClaw CrewAI
設計哲學 設定優先 程式碼優先
定義語言 Markdown + JSON Python
學習曲線
多 Agent 協作 @mention(語意化) Task/Process(結構化)
部署方式 長時間運行 gateway 按需執行 script
內建管道 Telegram、Web、API
模型切換 改設定檔 改程式碼
程式碼控制力 有限 完整
社群規模 較小
適合對象 非工程師、需要即時互動 Python 開發者、需要精確控制

沒有「更好」的框架,只有「更適合你的場景」的框架。如果你還是不確定,最務實的建議是:

  • 如果你想在 30 分鐘內有一個能用的 Telegram AI 助手,從 OpenClaw 開始
  • 如果你想建一個精確控制的自動化工作流程,從 CrewAI 開始
  • 如果兩者都需要,它們可以搭配使用

References

  1. CrewAI documentation
  2. OpenClaw multi-agent documentation
  3. CrewAI and LangChain integration
  4. CrewAI Enterprise
  5. CrewAI GitHub repository
  6. OpenClaw documentation
  7. LangChain LLM integrations
  8. Multi-agent systems comparison

準備好部署 OpenClaw 了嗎?

不需要 Docker、SSH、DevOps。不到 1 分鐘即可部署。

免費開始使用