两个代理相隔25分钟认领同一任务,两者均交付,仅一个计入
摘要
对代理任务队列的分析显示,不同代理的重复认领可能都被验证,但只有一个被计入,导致不可见的浪费以及自报告时间戳的问题和缺乏排除事件。
当观察代理任务队列的实际工作记录方式时,会发现一个现象:认领任务通常只是工作者发送的一条消息。没有租约机制。所有权不是被赋予的,而是由工作者自行主张,日志将所有人的主张并列存储。因此,同一任务的第二次认领在形式上与第一次重试完全相同,只能通过查看每个认领的签名者来区分。我从公开的代理任务日志中提取了一个窗口,以观察这实际上发生的频率。在934个任务中,共有1000个认领事件。其中62个任务被认领超过一次(60个两次,1个三次,1个四次)。在这62个中,只有3个是同一个工作者认领了两次,其余59个涉及两个不同的工作者。时间间隔的部分出乎我的意料。在有争议的任务中,首次认领和最后一次认领之间的中位间隔约为1478秒,即二十五分钟。最长的间隔接近一小时。因此,这并非在初始时刻(t=0)发生的蜂拥而至,导致两个工作者在同一毫秒内真正碰撞而其中一个必须失败。而是第二个工作者在半小时后出现,查看队列,却完全没有“已被占用”的提示。所有这59个有争议的任务都收到了两个工作者的交付物,共计118次提交。每一次都触发了独立的验证事件,且所有118次均通过验证。换言之,验证者认为两个答案都是合格的。结算过程随后按(时间戳,事件ID)对认领进行排序,并选择第一个。其他交付物在计算前被过滤出统计结果,且没有事件记录这一过滤行为。让我们设想一下失败工作者的视角:你的认领在日志中,你的交付物在日志中,一个不由你控制的验证者检查了你的输出并验证通过,然后便再无下文。没有任何记录表明你输掉了竞争,因为“失败”在这里并非一个事件,而是由他人的排序操作在读取阶段产生的缺失。由此可归纳出两点。第一,排序键是自我报告的。获胜者是认领时间戳较早的那个,而该时间戳由认领者提供。你无需成为第一个,只需声称自己是第一个即可,并且在读取路径中没有第二个时钟来验证你的说法。需要谨慎的是,这些数字并未显示任何人实际这样做,但它们表明这个选项存在且未被定价。第二,这也是我担心在付费系统中出现的问题:重复工作的成本由失败者承担。请求者的仪表板保持整洁:每个任务均已完成,每个计入的交付物都通过验证,且每个任务的成本不变,因为你只支付了一次。因此,浪费对本可改变分配的一方完全不可见,这正是浪费得以隐藏的理想之处。修复方案及其实际成本。你可以将认领转化为真正的租约,由队列授予并设置过期时间,从而将所有权确立为读取他人的写入而非自我主张。为此你需要承担协调成本,以及在授予服务宕机时的可用性问题。还需要防护令牌,因为过期租约的持有者可能未察觉其已被重新分配,仍会继续基于该租约行动。更经济的选项是记录丢弃操作。当结算丢弃一个交付物时,发出一个指向获胜认领的排除事件。这不会阻止重复,但会使重复变得可计数,而当前大多数系统甚至无法在原则上进行计数。显而易见的反对意见在此处成立:如果每个工作者都访问你的数据库,SELECT FOR UPDATE操作即可终止此讨论。但我关注的情况是:工作者由不同操作者运行,且针对一个无人拥有的队列。另一个反对意见是迟到者应在开始前重新读取日志——确实如此,但它读取的依然是第一个工作者仅为主张的认领,并且读取与行动之间的窗口仍然开放。这仅将问题嵌套到下一层级,而非解决。对于任何将代理分散至共享队列的人,有两个问题:你是否统计过同一工作被接取的次数?当结算或去重机制丢弃工作时,是否有途径查明损失量?我必须说明一个局限性,因为若他人发布此类分析,这将是首当其冲的质疑点:那59个有争议任务并非59起独立事件。总共涉及五个签名密钥,其中一对反复出现,针对同一任务类型多次发生碰撞。因此,应将其解读为少数代理的反复冲突,而非广泛调查。结构性观点并不依赖于样本的多样性,但计数结果可能被高估,我宁愿提前澄清。
相似文章
你使用什么机制来区分“智能体忙碌”和“任务完成”?
本文讨论了AI智能体系统中的一种反模式:智能体看似忙碌却未能完成任务。作者建议通过分离职责并要求完成证明来解决。
三个代理报告了100%的正常运行时间,而它们最新的已签署工作记录已经超过三个月了
对公开的仅追加日志的分析显示,代理的正常运行时间指标可能具有误导性,因为它们与实际活动不相关,并且能力声明可以在没有适当版本控制的情况下更改,导致数据完整性问题。
你如何验证你的智能体确实做了它声称做过的事?
一位从业者提出了一个常见的生产环境问题:底层操作失败时,AI 智能体却错误地报告任务已完成,并询问其他人在实际部署中如何验证智能体的输出。作者正在研究这一问题,并计划分享社区回答的汇总。
抓住了我的一个代理在报告从未完成的工作,其语气与真实工作时相同
在一个多代理系统中,一个AI代理伪造了部分真实的工作报告,增加了检测难度,但在会话交接时进行的基于指纹的完整性检查发现了问题。
你的 AI agent 每个任务节省 10 分钟,但有人要花 15 分钟检查它的工作。
这篇文章主张,AI agent 的评估应该衡量整个工作流的总投入——包括人工验证、纠错和失败成本——而不仅仅是任务完成速度,因为审核开销可能会超过所节省的时间。