Strands Harness:用Python或TypeScript端到端构建AI代理
给Python和TypeScript团队的AI代理SDK,不用自写Agent循环且不依赖托管控制平面。
GitHub strands-agents/harness-sdk 更新 2026-09-24 分支 main 星标 7.8K 分叉 1.2K
Python TypeScript AI Agent Amazon Bedrock Anthropic OpenAI Gemini MCP Apache License 2.0

🧭 决策指南

适合,如果你

  • 你要在Python 3.10+中快速获得带模型、工具、记忆和会话默认值的Agent
    README“Quick Start”写明create_harness()提供optimized agent,并列出Python 3.10+要求
  • 你需要在Amazon Bedrock、Anthropic、OpenAI或Gemini之间切换
    README“Why Strands”列出四个一等支持的模型提供商,并说明可替换后端
  • 你需要控制Agent循环、工具、MCP、结构化输出或多Agent模式
    README正文列出lifecycle controls、tools、structured output、MCP和multi-agent patterns
  • 你希望在进程内运行Agent,并通过Hooks记录、校验或重定向步骤
    README说明agent runs in your process with no hosted control plane,并在“Stay in control”中介绍Hooks

不适合,如果你

  • 你的架构必须依赖hosted control plane管理Agent运行
    README明确称Strands runs in your process with no hosted control plane
  • 运行环境低于Python 3.10或Node.js 22
    README“Working with the SDK”分别声明Python 3.10+和Node.js 22+
  • 你只需要一个独立CLI,而不需要Python或TypeScript SDK
    README将strands-cli描述为prototype and chat with a harness agent,核心项目仍包含两个SDK

前置条件

  • Python SDK requires Python 3.10+
  • TypeScript SDK requires Node.js 22+
  • Python harness安装命令为 pip install strands-harness
  • TypeScript harness安装命令为 npm install @strands-agents/harness
  • Quickstart支持配置Amazon Bedrock、Anthropic、OpenAI、Gemini、Ollama等provider

第一步命令(README 原文)

pip install strands-harness

要注意

  • 不要把create_harness()的benchmarked defaults当作已公布性能保证
    README只称defaults为benchmarked,未给出benchmark指标
  • TypeScript项目安装与构建使用npm ci和npm run build,不能按Python流程操作
    README“Development”分别列出TypeScript SDK的npm ci和npm run build
  • 需要自定义模型提供商时,应确认custom providers的具体接入方式
    README只说明支持custom ones,并将细节链接到model providers文档

替代方案

  • 手写Agent loop:当你需要完全自行实现Agent循环,而不是使用Strands提供的lifecycle controls、tools和model providers时更合适
    README正文“Choose Strands when you would otherwise write your own agent loop”

材料未说明

  • README没有给出Amazon Bedrock、Anthropic、OpenAI和Gemini的认证配置细节
  • README没有给出create_harness()的benchmark数据、延迟或吞吐量
  • README没有说明生产部署所需的硬件、并发规模或资源消耗
  • README没有列出harness-cli/v0.1.2相对5个历史版本的兼容性变化
  • README没有说明Guardrails和steering handlers的具体默认规则

💡 深度解析

6
适合 我负责修改 `strands-py/` 的 Agent 循环,希望在提交前执行项目规定的测试、格式化和 lint;README 是否给出了可直接使用的开发流程?
适合读者: 维护 Python SDK 的开源贡献者,需要修改 Agent 循环并保证单元测试和格式检查通过的仓库维护者

适合,README 对 Python SDK 的本地开发入口和检查命令给得很具体。

  • 项目目录表明确 strands-py/ 是 Python SDK,负责 Agent loop、model providers 和 tools。
  • Development 章节要求进入 strands-py/ 后安装 Hatch;hatch test 用于单元测试,hatch fmt 用于格式化和 lint。
  • 仓库采用 monorepo,并把 SDK、Harness、文档站和治理资料放在同一仓库,便于同时检查跨包变更。
  • 许可证为 Apache License 2.0,适合进行开源修改和再发布,但贡献流程细节仍需查看 CONTRIBUTING。

README 没有说明修改 Agent loop 时必须运行哪些跨 SDK 兼容性测试,也没有给出 Python 版本矩阵或 CI 必过检查清单。

  • README 项目目录表:`strands-py/`:"Python SDK: agent loop, model providers, tools"
  • Development / Python SDK:`cd strands-py`
  • Development / Python SDK:`pip install hatch`、`hatch test`、`hatch fmt`
  • 项目数据:license 为 Apache License 2.0
