Towards an AI co-scientist:用多代理系统“生成-辩论-进化”科学假设
科学发现通常遵循一个朴素但昂贵的循环:提出新假设 → 设计实验 → 反复验证与修正。论文 https://arxiv.org/abs/2502.18864 提出一个基于 Gemini 2.0 的多代理系统 AI co-scientist,目标不是“自动做科研”,而是在人类科学家(scientist-in-the-loop)的约束与反馈下,持续产出更高质量、更可验证、并尽量“新颖”的研究假设与研究计划。
本文聚焦两件事:这篇论文的核心思路是什么,以及如果我想实现一个“简化版 co-scientist”,应该怎么搭出来。
1. 这篇论文在解决什么问题
现代科研存在“广度-深度”矛盾:论文量爆炸、实验手段多样、跨学科连接的价值越来越大,但个人很难同时保持足够的广度与足够的深度。
现有很多工具擅长“检索 + 总结”,但论文强调它们不等价于“产生新假设”。co-scientist 的定位更接近:在证据约束下生成可测试的新研究假设,并给出可落地的实验验证方案。
系统输出的默认目标约束(论文在系统设计部分明确提出)可以概括为:
Alignment:与科学家提供的 research goal、偏好与实验约束一致。Plausibility:没有明显硬伤;若与既有知识冲突需明确说明。Novelty:尽可能提出新假设,而非复述综述。Testability:能在约束内被实证验证。Safety:避免产生可被滥用的危险研究建议。
2. 总体思路:Generate / Debate / Evolve + test-time compute scaling
论文把 co-scientist 描述为一个“持续运行”的异步多代理系统:它不会一次性吐出答案,而是不断生成、审稿、辩论、改进、再生成。
关键方法论是
generate, debate, and evolve,并把更多推理工作放到test-time compute:Generate:先大量提出候选假设与研究提案。Debate:通过“模拟科学辩论”的方式做对比评审。Evolve:对高潜候选做演化改写,产生更强的后代假设,再回到评审与排名。
在工程上,它不是“一个更强的单模型 Prompt”,而是“多个角色代理 + 一个调度与记忆层”。如果只记一句话:它把“科研写作里的角色分工”程序化了。
3. 系统实现:多代理架构与异步任务框架
3.1 入口:自然语言 research goal → 研究计划配置
科学家用自然语言描述 research goal,并附带偏好、约束、实验条件,甚至可以附加大量文档(论文强调了长上下文与多模态能力)。
系统将其解析为
research plan configuration,把“生成哪些东西、按哪些标准评估、如何约束输出格式”结构化,交给调度器执行。
3.2 中枢:Supervisor + worker + task queue
co-scientist 的“可扩展 compute”主要体现在调度层:Supervisor 维护一个任务队列,把不同的代理动作(生成、审稿、对比、演化……)作为任务投递给 worker 并发执行。
系统是持续、异步运行的,并周期性计算系统状态统计(例如:待审稿数量、锦标赛进度、哪些生成策略更有效),并写入
context memory,用于下一轮的资源分配与策略调整。如果你要复刻,它更像一个“工作流引擎”而不是一个“对话机器人”。
# 伪代码:一个极简的 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 锦标赛如何驱动排序与“自我改进”
Ranking agent 用
Elo做相对排序:每个假设有初始 Elo(论文描述为 1200),并通过 pairwise 比较不断更新。比较并不是简单打分,而是组织“模拟科学辩论”:
- 对排名更高的候选,用多轮 debate 做细致对比,缓解顺序偏差。
- 对排名更低的候选,用更轻量的单轮比较节省 compute。
- 借助 Proximity agent 的相似度图,优先让“相近的假设”互相对打,以便去重与细粒度胜负判断。
Elo 的典型更新形式可以写成:
其中 是胜负结果(胜 1、平 0.5、负 0), 是预期胜率。论文的重点不是公式本身,而是把 Elo 当作“可持续运转的相对选择压力”,让演化产生的后代必须继续在锦标赛里活下来。
5. 核心机制 2:Reflection 的“多层审稿”与 Deep verification
Reflection agent 不只是给意见,而是多阶段过滤与增强:
Initial review:不调用外部工具,快速筛掉明显错误、明显不新颖或不符合约束的候选。Full review:结合 web search 做有依据的审稿,重点审查 correctness、quality、novelty。Deep verification review:把假设拆成一组 assumptions,再拆成子 assumptions,逐条验证哪些是“根基性错误”,哪些是“可修补细节”。Observation review:检验该假设是否能解释文献中的长尾现象。Simulation review:以“逐步模拟机制/实验流程”来暴露失败模式。
这种分层审稿对实现的启发是:不要把“验证”做成一个大 Prompt,而是做成多个低耦合的 reviewer passes,每个 pass 只做一件事。
6. 核心机制 3:Evolution 与 Meta-review 的无反向传播反馈回路
Evolution agent 的策略是“生成新假设”,而不是“直接修改旧假设”。论文强调这样做可以保护当前最优候选:即便演化结果更差,也不会污染既有 top hypothesis。
Evolution 的常见手段包括:
- 基于文献 grounding 补齐证据链。
- 提升可行性与可操作性(实验流程更清晰、对照更严谨)。
- 组合多个候选的优点生成后代。
- 简化假设以便验证。
- out-of-the-box 产生更发散的备选。
Meta-review agent 会在更高层面总结“为什么 A 总赢、B 总输”,并把这些共性 critique 作为反馈追加到其他代理的提示词里,实现一种“无需微调/无需 RL 的 prompt-level learning”。
7. 评估与验证:自动评测、专家评测、以及湿实验
自动评测:论文用 GPQA diamond 的问题,把每个问题当作 research goal,观察 Elo 分桶与准确率的相关性,并报告在该设置下 top-1 准确率达到
78.4%。test-time compute 的收益:论文对大量 research goals 观察到随着迭代推进,top hypothesis 的 Elo 与 top-10 平均 Elo 都呈上升趋势,并在一组专家策划的困难目标上与多种模型基线比较。
端到端生物医学验证(论文摘要与引言重点强调):
- 药物再利用(drug repurposing):在 AML 等场景提出候选,并报告了体外实验中的验证发现。
- 新靶点发现(novel target discovery):在肝纤维化场景提出新的表观遗传靶点,并在 human hepatic organoids 中得到验证结果。
- 机制解释:在细菌进化与抗菌素耐药相关机制中,系统独立提出与研究团队未公开结果一致的假设,作为“并行 in silico 复现”。
这些验证案例在论文中还有配套的“co-timed reports”,但本文不展开复述实验细节(建议直接读原文的实验章节与附录)。
8. 如何实现一个“简化版 co-scientist”
如果你不追求论文同等规模(也不依赖 Gemini 2.0),我建议以“最小可用闭环”为目标:生成 → 审稿 → 对比 → 演化 → 产出 overview。
8.1 最小组件清单
调度层:一个
Supervisor,负责队列、并发、重试、以及资源配额。状态层:一个可序列化的
TournamentState,记录候选假设、审稿、对比结果、以及 Elo。代理层:
Generation:给定 goal 生成 N 个候选。Reflection:至少要有initial review与full review两层。Ranking:做 pairwise 比较并更新 Elo。Evolution:对 top-k 生成后代。Meta-review:把 top-k 汇总成 overview(可选)。
工具层:至少接一个 web search 或论文库检索工具,用于 full review 的 grounding。
8.2 一个可落地的工程骨架
任务与队列:
- 单机:
asyncio+sqlite持久化就够用。 - 分布式:Celery、RQ、Temporal、Dagster 任选其一。
- 单机:
存储:
Context memory可以先用 SQLite(按run_id、agent、kind、payload存 JSON)。- 向量检索如果需要,可以用一个简单的 embedding + FAISS/pgvector。
安全与合规:实现一个“研究目标与输出过滤器”,在 Generation 和 Evolution 之后都过一遍 gate,避免危险建议在系统内传播。
9. 局限性与我认为需要特别小心的点
Elo是 auto-evaluation,不是 ground truth。论文也明确提示:Elo 可能偏好某些“看起来更像科研写作”的文本属性,而不一定对应真实科学正确性。“新颖性”很难严格证明。系统虽然会做 web search 来判定 novelty,但这天然不完备,尤其在跨学科与灰色文献(会议海报、未正式发表)场景。
“可验证”与“可执行”之间有鸿沟:实验资源、材料、伦理、设备差异都可能让看似可行的方案无法复现。因此 scientist-in-the-loop 不是可选项,而是系统成立的前提。