
半年前我给自己定了个规矩把同时涉及理论分析和工程实现的任务统一交给一支多Agent协作的虚拟AI研究团队来跑。这个决定不是突发奇想而是被一个具体的序列预测项目暂称项目X逼出来的——项目一边要求推导某种稀疏化局部注意力机制的理论边界另一边又要求尽快把它做成可训练、可评测的模块。单打独斗做这种“理论工程”混排任务最大的痛苦不是事情多而是思维方式频繁切换再加上单个AI对话窗口根本撑不住多角色、长周期、需要相互验证的工作流。这篇文章把这半年的玩法完整复盘一遍虚拟团队怎么搭任务怎么拆Agent之间怎么交接理论线和工程线怎么互相咬合以及我踩过的坑和最终的成本账。如果你也是独立研究者、开源作者、小团队负责人或者就是一个人想兼顾研究深度和工程速度应该能直接照着搭一套初版方案省掉大部分试错过程。1. 为什么单个对话窗口扛不住“理论工程”双线任务一开始我也很天真觉得开几个对话窗口一个窗口写代码、一个窗口做推导、一个窗口查文献就算“多Agent”了。真正跑了两周之后才发现事情完全不是这样。单对话窗口在工作流简单、任务单一的时候确实够用但只要任务变成“研究一个问题 → 论证一个结论 → 把这个结论落成代码 → 再根据代码运行结果反过来修正结论”它就会在几个固定环节崩塌。1.1 单对话失效的四个直接原因第一个原因是上下文污染。我在一个窗口里先聊了文献综述又聊了推导框架再切到工程实现时模型还在“努力回想”前面的内容结果经常把原本属于理论线的术语带进代码注释甚至把假设条件写进接口文档。症状不是突然报错而是所有输出的风格和内容都在悄悄漂移。第二个原因是角色切换困难。同一个窗口里我一会儿让模型当推导员一会儿让它当代码审查员它很容易把两种角色的输出混在一起明明让它“挑毛病”它给出的却是礼貌性的“肯定补充建议”。这种“好好先生”式的输出对研究没有任何帮助。第三个原因是状态不可控。长对话进行到一半模型会忘记上一轮已经确认过的约定比如“已经验证过的引理范围”。它会一脸无辜地重新推导一遍甚至给出与先前不同的结论而你还很难判断哪个才是对的。第四个原因是无法回溯。单对话里没有版本概念一个错误结论被模型自己重复三遍之后就会变成“默认事实”。我在项目X里吃过一次亏推导Agent在第二轮提到“复杂度上界主要受局部窗口限制”后面所有Agent都拿这句话当公理最后才发现这句话缺少前提条件整个链路白跑了大半天。1.2 “多个对话窗口”不等于“多Agent”这是我觉得最需要纠正的误区。十个对话窗口只是十个平行的聊天室它们之间没有任务依赖、没有产物交接、没有评审关系除了和你在分别对话之外彼此毫无沟通。这就好比十个人同时坐在一个会议室里各说各话但没有主持人、没有议程、没有交付物最后不可能形成一个团队成果。真正的多Agent协作核心是三件事角色边界、任务交接、评审闭环。每个Agent只做自己那一摊事做完之后把产物放到一个约定位置另一个Agent基于这份产物继续往下走最后还要有一个角色专门负责挑毛病。只有做到这三点才能叫“一支团队”否则还是“一个高级对话窗口”。1.3 什么人最适合从这套方案中受益我觉得最适合的是三类人。第一种是独立研究者尤其是做应用研究和算法研究之间的人既要读论文、做推导又要写代码验证想法。第二种是开源项目作者一个人维护一个仓库需求、设计、编码、测试全得自己来。第三种是小团队负责人团队里可能只有两三个人但任务类型横跨研究与工程。如果你也是这样这套方案最大的价值不是把所有事情都交给AI而是把“你自己”从执行者变成主持人。你不用写每一行代码、推每一个公式但你要决定做什么、什么时候验收、冲突听谁的。这比当“超级执行者”省力得多也更接近一个研究团队负责人的真实状态。2. 虚拟团队的三层架构与任务卡交接协议架构部分是我在这半年里迭代最多的地方。最初我把所有Agent塞在一个共享对话里后来发现完全失控才逐步改成三层结构指挥官层、执行层、工具层。这个结构听起来抽象但落地之后非常简单本质上就是一套“谁下命令、谁干活、谁验收、东西放哪里”的规则。2.1 三层结构中每一层的定位指挥官层的第一角色是我自己负责立项、拆任务、仲裁冲突、最终验收。第二个角色是拆解Agent它不参与具体推导和写码只负责把大目标转成一张张可以执行的任务卡。执行层又分成两条线理论线上的调研员、推导员、反例审查员、综合员工程线上的架构师、编码员、代码审查员、测试员。工具层则是一套共享目录结构包含任务卡、产物、评测脚本和决议日志。我用一张表把这层结构固定下来后面每次协作都按这个表做。表格本身也是Agent的“花名册”每个Agent的System Prompt里都会声明自己属于哪一层、该跟谁交接。层级角色核心职责典型产物指挥官层我人类立项、仲裁、验收决议日志指挥官层拆解Agent目标拆解与任务卡生成任务卡理论线调研员收集文献、提炼问题边界问题清单理论线推导员形式化论证、写引理命题与证明草案理论线反例审查员寻找逻辑漏洞、构造反例审查意见表理论线综合员整合成理论卡理论卡工程线架构师把理论卡翻译成接口规格接口设计稿工程线编码员按任务卡实现代码代码片段工程线代码审查员查接口、边界、潜在风险Review意见工程线测试员写并运行测试、回流失败信息测试报告2.2 任务卡机制让Agent只面对“一张输入、一张输出”架构确定之后最大的问题是Agent之间怎么交接。最开始我用聊天记录直接传递信息结果发现角色A说的一句话被角色B当成“需求”再被角色C当成“已验证结论”层层失真之后完全没法用。后来我彻底抛弃了聊天传递改成“任务卡”机制。每个任务卡是一个结构化的JSON文件放在共享目录的inbox文件夹里。Agent启动时只读取自己对应那张卡以及卡里列出的输入文件然后把产物写到指定的artifacts目录。它不需要“记住”任何历史对话只需要按卡执行。{ task_id: task-derive-024, agent_role: derivation_agent, title: 验证稀疏局部注意力在长度上限下的表达能力退化定理, input_files: [ ./shared/context/theory_spec_v2.md ], output_file: ./shared/artifacts/lemma-proof-024.md, constraints: [ 只处理理论线问题不涉及工程实现, 每一步推导必须标注前提, 输出必须包含一个失败条件说明 ], trace: { parent_task: task-research-021, approver: human } }这套机制有几个关键细节。第一任务卡只读任何Agent都不允许修改它需要新任务就新建一张卡这能避免多个Agent同时写一个文件造成混乱。第二任务卡里的“trace”字段会记录它的来源和审批人这样一旦哪一步出问题可以直接回溯到上一个任务卡。第三不是所有任务都需要“对话”很多环节其实就是“读卡、干活、写产物”这三个动作。2.3 提示词里的三条铁律给每个Agent写System Prompt时我加入了三条规定几乎救了我后面所有迭代。第一条是角色边界你是谁、你负责什么、你坚决不负责什么。比如推导员不需要关心代码运行速度编码员不需要碰理论结论的有效性。第二条是输入输出锁定你只认任务卡里的文件路径不依赖聊天窗口里的任何记忆。第三条是结论可回溯你给的任何结论都必须指向某一行推导、某一次测试输出或者某一个明确来源不允许出现“显然成立”这种无依据判断。下面是我给推导Agent写的简化版Prompt你可以直接抄去改你是一个推导Agent。你的唯一职责是把输入任务卡中的命题转化为严格的分步推导。 你不负责写代码不负责生成调研综述不负责最终结论的裁决。 输入读取 /shared/inbox/task-derive-024.json 输出写入 /shared/artifacts/lemma-proof-024.md 规则 1. 每一步明确标注使用的假设 2. 如果某一步无法严格证明必须显式写出“此处需要额外验证” 3. 不允许生成除输出文件之外的额外交付物。这三条铁律的最终目的是让整个系统像一支真正的团队一样运行每个成员都在自己的职责边界内输出用文件而不是“印象”来沟通。后期我再加Agent时只需要复制这个模板改角色名和路径就行。3. 理论研究线实录从开放问题到形式化结论的Agent接力理论线是我花最多精力调试的一条线因为研究工作的质量标准很难用代码测试来定义。工程代码跑不过就是跑不过理论推导“差不多”却可能错得很离谱。所以理论线上的每个Agent都设计成“必须输出可以被下一环攻击的中间产物”而不是直接给一个漂亮结论。3.1 调研员Agent先圈问题再人工核验来源理论线的起点不是推导而是搞清楚“我们要解决什么问题”。调研员Agent拿到一张研究问题卡后会输出一份结构化的问题清单相关方向、关键方法、与我方机制的关联度、可能借鉴的分析工具。它还会生成一个简单的对比表列出近两年几类方法的处理思路。这里有一个特别重要的实践教训不要让AI直接充当可信文献来源。它基于训练数据生成的那些论文标题和作者名有很大比例是真实存在的但年份、卷号、页码经常对不上甚至会出现“看起来合理但完全不存在”的文章。我的做法是让调研员只输出“线索性摘要标题”然后由我人工去数据库里核验。核验之后真正有用的条目再进入共享知识库作为下一步推导的输入。调研员Agent的价值不在于帮我把文献读完而在于帮我快速建立一个“问题地图”。它能够在几十分钟内把相关方法按数学工具、实验设定、适用边界分成几组这在以前大概要花我一整个下午。3.2 推导员Agent强制分块每步只产一个引理推导员Agent是最容易“翻车”的环节因为它会自然而然地追求完整证明的幻觉连续写出很长一串步骤中间藏着跳步。我最初让它直接“证明定理”它输出的内容看起来天衣无缝结果人工验到第三步就发现量化词顺序写反了。后来我把任务拆细推导员一次只写一个引理写完就提交给反例审查员通过之后才允许推导下一个。输出文件里每个引理都必须带四个部分前提条件、结论、证明摘要、已知局限。尤其是“已知局限”这一栏逼迫模型主动暴露它不确定的地方极大地减少了“愣充严谨”的情况。这样做会牺牲一些效率换来的是每一步都可审计。整个理论推导被拆成十几个小型任务卡每一张卡都是一个可验证的小步骤。有一次推导员在某个引理里写“对任意L2048稀疏模式退化为线性”审查员很快发现这个命题缺少“序列具有局部结构”的假设于是判定原结论需要重构。如果放在一整段大证明里这种问题大概率会被淹没。3.3 反例审查员Agent不礼貌地质疑是它的本职工作反例审查员是我所有Agent里“脾气”最不友好的一位也是整个理论线的守门员。它的任务不是“检查一下”而是强制性地输出几样固定内容候选反例、失效条件、需要补的前提、严重程度。如果找不到反例也必须显式写“未找到反例但不代表成立”而不是直接给出“验证通过”这种话。我实测下来这种强制结构非常有效。AI在默认情况下会倾向于顺从和认可如果你让它自由评论它往往会说“证明整体正确只有少量笔误”。但如果你要求它必须给出候选反例它就不得不认真构造测试场景这个过程中能暴露出很多真实漏洞。我在项目X里遇到的典型情况是这样的推导员证明了稀疏局部注意力在序列长度超过某个阈值后表达能力退化。反例审查员构造了一个故意“没有局部结构”的序列发现原命题对这种情况完全不适用。两边来回争执了两轮之后最后推导员补充了“仅对具有固定局部模式的输入分布成立”这一前提理论结论才真正站住了。3.4 当形式化验证工具不可用时用“对抗问题模板”兜底最理想的情况下应该给推导Agent接一个形式化证明工具每条引理都机器验证一遍这样才能从根源上消灭跳步。但现实是很多模式和工具链还没打通尤其是涉及到概率分析和复杂度估计的部分形式化难度很高。所以我在没有工具可用时给推导Agent设计了一组“对抗问题模板”相当于让模型自己审自己。它包括几个固定问题这个命题的前提里是否有哪一条无法在目标数据分布下验证如果我把量化词顺序反过来结论是否还成立这个构造是否假定了某个外部依赖不参与一旦某个推导Agent提供的证明能通过这组问题的轮番轰炸它进入下一环的可信度就高了不少。理论线的最终产物是一张“理论卡”由综合员Agent汇总定理编号、假设清单、结论、证明摘要、已知局限、下一步开放问题。这张卡既是理论线交付给工程线的唯一“契约”也是后续冲突仲裁时的引用基准。4. 工程研发线实录从需求卡到可运行模块的闭环流水线工程线的多Agent设计比理论线直观因为代码本身有明确的接受标准能不能运行、跑得对不对。但这不代表流程简单工程线上最容易出问题的不是Agent写不出代码而是写出一堆“看起来能跑”的代码然后堆在仓库里没人验证。所以我把工程线定义成一条有明确验收节点的流水线。4.1 从理论卡到原子任务卡先翻译接口再拆成碎片工程架构师Agent先读取理论卡把它翻译成一份“接口规格”模块的输入输出是什么、张量形状怎么设计、支持的序列长度范围是多少、边界行为怎么定义。这份规格文件是所有编码任务卡的母本。然后架构师会把它拆成原子任务卡。我定义的“原子”标准非常朴素一张任务卡只对应一个文件、一个类或者一个函数必须有明确的依赖文件和输出位置。依赖关系必须先于任务分配解决接口定义完成后编码员Agent才能开工实现某个类实现完成并通过静态检查后测试员Agent才开工写测试。这样拆的原因是多Agent系统最怕“大锅饭”。如果一张任务卡里写了“实现整个稀疏注意力机制并集成训练流程”编码员很可能一口气生成几百行代码中间藏着一堆问题到时候找Bug的难度比重新写一遍还大。小步走、一次只交付一个可验证单元是工程线稳定性的核心。4.2 编码Agent、代码审查Agent、测试Agent的三角关系编码Agent的任务卡里除了实现目标之外还会有一个字段是“不得修改的接口”。它只需要照着接口规格实现不允许顺手“优化接口”也不允许自己扩充需求。这里我想强调一个反直觉的细节要求Agent“不乱改东西”比要求它“写得很好”更重要因为Agent默认倾向是积极产出你不锁边界它就到处动手。代码审查Agent的审查项被固定成四类接口一致性、边界处理、内存和梯度风险、可读性。风格类问题我另外用一个便宜模型过一遍Lint工具绝对不混进代码审查环节。原因是“格式问题”和“逻辑问题”混在一起时审查Agent会优先发现格式问题然后给出“整体良好有几个空白行”这种低价值反馈真正的逻辑漏洞反而被放走。测试Agent是最“物理”的存在它负责把任务卡的验收标准改成可执行的测试文件然后跑一遍。它输出的不是“测试思路”而是真实生成的测试函数和运行结果包括失败摘要。测试Agent跑出来的失败信息不是给人类看的而是直接作为下一个编码任务卡的输入。这条回路是整个工程线闭环的关键。4.3 失败信息回流一次只让编码Agent修一个错误工程线上我踩过最深的坑是把一堆报错信息全部堆给编码Agent让它修。它修着修着就开始“创造性修复”为了修好一个张量维度错误它把整个模块重写了一遍。结果报错从三个变成五个而且它自己也搞不清楚改了什么。所以我后来规定失败回流只允许携带Top1错误。测试Agent必须把原始报错压缩成一句话再标注出“期望形状”和“实际形状”编码Agent拿到这张“错误工单”后只能修一个问题。大多数情况下改动不超过一两行。我在项目X里遇到过一次非常典型的处理测试Agent报出期望张量形状是 [8, 4, 16]实际是 [8, 16, 4]。它把这条错误压缩成一句“forward 输出维度顺序与接口定义不一致期望最后两维为(4,16)”编码员只需要在输出前加一行permute就解决了。如果我把原始traceback直接丢给它它很可能先去排查为什么Loss变成了NaN然后绕一大圈。工程线跑通之后产物不是一堆散落的代码而是一个带了测试报告、代码审查意见、运行日志的“交付目录”。这份目录会被综合交给指挥官层和理论线的理论卡放在一起成为下一轮跨线迭代的起点。5. 理论线与工程线的碰撞仲裁共享规格与决议日志在纯理论线或纯工程线内部Agent之间的协作相对顺畅因为都有比较客观的验收标准反例找不找得到、测试跑不跑得过。但两条线一旦面对面真正的麻烦就来了。5.1 共享规格书是两条线之间唯一的“契约”理论线交付的理论卡是“数学契约”工程线交付的接口规格是“实现契约”。但两分契约之间需要一个共同文件否则就会出现“理论上正确但工程上没法实现”或者“工程上能跑但已经脱离理论假设”的割裂。我让综合员Agent和架构师Agent共同维护一份“共享规格书”里面同时包含数学符号定义、关键假设、接口函数签名、支持范围。任何一条线的改动都必须体现到这份规格书里不允许“口头说改”。共享规格书的路径会被写进每一张跨线任务卡成为后继Agent的引用基准。这个设计解决了“Agent之间无法直接对话”的先天缺陷。它们不需要在聊天里争论只需要针对同一个文件提出修改请求。而所有的修改请求最后都会汇到指挥官层由我来判断是否批准。5.2 一次真实的跨线冲突方阵掩码与表达能力退化项目X里我最难忘的一次仲裁就是理论线和工程线在“序列长度上限”上吵了起来。理论线的推导Agent提出当序列长度超过2048时某种稀疏模式下的表达会出现显著退化。但工程线的编码Agent发现标准的批量实现里用的是方阵掩码如果强制加上长度限制超长序列会被切成多段语义和性能都会受影响。两条线的Agent各自拿着自己的规格书都无法说服对方。理论线说“你不该用方阵掩码而应该做长度适配”工程线说“你推导的前提在实际模型里根本不成立”。这时候如果我让它们继续互相给建议大概率会在某个细枝末节上打转。最后我做的裁决是先让理论线补一个更精确的“长度阈值成立条件”明确这个退化是在哪种输入分布、哪种掩码模式下才成立然后让工程线把“长度适配层”拆成一个独立任务卡实现序列分块和拼接逻辑。两边都保留了自己的核心结论冲突通过共享规格书的一次版本更新解决掉了。这次经历给我最大的启发是跨线冲突时人不能做“裁判员兼和事佬”而应该让双方各自提交更精确的证据再基于证据做决策。如果简单听从某一方系统的整体一致性就会被破坏。5.3 决议日志让每次仲裁都有据可查仲裁完之后我会把整个冲突过程记录到“决议日志”里字段包括问题、涉及Agent、可选方案、最终决策、影响范围。一开始我嫌麻烦后来发现这个日志是整套系统里投入产出比最高的一个文件。因为Agent没有长期记忆它下次读到同一个问题时还会重复同样的话而决议日志是唯一能跨越时间和任务卡保存“人类意志”的地方。每当某个Agent开始“翻旧账”我就把对应决议日志贴进它的输入里问题立刻结束。同时日志也为成本复盘和质量复盘提供了最原始的数据。6. 踩坑最多的五个现场上下文失控、幻觉闭环与角色漂移如果只看架构图这套系统看起来很优雅但实际运行里到处都是坑。我在这里把踩得最深、最典型的几个问题拆开讲每个问题都附上我的补救办法希望能帮你绕开。6.1 上下文失控会话越长模型越“礼貌性失忆”第一个高频问题出现在我将多个环节塞进同一个长Session时。上下文越长模型越倾向于迎合最后一轮对话的上下文形成一种“你说得都对”的状态。有一次我检查推导结论时发现它已经把我最初定义的问题边界悄悄改窄了还补了一句“根据上述讨论”好像这个改动早就达成共识。根因是上下文无边界膨胀再加上模型对早期信息的记忆衰减。后来我立了一条规矩跨步骤信息一律不进对话。每个Agent的Session都不共享任何历史它读到的只有任务卡和输入文件。对话窗口本身只负责“干活”不负责“记东西”。6.2 幻觉闭环两个Agent互相点头形成一个错误共识比上下文失控更隐蔽的是幻觉闭环。我最初给推导员和反例审查员用同一个对话窗口跑结果推导员写了一个有明显跳步的证明审查员回复“同意这一步是显然的”两个Agent就完成了自我确认。整个环节看起来像是一场高质量的学术讨论实际上只是两个语言模型在合作编故事。补救方案有两个。第一个是角色彻底隔离推导员和审查员用不同Session、不同任务卡审查员看不到推导员的“自信程度”只能看到推导文本本身。第二个是审查员输出强制字段化必须写候选反例、失效条件和严重程度“未找到反例”不等于“验证通过”。这两条配合使用幻觉闭环被切断的概率高了很多。6.3 角色漂移提示词里没写边界Agent就开始跨界还有一次是编码Agent在实现模块时顺手改了接口定义因为“这样实现更简洁”。更离谱的是代码审查Agent不但没拦住还帮它写了一版替换代码。直到工程线测试全部跑挂我才发现接口和理论卡已经对不上了。根因是System Prompt的边界不够硬模型默认优先“提供帮助”而不是“遵守约定”。我后来在任务卡和提示词里同时加了一条硬性规则不允许修改指定接口之外的内容任何超出任务范围的想法必须写进“建议”字段而不是写进代码。这条规则让Agent的“额外积极性”有了一个出口既不会破坏流程也不会浪费它的好点子。6.4 高频踩坑对照表我把最常遇到的几种症状、根因和补救办法整理成一张表方便你直接对照。症状根因补救办法后期输出开始迎合历史结论上下文过长、信息衰减独立Session用文件传递状态两个Agent互相认可错误结论缺少对抗激励审查输出强制含“候选反例”字段Agent擅自修改接口或需求范围提示词边界不够硬任务卡锁定不可改字段增加“建议”出口任务卡文件被多个Agent写坏并发写同一个文件任务卡只读新任务开新卡把AI生成的文献当真实来源模型幻觉只输出线索人工核验后再入知识库7. 复盘账单成本、耗时和质量到底值不值讲完踩坑最后用我这次在项目X里的真实记录来做一份复盘账单。这里我不给“绝对真相”只是给一个规模量级方便你根据自己项目的复杂度做估算。7.1 时间账并行度上来了但仲裁协调也吃时间按照项目X跑完整条链路的记录理论线前后花了约3个工作日工程线约4个工作日另外有约1个工作日花在跨线仲裁和任务卡打磨上。如果按传统方式完全由我一个人从文献、推导、编码到测试一项项做我保守估计理论部分要2周、工程部分要3周还不包括最后推导和代码对不上的返工。所以多Agent系统给我的最大收益不是单步速度而是“初稿产出速度”和“并行度”。它能把推导试错和代码骨架搭建同时进行这一步非常值。但也要看到仲裁协调时间比想象中高很多尤其是当两条线产生冲突时人工介入几乎是不可替代的成本。省下来的时间有一部分又花在了“管理AI团队”上。7.2 金钱账模型分级才是省钱关键费用方面我的策略是“让便宜模型打杂让贵模型攻坚”。检索整理、格式转换、Lint风格检查这类任务交给便宜模型推导重构、代码审查、跨线仲裁这类需要深度推理的任务才交给最强的模型。某个月密集跑项目X时整体Token消耗大概在几百万的量级折合常见API定价来看成本在几十到上百元之间。如果你所有环节都让最强模型跑费用可能直接翻好几倍而且大部分都是浪费——因为一些“打杂”环节根本不需要那么强的推理能力便宜模型做得一样好。模型分级这件事是我认为工程上最容易被人忽略的省钱技巧。7.3 质量账哪些产物能直接用哪些必须返工质量分布的规律比较稳定。最可靠的产出包括测试用例、代码审查意见、结构化文档初稿、问题清单和失败摘要。这些内容本身容错率高就算有瑕疵也能很快修正。最不可靠的产出包括形式化推导的最终结论、外部文献引用、高风险架构决策。这三类我都强制设置人工二次验证环节。我在项目X里立了一条死规矩任何要写进最终报告、论文或正式提交内容的结论都不允许只有Agent背书。它可以是Agent最先提出来的但必须经过人工复核必要时还要借助外部工具验证。AI可以当“研究助理”和“初稿机器”但“最终责任”必须留给人自己。7.4 我对这套打法边界的判断用一句话总结我的感受多Agent协作更像是“你一个人带了一支实习生团队”而不是“你雇了一支诺奖级研究队伍”。它解决的核心问题是“一个人忙不过来”不是“一个人水平不够”。如果你的领域本身需要极强的原创判断和长期直觉这套系统的价值会打折扣如果你的任务存在大量可拆解的中间环节那它简直是加速器。8. 给想复制这套玩法的人最小闭环与三条起步建议最后这部分写给想立刻动手试的人。我不建议你直接按我这套复杂架构搭尤其不建议一上来就搞七八个角色、几十张任务卡。先把最小闭环跑通再逐步加角色会顺利很多。8.1 最小启动组合2个Agent 1个共享目录我推荐的起步配置十分简单一个生成Agent一个挑刺Agent加上一个共享目录。生成Agent负责写一段代码或推导一个引理挑刺Agent负责基于明确的验收标准找问题。你甚至不需要任务卡系统只需要两个独立Session以及一个用来存放中间文件的文件夹。先跑一个边界很窄的任务比如“让A写一个数据增强函数让B写对应的单元测试并跑通”。只要这个闭环能稳定转起来你就能体会到多Agent协作的核心感受A和B不直接对话但它们通过文件和验收标准产生了真正的协作关系。这个感受比看任何架构图都重要。8.2 三条起步建议先单向后双向先人工后自动第一条建议先做单向流水线再上双向评审。初期不要设计复杂的互相攻击流程让A生成、B验证即可跑稳之后再加入“B驳回、A修”的循环。第二条建议每个Agent先拥有独立Session不要共享对话一切跨Agent信息通过文件或消息队列传递养成“不靠记忆靠文件”的习惯。第三条建议保留人工审批节点哪怕只是确认一下产物文件名也要让人清楚地看到整个链路在发生什么。等你对Agent的产出质量有了把握再逐步把审批节点自动化。8.3 我接下来想补的三块拼图这套系统目前还有几个我明确感觉到短板的地方。一是长期记忆决议日志是纯文本查起来不够快我打算迁移到结构化知识库。二是理论结论的自动评测现在对推导的质量判断还高度依赖人工和反例审查我想试试让模型基于已有的几个标准引理做片段评分。三是任务卡的版本管理目前任务卡一旦写错就要人工介入如果接上版本管理工具整个系统的追踪能力会更强。如果你也准备搭一套自己的虚拟研究团队我希望这份复盘能帮你省下一些弯路。先用最小闭环跑起来再根据你的任务类型往里加角色最后你会发现“一个人一支AI研究团队”这件事真正难的不是技术而是你愿不愿意把原来自己掌控的每个环节放心地交给一套有边界的协作流程。