Skip to content

Towards an AI co-scientist:用多代理系统“生成-辩论-进化”科学假设

科学发现通常遵循一个朴素但昂贵的循环:提出新假设 → 设计实验 → 反复验证与修正。论文 https://arxiv.org/abs/2502.18864 提出一个基于 Gemini 2.0 的多代理系统 AI co-scientist,目标不是“自动做科研”,而是在人类科学家(scientist-in-the-loop)的约束与反馈下,持续产出更高质量、更可验证、并尽量“新颖”的研究假设与研究计划。

本文聚焦两件事:这篇论文的核心思路是什么,以及如果我想实现一个“简化版 co-scientist”,应该怎么搭出来。

1. 这篇论文在解决什么问题

  1. 现代科研存在“广度-深度”矛盾:论文量爆炸、实验手段多样、跨学科连接的价值越来越大,但个人很难同时保持足够的广度与足够的深度。

  2. 现有很多工具擅长“检索 + 总结”,但论文强调它们不等价于“产生新假设”。co-scientist 的定位更接近:在证据约束下生成可测试的新研究假设,并给出可落地的实验验证方案。

  3. 系统输出的默认目标约束(论文在系统设计部分明确提出)可以概括为:

    1. Alignment:与科学家提供的 research goal、偏好与实验约束一致。
    2. Plausibility:没有明显硬伤;若与既有知识冲突需明确说明。
    3. Novelty:尽可能提出新假设,而非复述综述。
    4. Testability:能在约束内被实证验证。
    5. Safety:避免产生可被滥用的危险研究建议。

2. 总体思路:Generate / Debate / Evolve + test-time compute scaling

  1. 论文把 co-scientist 描述为一个“持续运行”的异步多代理系统:它不会一次性吐出答案,而是不断生成、审稿、辩论、改进、再生成。

  2. 关键方法论是 generate, debate, and evolve,并把更多推理工作放到 test-time compute

    1. Generate:先大量提出候选假设与研究提案。
    2. Debate:通过“模拟科学辩论”的方式做对比评审。
    3. Evolve:对高潜候选做演化改写,产生更强的后代假设,再回到评审与排名。
  3. 在工程上,它不是“一个更强的单模型 Prompt”,而是“多个角色代理 + 一个调度与记忆层”。如果只记一句话:它把“科研写作里的角色分工”程序化了。

3. 系统实现:多代理架构与异步任务框架

3.1 入口:自然语言 research goal → 研究计划配置

  1. 科学家用自然语言描述 research goal,并附带偏好、约束、实验条件,甚至可以附加大量文档(论文强调了长上下文与多模态能力)。

  2. 系统将其解析为 research plan configuration,把“生成哪些东西、按哪些标准评估、如何约束输出格式”结构化,交给调度器执行。

3.2 中枢:Supervisor + worker + task queue

  1. co-scientist 的“可扩展 compute”主要体现在调度层:Supervisor 维护一个任务队列,把不同的代理动作(生成、审稿、对比、演化……)作为任务投递给 worker 并发执行。

  2. 系统是持续、异步运行的,并周期性计算系统状态统计(例如:待审稿数量、锦标赛进度、哪些生成策略更有效),并写入 context memory,用于下一轮的资源分配与策略调整。

  3. 如果你要复刻,它更像一个“工作流引擎”而不是一个“对话机器人”。

python
# 伪代码:一个极简的 Supervisor 主循环
async def supervisor_loop(state, config):
    while not state.terminal():
        stats = state.compute_stats()
        state.memory.write("stats", stats)

        # 按 stats 与 config 动态分配 compute
        weights = allocate_weights(stats, config)
        tasks = sample_tasks(weights)

        results = await run_workers(tasks)
        state = state.apply(results)

    return state.build_research_overview()

4. 核心机制 1:Elo 锦标赛如何驱动排序与“自我改进”

  1. Ranking agent 用 Elo 做相对排序:每个假设有初始 Elo(论文描述为 1200),并通过 pairwise 比较不断更新。

  2. 比较并不是简单打分,而是组织“模拟科学辩论”:

    1. 对排名更高的候选,用多轮 debate 做细致对比,缓解顺序偏差。
    2. 对排名更低的候选,用更轻量的单轮比较节省 compute。
    3. 借助 Proximity agent 的相似度图,优先让“相近的假设”互相对打,以便去重与细粒度胜负判断。
  3. Elo 的典型更新形式可以写成:

RA=RA+K(SAEA),EA=11+10(RBRA)/400R_A' = R_A + K\,(S_A - E_A),\quad E_A = \frac{1}{1 + 10^{(R_B - R_A)/400}}

其中 SAS_A 是胜负结果(胜 1、平 0.5、负 0),EAE_A 是预期胜率。论文的重点不是公式本身,而是把 Elo 当作“可持续运转的相对选择压力”,让演化产生的后代必须继续在锦标赛里活下来。

