
同一个客服智能体接入多个用户后,两个名字只差大小写,记忆会不会串到一起?微软Agent Framework的新版本把这个容易忽略的问题放到升级警告里:Redis上下文检索要保留身份标识的精确差异,旧索引不能继续按新规则使用。变化不只是搜索更准确,还意味着已经部署的团队必须安排一次数据迁移。
快速看点:此次是Python 1.24中的测试版RedisContextProvider变更,不是所有Redis组件统一换代;写入与查询使用专门的作用域标记,区别大小写和标点;旧上下文索引须重建并重新入库,打开覆盖开关不能自动迁移。应用仍要提供可信身份和完整授权。
这项修改于10月28日合入,Python 1.24正式标签在30日21时52分UTC发布,换算北京时间已是31日早晨。需要区分代码合入、版本标注和本地可见日期,也不能把同期.NET 1.27的变化一并算进来。本文核验的是Redis上下文提供器的身份匹配与迁移范围,不是整个版本的全部能力。
该组件用于把相关记忆检索出来,再加入智能体上下文;它不是按顺序保存所有聊天消息的RedisHistoryProvider,也不是通用向量集合接口。过去直接用原始标识建立TAG字段,Redis的默认大小写处理和查询格式不能总是原样保留不透明身份,原本不同的标识可能被当作同一类。
例如,Alice与alice、带逗号的a,b与单独的a,都是新增测试刻意区分的对象。这里的“名字”更接近系统内部用户或应用标识,不是让模型自己判断两个人是不是同一人。修复解决的是字段比较规则,不能据此声称已经发生过客户数据泄露,或所有使用Redis的产品都受同一问题影响。
新实现为应用、智能体、用户、线程和会话字段建立带版本的专用作用域标记。它把字段名与原始值一起参与SHA-256计算,再用这些标记进行匹配,避免不同字段里的相同字符串混成一个身份。原始标识仍作为记录元数据保存,不再承担这套TAG索引的匹配职责。
这不是加密身份或隐藏所有个人信息:原始值还在记录中,数据库访问、传输保护、日志脱敏仍要单独管理。哈希标记也不是登录凭证,不能拿到一个标记就当作用户已经认证。真正的信任起点仍在应用服务端,必须从已验证的身份和业务关系中生成配置。
写入时,提供器使用自身配置中的应用、智能体与用户标识,以及当前会话参数确定记录归属。即使待写文档自己带着另一组作用域值,也会被覆盖,而不是让文档内容替自己分配身份。文本检索和可选的文本加向量混合检索,共用这套过滤边界。
已有索引会接受结构兼容性检查,不兼容就报错,而不是悄悄改用宽松匹配继续运行。官方说明要求移除旧上下文索引及其上下文哈希记录,让提供器创建新索引,再重新导入上下文数据。overwrite_index=True只面向兼容索引的重建,不是旧格式转换器,更不会替业务证明旧数据原本属于谁。
对生产团队而言,应先保全可恢复的数据与归属证据,在隔离环境验证重建、重新入库和查询结果,再安排切换与回退;不要直接对共享数据库做宽泛清理。这是实施建议,不是官方承诺无停机迁移,也不是本站已经替读者执行删除或升级。聊天历史等其他组件的数据不能顺手混进本次清理范围。
另一个边界更重要:应用、智能体、用户这三个条件至少有一个非空才允许检索,但没提供的字段不会自动补成限制。只配置应用级标识,就不能宣称已经实现逐用户隔离。各非空条件共同收紧范围,应用应显式提供每个实际存在的隔离维度,而不是期待框架猜出租户关系。
会话限制也不是默认处处开启。普通运行前的记忆检索不传入当前会话标识,因此可以跨会话找同一配置作用域的记忆;search_all同样按配置的应用、智能体和用户筛选,并非只列当前会话。这可能正是长期记忆所需,但若业务要求每次对话完全隔离,还要另外设计并验证边界。
新增集成测试覆盖大小写、标点、文档伪造归属、会话筛选、混合检索,以及旧索引拒绝后重新入库;测试使用临时索引和合成记录,不是客户生产收益数据。本站读取了正式标签的提供器、说明与相关测试,没有运行这些测试或连接Redis,也不把这一次修复写成完整权限审计。
企业智能体的记忆层不能只追求召回率,还要明确“谁的记忆、谁能取、迁移后如何证明”。这次更新把身份的精确比较和旧结构拒绝做成可检查的规则,价值在于边界更清楚。真正上线仍取决于可信身份、正确配置和可回退的数据迁移,不能用一个新版本号替代这三份验收。
