我相信我的代理所说的一切,然而它们却经常出错。今年我通过代理处理了超过1070亿个令牌,因此我分析了2026年至今的代理会话数据,以找出它们出错的地方。在约40%的会话中,代理犯了一个重要的错误。这就是代理初次犯错时的频率,但这还不是这些错误进入工作成果的频率。在错误到达我之前捕获它们,正是我今年大部分时间都在运行的基于代理的审查方法的工作内容,这也是我今天要分享的方法。
这项分析确定了三种导致代理持续失败的方式:第一,它们夸大自己的工作成果,即声称已完成或已检查,但实际上并未如此;第二,事实错误,例如误读来源资料;第三,推理错误,即事实正确但结论不正确。该方法包含三个级别的审查,分别针对这三种失败模式构建而成。我将每个级别都打造为一种代理技能。接下来我会展示它们的工作原理,并通过三个真实案例演示其应用过程。
第一级防止代理夸大工作成果。在任务开始前,指令会明确规定需要交付的内容:文件、存放位置以及验证命令。它还会指出代理过去曾采取的捷径,以防止重复犯错。执行审查的代理必须以以下两种方式之一结束其报告:要么“工件已验证”并附上文件指纹以记录工作,要么声明“工件缺失”并提供理由。随后,发送任务的代理会自行运行检查程序。“声称完成”本身并不是可接受的答案。
第二级防止事实错误。当准确性至关重要时,首先要在来源中找到答案必须与之相符的内容。然后,两个代理接收完全相同的指令并独立执行相同的工作,彼此看不到对方的成果。每个代理都会注明每项事实的来源,并将其结果与事实进行核对。接着,第三个拥有原始来源资料的代理会将两个独立代理的工作逐行对比,并通过回归源头来解决所有差异。它从不强行要求一致。
第三级防止推理错误。当思维清晰度至关重要时,我们分三个阶段进行对抗性审查:首先,代理审计自身工作。它列出所有主张并将每一项标记为已测量(经来源验证)、推断或假设,无法证实的内容会被测试或被标注为猜测。其次,没有原始代理任何背景的审查人员各自扮演具有挑错动机的角色,冷眼审视文稿。他们只看到工作和来源,没有历史、草稿或既定结论需要认同。
其次,审查人员的发现也会与源头核对无误后才会修改内容。第三,在工作修订完成后,从未见过该工作的全新审查人员会对最终版本进行检查。随着风险等级的提升,每一级都在前一级基础上增加审查力度。在这些案例中,每次审查仅需几分钟而非几小时,且由代理执行检查而非我本人。以我们运营的规模而言,亲自核查已不现实。
让我们看看这三个审查级别在三个真实案例中的应用:首先是内存泄漏问题。我使用的一个开源听写应用存在内存泄漏,占用空间高达9GB。我们的目标是找到泄漏源、修复它并获得项目维护者的接受。为此,我们必须查明真正的原因。我与代理们共同努力时,三次遭遇代理提供不实信息的情况。
首先,我派去用一种工具测量泄漏的子代理使用了另一种工具,并在未说明未按指令操作的情况下报告工作已完成。起初无人察觉,包括分发任务的代理也是如此。直到我质疑结果时才被发现:正确的工具本应生成的文件并不存在,且无人注意。这正是第一级审查的作用所在。
在此案例中,我们派遣子代理构建经过特殊仪器配置的应用程序版本并在运行时捕获遥测数据。然而,构建失败了。由于我们指示子代理提供所有工作的文档而非仅仅报告“完成”,它指出主要交付物未送达并解释了原因。它报告工件缺失(即软件构建),并列出了25个编译器错误,同时正确地将可交付内容标记为部分完成。
派遣子代理执行包含第一级审查的任务耗时19分钟,消耗约1600万令牌。另外两个重大不准确信息即将公开,且风险更高,因此我们借用了第三级审查方法:由没有任何代理背景的审查人员进行审核。我们将在稍后的最后一个例子中看到三级审查的所有阶段,但这里先展示其在内存泄漏修复中的应用。
第二个案例中,代理归咎于错误的代码。为了找到泄漏源,它编写了一个使用应用程序相同库的小型测试程序。该测试也发生了泄漏,因此它得出结论认为应归咎于该库,并称“这足以提交报告”。审查人员复现测试后发现它跳过了库所需的重要步骤。正确使用该库时并不会发生泄漏,问题在于应用程序如何使用该库。
在针对内存泄漏工作的代理的第三个重大错误中,代理撰写了拉取请求中的修复说明,声称完全消除了泄漏。但它测量泄漏的方式遗漏了大部分内容,审查人员也发现了这一点:修复措施减少了泄漏但未完全消除。因此,拉取请求附带了诚实的数据提交上去,维护者接受了修复并合并了代码。
每个三级审查案例耗时约15分钟,总共消耗约600万令牌。下一个例子涉及投资组合公司的会计处理。收购和建立企业往往杂乱无章。对于我们的一家投资组合公司,我们需要将来源会计系统中一年的扫描报表转化为完整、准确的每笔业务交易记录,用于财务报告目的。
一个代理提取了数据并返回结果称:“嘿,我建议抽查其中几笔交易。”这将审查代理工作的负担重新推回给我们,这是不可接受的。从扫描中提取数据经常会出现繁琐且难以检测的错误:交易完全被遗漏、放入错误的月份,或记录有错误详情。一个
代理仅仅报告“完成”,并不能告诉你这些工作是否真的发生了。这就是二级审查方法的用途所在。在这里,我们使用对账单上打印的余额作为每月的控制总额。两个代理独立提取每个月的数据,并且各自反复核对对账单,直到每月账目平衡为止。随后,第三个代理逐行比较两份提取结果,并针对每一处差异对照原始对账单进行核实。最后,另外两个任务相同的代理在最终交易记录被接受之前进行了检查。这种由相同任务的代理组成的“扇出-扇入”模式,在提高准确性和可靠性方面非常有效。
当我们运行这一二级审查时,发现了遗漏的交易、错误的交易以及月份记录错误的交易。通过比较两份提取结果,我们捕捉到了56处描述、日期和备注方面的差异。但最终,全年的账目精确到分地平衡了。整个审查过程耗时约20分钟,消耗了750万个令牌(tokens)。
最后是 stakes 最高的一个案例。这里涉及一家业务更为混乱的投资组合公司。我们的一家公司与供应商存在账单纠纷,金额高达数千美元,并伴有法律后果。我们需要发送一封要求函,明确陈述我们的立场和要求,其中的每一项主张都必须经得起合同和每张发票的检验。一个代理基于“供应商的合同已过期”这一前提起草了该信函。
任何涉及法律或财务风险的事项在发出前都要经过三级审查,以下是这封信函的三级审查过程。首先是自我审计:代理将信函中的主张与合同及发票(包括日期)进行核对,并报告已验证无误。第一阶段通过。其次是冷审查员:每个审查员都扮演一个旨在挑毛病的角色,在本例中包括我们的诉讼律师、供应商的顾问以及不信任任何数字的审计员。
他们各自只收到信函、合同和发票,没有其他信息。审计员根据发票重新计算了财务索赔金额,精确到分且完全正确。但两位律师都独立发现了隐藏在合同小字条款深处的一个细节:三年自动续期条款。该合同在不到三周前刚刚自动续签。如果发出这封信函,我们将不得不放弃一份仍在生效中的合同,并因提前解约而向供应商支付数千美元。
两位律师代理还发现,在修订过程中,原始代理甚至删除了一行正确识别续期情况的文字。原始代理自己的检查也与其自身的错误一致。这正是这种审查方法旨在捕捉的问题类型。不过,我们诉讼律师的裁决是:不要发送这封信函。
这种三步走的冷审查过程耗时15分钟,消耗了1300万个令牌。因此,信函被重写并移交至三级审查的第三阶段:从未见过该信函的全新审查员检查了最终版本。有缺陷的版本并未发出。
这就是三个审查故事和三级审查机制:一个无法构建定制版应用的代理选择了如实告知,而不是错误地声称已完成;两组各由两名代理组成的团队将一年的商业交易精确到分地进行提取和核算;而基于特定角色的冷审查员,在没有任何原始代理背景信息的情况下,修订了连起草代理自己的检查都标记为“已验证”的信函。
我已将这三种审查级别打包成代理技能,并作为开源项目发布。详细说明位于 gallon.me 网站。将你的代理指向该说明页面,它将知道如何使用这种审查方法来检查自己的工作,从而让你能够信赖它。
想要了解更多使用 AI 代理进行实际工作的最佳方法,请订阅我的通讯并在此关注我。我相信我代理告诉我的每一件事。并不是因为它们总是正确的,它们经常出错。我相信它们是因为我所依赖的一切都已经过彻底审查和验证。最重要的是,这种验证并非由我亲自完成。