5. 核心机制 2:Reflection 的“多层审稿”与 Deep verification

  1. Reflection agent 不只是给意见,而是多阶段过滤与增强:

    1. Initial review:不调用外部工具,快速筛掉明显错误、明显不新颖或不符合约束的候选。
    2. Full review:结合 web search 做有依据的审稿,重点审查 correctness、quality、novelty。
    3. Deep verification review:把假设拆成一组 assumptions,再拆成子 assumptions,逐条验证哪些是“根基性错误”,哪些是“可修补细节”。
    4. Observation review:检验该假设是否能解释文献中的长尾现象。
    5. Simulation review:以“逐步模拟机制/实验流程”来暴露失败模式。
  2. 这种分层审稿对实现的启发是:不要把“验证”做成一个大 Prompt,而是做成多个低耦合的 reviewer passes,每个 pass 只做一件事。

6. 核心机制 3:Evolution 与 Meta-review 的无反向传播反馈回路

  1. Evolution agent 的策略是“生成新假设”,而不是“直接修改旧假设”。论文强调这样做可以保护当前最优候选:即便演化结果更差,也不会污染既有 top hypothesis。

  2. Evolution 的常见手段包括:

    1. 基于文献 grounding 补齐证据链。
    2. 提升可行性与可操作性(实验流程更清晰、对照更严谨)。
    3. 组合多个候选的优点生成后代。
    4. 简化假设以便验证。
    5. out-of-the-box 产生更发散的备选。
  3. Meta-review agent 会在更高层面总结“为什么 A 总赢、B 总输”,并把这些共性 critique 作为反馈追加到其他代理的提示词里,实现一种“无需微调/无需 RL 的 prompt-level learning”。

7. 评估与验证:自动评测、专家评测、以及湿实验

  1. 自动评测:论文用 GPQA diamond 的问题,把每个问题当作 research goal,观察 Elo 分桶与准确率的相关性,并报告在该设置下 top-1 准确率达到 78.4%

  2. test-time compute 的收益:论文对大量 research goals 观察到随着迭代推进,top hypothesis 的 Elo 与 top-10 平均 Elo 都呈上升趋势,并在一组专家策划的困难目标上与多种模型基线比较。

  3. 端到端生物医学验证(论文摘要与引言重点强调):

    1. 药物再利用(drug repurposing):在 AML 等场景提出候选,并报告了体外实验中的验证发现。
    2. 新靶点发现(novel target discovery):在肝纤维化场景提出新的表观遗传靶点,并在 human hepatic organoids 中得到验证结果。
    3. 机制解释:在细菌进化与抗菌素耐药相关机制中,系统独立提出与研究团队未公开结果一致的假设,作为“并行 in silico 复现”。

这些验证案例在论文中还有配套的“co-timed reports”,但本文不展开复述实验细节(建议直接读原文的实验章节与附录)。

8. 如何实现一个“简化版 co-scientist”

如果你不追求论文同等规模(也不依赖 Gemini 2.0),我建议以“最小可用闭环”为目标:生成 → 审稿 → 对比 → 演化 → 产出 overview

8.1 最小组件清单

  1. 调度层:一个 Supervisor,负责队列、并发、重试、以及资源配额。

  2. 状态层:一个可序列化的 TournamentState,记录候选假设、审稿、对比结果、以及 Elo。

  3. 代理层:

    1. Generation:给定 goal 生成 N 个候选。
    2. Reflection:至少要有 initial reviewfull review 两层。
    3. Ranking:做 pairwise 比较并更新 Elo。
    4. Evolution:对 top-k 生成后代。
    5. Meta-review:把 top-k 汇总成 overview(可选)。
  4. 工具层:至少接一个 web search 或论文库检索工具,用于 full review 的 grounding。

8.2 一个可落地的工程骨架

  1. 任务与队列:

    1. 单机:asyncio + sqlite 持久化就够用。
    2. 分布式:Celery、RQ、Temporal、Dagster 任选其一。
  2. 存储:

    1. Context memory 可以先用 SQLite(按 run_idagentkindpayload 存 JSON)。
    2. 向量检索如果需要,可以用一个简单的 embedding + FAISS/pgvector。
  3. 安全与合规:实现一个“研究目标与输出过滤器”,在 Generation 和 Evolution 之后都过一遍 gate,避免危险建议在系统内传播。

9. 局限性与我认为需要特别小心的点

  1. Elo 是 auto-evaluation,不是 ground truth。论文也明确提示:Elo 可能偏好某些“看起来更像科研写作”的文本属性,而不一定对应真实科学正确性。

  2. “新颖性”很难严格证明。系统虽然会做 web search 来判定 novelty,但这天然不完备,尤其在跨学科与灰色文献(会议海报、未正式发表)场景。

  3. “可验证”与“可执行”之间有鸿沟:实验资源、材料、伦理、设备差异都可能让看似可行的方案无法复现。因此 scientist-in-the-loop 不是可选项,而是系统成立的前提。

10. 参考资料

  1. 论文主页:https://arxiv.org/abs/2502.18864
  2. PDF:https://arxiv.org/pdf/2502.18864.pdf
  3. DOI:https://doi.org/10.48550/arXiv.2502.18864