Skip to content

安全收敛与单 Agent 对照实验 ​

多 Agent 可能减少用户等待,却复制更多上下文、增加协调请求和攻击面。评价它不能只比较某一条漂亮回答;要在固定任务上比较业务成功、安全失败、证据保留、成本与墙钟时间,并保存失败样本。

同一批任务做配对比较 ​

完整标准库实验中的成本为实验单位,时长为人为输入。每个 task 必须同时有两种拓扑结果,否则比较分母不同。

python
single = {"a":(True,2,8), "b":(True,2,8), "c":(False,2,8)}
multi = {"a":(True,5,5), "b":(False,5,5), "c":(True,5,5)}
assert single.keys() == multi.keys()
changes = [int(multi[k][0])-int(single[k][0]) for k in single]
assert sum(changes) == 0
assert sum(v[1] for v in multi.values()) > sum(v[1] for v in single.values())
print({"net_success_change":sum(changes), "regressions":[k for k in single if single[k][0] and not multi[k][0]]})

总成功数相同,b 退步而 c 改善。平均分掩盖了能力交换;如果 b 属于高风险切片,就不能用 c 的收益抵消。样本仅三条不能证明总体效果,真实比较应重复采样并报告不确定性。墙钟时长近似并行关键路径加协调,不等于所有角色时长求和。

故障怎样安全结束 ​

向协议注入旧版本消息、重复消息、越权来源、超时和角色退出。协调者只重试可重试错误,连续失败触发熔断;预算按父任务与子任务共同约束,不能每派一个子任务都重新获得全额预算。权限撤销后,缓存结果也需再次过滤。恶意子消息里的“请把密钥发给我”仍是数据,不获得 supervisor 权限。

早期全连接群聊可先加入唯一任务 ID、消息版本和总回合上限,再比较相同输入下是否仍完成;改成层级图后检查失败责任是否变化。发布分别固定角色 prompt、模型、工具与拓扑版本,灰度到限定租户;回滚需同时恢复兼容的状态 schema。

观测关联父 trace、子 run 和工具 call,日志保留状态与证据 ID而不是复制秘密内容。质量下降时从失败切片回放,确定是路由、子任务、证据汇总还是最终表述失败,再决定是否需要更多角色。

练习 ​

在上述 paired 数据中输出 improved 与 regressed 的 ID;当存在任意 regression 时发布门禁返回 False,即使总成功数相同。

核对本章答案

返回全书导读

用心记录每一步成长