AWS Strands Agents SDK 完整指南:Indie Maker 該選 Strands、LangGraph 還是 CrewAI?
你打開 GitHub,又看到一個 AI agent 框架——這次是 AWS 出的。第一反應可能是:「AWS 的東西一定很複雜,而且會把我鎖在 AWS 生態系裡。」但 Strands Agents 反常識的地方在於:它是目前幾個主流 agent SDK 中上手最快的,而且是 Apache 2.0 開源,你可以接 Anthropic Claude、OpenAI 甚至本地 Ollama,完全不需要一行 AWS 代碼。
本文從 indie maker 的視角,拆解 Strands 到底解決什麼問題、跟 LangGraph 和 CrewAI 的本質差異在哪裡,以及你的下一個 agent 項目到底該選哪一個。
TL;DR
- 一句話定位:Strands 是目前從「想法」到「能跑的 AI agent」距離最短的框架——適合想快速驗證 idea 的獨立開發者,而不只是大型企業
- Strands 是 AWS 開源的 agent SDK,Apache 2.0 授權,支援多個 LLM provider,不鎖 AWS
- 核心設計:model-driven(讓 AI 模型自行規劃執行步驟,而非由工程師預定義流程圖)——不寫 graph 也不設 crew,給 model 工具讓它自己決定怎麼用
- MCP 一等公民支援,可直接連接數千個現成 MCP server 作為工具
- Python SDK 已 stable(Amazon 內部 production 在用),TypeScript SDK 仍是 preview
- 適合:快速驗證 idea、需要大量 MCP 工具整合、已在 AWS 部署的 indie maker
- 不適合:需要精確 workflow 控制、偏好視覺化 debug、TypeScript-first 專案
你可能對 Strands 有一個錯誤的第一印象
「AWS 出的 = 閉源 = 綁 AWS 生態」,這個直覺在 Strands 身上完全不成立。
Strands 採用 Apache 2.0 授權——這代表你可以自由使用、修改、甚至商用,不需要回饋任何東西給 AWS。我們實際在本地環境用 Anthropic Claude API(claude-sonnet-4-20250514)跑了一個帶 MCP GitHub 工具的 agent,全程沒碰任何 AWS 服務。過程中踩到的坑:第一次跑 MCP GitHub server 時因為沒設 GITHUB_TOKEN 環境變數直接拿到 401 auth error,設好 token 後一切順利。整體來說,pip install strands-agents 加上設定 Anthropic API key,就能開始。
更關鍵的是 multi-provider 設計。Strands 的 model provider 系統支援 Amazon Bedrock、Anthropic Claude API、OpenAI、Ollama、LiteLLM,甚至 Cohere、xAI、Fireworks 等社群貢獻的 provider。你今天用 Bedrock 的 Claude,明天可以換成直接 Anthropic API,程式碼改動只有一行。
Strands Agents 是什麼?從 2025 年 5 月發布到 1400 萬次下載
Strands Agents SDK 由 AWS Labs 於 2025 年 5 月 16 日開源發布。定位很明確:一個 model-driven 的 AI agent 框架,對比 LangGraph 的 workflow-driven 和 CrewAI 的 role-based 設計。
截至 2026 年 4 月的採用數據:
- GitHub Stars:6,200+
- PyPI 下載:累計 1,400 萬+,月均約 535 萬次(根據 PyPI Stats)
- Amazon 內部使用:Q Developer、AWS Glue、VPC Reachability Analyzer 都在用 Strands 跑 production agent
- 合作夥伴:Anthropic、Meta(Llama)、Langfuse、mem0.ai、Tavily
關於下載數的誠實提醒:PyPI 月均 535 萬+的下載數包含大量 CI/CD pipeline 重複下載,真實獨立用戶數遠低於此。更有參考價值的指標是 GitHub Stars 和社群貢獻者多樣性——Accenture、Anthropic、Meta、PwC 等都有貢獻者參與。
2026 年 2 月,AWS 進一步推出 Strands Labs——一個獨立的實驗性 GitHub 組織,專門放還沒進 production SDK 的項目(Robots、Robots Sim、AI Functions)。觀察 Strands Labs 可以看到 AWS 對 agentic AI 未來的押注方向。
Strands 的技術架構:為什麼「model-driven」不是偷懶
理解 Strands 必須先理解它的 agent loop:
- 呼叫 model:把使用者輸入和可用工具清單丟給 LLM
- 檢查回應:model 回傳的是最終答案還是 tool call?
- 執行工具:如果是 tool call,執行對應工具,把結果帶回
- 重複:帶著工具結果再次呼叫 model,直到 model 決定「我有答案了」
這跟 LangGraph 的差異是根本性的。LangGraph 要你定義 state machine——每個節點、每條邊、每個條件分支都由工程師設定。Strands 的哲學是:2025 年之後的 frontier model(Claude、GPT-4 等級)已經夠聰明做 planning,框架的職責是「不要阻礙 model」而不是「替 model 規劃路徑」。
MCP 一等公民
Strands 對 MCP(Model Context Protocol) 的支援是 first-class 等級。你可以直接連接任何 MCP server 作為 agent 的工具,不需要寫 custom wrapper:
from strands import Agent
from strands.tools.mcp import MCPClient
mcp_client = MCPClient("npx -y @modelcontextprotocol/server-github")
agent = Agent(tools=[mcp_client])
agent("列出我最近的 GitHub PR")
注意:AWS 官方文件中的 MCP GitHub 範例使用的是 Amazon Bedrock(Claude 3.7 Sonnet on Bedrock),需要 AWS credentials。但 Strands 框架本身支援直接使用 Anthropic API 或其他 provider,上方程式碼搭配
AnthropicModel同樣可行——不需要 AWS 帳號。
這對 indie maker 意義重大——不用自己一個個寫 API wrapper,直接接 GitHub、Slack、資料庫、搜尋引擎等現成的 MCP server。
Multi-Agent 模式
Strands 支援三種 multi-agent 模式:
- Graph:structured routing,適合有明確分支邏輯的場景
- Swarm:parallel execution,適合可以獨立平行執行的任務
- Workflow:sequential pipeline,適合步驟固定的流程
另外 A2A(Agent-to-Agent)跨框架協作也在開發中。
觀測性
內建 OpenTelemetry instrumentation,可以直接接 Langfuse 等觀測平台。根據 AWS 官方技術文件,每一次 agent loop 迭代都會產生 trace span,包含 model 呼叫、tool 執行、token 使用量等資訊。
三大框架比較:Strands vs LangGraph vs CrewAI
以下比較根據官方文件和實際測試整理,截至 2026 年 4 月:
| 維度 | Strands Agents | LangGraph | CrewAI |
|---|---|---|---|
| 設計哲學 | Model-driven(讓 LLM 決策) | Graph state machine(工程師決策) | Role-based crew(角色分工) |
| 學習曲線 | 最低(3-5 行起步) | 最高(需理解 graph 思維) | 中等(roles 設定直覺但有模式) |
| MCP 支援 | 一等公民(first-class) | 透過 adapter | 有限 |
| TypeScript | Preview(功能不完整) | 完整支援 | 完整支援 |
| 除錯工具 | OpenTelemetry traces(無原生視覺化) | LangGraph Studio(視覺化) | CrewAI Studio + replay |
| 適合場景 | 快速驗證、MCP 工具多、AWS 部署 | 複雜 workflow、需要精確控制 | 角色明確的 team simulation |
| Production 成熟度 | Amazon 內部在用(Python) | 最成熟,47M+月下載(自述) | 有企業控制平台 |
| 授權 | Apache 2.0 | MIT | MIT |
| 模型鎖定 | 無(多 provider) | 無(透過 LangChain) | 無(多 provider) |
三者不是「誰比較好」的問題,而是「你是誰就用誰」。
Indie Maker 決策指南:你到底該選哪個?
選 Strands 如果你是⋯
- 第一次做 agent,想最快跑起來:Strands 的 model-driven 設計不需要你先學 graph 概念或定義 role schema,5 行 Python 就能跑第一個 agent
- agent 需要接很多外部工具:MCP 生態是你的省力武器——GitHub、Slack、資料庫、搜尋引擎等都有現成 MCP server
- 已在 AWS 部署其他服務:Bedrock + Lambda + AgentCore 提供完整的部署路徑
- 場景允許 LLM 自主決策:你的 agent 不需要嚴格的步驟控制
選 LangGraph 如果你需要⋯
- 確定性的 workflow:每個步驟必須照順序、可以 rollback、有明確的 error handling
- 視覺化 debug:LangGraph Studio 讓你像看 flowchart 一樣 debug agent 行為——這是 Strands 目前最明顯的短板,Strands 只有 OpenTelemetry trace 輸出,沒有原生的視覺化除錯介面
- 團隊有 LangChain 經驗:學習曲線會大幅降低
- Production 穩定性是最高優先:LangGraph 是目前社群最成熟的方案
選 CrewAI 如果你想⋯
- 多角色分工協作:你的 agent 邏輯天然符合「研究員找資料、分析師整理、寫手產出」這種模式
- No-code/low-code 快速迭代:CrewAI Studio 提供圖形介面
- 內建 replay 功能:重播和比較不同 run 的結果對你的 debug 流程很重要
從 LangGraph 遷移值得嗎?
如果你已經有跑在 LangGraph 上的 production agent,遷移到 Strands 的成本取決於你的 agent 複雜度:
- 簡單 agent(單一 tool chain,無複雜分支):遷移成本低,約 1-2 天。Strands 的 model-driven 設計可以直接取代簡單的線性 graph,程式碼量通常會減少 60-70%
- 中等複雜度(有條件分支、error handling):需要 3-5 天。你需要把原本硬編碼在 graph edge 裡的邏輯轉換成 tool 描述,讓 model 自行決策。風險在於 model-driven 的行為不如 graph 確定,需要充分測試
- 高複雜度(多層 sub-graph、custom state management):不建議遷移。Strands 的 multi-agent 模式雖然有 Graph/Swarm/Workflow 三種選擇,但成熟度不及 LangGraph 的 state machine 生態
務實建議:除非你遇到 LangGraph 的具體痛點(例如 MCP 整合太麻煩、graph 定義過於臃腫),否則「正在用且能用」的 LangGraph agent 不值得為了換框架而遷移。把 Strands 留給你的下一個新專案。
30 分鐘內跑起第一個 Strands Agent
以下步驟根據官方文件驗證,不需要 AWS 帳號。純 Python agent(Step 1-3)約 10 分鐘可完成;加上 MCP 工具整合和環境除錯,完整走完約 30 分鐘。
前置準備
開始前,請確認你的環境有以下工具:
- Python 3.10+:Strands SDK 的最低需求
- pip:Python 套件管理器
- LLM API Key:Anthropic API key、AWS Bedrock 設定、或本地 Ollama 皆可
- Node.js v18+(Step 4 需要):MCP server 透過
npx執行,需要 Node.js 環境 - GITHUB_TOKEN(Step 4 需要):GitHub Personal Access Token,用於 MCP GitHub server 認證
Step 1:安裝
pip install strands-agents strands-agents-tools
Step 2:設定 LLM Provider
用 Anthropic Claude API(不需要 AWS):
import os
os.environ["ANTHROPIC_API_KEY"] = "your-key-here"
from strands.models.anthropic import AnthropicModel
model = AnthropicModel(model_id="claude-sonnet-4-20250514")
或用本地 Ollama:
from strands.models.ollama import OllamaModel
model = OllamaModel(host="http://localhost:11434", model_id="llama3")
Step 3:最小 Agent
from strands import Agent
agent = Agent(model=model)
response = agent("用一句話解釋什麼是 MCP")
print(response)
Step 4:加入工具(MCP)
前置需求:這一步使用 MCP GitHub server,需要先安裝 Node.js(建議 v18+),因為
npx指令來自 Node.js。另外,GitHub MCP server 需要認證才能存取 API,否則會拿到401 auth error。請先設定環境變數:export GITHUB_TOKEN="ghp_your_personal_access_token"Token 可在 GitHub Settings → Developer settings → Personal access tokens 產生,勾選
repo權限即可。
from strands.tools.mcp import MCPClient
github_tools = MCPClient("npx -y @modelcontextprotocol/server-github")
agent = Agent(model=model, tools=[github_tools])
agent("列出 strands-agents/sdk-python 最近 5 個 PR")
Step 5:部署(可選)
部署到 AWS Lambda 或 AgentCore 有官方 reference architecture,但你也可以把 agent 包成任何 Python 服務部署到 Railway、Fly.io 或自己的 VPS。重點:Strands SDK 不要求 AWS 環境。
真實成本計算:跑 production agent 要花多少錢?
Strands SDK 本身免費,AgentCore 的 harness 也不額外收費。你實際付的是 model inference 和運算資源。
成本試算(以 Claude 3.5 Haiku via Bedrock 為例)
根據 AWS Bedrock 定價頁,Claude 3.5 Haiku 的費率為:
- Input:$0.80 / 百萬 token
- Output:$4.00 / 百萬 token
一個中等複雜度的 agent(每次 request 約 3,000 input token + 1,000 output token),每天處理 100 個 request:
- Input 成本:100 × 3,000 ÷ 1,000,000 × $0.80 = $0.24/天
- Output 成本:100 × 1,000 ÷ 1,000,000 × $4.00 = $0.40/天
- 月總成本:約 $19.20(不含 Lambda 或 Fargate 的運算費用)
如果用 Claude Sonnet 4(Input $3 / Output $15 per million token),同樣場景月成本約 $54。
Bedrock vs 直接 Anthropic API:根據 AWS 定價,Bedrock 上的 Claude 模型與 Anthropic 直接 API 的 per-token 價格相同,沒有額外 Bedrock 加價。Bedrock 的優勢在於跨 region inference 和與其他 AWS 服務的整合。
成本最佳化
Bedrock 支援 prompt caching,根據 AWS 官方說明,cached token 享有 90% 折扣。如果你的 agent 有大量重複的 system prompt 或上下文,啟用 caching 可以顯著降低 input 成本。
風險揭露
在選擇 Strands 之前,有幾個你應該知道的限制:
- TypeScript SDK 不完整:截至 2026 年 4 月仍是 preview,缺少 multi-agent 功能。如果你的 stack 是純 TypeScript/Node.js,現在用 Strands 可能需要等
- Model-driven 的不可預測性:讓 LLM 自行決策意味著你無法精確控制每一步。對於需要確定性 workflow(例如金融交易、法律文件處理)的場景,LangGraph 的 state machine 更適合
- AWS 的長期承諾未知:雖然 Apache 2.0 授權意味著程式碼不會消失,但 AWS 的開源策略曾有過變化(參考 Elasticsearch → OpenSearch 事件)。好消息是 Apache 2.0 本身已經是最寬鬆的授權之一
- 社群規模相對小:LangGraph 月下載 4,700 萬+,Strands 月下載約 535 萬(含 CI/CD 重複)。遇到問題時,Stack Overflow 和社群論壇的資源較少
結論
Strands 代表一種「信任 model 的設計哲學」——在 frontier model 越來越聰明的 2026 年,硬編碼 state machine 可能正在成為過度工程。
對 indie maker 而言,Strands 的最大價值不是「最強」,而是「最快從 idea 到 running agent」。MCP 生態的槓桿效應讓一個人也能接很多工具,而 Apache 2.0 授權確保你不會被鎖死。
如果你是第一次做 agent:直接從上面的 quickstart 開始,30 分鐘跑起第一個 agent,親手感受 model-driven 設計。Strands 的低門檻讓你專注在「agent 要解決什麼問題」而不是「框架怎麼設定」。
如果你已經在用 LangGraph:不需要急著遷移。先把 Strands 當成你的 MCP 工具整合方案來試——用 Strands 寫一個小型 side project,感受兩種設計哲學的差異。如果你的 LangGraph agent 已經穩定運作,就讓它繼續跑;把 Strands 留給你下一個需要快速驗證的新 idea。
FAQ
Strands Agents 是 AWS 的閉源服務嗎?用了會被鎖定嗎?
不是。Strands 是 Apache 2.0 開源,可以接任何 LLM provider(Anthropic Claude、OpenAI、Ollama 等),也可以不用 AWS 部署。你可以完全在本地環境跑,不需要 AWS 帳號。
Strands 和 Amazon Bedrock AgentCore 是同一個東西嗎?
不同。Strands 是 open source framework(SDK),AgentCore 是 AWS 的 managed hosting 平台。你可以把用 Strands 寫的 agent 部署到 AgentCore,但也可以部署到 Lambda、Fargate 或任何自己的主機。
Strands TypeScript SDK 現在穩定了嗎?
截至 2026 年 4 月仍是 preview 狀態,缺少 multi-agent 功能。Production 環境建議用 Python SDK,Amazon 內部的 Q Developer、AWS Glue 等服務也是使用 Python 版。
Strands 的 MCP 支援和 Claude Desktop 的 MCP 一樣嗎?
不同層次。Strands 是 MCP client 端整合,可以連接任何 MCP server 作為 agent 工具。Claude Desktop 也是 MCP client。兩者都遵循同一個 MCP 協議,可以共用 MCP server。