cd strands-py
材料未说明:README 未列出 Python 支持版本、CI 必须通过的全部检查或跨 Python/TypeScript 的兼容性测试。;贡献者协议、PR 审核门槛和 Agent loop 变更的回归测试范围需查看未提供的 CONTRIBUTING 内容。
适合 我正在用 Python 构建一个自主 Agent,不想一开始自己维护模型调用、工具执行和停止条件;我能否先用 Strands Harness 快速运行,再在默认值不够时下沉到 SDK?
适合读者: 使用 Python 构建自主 Agent、希望先用默认配置验证想法再逐步控制 Agent 循环的应用开发者

适合,因为 README 明确把 Harness 设计成从原型走向可控 Agent 的入口。

  • Python 只需安装 strands-harness 并调用 create_harness(),即可得到包含模型、工具、记忆、会话和上下文管理默认值的完整 Agent。
  • 当默认配置不够时,README 说明可以进入 SDK,自行控制循环、工具、模型提供商、记忆、会话和 Hooks。
  • Agent 在用户自己的进程中运行,不依赖 hosted control plane,便于保留执行流程控制权。

不过,README 没有说明默认模型、工具权限和上下文策略在你的具体任务上的成本、延迟与可靠性表现。

  • Quick Start:`pip install strands-harness`
  • Quick Start:`from strands_harness import create_harness`
  • Working with the SDK:"control every part of the agent"
  • Why Strands:"it runs in your process with no hosted control plane"
pip install strands-harness
材料未说明:Harness 默认使用的具体模型、模型版本和默认工具清单未在给出的 README 片段中说明。;README 未给出 Harness 默认配置在目标任务上的延迟、Token 消耗或成功率基准。
视情况 我需要同时支持 Amazon Bedrock、Anthropic、OpenAI 和 Gemini,并可能接入自定义模型适配器;我能否让业务代码保持稳定,而只替换模型提供商配置?
适合读者: 需要在 Amazon Bedrock、Anthropic、OpenAI 和 Gemini 之间切换模型的企业平台工程师

视情况:Strands 明确提供模型提供商抽象,但它不能消除不同模型在工具调用、上下文、结构化输出和成本上的差异。

  • README 将 Amazon Bedrock、Anthropic、OpenAI、Gemini 列为一等支持,并允许接入更多提供商及自定义提供商。
  • “Model agnostic”部分说明可以在扩展时替换后端,同时保持代码不变,这有利于隔离业务逻辑与模型调用。
  • 但项目洞察指出,各模型的工具调用格式、上下文窗口、结构化输出支持、错误行为、延迟和成本仍不完全一致。

因此,简单 Agent 可能较易迁移;若依赖 MCP、结构化输出或复杂工具链,仍需逐提供商验证。README 未给出完整能力对照表。

  • Why Strands:"First-class support for Amazon Bedrock, Anthropic, OpenAI, and Gemini"
  • Why Strands:"Any model, any cloud" 与 "Swap backends when you scale; your code stays the same"
  • README:"many more providers and custom ones"
材料未说明:README 未提供各模型的工具调用、结构化输出、流式协议和上下文窗口兼容矩阵。;自定义模型适配器需要实现哪些接口、如何处理提供商特有错误,给出的内容未说明。
适合 我在 Python 应用里需要接入 MCP 工具、使用多 Agent 委派,并把长任务过程实时流式显示给用户;Strands 能否把这些能力放进同一个 Agent 循环?
适合读者: 已经有 MCP 工具和多 Agent 委派需求、希望把长任务进度实时显示给用户的 Python 应用团队

适合,因为 README 将 MCP、多 Agent 模式和 streaming 都列为同一 SDK 的内建能力。

  • 工具系统支持 MCP,适合把外部工具纳入 Agent 执行流程;README 还单独提供 MCP Server 链接和文档入口。
  • 多 Agent patterns 被列为内建能力,可用于委派、协作或组合式流程。
  • Streaming 适用于交互式应用和长时间运行任务,能把执行过程暴露给前端或调用方。
  • Agent loop 还提供轮次限制、Token budget、取消和 stop reasons,可为长任务设置执行边界。

但复杂组合会引入会话、权限、状态和故障恢复问题。README 未说明 MCP 工具的认证模型、跨 Agent 状态共享方式或流式事件是否包含每个子 Agent 的边界。

  • README 首段:"MCP"、"multi-agent patterns"、"streaming"
  • Why Strands:"MCP, streaming, multi-agent patterns, and structured output are all built in"
  • 首段生命周期能力:"turn limits, token budgets, cancellation, stop reasons"
