English version / 英文版: I Built a Debate Team Out of AI Agents — What Broke and What It Taught Me
我女儿打 Congressional Debate。这不是那种辩抽象议题的联赛,而是真正的立法文本——有章节、有定义、有漏洞,两边都要在字里行间找到能赢得或输掉这一轮的那一句话。她有一场即将到来的比赛,要准备七项法案,时间大约一周。我本可以直接让 Claude “帮她练练”。但我选择组建一支队伍。
不是比喻意义上的队伍。是九个真正的 Agent,再加一个交互式 Skill,每个只负责一项工作,设计上就不能做别人的事。
**为什么要组队,而不是用一个助手。** 单个 AI 帮忙准备辩论,做的事情和一个过度劳累的成年人差不多:快速扫一遍,抓到一些,漏掉一些,而且不会真的跟自己唱反调。真正的辩论准备也不是一个人的活——得有懂结构的教练、能发现哪里不对劲的家长、会扮演对手并试图在真正对手之前摧毁你论点的队友。于是我就按这个架构搭了一套软件:一个法案分析员,先读原始立法文本,在任何人开始论证前找出所有未定义的词;一个论点撰写员,两边都写,且有一条铁律:绝不编造数据,不确定的地方标成 `[NEEDS CITATION]`;一个证据研究员,唯一的工作就是核实引文是否真的能支撑论点,它也是全队唯一被赋予真实网页访问权限的 Agent,这是故意的;一个反对派侦察员,只负责攻击——不鼓励、不缓和,只输出 “我会怎么打垮这个论点”;一个表达教练,完全不能评论内容,只评节奏和停顿;还有三个模拟评委——家长、教练、资深选手——每人从完全不同的视角给同一段演讲打分,故意让他们观点不同,这样分歧本身就是信号,而不是噪音。
**然后我让它真的跑了全部七项法案。** 简报、正反双方论点、反对攻击、表达建议、证据核查、完整评委打分——第一轮就出了四十二份评分表。有意思的地方就在这里,因为这套队伍发现了一些我自己读一遍根本注意不到的东西。
其中一项案子讲的是海洋能源拨款,金额上万亿美元,评委平均分只有 3.67/10。每个评委独立地指出了同一个致命缺陷:这个论点回应 “这怎么问责” 时,声称法案赋予某个联邦机构的某项权力。我去查了法案原文。那个权力根本不在里面。三个不同的 Agent,有三种不同的职责、三种不同的评判演讲的方式,在没有互相通气的情况下,同时抓到了这个编造的条款。这就是 “专业化 + 对抗性审查” 的全部价值所在:没人专门去找这种失败模式,但因为每个人都在用自己的方式试图把论点拆穿,所以全找到了。
我修复它的方式不是让模型”写个更好的论点”,而是去找 *真正的事实*:结果发现这个机构确实运行着一个和论点想宣称的相近的东西,只是不是论点说的那样。真实的引文,诚实的表述,意图不变。分数涨到 6.33,几乎翻倍,而且这个论点现在更强了,因为它没有撒谎。
这套队伍还会抓到自己的错误,这出乎我意料。有两个 Agent 想保存跨轮次的记忆,结果失败了——我给它们的工具范围画得太窄,所以它们第一次运行时,被自己设计要做的事卡住了。还有一个 Agent 第一次写文件时,整个放错了文件夹,把系统目录嵌套进了内容目录。这些都不是辩论问题,是基础设施问题,和任何真实多部件系统会碰到的问题一模一样——只不过这里的部件写的是 Obsidian 笔记,而不是数据库。
最后我有了每项法案的简报、论点、攻击、表达建议、四十多份评委打分表,内容很全,但一眼看不完。于是最后一个模块是一个带标签页的 HTML 文件:一个法案一个标签,每个标签下再分子标签放不同类型的准备材料。所有东西打开在一个页面里,而不是散落在一堆 markdown 文件里。然后我女儿有一半队友更习惯读中文,我就把整个报告翻译了,加了个角落里的切换按钮。同一份报告,两种语言,一键切换。
我一直在回想这件事:这套系统之所以有效,不是因为 AI 中途变聪明了。而是因为我不再让同一个模型做所有事,而是给更具体的角色提出更窄的问题,并让它们互相检查。这不是辩论特有的教训。它和我几周前写的个人文档整理想法是同一个道理——把事情自动化的关键,不在于做得更多,而在于精确定义每个部件负责什么,并诚实地面对它真正运行时会在哪里崩掉。