strands-agents/harness-sdk · 上手攻略

  • 仓库:strands-agents/harness-sdk
  • 链接:https://github.com/strands-agents/harness-sdk
  • 分类:skill
  • 作者:Tom
  • 更新:2026-08-26

这是什么

strands-agents/harness-sdk 是由亚马逊 AWS 开源的 AI Agent SDK,核心定位是"Build an agent harness and control it end-to-end"——给开发者一套完整的工具链,从零构建生产级 AI Agent,并在整个生命周期内保持可观测性和可控性。项目同时提供 Python SDK 和 TypeScript SDK,Apache-2.0 许可证,生产级质量。

AWS 官方博客称:Amazon Q Developer、AWS Glue、VPC Reachability Analyzer 等产品背后已在使用 Strands(据 AWS Open Source Blog,2025)。

解决什么问题

构建生产级 AI Agent 的工程复杂度很高:模型切换、日志追踪、错误恢复、MCP 集成、支付级可靠性——这些往往需要大量自研基础设施。Strands 把这些需求做成了内置能力:

  • 模型无关:Bedrock / Anthropic / OpenAI / Gemini 一套代码,切换后端不换业务逻辑
  • 全链路可观测:内置 OpenTelemetry(OTEL)instrumentation,吐出分布式追踪数据
  • Guardrails:在 Agent 执行前拦截危险操作,防止 Agent 做出超出预期的行为
  • Hooks 拦截器:在 Agent Loop 的每个步骤插入自定义逻辑(记录/验证/重定向)
  • MCP 原生支持:开箱即用 Model Context Protocol,连接数千种预建工具
  • Steering Handlers:Agent 判断失误时允许自动纠正,而非直接报错退出

快速安装

Python SDK

# 环境要求:Python 3.10+
python -m venv .venv
source .venv/bin/activate    # Windows: .venv\Scripts\activate

pip install strands-agents strands-agents-tools

TypeScript SDK

# 环境要求:Node.js 20+
npm install @strands-agents/sdk

最小可跑示例(Python)

from strands import Agent
from strands_tools import calculator

agent = Agent(tools=[calculator])
response = agent("What is the square root of 1764?")
print(response)

注意:默认使用 Amazon Bedrock,需要配置 AWS 凭证 + Claude Sonnet 模型权限。如使用其他模型(OpenAI、Anthropic、Gemini、Ollama),参考 Quickstart Guide 配置 model_provider

最小可跑示例(TypeScript)

import { Agent } from '@strands-agents/sdk'

const agent = new Agent()
const result = await agent.invoke('What is the square root of 1764?')
console.log(result)

核心用法

Agent Loop 机制

Strands 的核心是 Model-Driven Agent Loop:每轮循环中,Agent 接收用户输入 → 调用 LLM → 决定是否调用工具 → 执行工具 → 收集结果 → 再次调用 LLM 直到任务完成或达到执行上限。

关键内置能力: - Context Management:自动管理对话历史和上下文窗口 - Execution Limits:防止 Agent 进入死循环(max iterations / token limit) - Streaming:支持双向流式输出,实时看到 Agent 思考过程

自定义 Python 工具

from strands import Agent, tool

@tool
def word_count(text: str) -> int:
    """Count words in text.

    This docstring is used by the LLM to understand the tool's purpose.
    """
    return len(text.split())

agent = Agent(tools=[word_count])
response = agent("How many words are in this sentence?")

热加载工具目录

from strands import Agent

# Agent 自动监控 ./tools/ 目录,有变化自动重载
agent = Agent(load_tools_from_directory=True)
response = agent("Use any tools you find in the tools directory")

MCP 服务器集成

Strands 原生支持 Model Context Protocol,可连接 MCP 生态中的数千种工具,无需自行封装。

# MCP 具体调用方式需参考官方文档:
# https://strandsagents.com/docs/user-guide/concepts/tools/

Guardrails(护栏)

Guardrails 在 Agent 执行前进行拦截检查,适合: - 敏感操作确认(如删除/支付/外部 API 调用) - 输出内容安全过滤 - Tool Call 参数合法性校验

Hooks(拦截器)

# Hooks 可拦截 agent_loop 的每一步:
# on_before_tool_call / on_after_tool_call
# on_before_model / on_after_model
# 适合日志、调试、动态修改行为

多 Agent 模式

# 官方支持多 Agent 协作:
# https://strandsagents.com/docs/user-guide/concepts/multi-agent/

生产部署

Strands 官方提供部署工具包,支持: - 事件触发型 Agent(Event-Driven) - 定时任务型 Agent(Scheduled) - 持续运行型 Agent(Long-Running) - OpenTelemetry 导出到任意 OTEL 兼容后端(Grafana、Jaeger、Datadog 等)

典型适用场景

  1. 企业内部 AI Copilot:如 AWS 客户已经在用 Bedrock,Strands 是最快的接入方式,5 行代码跑起来
  2. 生产级 Agent 搭建:需要 Guardrails + OTEL 可观测性 + Hooks 的严格生产环境
  3. 多模型评估:同一套测试用例,对比 Bedrock / OpenAI / Anthropic / Gemini 的 Agent 效果差异
  4. MCP 生态接入:想用 Model Context Protocol 生态中的工具(已有大量开源 MCP Server)
  5. 跨云迁移:用 Strands 抽象层,解耦业务逻辑和模型供应商,避免供应商锁定

坑与注意

⚠️ 默认后端是 AWS Bedrock:开箱即用需要 AWS 凭证 + 模型权限配置;未配置 AWS 时需切换到 OpenAI/Anthropic 等其他 provider,详细配置步骤需查阅 Quickstart Guide

⚠️ Python 3.10+ 强制要求:旧项目迁移需注意 Python 版本限制。

⚠️ 生产案例数字需核实:AWS 官方博客提到 Amazon Q Developer 等内部产品使用 Strands,但具体集成深度和规模未公开详细数据,第三方引用(如"Saved $5M")来源需核实。

⚠️ 与 CrewAI / LangGraph 的差异:Strands 强调"Model-Driven"和开箱即用的 OTEL 可观测性;CrewAI 侧重角色扮演和工作流编排;LangGraph 侧重状态机图结构。选型时建议三选一或按场景组合,而非全部引入。

⚠️ TypeScript SDK 成熟度:Python SDK 配套工具更丰富(strands-agents-tools),TypeScript SDK 功能相对较新,部分高级特性可能存在差异。

⚠️ 版本号未在 README 标注:建议 clone 后查看 pyproject.tomlpackage.json 确认当前稳定版本号(PyPI 和 npm 上均有包)。

与同类对比

框架 许可证 模型支持 MCP OTEL Guardrails 主要厂商
strands-agents Apache-2.0 Bedrock/Anthropic/OpenAI/Gemini + 扩展 AWS
CrewAI Apache-2.0 OpenAI/Anthropic 等 ⚠️ 插件 ⚠️ 基础 CrewAI
LangGraph MIT OpenAI/Anthropic 等 ⚠️ 插件 ⚠️ 需手动 LangChain
AutoGen MIT OpenAI/Azure/FLAML Microsoft

Strands 的核心差异化:唯一内置 OTEL 可观测性 + Guardrails + Steering Handlers 三件套的生产级 SDK,且背靠 AWS 已有内部产品验证。

一句话推荐结论

如果你的 Agent 需要跑在生产环境(需要可观测性、防错 Guardrails 和 MCP 工具生态),Strands Agents 是目前最接近"开箱即满足企业级需求"的 Python/TS 双语言方案——5 行代码跑起来,默认配置已考虑生产环境的可观测性和安全性。