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。Strands 支援直接使用 Anthropic API(不需要 AWS 帳號),整體架構只需 pip install strands-agents 加上 Anthropic API key 就能啟動。官方 MCP GitHub 工具文件範例使用 Amazon Bedrock 上的 Claude(見下方 Note),但框架本身支援兩種路徑,切換只需調整 model provider 設定。過程中一個常見坑:第一次跑 MCP GitHub server 時因為沒設 GITHUB_TOKEN 環境變數會拿到 401 auth error,設好 token 後一切順利。
更關鍵的是 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 月發布到 1,400 萬次下載
Strands Agents SDK 由 AWS Labs 於 2025 年 5 月 16 日開源發布。定位很明確:一個 model-driven 的 AI agent 框架,對比 LangGraph 的 workflow-driven 和 CrewAI 的 role-based 設計。
截至 2026 年 4 月的採用數據:
- GitHub Stars:6,300+(根據 PyPI Stats / GitHub,截至 2026 年 5 月)
- PyPI 下載:累計 1,400 萬+,月均約 625 萬次(根據 PyPI Stats,截至 2026 年 5 月)
- Amazon 內部使用:Q Developer、AWS Glue、VPC Reachability Analyzer 都在用 Strands 跑 production agent
- 合作夥伴:Anthropic、Meta(Llama)、Langfuse、mem0.ai、Tavily
關於下載數的誠實提醒:PyPI 月均 625 萬+的下載數包含大量 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 Sonnet 4.6 on Bedrock;Claude 3.7 Sonnet 已於 2026 年 4 月在 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)跨框架協作已於 Strands 1.0 正式發布,任何 Strands agent 都可以透過 A2A 協議與其他平台的 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 月下載約 625 萬(含 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。
這篇文章對你有幫助嗎?



