人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务【免费下载链接】harness-sdkBuild an agent harness and control it end-to-end. Open-source SDK for production AI agents in Python TypeScript - any model, any cloud.项目地址https://gitcode.com/GitHub_Trending/sdkpython13/harness-sdk点击查看免费下载本文基于 site/src/content/changelog/sdk/python-v1.27.0.md 中的 16 条版本条目展开逐一剖析 strands-agentsPython1.27.0 的核心变更新增add_hook便捷方法、concurrent_invocation_mode并发控制参数、装饰器工具异常向AfterToolCallEvent的传播、GeminireasoningSignature透传等。文章结合仓库源码如 agent.py、events.py深入讲解每个变更的底层实现与使用方式帮助开发者快速评估升级影响并上手新能力。版本概览项值SDKstrands-agentsPython版本1.27.0发布日期2026-02-19变更类型4 个 feat、8 个 fix、3 个 other、1 个 test破坏性变更无breaking: false涉及领域agent、tool、model、mcp、workflows本次发布没有破坏性变更breaking: false可以放心升级。16 个条目按领域可分为三大类Agent 核心能力增强add_hook、concurrent_invocation_mode、模型层兼容性修复Gemini 推理签名、OpenAI 工具调用响应、工程与 CI 基础设施完善conventional commit 工作流、Python 3.14 覆盖率、依赖升级。Agent 核心新特性1.add_hookHook 回调注册的便捷方法PR #1706v1.27.0 为Agent类新增了add_hook便捷方法用于向 agent 的 hook 注册表注册事件回调实现在 agent.py。此前的写法是构造时传入hooks参数或直接操作 hook 注册表现在可以在 agent 构造后的任意时刻动态追加回调适合按条件注册 hook 的场景。该方法支持三种调用模式类型推断add_hook(callback)—— 从回调函数第一个参数的类型注解自动推断事件类型显式指定add_hook(callback, event_type)—— 明确传入事件类多事件注册add_hook(callback, [TypeA, TypeB])—— 一次注册到多个事件类型。回调函数的类型注解若为联合类型A | B或Union[A, B]会被自动注册到联合中的每个事件类型。回调本身可以是同步或异步函数。from strands import Agent from strands.hooks import BeforeModelCallEvent, AfterModelCallEvent agent Agent() # 1) 从类型注解推断事件类型 def log_model_call(event: BeforeModelCallEvent) - None: print(fCalling model for agent: {event.agent.name}) agent.add_hook(log_model_call) # 2) 显式指定事件类型 agent.add_hook(log_model_call, BeforeModelCallEvent) # 3) 联合类型注解 - 自动注册到多个事件 def log_event(event: BeforeModelCallEvent | AfterModelCallEvent) - None: print(fEvent: {type(event).__name__}) agent.add_hook(log_event) # 4) 事件类型列表显式注册 def multi_handler(event) - None: print(fEvent: {type(event).__name__}) agent.add_hook(multi_handler, [BeforeModelCallEvent, AfterModelCallEvent])add_hook还接受order关键字参数控制执行优先级数值越小越先执行。可使用HookOrder常量如SDK_FIRST (-100)、DEFAULT (0)、MODEL_ROUTING (50)、SDK_LAST (100)。该方法最终将注册委托给self.hooks.add_callback(event_type, callback, orderorder)。2.concurrent_invocation_mode并发调用模式控制PR #1707v1.27.0 为Agent构造器新增了concurrent_invocation_mode关键字参数用于控制同一个 agent 实例被并发调用时的行为实现在 agent.py。参数类型为ConcurrentInvocationMode枚举取值为取值行为ConcurrentInvocationMode.THROW默认检测到并发调用时抛出ConcurrencyExceptionConcurrentInvocationMode.UNSAFE_REENTRANT跳过锁获取允许并发调用from strands import Agent from strands.types.agent import ConcurrentInvocationMode # 默认并发调用直接抛异常 agent Agent(model..., concurrent_invocation_modeConcurrentInvocationMode.THROW) # 高级用法跳过锁允许并发不保证行为正确性 agent Agent(model..., concurrent_invocation_modeConcurrentInvocationMode.UNSAFE_REENTRANT)从源码看该模式在 agent 构造时被传入_ConcurrencyControlleragent.py并在 agent 事件循环的入口处进行校验agent.py当mode ConcurrentInvocationMode.THROW且检测到已有调用在进行时直接抛出并发异常。需要注意UNSAFE_REENTRANT模式不做任何行为正确性保证官方文档明确指出仅适用于调用方完全理解风险的高级场景普通应用请保持默认的THROW。agent 还暴露了concurrent_invocation_mode只读属性agent.py镜像构造参数便于运行时检查当前模式。测试覆盖见 tests/strands/agent/test_agent.py。工具执行层修复3. 装饰器工具的异常现在会传播到AfterToolCallEventPR #1565 / #1566本次发布最重要的运行时修复之一使用strands.tool装饰器定义的装饰器工具decorated tools在执行抛异常时异常现在会正确传播到AfterToolCallEvent。AfterToolCallEvent定义于 hooks/events.py是工具调用完成无论成功还是出错后触发的事件Hook 可据此做清理、日志或后处理。其关键属性selected_tool被调用的工具工具查找失败时可能为Nonetool_use传给工具的参数invocation_state传给工具的关键字参数result调用结果成功时为ToolResult失败时为Exceptionexception工具抛出的异常None表示成功cancel_message用户取消工具调用时的取消消息duration工具执行耗时秒从BeforeToolCallEvent返回后开始计时在AfterToolCallEvent构造前停止若工具被BeforeToolCallEventhook 在执前取消则为Noneretry是否重试hook 可置为True触发重试默认False。该事件支持工具重试机制当 hook 回调将retry置为True时工具执行器会丢弃当前结果并再次调用工具。但需要注意两点对流式消费者的影响被丢弃的ToolStreamEvent中间流式事件在重试前已经发出被丢弃尝试的ToolResultEvent不会发出只有最终成功尝试的结果才会进入对话历史。在修复前装饰器工具若在内部抛异常异常可能被吞掉或仅以非标准形式呈现导致AfterToolCallEvent.result无法正确携带失败信息重试与后处理逻辑失效。修复后异常通过exception字段result_event.exception见 executors/_executor.py随事件一起传播hook 可以据此统一实现失败告警、自动重试或补偿逻辑。该事件还使用反向回调顺序should_reverse_callbacks返回Trueevents.py即后注册的回调先执行契合后注册的钩子先清理的语义。典型使用示例from strands import Agent from strands.hooks import AfterToolCallEvent def on_tool_finished(event: AfterToolCallEvent) - None: if event.exception is not None: # 工具失败告警或按需重试 print(fTool {event.tool_use[name]} failed: {event.exception}) event.retry True # 触发自动重试 else: print(fTool {event.tool_use[name]} ok in {event.duration}s) agent Agent(...) agent.add_hook(on_tool_finished)模型层兼容性修复4. Gemini 工具调用的reasoningSignature透传PR #1703本次发布修复了 Gemini 模型在工具调用场景下推理签名reasoning signature未正确传播的问题。reasoningSignature是模型推理时产生的签名令牌将模型的推理与本次工具调用绑定在 types/tools.py 与 types/content.py 中定义为ToolUse的可选字段。在 models/gemini.py 中解析 Gemini 工具使用响应时reasoning_signature content[toolUse].get(reasoningSignature) # ... thought_signaturebase64.b64decode(reasoning_signature) if reasoning_signature else None签名以 base64 编码传输解码后作为 thought 签名传入。同时在发送侧gemini.py将reasoningSignature重新编码回工具使用起始块。此外 models/litellm.py 也处理reasoningSignature当签名存在且工具调用 ID 尚未包含分隔符时将签名追加到工具调用 ID 中避免与现有 ID 冲突。该修复的意义在于多轮工具调用对话中推理签名缺失可能导致模型在后续轮次丢失与先前推理的关联影响长链路工具编排的稳定输出。修复后 Gemini 工具调用全链路的签名得以保留。5. 处理 OpenAI 模型仅工具调用、无其他助手内容的响应PR #1562另一个模型层修复当 OpenAI 模型的响应包含工具调用且没有其他助手内容时此前 SDK 处理可能不完整。此修复确保了这种纯工具调用响应被正确解析并进入工具执行流程而不是被当作异常或空响应丢弃。这类响应在多工具并行调用场景模型一次返回多个 tool call中较为常见修复后 agent 循环能够稳定驱动后续的工具执行与结果回填。MCP 支持升级6. MCP 最低依赖升级至 1.23.0支持 TasksPR #1674为支持 MCPTasks 能力本次发布将 MCP 依赖的最低版本从 1.23.0 之前的版本提升至1.23.0。MCP Tasks 是 Model Context Protocol 中用于长任务执行与状态跟踪的新机制。升级后使用 MCP 服务器与工具时Tasks 相关协议能力可正常协商与使用。对使用 MCP 客户端如通过mcp包接入外部工具服务器的开发者升级 SDK 时建议同步确认环境中 MCP 依赖不低于 1.23.0。本仓库中 MCP 工具服务器的相关实现与测试可参考 strands-mcp/src/strands_mcp_server 目录。多智能体与工作流修复7. A2AAgent 空AgentResult内容修复PR #1675修复了 A2AAgent-to-Agent场景中A2AAgent 返回空的AgentResult内容的问题。此前在特定调用链下A2A 代理作为子代理返回时结果内容可能为空导致父代理拿不到实际输出。修复后AgentResult能正确携带子代理的最终内容。8. 工作流 finalize 条件更新PR #1708更新了工作流执行workflow execution的finalize 条件调整了工作流何时判定为完成并进入收尾阶段的条件逻辑确保工作流在正确时机触发收尾如释放资源、写回状态避免过早或过晚 finalize。CI / 工程基建改进9. PR 中加入 Conventional Commit 工作流PR #1645新增 GitHub Actions 工作流在 PR 中强制/校验Conventional Commits提交规范feat/fix/chore 等类型前缀。这是仓库采用自动化 changelog 生成见 site/scripts/changelog的基础——每个 SDK 版本条目如本文解析的 python-v1.27.0.md正是由符合规范的提交派生而来。此工作流将规范检查前移到 PR 阶段降低维护成本。10. Maintainer PR 自动运行 review 工作流PR #1673新增自动触发规则maintainer 提交的 PR 自动运行 review 工作流并配套将允许的角色allowed roles更新为包含 maintainerPR #1704同时修正了集成测试中 approval 环境变量输出引用PR #1685并更新 strands agent 工作流的 approval 环境变量PR #1701。这些变更共同完善了仓库自动化的角色权限与 CI 环境配置。11. 依赖升级PR #1699 / #1684actions/github-script从 7 升级到 8amannn/action-semantic-pull-request从 5 升级到 6。均为 CI 依赖的常规升级dependabot 提交无破坏性变更。测试基建Python 3.14 覆盖率PR #1178新增对Python 3.14的测试覆盖确保 SDK 在该 Python 版本下通过测试套件。结合 pyproject 中的项目配置strands-py/pyproject.toml3.14 正式成为受支持的测试目标。对使用最新 Python 版本的开发者v1.27.0 提供了更充分的兼容性验证。升级建议与总结v1.27.0 是一个无破坏性变更的增量版本升级路径平滑。按使用场景整理升级要点使用 Gemini 模型做多轮工具调用升级后获得reasoningSignature全链路透传建议升级使用装饰器工具 Hook 做失败处理/重试升级后AfterToolCallEvent.exception可用配合retry字段可实现统一的重试策略同一个 agent 实例可能被并发调用新增concurrent_invocation_mode参数可按需选择抛异常或放行使用 MCP 且需要 Tasks 能力确认 MCP 依赖 1.23.0使用 A2A 多智能体架构修复了子代理空结果问题建议升级。回顾本次发布技术主线清晰Agent 编程模型的易用性提升add_hook、concurrent_invocation_mode、模型层与协议层的正确性修复Gemini 签名、OpenAI 纯工具调用、MCP Tasks以及工程基建的持续完善Conventional Commit 工作流、Python 3.14 覆盖、CI 依赖升级。对于生产环境使用 strands-agents Python SDK 的团队这是一次低成本、高收益的升级。赞分享人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务【免费下载链接】harness-sdkBuild an agent harness and control it end-to-end. Open-source SDK for production AI agents in Python TypeScript - any model, any cloud.项目地址https://gitcode.com/GitHub_Trending/sdkpython13/harness-sdk点击查看免费下载相关推荐Strands Agents SDK 新增原生OpenAI模型支持的技术解析Strands Agents SDK 新增原生OpenAI模型支持的技术解析 在人工智能应用开发领域模型提供商的集成一直是开发者关注的重点。Strands A人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务strands-agents Python SDK v1.26.0 版本解析MCP Tasks 支持、多智能体 Artifact 修复与模型错误处理增强strands agents Python SDK v1.26.0 版本解析MCP Tasks 支持、多智能体 Artifact 修复与模型错误处理增强 版本人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务Strands Agents SDK Python v1.7.0 版本解析类型化事件系统、Bedrock 增强与 MultiAgents 钩子支持Strands Agents SDK Python v1.7.0 版本解析类型化事件系统、Bedrock 增强与 MultiAgents 钩子支持 本文以开源人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务上一篇终极BilibiliDown音频提取指南5分钟学会免费批量下载B站音频下一篇Notepad--终极指南5个高效技巧让文本编辑速度提升300%创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考