首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Amazon 出品的 Agent SDK,凭什么让近千人 fork?

Amazon 出品的 Agent SDK,凭什么让近千人 fork?

作者头像
cxuanAI
发布2026-07-29 14:18:06
发布2026-07-29 14:18:06
350
举报
文章被收录于专栏:cxuanAIcxuanAI

今天逛 GitHub 看到一个项目,我觉得做 Agent 开发的人会喜欢。

strands-agents/harness-sdk

Image
Image
Image
Image

Stars:6,711 | Forks:995 | License:Apache-2.0 | 主要语言:Python


先说为什么推荐它

你们写 Agent 的时候有没有这种感受:

调一次模型很简单,但麻烦的全在后面——

模型要调工具,工具参数怎么校验?工具失败了怎么把错误交回模型?上下文太长了怎么办?换模型厂商要不要重写一堆代码?上线后怎么知道 Agent 到底做了什么?

如果这些都自己写,代码很快就会变成一团乱麻。

harness-sdk 做的事情就是:把这些"脏活"收进一套 SDK 里,让你专注在业务逻辑上。

它到底是什么

简单说,这是一个开源的 AI Agent SDK,叫 Strands Agents。

它给 Python 和 TypeScript 开发者提供一套写 Agent 的基础件:

  • Agent loop(循环控制)
  • 模型接入(支持多家)
  • 工具调用
  • MCP 集成
  • hooks(生命周期钩子)
  • 多 Agent 协作
  • 结构化输出 & 流式响应
  • 部署和观测

所以它不是聊天应用,也不是现成的桌面助手。更像是你在做 Agent 产品时,可以放到底层的一套 SDK。

Image
Image

我看重的三个点

① Agent Loop 不是简单循环

文档里讲得很清楚:模型拿到输入和上下文 → 判断是否需要工具 → 执行工具 → 结果放回上下文 → 继续推理 → 直到给出最终回答。

听起来简单?但真实项目里细节很多:

  • stop reason 怎么处理?
  • 工具执行错误了怎么办?
  • 上下文历史太长怎么管?
  • 用户取消了怎么停?
  • 并发调用怎么限制?

这些都要有人兜住。Strands Agents 把这些都封装好了。

② 不绑死某一家模型

这个我觉得挺重要的。

它支持 Amazon Bedrock、Anthropic、OpenAI、Google、Ollama、LiteLLM、MistralAI、SageMaker、Vercel、Writer,还有自定义 provider。

Python 和 TypeScript 覆盖范围不完全一样,但主线很清楚:不要把 Agent 绑死在某一个模型后端上。

今天用 Claude,明天想换 Gemini?改个配置就行,不用重写业务逻辑。

③ Hooks 让你能插手 Agent 的行为

这是我最喜欢的功能。

它允许你在 Agent 生命周期的关键节点挂自己的逻辑:

  • 工具调用前 → 可以做参数检查或拦截
  • 模型调用前后 → 可以记录日志或指标
  • 消息写入时 → 可以做内容过滤
  • 调用结束时 → 可以统计耗时

你可以用它做:

  • 日志收集
  • 参数校验
  • 工具拦截
  • 失败重试
  • 限制工具调用次数
  • 安全策略(在模型执行动作之前先检查)

这意味着你对 Agent 有完整的控制权,不是黑盒。

Image
Image
Image
Image
Image
Image

还有两个实用细节

MCP 内置支持

Strands Agents 直接内置了 MCP 接入。你可以把 MCP server 暴露的工具挂到 Agent 上,让 Agent 用外部服务。Python 和 TypeScript 都有写法。

Guardrails 安全防护

官方把它放在 Safety & Security 下面,支持:

  • 内容过滤
  • 主题边界
  • PII 保护
  • 对接各家模型的 guardrail 能力

Demo 时可能不显眼,但一旦 Agent 要碰业务系统、内部数据、客户输入,这就很重要了。

Image
Image
Image
Image

怎么上手

Python 版本:

代码语言:javascript
复制
pip install strands-agents strands-agents-tools
代码语言:javascript
复制
from strands import Agent
from strands_tools import calculator

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

就这几行,能跑了。

TypeScript 版本:

代码语言:javascript
复制
npm install @strands-agents/sdk
代码语言:javascript
复制
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)

注意一点: 两个 SDK 默认走 Amazon Bedrock。README 提醒要先配好 AWS 凭据。

要换 Anthropic、OpenAI、Gemini、Ollama 等 provider,按文档装对应依赖再切模型实例就行。

适合谁用

这几类人可能会觉得有用:

  • 正在把 Agent 从 Demo 往产品搬的,已经不满足于一次模型调用
  • 想同时保留 Python 和 TypeScript 选择(这个仓库两套 SDK 一起维护)
  • 要接 MCP、接多模型、做多 Agent 编排的

但它不是万能答案。

它更偏 SDK 和工程底座。你还是要自己设计业务流程、工具边界、权限、日志留存和上线策略。

尤其是工具能改文件、查库、发请求的时候,别只相信模型自己会收住——该加的限制要加。

如果只是想快速做一个聊天页面,它可能显得重。

可如果你想把 Agent 做成能维护、能排查、能限制行为的系统,这个项目值得认真看一遍。


6.7k Star,Python + TypeScript 双 SDK,hooks 和 guardrails 都给到位了——做 Agent 工程化的时候,这种底座还是省心的。

你们现在用什么框架写 Agent?是自己拼的还是用了现成的 SDK?评论区聊聊 👇

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java建设者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 先说为什么推荐它
  • 它到底是什么
  • 我看重的三个点
    • ① Agent Loop 不是简单循环
    • ② 不绑死某一家模型
    • ③ Hooks 让你能插手 Agent 的行为
  • 还有两个实用细节
  • 怎么上手
  • 适合谁用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档