9 月 18 日,微软发布了 Python 版 Agent Framework 1.19.0。版本说明里最扎眼的一条是破坏性变更:从这一版起,每一次 MCP 请求和会话都被绑定到发起它的调用身份,同时按来源与归属做范围限定。反过来说,在这之前的版本里,跨会话的工具串用是可能的——会话不跟人走,工具调用可以借到别处开好的会话。框架的用户规模不小,而绝大多数跑着多租户智能体的团队,恐怕都没有按这个口径自查过自己的部署。
这个修复针对的是一类真实存在的风险面。多租户场景下,如果会话不与发起身份绑定,租户 A 的请求理论上可能落在租户 B 的会话上下文里——借到对方的工具权限、读到对方的中间状态。这与 Web 安全里的会话固定、API 网关里的令牌边界是同一族问题,只是换到了智能体运行时。此前的多智能体安全事件研究已经反复证明:智能体框架的攻击面,往往就在框架自己都还没想清楚「谁在调用」的地方。
同批落地的还有技能包的完整性校验。智能体框架允许加载「技能档案」来扩展能力,而 1.19.0 之前,加载的技能包无法确认是否被篡改过;新版本把技能档案限定为 ZIP 格式,且必须通过摘要校验——包内容对不上就拒绝加载。配套的收紧还包括:废弃了 MCP 采样回调,并给会话新增了按工具的暴露控制,运维可以把单个智能体能看到的工具清单收窄到最小集。这几件事拼起来是一个共同姿态:框架开始把「能力越大、边界越要清楚」当成本职工作,而不是留给使用方的选修课。
另一组修复解决的是状态丢失。压缩摘要与检查点往返这两条路径上,长时运行的工作流会在没有任何报错和日志的情况下悄悄丢状态——任务看起来还在跑,进度已经回退。发布说明没有披露有多少工作流受过影响、问题存在了多久,这类静默损坏的可怕之处正在于此:它不制造故障单,只在几个月后以「数据对不上」的形式浮出水面。对跑长任务智能体的团队来说,升级到 1.19.0 的理由里,这条可能比安全加固更迫切。
功能面上,这版还引入了通用向量存储提供方协议,新增 MongoDB、Azure DocumentDB 与 Azure Cosmos DB NoSQL 三种连接器,记忆层的选型空间变大;函数调用也可以选择串行执行,给需要严格顺序的工具链留了口子。功能清单很长,但主线只有一条:身份、完整性、可见性、状态——多租户智能体运行时的四根柱子,这一版补了三根半。
冷静的部分也要说。破坏性变更意味着升级有迁移成本,存量部署里依赖旧会话行为的代码需要逐个排查;摘要校验挡住了包被篡改,挡不住「本来就被投毒的技能包」,供应链的源头治理仍靠生态;按调用身份隔离是必要条件,不是充分条件——真正的多租户隔离还需要在存储层与网络层做配套。对使用方更有价值的是一个动作:把这次公告当作一次自查清单,去核对自己生产环境里的会话归属、技能包来源和检查点完整性。框架把边界画出来了,走不走得到那条线上,取决于每个团队自己。目前官方及行业暂未披露更多细节,后续将持续跟进迭代动态。