AI树搜索赋能科研代码自主迭代 高效完成三类科研任务

在科研开发的日常工作中,多数任务的核心难点并非完成第一版原型,而是后续数十甚至上百次的试错迭代。这类工作本质上是一场持续的搜索过程,而非单次执行的简单任务。一款开源AI科研工具将这类试错工作完全交给程序自动完成:被演进的直接是科研代码本身,整个过程中模型无需额外训练,搜索规则也保持固定,每一轮迭代中唯一变化的只有最终产出的代码版本。
这套搜索过程的形态类似一棵不断生长的树:每一个代码版本都是树上的一个节点,既可以被再次选中、改写并长出新的分支,也可以暂时搁置,在数十轮迭代后重新被拾起继续修改;而得分更高的分支会获得更多的改写机会,从而更快地向更优版本演进。
每一轮完整的迭代包含四个固定步骤:首先从现有节点中选择一个父版本,将其交给大模型进行改写,随后将新生成的代码放入隔离沙箱进行评分并作为新节点挂入树中,最后将本次迭代的访问记录记账到该节点的全部祖先上。即使是运行失败的代码版本也会被纳入树中,并标记为失败状态。
沙箱环境由该工具的底层平台提供,可以自动隔离运行失败、死循环和超时的代码,因此无需对模型生成的代码预设任何限制。正是因为有了明确的分数作为参考,程序才能自动判断哪一版代码更优秀,进而决定下一轮迭代应该从哪个节点继续修改。当这棵搜索树能够持续生长、完全不需要人工逐轮介入时,科研代码的迭代就实现了自主推进。这正是强化搜索迭代的一种典型形态:在明确目标给定后,代码优化的方向、回退的版本、深入的路径都由程序自主决定。
我们可以通过三个典型案例来直观展示这套工具的能力。
第一个案例是半无穷区间上的振荡积分求解,这类积分是物理计算中无法绕开的基础量,但通用积分器在此类场景中往往失效:通用积分器依靠局部误差估计来决定采样加密的位置,而振荡类函数的频率始终变化,无法给出可靠的收敛判断。
研究团队选取了38道这类积分题目,整个过程中AI无法看到题面和标准答案,唯一的反馈只有精度评分——评分0分代表全部计算准确,分数越低则误差越大。作为对照,直接调用通用的scipy.integrate.quad工具仅获得-3.40的得分,在19道测试题中只有3道达到3%的容差要求,最差的一道结果与真实值相差约24亿倍。当搜索进行到第119个版本时,得分达到了-0.0007:参与打分的19道题全部计算准确,平均相对误差仅为0.07%。在此之前,这类积分并没有通用的可靠求解工具,而本次搜索直接生成了可直接调用的专用求解器。
最终生成的247行代码会先自动判断被积函数的发散位置和振荡频率,再根据不同情况选择对应的计算算法——并非为38道题目分别编写分支,而是一套通用的计算规则,因此在未参与打分的另外19道题目上同样表现出色。整场搜索历时2小时,共生成236个代码版本,全程没有任何人工干预。
第二个案例是高斯超几何函数₂F₁(a,b;c;z)的双精度求值,这是特殊函数体系的核心枢纽,行业内公认没有单一算法可以覆盖全部参数域。沿用数十年的基线工具scipy.special.hyp2f1,在本次测试的参数分布中,约有三分之一的点计算结果的有效数字不足10位。
研究团队使用glm-5.2模型进行48次扩展迭代,总耗时598秒,最终生成了199行的专用代码。在1000个从未见过的测试点上,平均正确有效数字位数从9.836提升至11.771,计算结果达到10位以上有效数字的点从659个增加到965个,原先有效数字不足10位的大部分点都得到了修正。拆解这份代码可以发现,程序自动找到了针对z小于-1场景的经典恒等式,将参数替换为1/z避开了标准算法不收敛的区间,并且自行确定了算法切换的触发条件。
第三个案例是符号回归,即仅通过观测数据反推背后的解析表达式,历史上许多物理定律都是通过这种方式被发现的,比如开普勒从第谷的行星观测数据中归纳出行星周期平方与轨道半长轴三次方成正比的规律。
本次测试使用了LLM-SRBench的LSR-Transform子集,该数据集为一张包含4000行采样点的纯数字表,对应一列目标值。搜索树中的每个节点都是一段完整的Python程序,作用是返回一个解析表达式。通过树搜索迭代,在111道测试题中有41.4%成功写出了正确的方程,其中包括玻尔能级反解主量子数、普朗克分布反解温度、相对论多普勒效应等典型问题。整个过程中每题平均仅调用16.5次大模型,使用deepseek-v4-flash模型的总费用不足3元。
在数值代码加速的测试中,研究团队使用了收录了154个来自numpy、scipy、networkx、cvxpy的真实数值计算任务的AlgoTune基准集,评分标准为生成代码相对参考实现的加速比。基准论文的结论指出,现有模型往往倾向于表层的代码优化,难以发现算法层面的创新。
按照AlgoTune的评分规则,这套工具使用同一套配置运行两个种子,最终获得的平均加速比为2.279,意味着相同的计算结果耗时仅为原来的四成多。整个过程中提示词没有点名任何加速技术,所有的优化改动都由搜索过程自动找到。作为对照,官方榜单中最高的成绩为claude-opus-4.6的1.837,需要先通过强化学习训练专用模型的MetaEvolve成绩为2.045;而本次测试使用的是现成的预训练模型,没有进行任何额外的训练工作。
这套搜索的选择规则并非从根节点逐层向下遍历,而是将整棵树的所有节点放在一起统一打分。每个节点的得分越高,被选中作为父版本的概率就越高,计算资源会自然向效果更好的版本集中,这是深挖优化路径的一侧;同时,同一个节点每被选中一次,其后续被选中的权重就会衰减一次,当一条路径连续迭代多次仍无法获得更好的结果时,搜索会自动转向其他被搁置的分支,这是拓宽搜索范围的一侧。两种机制结合,让搜索树既能沿着当前最优的版本继续深入优化,也能回溯到早期被暂时放下的分支进行尝试。
积分求解的案例就很好地体现了这一点:最终的最优版本的父节点是第116版,而第116版又是由第65版改写而来——第65版的得分仅为-2.22,早已被后续的多个版本超越。当第65版被重新选中时,当时的最优版本是第95版(得分-0.99),该路径已经连续改写5次都没有获得更好的结果,搜索预算因此转向了其他分支。如果搜索规则仅允许改写当前的最优版本,这条关键的优化路径就不会被发现。
从积分问题生成的236个版本的整体分布来看,前6轮迭代全部集中在根节点,长出了6条一级分支;随后搜索迅速收敛,229个节点都挂在其中一条分支下面。整个搜索树中,最活跃的一个版本被反复改写了7次,最深的一条迭代路径达到了15层。使用同一套搜索规则运行不同的任务,生成的搜索树形状也会有显著差异。
这套树搜索运行在开源AI科研工作台ScienceDiscovery上,其底层平台提供了一套通用的演进框架:并发生成候选代码、在隔离沙箱中完成评估、将评估结果合并到产物库、按照治理规则决定哪些节点可以被纳入搜索树——所有实现“让产物自主迭代”的核心能力都依赖这套框架,与具体使用的搜索算法无关。
该平台将整个演进循环固定为四个可替换的插槽:确定需要修改的内容、选择迭代的起始候选版本、定义评分规则、实现结果合并提交逻辑。整个循环的框架本身保持不变,更换搜索算法只需要替换对应插槽中的实现内容。例如本次测试的树搜索,只是替换了“选择”插槽中的打分规则;如果要更换为遗传式交叉变异、仅保留最优链的爬山算法,或者按不同特点存档的策略,其余三个插槽的代码都无需修改。
更换任务的逻辑也是同理:本次测试的积分求解、代码加速、符号回归三个案例,都使用了同一套底层平台、同一套并发机制和治理规则,仅更换了评分函数和初始的根节点代码。平台还原生支持异步迭代:多个工作节点可以同时获取产物快照、生成候选代码,评估完成后直接提交给合并层,无需等待同一轮中的其他工作节点。而ERA的参考实现是串行的,一次仅能扩展一个节点,迁移到该平台后即可实现多节点同时扩展。
三个测试案例有一个共同的核心前提:结果可以被机器自动判定。无论是积分计算的精度、代码的加速比,还是解析表达式的正确性,都可以在几秒到几十秒的时间内完成验证。也正是因为这一点,236个代码版本才能在2小时内完成全部迭代,全程无需人工干预。
但多数科研领域并非如此:验证一个科研想法往往需要合成一批样品、进行一次风洞实验、等待细胞培养完成,验证周期以天甚至月计算,每一次错误尝试的成本都很高。在这些领域中,阻碍搜索迭代的往往不是无法生成更优秀的代码版本,而是需要等待多久才能知道当前版本的实际效果——验证速度每慢一个数量级,整个迭代循环的速度就会慢一个数量级。
代码、算法、数值计算这类任务之所以能率先实现自动迭代,正是因为它们的验证成本天然很低,一次评分仅需几秒到几十秒。要将这套自动迭代的循环推广到其他科研领域,需要补上两个关键环节:一方面要加快验证速度、降低验证成本,比如用仿真实验替代部分真实实验、使用代理模型预先筛选明显不可行的方案、通过自动化实验室将单次验证的周期从几天压缩到几小时;另一方面要确保评分结果的可信度,通过更严格的验证流程保证评分与真实的目标需求不脱节。
每向前推进这两个环节一步,就能有更多类型的科研任务被交给搜索自动完成。人类只需要负责定义任务目标和判断标准,剩下的数十上百次代码改写和迭代工作,都可以由程序自主完成。
欢迎开发者、科研人员以及领域专家参与共建,通过提交反馈或贡献内容持续优化这套工具。

