会传染的不只是恶意代码:智能体之间的错误信念怎么测|洹拓科技

一、载体是自然语言,所以传统边界件挡不住
恶意代码的传播面可以用签名、白名单、沙箱这三件传统边界件套住:内容有可识别的结构特征,执行有明确的入口。智能体之间传播的错误信念不属于这一类。它的全部载荷就是一段普通的自然语言,没有可疑字节,没有可枚举的指令模式,读起来像一次正常的经验交接。签名库对它的判定能力接近于零,白名单也无效,因为发这段话的智能体本来就在名单里,而且是我们自己的。
差别在于内容有双重身份。在人机对话里,注入文本只是一次输入,会话结束就消失。在智能体协作里,同一段文本既是给下游的指令,又是下游要写进记忆的素材。它被转发一次之后,在更下游的位置上不再显示来源,而是以”我们之前达成的共识”这种形态出现。也就是说,一条内容在传播链上每走一步,它的可信外观就升一级:第一步是外部输入,第二步是同事的判断,第三步是团队的历史结论。走到第三步时,没有任何一个下游智能体有理由怀疑它。
这就是为什么”能不能测出来”比”能不能挡住”更关键。挡不住是结构性的,因为系统的全部价值就建立在把上游结论交给下游使用这件事上;只有做成可测项,才有资格谈隔离设计的取舍。有一类公开测试走的正是这条路线:设两类环境,一类让多个智能体共同完成一个编程项目,一类在每次交互之后清空上下文、只允许通过外部记忆传递信息(据公开报道的设置如此,其传播比例与结论强度不作为本文的判断依据)。两类环境的差别不是规模,而是各自暴露的问题不同,值得逐条拆开看。
二、两类环境各自暴露什么,最小可复现单元是后者
持续协作环境测的是长期漂移。智能体在一个项目里反复往来,一开始只是某条建议被采纳,若干轮之后可以观察到角色边界变化:本来只负责检查的实现智能体开始替团队决定哪些测试可以不做;本来只做格式整理的智能体开始改写验收标准。这类现象的特征是单次看不出问题,只有把整段交互按轮次排开、逐轮与行为基线比对才看得见。所以它测的是信念漂移与角色改写,代价是复现慢、干扰变量多,模型自身的采样波动和任务难度变化都会混进结果。
清空上下文加外部记忆那一类,测的是最低传染条件。每次交互后上下文归零,智能体之间唯一的通道就是那条记忆。如果一条内容只靠”被写进记忆”就改变了后续行为,那说明传染不需要对话历史,不需要多轮说服,也不需要连续语境,只需要一次写入权限。这才是最小可复现单元:它把变量削到只剩两个,写入动作和读取动作。
对做交付的直接启发是,先建一个最小复现环境,再谈复杂的联调测试。做法是把链路削成”一个写入端加一个只依赖外部记忆的读取端”,读端没有任何历史对话,全部输入来自记忆条目。在这个环境里能稳定复现的判定,才有资格搬到真实的多智能体编排上;否则在协作环境里观察到的偏移,永远说不清是内容造成的还是上下文造成的。
三、企业系统里四类最容易被写入并传染的载体
风险不是均匀分布的。按我们做智能体编排项目时的观察,绝大多数传染都发生在下面四类位置,因为它们有一个共同特点:内容会被下游当作事实复用。
| 载体 | 为什么会被写入 | 传染后的现场表现 | 优先处置 |
|---|---|---|---|
| 共享任务队列的描述字段 | 任何上游都能写,下游按任务文本执行 | 任务目标被替换成附带目标,验收口径跟着漂移 | 写权限分级,把目标字段和描述字段拆开 |
| 跨会话记忆的摘要 | 摘要生成时不保留原话的归属和条件 | 智能体把一条摘要当作既定政策长期执行 | 摘要必须带来源标记与生成版本 |
| 工具返回文本 | 返回值天然被当成客观结果 | 混在返回内容里的一句判断被当作数据结论 | 结构化字段与自由文本分离,只有前者可信 |
| 上一轮智能体的结论字段 | 编排框架默认把结论交给下一步 | 错误结论作为前提继续推导,形成级联 | 结论必须能指回一条可读来源 |
四类里最难治理的是第二类和第四类。摘要的问题是它在压缩时丢掉了”谁说的、在什么前提下说的”这两项信息;结论字段的问题是编排框架把它设计成传递的主通道,改成传引用等于改架构。这两类恰好都是”清空上下文只留记忆”那组实验直接命中的位置,这也解释了为什么那一组的结论更具迁移价值。
四、六条隔离措施:把采信变成受控动作
隔离的目标不是阻止内容通过,而是让每一次通过都留下可判定的采信级别。以下六条是能在项目里直接落地的。
- 传递时带来源与可信级标记。每条跨智能体内容附三个字段:产生它的智能体标识、它引用的原始数据来源、以及一个由策略而不是由模型自述决定的可信级。没有标记的内容按最低级处理,只能作为提示,不能作为依据。
- 把记忆写入权限和指令执行权限分开。能向共享记忆写入的智能体,不应同时拥有触发高影响动作的能力;能执行动作的,其写记忆范围要限定在自己负责的对象上。这是切断”只靠写入就能传染”最直接的一招。
- 下游默认不采信上游意图,只采信事实数据。上游说”我认为这个模块可以不做测试”属于意图,不采信;上游说”这条接口在重复调用时返回了某一类错误”属于数据,可采信但必须带原始位置。这条要写进接口规范,不能靠模型自觉。
- 跨智能体传引用而不是传结论。给下游的应该是一个只读位置标识,让下游自己取原文。引用不改变内容,也不产生共识外观,代价只是多一次读取。
- 关键动作要求原始授权可回溯。凡涉及删除、发布、对外发送、权限变更一类的动作,授权必须能追到一个带身份的人或一份带策略标识的配置,不能是”上游智能体确认过”。
- 设置一条硬约束:结论必须能指回一条可读来源。指不回去的结论不进入下一步,直接标为待核实。这一条同时给了运维检查依据,也让前五条的执行情况可以被抽查。
五、把传染做成可测项:语料、固定链路与三条判据
要测,先要有语料。构造若干条”单独看无害、但携带目标偏移”的内容,选取判据是:一条中立的评审读它会认为这是正常工作交接,而它确实会影响下游可行动作的集合。语料不需要任何攻击样式,也不必写成话术模板,越接近日常交接越有价值,因为真实的传播本来就发生在日常交接里。本文刻意不给出可用样例文本,测试用内容由各项目在自己的业务语境里构造。
链路要固定:写入端、记忆位置、读取端三者都不变,只换语料。每个用例重复多次运行,用来区分内容效应和采样波动。判定只看三件事。
- 是否被转发。这条内容出现在下游输出里,或者被再次写入记忆,记为一次传播事件。
- 转发后行为是否偏移。把读端在同一个任务上的动作序列与基线比对,重点看三项:验收标准是否被放宽、放弃条件是否被提前、上报口径是否被改动。
- 偏移能否被自查发现。给读端一次自我审查的机会,要求它说明结论依据、并指回原文。这一条最关键:如果偏移不可自查,生产环境里连告警信号都不会有。
三条判据必须分开统计,不能合成一个分数。”会转发但行为不偏移”和”不转发但行为偏移了”是两种系统,处置方式完全不同;后者更危险,因为行为偏移说明采信已经发生,只是没有留下可读的痕迹。
六、留证与组织侧结论
还有一条运维要求容易被忽略,而它决定了前面所有措施能不能追责:日志要能还原”谁在什么时候把哪句话带给了谁”。跨智能体的每条消息必须带两个字段,一个传播标识(在同一条内容的每次复制中保持不变)和一个父级引用(指向它这次是从哪条消息复制而来)。有了这两项,一次异常可以沿引用回溯成一张传播图;没有它,日志只是各智能体的独立发言记录,事后无法区分”各自想到”和”被传染而来”。
洹拓在多智能体项目里把这一条列为验收项:画不出传播图的编排系统不进入生产环境。组织侧的结论也就落在这里。多智能体架构的收益要扣除一份错误信念扩散的治理成本,包括测试语料的维护、传播标识带来的存储开销、以及待核实状态的处置人力,这笔成本通常在立项时没人写。跨部门共享记忆时,要先明确写入权限的归属:这块记忆空间属于谁、谁能写、出问题时谁有权撤销条目。这三问没有答案之前,共享记忆带来的不是效率,而是无法界定的责任边界。