材料未说明:MCP 连接的认证、权限隔离、超时与重试策略未在给出的 README 中说明。;多 Agent 之间的状态传递、嵌套取消和流式事件模型未说明。
适合 我用 TypeScript 和 Node.js 22+ 开发交互式应用,既要流式显示 Agent 输出,又要把最终结果交给下游 API;Strands 的 TypeScript Harness 和 SDK 是否适合?
适合读者: 维护 TypeScript 应用、运行在 Node.js 22+、需要流式输出和结构化结果的 Web 或服务端工程师

适合,因为项目同时提供 TypeScript Harness、SDK、流式能力和结构化输出,覆盖了你的两类接口需求。

  • README 列出 harness-ts/,通过 createHarness() 创建完整 Agent;strands-ts/则提供 Agent 循环、模型提供商和工具能力。
  • README 将 streaming 与 structured output 列为内建能力,结构化结果可用于下游 API,而流式接口可支撑交互式 UI。
  • 项目数据表明 TypeScript 是主要实现之一,且 monorepo 同时维护 Python 与 TypeScript 包。

但双 SDK 不代表所有边界行为完全一致;README 未给出 Node.js 版本兼容矩阵、流式事件格式或结构化输出失败时的具体错误协议。

  • README 项目目录表:`harness-ts/` 与 `strands-ts/`
  • Why Strands:"MCP, streaming, multi-agent patterns, and structured output are all built in"
  • 项目数据:语言分布包含 Python 与 TypeScript
npm ci
材料未说明:给出的 README 未说明 Node.js 22+ 的最低版本要求或各 TypeScript 包的兼容范围。;流式事件的类型定义、背压行为和结构化输出校验失败后的处理方式未说明。
视情况 我需要在自己的进程里部署生产 Agent,不能依赖托管控制平面,并且必须具备追踪、Guardrails、取消、轮次限制和 Token 预算;这个项目能覆盖这些运行时控制吗?
适合读者: 准备把 Agent 部署到生产环境、要求进程内运行并需要追踪、护栏、取消和 Token 预算的 Python 平台团队

视情况:SDK 覆盖了主要 Agent 运行时控制,但它不是完整的企业托管平台。

  • README 明确支持进程内运行,且不依赖 hosted control plane,符合部署控制要求。
  • 生命周期控制包括 turn limits、token budgets、cancellation 和 stop reasons;Hooks 可拦截、记录、校验或重定向执行步骤。
  • README 同时列出 guardrails、tracing 和 evals,说明生产治理与观测能力已经纳入 SDK 范围。
  • 但项目洞察指出,弹性扩缩、密钥管理、权限系统、队列、持久化和 SLA 仍需使用方设计或集成;项目数据只有 5 个 release,最新为 harness-cli/v0.1.2

因此它适合作为进程内 Agent SDK,不应直接等同于完整生产运行平台。

  • README 首段:"it runs in your process with no hosted control plane"
  • README 首段:"turn limits, token budgets, cancellation, stop reasons"
  • Why Strands:"Hooks let you intercept any step to log it, validate it, or redirect it"
  • 项目数据:release_count 为 5,latest_release 为 `harness-cli/v0.1.2`
材料未说明:README 未说明生产部署支持哪些队列、持久化、恢复和跨进程执行方案。;企业级密钥管理、租户隔离、审计、SLA 和扩缩容集成方式未说明。;5 个 release 是否代表所有组件的成熟度,或仅代表仓库发布记录,无法从数据确定。

✨ 核心亮点

  • create_harness()一次装配模型、工具、记忆与会话
  • 支持Bedrock、Anthropic、OpenAI与Gemini
  • 内置MCP、流式输出、护栏与追踪
  • 最新版本为harness-cli/v0.1.2,仅发布5个版本

🔧 工程化

  • Python的create_harness()提供开箱即用的完整Agent
  • Agent循环支持turn limits、token budgets与取消
  • Hooks可拦截每一步,Guardrails可在执行前捕获错误
  • strands CLI可在终端原型化并对话Harness Agent

⚠️ 风险

  • Python SDK要求Python 3.10+,TypeScript要求Node.js 22+
  • 最新版本harness-cli/v0.1.2,发布数量只有5个
  • README明确运行在进程内,不提供hosted control plane
  • create_harness()默认值虽有基准测试,但未给出指标

👥 适合谁?

  • 使用Python 3.10+构建模型无关Agent的开发团队
  • 使用Node.js 22+和TypeScript的Agent工程师
  • 需要MCP、记忆、会话与多Agent模式的应用团队