harness-sdk
AWS开源的模型驱动型AI Agent开发框架,几行代码即可构建生产级Agent
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
AWS开源的模型驱动型AI Agent开发框架,几行代码即可构建生产级Agent
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你在凌晨两点需要让 AI 自动化完成一项复杂的数据分析任务——它需要先联网查询数据,再用计算器处理数字,最后把结果写入文件。传统框架下,这个需求可能需要写几百行配置和编排代码。但在 Strands Agents 里,你只需要这样几行:
from strands import Agent
from strands_tools import calculator, http_request, file_writer
agent = Agent(tools=[calculator, http_request, file_writer])
agent("帮我查询北京今天的PM2.5,计算同比增长,并把结果写入报告.md")
这就是 Strands Agents 带给 AI 开发者的核心价值——极简而不简陋,用最少的代码解锁最强的能力。
2025 年 5 月,AWS 在旗下多个产品中大规模应用了自研的 AI Agent 技术,包括 Amazon Q Developer(代码辅助)、AWS Glue(数据集成)和 VPC Reachability Analyzer(网络分析)等。这些系统在生产环境中经历了严苛考验,最终 AWS 将其核心框架开源,便诞生了 Strands Agents。
Strands 的设计哲学与主流 Agent 框架有本质区别。LangChain、AutoGPT 等框架采用"工作流优先"(workflow-first)路线——需要开发者预先定义好 Agent 的行为路径和决策树。而 Strands 反其道而行,提出**"模型驱动"**(model-driven)路线:信任大模型的推理和规划能力,让模型自主决定何时调用工具、如何串联思考,开发者只需定义角色定位(prompt)和可用工具(tools)。
这种理念与 2024-2025 年大模型能力跃升的背景高度吻合——Claude 4、GPT-4o 等模型的多步推理能力已足够可靠,"硬编码工作流"反而成了瓶颈。
图1:Strands Agents 官方 Logo(来源:strandsagents.com)
Strands Agents 采用 monorepo 结构,同时维护 Python SDK(strands-py)和 TypeScript SDK(strands-ts),配套 strandly 开发 CLI 工具:
harness-sdk/
├── strands-py/ # Python SDK(主战场)
│ └── src/strands/
│ ├── agent/ # 核心 Agent 循环(77KB 单文件)
│ ├── models/ # 模型提供者(Bedrock、OpenAI、Gemini...)
│ ├── tools/ # 工具注册与执行系统
│ ├── event_loop/ # 事件循环与重试策略
│ ├── multiagent/ # 多 Agent 编排(A2A 协议、图模式)
│ ├── session/ # 会话持久化(文件/S3)
│ ├── telemetry/ # OpenTelemetry 可观测性
│ └── memory/ # 记忆系统
├── strands-ts/ # TypeScript SDK(完整功能对等)
└── strandly/ # 开发 CLI(本地构建、格式化)
Agent 是整个 SDK 的心脏,核心文件 agent.py 达 77KB,实现了一个精巧的"思考-行动-观察"循环:
这个循环的核心设计理念是让模型掌舵,而不是用硬编码的 if-else 逻辑约束 Agent 的行为。

图2:Strands Agent 执行循环(来源:AWS Open Source Blog)
Strands Agents 的工具系统极为简洁,采用 Python 装饰器模式:
from strands import tool
@tool
def calculator(expression: str) -> str:
"""执行数学计算,返回结果"""
try:
result = eval(expression, {"__builtins__": {}}, {})
return str(result)
except Exception as e:
return f"计算错误: {e}"
这个设计有两大亮点:
Strands 还内置了对 MCP 的完整支持。MCP 是 Anthropic 主导的开放协议,旨在标准化 AI 模型与外部工具/数据源的连接。通过 MCP,Strands Agent 可以访问数千种预建工具,涵盖数据库查询、API 调用、文件操作等场景。
Strands Agents 不绑定任何单一模型提供商。通过抽象的 Model 基类,用户可以自由切换底层模型:
| 模型提供商 | 安装命令 | 说明 |
|---|---|---|
| Amazon Bedrock | pip install strands-agents[all] | 默认选项,AWS 凭证自动配置 |
| Anthropic Claude | pip install strands-agents[anthropic] | Claude 系列模型 |
| OpenAI GPT | pip install strands-agents[openai] | GPT-4o 等 |
| Google Gemini | pip install strands-agents[gemini] | Gemini 1.5/2.0 |
| Ollama(本地) | pip install strands-agents[ollama] | 完全本地化部署 |
| LiteLLM | pip install strands-agents[litellm] | 统一网关,代理任意模型 |
这种模型无关性在企业场景中极为重要——企业可以根据成本、合规和性能需求,随时在不同模型之间切换,无需重写业务逻辑。
当单 Agent 不足以处理复杂任务时,Strands 提供了多种多 Agent 编排模式:
Strands 原生支持 Anthropic 的 A2A 协议,允许不同 Agent 之间互相通信、分工协作。每个 Agent 可以有自己的角色、工具集和知识库。
Strands 还支持图结构的多 Agent 编排,可以定义有向无环图(DAG)式的 Agent 执行拓扑,实现复杂的企业工作流。
Strands Agents 从一开始就为生产环境设计,内置了完整的企业级功能:
OpenTelemetry 可观测性:所有 Agent 操作(工具调用、模型推理、会话状态)均自动生成 trace 和 metrics,对接 Jaeger、DataDog、AWS X-Ray 等主流 APM 平台。
会话持久化:默认内存会话,可选文件存储或 AWS S3 存储,支持 Agent 跨会话恢复上下文。
Human-in-the-Loop(HITL):内置人工干预机制,允许在 Agent 执行过程中暂停、审核和修改决策,适用于高风险场景。
Cedar 策略引擎:可选集成 AWS Cedar 细粒度权限控制,精确管控每个 Agent 能访问哪些资源。
Strands-ts 是与 strands-py 完全功能对等的 TypeScript 实现,发布在 npm(@strands-agents/sdk),为 Node.js 和浏览器环境提供相同的 Agent 开发能力。TypeScript 版本还内置了浏览器环境专用的 vended-tools(bash 沙箱、文件编辑器、HTTP 请求、Notebook)。
Strands Agents 并非完美,以下几点值得潜在使用者注意:
Strands Agents 的出现代表了 AI Agent 框架发展的一个新方向:从"框架复杂化"转向"简单可依赖"。
2023-2024 年的 Agent 框架浪潮中,很多项目走向了"过度工程化"——为了覆盖所有场景,框架变得越来越重,配置项越来越多,学习曲线陡峭。而 Strands 的做法是做减法:只保留 Agent 运行所必需的核心,把扩展能力留给插件和工具生态。
AWS 本身作为全球最大云服务商的身份,也为 Strands 带来了天然的企业级信任背书——其内部已有多个产品在生产环境中验证过这套框架的可靠性。从这个角度看,Strands Agents 可能是目前最接近"开箱即用"且"久经沙场"的开源 Agent 开发框架。