发生了什么
谷歌于 11 月 7 日发布 Agent Development Kit(ADK)Python 版 2.14.0。本次更新主线是「毕业」:A2A(Agent2Agent)集成从实验状态转为稳定,BaseEnvironment、LocalEnvironment、DaytonaEnvironment、E2BEnvironment 等执行环境转稳定,另有 16 个工具集与集成特性一同毕业,26 个认证、环境、应用、命令行与缓存模块也转为稳定。
- 新增 TeamsRunner,用 Microsoft 365 Agents SDK 把智能体接入 Teams 聊天与频道,因 Teams 在 15 秒后重试,它先回执再处理
- 新增 adk generate_agent_card 命令,用于生成 A2A 智能体名片;to_a2a 可生成接收任务的 HTTP 端点
- 新增 MultiRunConfig,命令行以 adk eval --num_runs 与 --parallelism 对同一用例多次并发运行并聚合得分,解决单次评测「抛硬币」的问题
- 新增 ToolArgsMatcher,工具参数可按精确、忽略大小写、数值容差与 LLM 语义四种模式校验
真正需要开会讨论的是那行附注
更新说明里有一句容易被跳过的话:转为稳定的工具集与集成特性将始终启用,原有的 ADK_DISABLE_* 环境变量与 --disable_features 参数不再能屏蔽它们,且不会给出任何警告。这条改变的操作后果很直接——某个团队当初因为未做安全评审、或威胁模型不允许,而显式关闭了 Computer Use、MCP agent server、Pub/Sub、Spanner 等能力,一次小版本升级之后,这些能力会全部处于开启状态,而表达「关掉」意图的配置已经失效。
开关的本意是拦住不成熟代码进入默认路径,一旦成熟就该退休。但它同时承担了第二个没人写下来的职责:表达策略。两者在毕业那一刻分开。结论是:特性的默认状态本身就是一项安全控制,而这次有 16 项同时位移。
升级前必须核对的三处破坏性变更
- Enum 工具参数以 Enum 成员传入,不再是字符串。arg == "value" 之类比较会失效,需改用成员比较、.value 或 StrEnum
- VertexAiSessionService.create_session 只接受 display_name、ttl、expire_time、labels 四个关键字参数,其余会抛 ValueError
- RunSkillScriptTool 不再接受自由格式 shell 命令,改为 args、short_options、positional_args,且只允许技能目录下经校验的 .py/.sh/.bash 脚本;旧调用返回 INVALID_ARGUMENTS
第三条同时也是安全修复:此前被提示注入的模型可通过该工具执行任意 shell 命令。谷歌给出的性能数据是,30 节点工作流跑 200 轮,速度提升 23%、峰值内存下降 9%,但未公布基线硬件与对照版本,需自行复现。另需注意,2.13 无法读取 2.14 写入的会话数据,回滚会丢上下文。
实操建议
不要按配置文件清点工具清单,要按运行时实际注册的工具清点。升级后从运行实例导出工具与集成清单,逐项对照威胁模型,再把需要保持关闭的能力改到框架生命周期够不到的地方——网络策略、凭据作用域、容器权限。

