微软发布了面向 Python 的 Agent Framework 1.25.0。该版本限制通过 MCP 读取的目录大小,MCP 是与外部工具服务器通信的协议,目录则是汇总工具列表的资料。同时,它阻止某一用户的工作流执行器和会话在其他权限范围内复用。让多个用户共享同一智能体服务的开发者,需要同时检查探索配置和工作流创建方式。

1. 为 MCP 目录探索设置上限

根据发行说明,agent-framework-core 和 agent-framework-declarative 对 MCP 工具及提示词的目录探索量,以及框架管理的请求时间,施加如下限制。

表:MCP 探索与请求的默认设置

条件:适用于 MCP 工具、提示词探索及框架拥有的请求的默认值

单位:页、条、秒

为 MCP 目录探索设置上限
设置默认值适用对象与条件
探索页数上限100页分别适用于每个工具、提示词目录
探索条目数上限1,000条分别适用于每个工具、提示词目录,与页数限制独立
请求超时30秒适用于框架管理的请求

目录刷新失败时,会完整保留原有快照,即保存刷新前状态的副本。

使用大型目录的开发者可以提高页数或条目数上限。仅对可信的 MCP 服务器,可将相应设置指定为 None 以取消该上限。如需读取更多列表内容,应结合服务器可信度与所需探索范围进行配置。

请求等待时间单独调整。向 MCP 工具传入 request_timeout=None,可将请求超时恢复为无限制。自行创建的客户端保留自身的传输与超时策略。

探索审批策略现在支持使用可调用函数。可以根据工具名称和是否只读来确定允许范围,并反映调用方显式指定的覆盖设置,即重新指定配置值。也支持更新现有工具的策略。

2. 将工作流执行器和会话绑定到权限范围

实际运行工作流的执行器和会话会绑定到一个权限范围,即允许访问的对象边界。若将用于某一权限的执行器和会话交给其他权限的请求,系统会在调用模型前拒绝。在接收请求的 AG-UI 端点,也会拒绝将工作流智能体封装为工具来执行。

应对方式是传入工厂函数,使其在每次调用时创建新的工作流、执行器和会话。发行说明给出的传入形式如下。

AgentFrameworkWorkflow(workflow_factory=...)

跨范围复用会报告 WORKFLOW_SCOPE_CONFLICT。不受支持的工作流智能体工具会报告 WORKFLOW_AGENT_TOOL_UNSUPPORTED,因此收到错误的开发者应改为通过工厂直接提供工作流服务。

3. 每次调用都新建 MCP 协议会话

发行说明中同时列出的 agent-framework-declarative 1.5.0 安全修复,阻止了调用之间共享 MCP 状态。此前,已初始化的协议会话,即与服务器的对话单元,会被缓存并在下次调用时复用。现在,包括工具执行和列表查询在内,每次调用处理器都会新建并关闭会话。

因此,调用之间不再保持服务器会话的连续性。等待审批后或从保存任务中断状态的检查点恢复后,先前调用的会话状态也不会延续。需要连续状态的开发者,应显式使用指向服务器所留状态的远程状态句柄,或自行提供限定范围的 MCPToolHandler。检查点与审批验证本身不变。

处理器创建代码也需要调整。应将通过 async with 创建的方式改为普通构造方式,并移除 aclose() 调用。

仍可传入原有的缓存大小参数 cache_max_size,但它会在未经验证的情况下被忽略。若值不是 None,则会发出弃用警告;省略该参数即可消除警告。

4. 探索量限制与权限隔离的设计对象不同

100页是探索页数的上限,1,000条是从目录中读取的条目数上限。只提高页数上限,条目数上限仍然存在,因此处理大型目录的服务需要同时检查两项设置。请求超时则独立限制请求等待时间。

相比之下,执行范围检查限制的不是查询量,而是谁可以复用执行器和会话。探索量应根据服务器可信度与目录规模配置;权限隔离则需要调整对象创建结构,避免将相同的执行器和会话交给其他用户的请求。

5. 先检查安装环境与共享对象

从此次发布起,安装所需的最低 Python 版本为 3.11。如果环境使用 Python 3.10,应先升级运行环境。

提供探索上限配置的默认 MCP 处理器,以及使用工作流所有权检查的 AG-UI,都要求 Core 1.25,因此还需一并检查相关依赖。

多用户服务的迁移可以从查找共享对象开始。检查保存执行器和会话的位置,即可找出需要改用工厂、在每次调用时创建新对象的部分。

共享构建器是根据配置构造对象的工具,即使关闭缓存目标也会复用执行器,因此不能替代按调用创建。只有所有调用方均为同一主体时,才使用单用户配置。

权限范围检查针对运行中的执行器和会话的身份,不涵盖从共享存储加载的状态,也不涵盖直接调用工作流的自定义工具函数。

调整探索量设置与消除跨权限边界的对象复用,是两项不同的迁移任务。