资讯动态

手写Agent循环别再造轮子!AWS开源Strands Agents开箱即用

发布时间:2026/9/30 14:37:32 来源:尧图企业网站定制
文章目录前言1. 先说说手写循环这条不归路1.1 第一版model.generate() 工具调用1.2 然后噩梦开始2. Strands 是干嘛的2.1 分层设计底座和组装分开3. 快速上手3.1 最简 SDK 用法Python3.2 最简 SDK 用法TypeScript3.3 用 Harness 直接拿生产级 AgentPython3.4 用 Harness 直接拿生产级 AgentTypeScript3.5 不想写代码也行4. 核心特性拆解4.1 分层但不锁死4.2 默认自带的生产级能力4.3 模型切换像换皮肤4.4 内置工具可以精细调整4.5 子 Agent 委派甩锅也要讲科学4.6 MCP 与 Web 访问原生支持4.7 Skills 与拦截机制5. 项目剖析5.1 create_harness() 参数清单就是一份生产级清单5.2 上下文管理摘要 外部化存储5.3 programmatic_tool_caller让 Agent 自己写编排6. 和手写循环的对比7. 总结与展望7.1 核心要点回顾7.2 适合谁7.3 一句话评价P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看 传送门https://blog.csdn.net/qq_34419312前言如果你是个写代码的大概率经历过这么一幕领导说做个 AI Agent你心想这还不简单调个模型不就完事了吗。结果一周后你蹲在工位上对着自己那 2000 行的Agent 循环陷入沉思——这玩意儿怎么长得跟九连环似的越解越乱越乱越不敢删。今天聊的这个开源项目叫Strands AgentsAWS 团队搞的仓库名 harness-sdk。一句话版本它把你手写 Agent 循环时迟早会长出来的那些基础设施提前做好然后你一行代码就能拿到一个生产级 Agent。1. 先说说手写循环这条不归路1.1 第一版model.generate() 工具调用刚写完第一版的时候你觉得自己是个天才模型会调工具了未来已来财富自由指日可待。1.2 然后噩梦开始对话变长 → 你手动截断历史截着截着把关键信息截没了工具结果太大 → 你手写摘要逻辑往 prompt 里塞写得比毕业论文摘要还认真要换模型供应商 → 你重写调用层和参数映射一个供应商一套参数你成功转型成人肉参数翻译机要断点续聊 → 你实现会话存储存了三天发现恢复逻辑有 bug当场想格式化硬盘要记住用户偏好 → 你实现一套记忆存储结果记忆没实现你先失忆了。每一步都是在重新发明基础设施而且团队里每个人发明的还不一样互相不兼容。这就像四个人各自造了一个轮子结果造出来四个形状——有人造了方的有人造了六边形的只有一个人造了圆的但这个人上周离职了代码还注释得稀烂。2. Strands 是干嘛的2.1 分层设计底座和组装分开底层是 Strands SDK模型驱动的 Agent 循环、工具系统、多模型支持开箱即用上层是 Strands Harness一次create_harness()调用拿到一个配好了上下文管理、会话持久化、长期记忆、技能系统的全副武装Agent。关键点来了Harness 返回的仍然是普通的 strands.Agent它帮你配的每一样东西你都能打开、修改、替换。翻译成人话它给你做好了一桌菜但你随时可以掀桌子自己炒。3. 快速上手3.1 最简 SDK 用法Pythonpip install strands-agents strands-agents-tools from strands import Agent from strands_tools import calculator agent Agent(tools[calculator]) agent(What is the square root of 1764)3.2 最简 SDK 用法TypeScriptnpm install strands-agents/sdk 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)3.3 用 Harness 直接拿生产级 AgentPythonpip install strands-harness from strands_harness import create_harness agent create_harness() agent(Find the slowest test in this repo and explain why its slow)3.4 用 Harness 直接拿生产级 AgentTypeScriptnpm install strands-agents/harness import { createHarness } from strands-agents/harness const agent await createHarness() await agent.invoke(Find the slowest test in this repo and explain why its slow)3.5 不想写代码也行直接装个 CLInpm install -g strands-agents/cli得到一个 strands 终端命令直接在终端里跟 Agent 对话。写代码的都懂能少写一行是一行能少写一个文件是一个能在终端里解决的问题绝不打开浏览器。4. 核心特性拆解4.1 分层但不锁死大多数 Agent 框架分两种要么给你一堆原语让你自己拼拼到怀疑人生要么给你一个高度集成的黑盒进去容易出来难。Strands 想两个都要Harness 给你经过验证的默认配置底层 SDK 随便你折腾不用逃离框架这种代价高昂的重构。4.2 默认自带的生产级能力默认模型跑在 Amazon Bedrock 上的 Claude Opus工具带 shell、文件读写、web_fetch、programmatic_tool_caller上下文自动摘要旧轮次大工具结果挪到外部存储只留引用会话落盘到./.agent/sessions可按 session id 恢复长期记忆把用户偏好提炼成 Markdown 自动折回上下文能缓存的地方全走缓存。这一段翻译一下别人家 Agent 要做的体检、挂水、办住院手续它出厂之前全办好了。你拿到手的不是一个 Agent是一个拎包入住。4.3 模型切换像换皮肤一个 provider/model 字符串的事写法统一create_harness(modelanthropic/claude-opus-5) create_harness(modelopenai/gpt-5.6-sol) create_harness(modelbedrock/global.anthropic.claude-opus-5) # 默认值reasoning effort 也统一成一套等级off/minimal/low/medium/high/xhigh/max由 SDK 负责映射到各家供应商的参数。重点如果某家供应商根本不提供你要的等级SDK 直接抛错绝不静默降级。这点很良心——有些框架你开了高强度推理它假装开了其实偷偷给你降档跟奶茶店你点三分糖它永远给你做全糖一样离谱。等等全糖是超预期降档是反向超预期这个属于假预期。4.4 内置工具可以精细调整传列表是精确钉死传字典是在默认集合上增删改create_harness(builtin_tools[read]) # 只留 read create_harness(builtin_tools{subagent: False}) # 去掉子 Agent 委派 create_harness(builtin_tools{web_fetch: {model: openai/gpt-5-mini}}) # 给 web_fetch 单独配模型4.5 子 Agent 委派甩锅也要讲科学内置 subagent 工具模型自己判断什么时候该把活儿甩出去。子 Agent 继承主 Agent 的模型、工具、技能、拦截策略能收窄父 Agent 授予的工具集但不能扩大——这是一条安全边界。委派深度默认有上限防止无限递归。这个设计比某些公司里的甩锅文化先进多了人家甩锅还带防火墙你甩锅只带嘴。另一种是Agent.as_tool()把专用 Agent 包装成工具适合固定角色比如一个只负责审查代码的 reviewer每次调用都是全新会话。两种可以共存一个处理通用的探索型甩锅一个处理专家型甩锅。4.6 MCP 与 Web 访问原生支持指向标准的 mcpServers 配置JSON 文件或内联字典Harness 自动连接每个 MCP 服务器、发现工具并加入工具列表。web_fetch 默认开启web_search 视模型供应商是否原生支持自动开关也可以显式接 Exa 做第三方搜索后端。4.7 Skills 与拦截机制把 Agent Skills 放进./.agent/skills目录Harness 自动加载interventions 参数支持 “ask”、“smart” 或自定义策略字符串甚至 .cedar 策略文件在工具调用前设一道审批/校验闸门。给 Agent 加审批闸门像极了给公司加流程——是好事但加多了Agent 迟早学会写周报了。5. 项目剖析5.1 create_harness() 参数清单就是一份生产级清单create_harness( modelbedrock/global.anthropic.claude-opus-5, # 模型供应商与型号 effortauto, # 推理强度 instructionsNone, # 附加到系统提示词的领域指令 toolsNone, # 自定义工具 mcp_serversNone, # MCP 服务器配置 pluginsNone, # 自定义插件 builtin_toolsNone, # 内置工具集的增删改 background_tasksNone, # 后台任务策略 builtin_plugins[todos, environment], # 内置功能插件 cachingauto, # 上下文缓存 context_managerauto, # 上下文管理策略 sessionTrue, # 会话持久化 skillsTrue, # 技能加载 memoryTrue, # 长期记忆 interventionsNone, # 工具调用拦截策略 **agent_kwargs, )这份清单的思路很清楚凡是手写 Agent 循环最终都会长成的能力——生命周期控制、上下文压缩、会话恢复、跨对话记忆、审批闸门——都被提前实现并给了经过验证的默认值而不是留给每个使用者各自摸索。你摸索出来的东西大概率还没它默认的好还带着你自己的 bug。5.2 上下文管理摘要 外部化存储长任务里最容易失控的是上下文窗口。Harness 的默认策略是双管齐下自动摘要较早的对话轮次同时把体积大的工具结果比如一次搜索返回的大量文件内容挪到外部存储只在上下文里留一个简短引用。这个设计意味着任务跑多少轮上下文都不会线性膨胀——真正需要引用旧结果时Agent 按引用拉回来就行。相当于你写代码写到后面不用把前面所有代码都背在脑子里需要的时候翻一下。这玩意儿比有些同事的记性靠谱多了。5.3 programmatic_tool_caller让 Agent 自己写编排这是一个沙箱让 Agent 自己写代码来串联、循环、并行调用其他工具而不是每次工具调用都走一遍生成参数 → 执行 → 看结果 → 决定下一步的完整推理循环。对于读取 50 个文件统计某个模式出现次数这种批量、机械的操作这种编排方式比逐个调用高效得多也省了不必要的模型推理开销。说白了能批量干的活就别一步一步来跟人一样能写个脚本循环就别手动复制粘贴五十遍。6. 和手写循环的对比从零手写 Agent 循环上手慢基础设施全靠重新发明发明完还带专利纠纷跟同事的实现不兼容只用底层 SDK中等循环和工具原语已就位但上下文/会话/记忆得自己接入用 Strands Harness快一次调用拿到全套默认配置返回值仍是原生 Agent可逐项覆盖。一句话总结这份对比别人从零造轮子你用 Harness 直接上高速还自带导航。7. 总结与展望7.1 核心要点回顾分层架构底层 SDK 提供可完全自定义的 Agent 循环与工具原语上层 Harness 提供一次调用即用的生产级默认配置两层之间没有断层默认能力覆盖手写循环的常见痛点上下文管理、会话持久化、长期记忆、缓存优化开箱即用多模型可移植性是一等公民统一的 provider/model 语法和 reasoning effort 等级切换供应商不用重写业务逻辑两种子 Agent 委派模式服务不同意图内置 subagent 面向模型自主委派Agent.as_tool() 面向工程师预设的专家角色AWS 团队主导8,300 Stars、1,200 Forks、837 个 open issue。这个 issue 数量侧面说明它正在被真实使用不是僵尸项目。7.2 适合谁打算自己写 Agent 循环、但还没写到会话/记忆/上下文压缩这一步的团队可以直接跳过重新发明基础设施这个环节省下来的时间够你多陪陪家人或者多睡两个好觉需要在多个模型供应商之间保持灵活性的团队统一的切换语法降低了供应商锁定风险不用再当人肉参数翻译机想快速搭一个能处理长任务、多步骤操作的编码/运维 Agent 的开发者默认工具集shell、文件操作、编排沙箱覆盖了大多数场景Python 与 TypeScript 混合栈的团队两套 SDK API 设计一致不用维护两套心智模型省下的脑细胞干点别的。7.3 一句话评价Strands Agents 没有把写一个 Agent包装成一个封闭的黑盒而是先老老实实把手写循环最终都会补的那些基础设施做好再让你决定要不要拿它当起点。总的来说如果你正准备手写 Agent 循环建议先看看 Strands——你写循环的样子像极了上一家公司那个造了方轮子然后离职的前同事。少造一个轮子世界就多一分和平代码就少一分 bug。P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看传送门https://blog.csdn.net/qq_34419312

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