openJiuwen 社区开源工作台 ScienceDiscovery 用树搜索驱动科研代码自行迭代,不训练模型、不改搜索规则。它 2 小时写出振荡积分通用求解器,在 AlgoTune 上实现 2.279 倍加速,符号回归超四成写出正确方程,成本不足 3 元。
写一个能算准振荡积分的程序、把数值代码调快十倍,或从数字表里反推出背后的方程——第一版通常都不够好,真正的工作量落在其后的几十上百次试错。这类工作的形式是搜索,而不是单次执行。
openJiuwen 社区的 ScienceDiscovery 把这段试错交给程序自己完成:被演进的是科研代码本身,模型不训练、搜索规则也不改,每一轮变化的只有产物。
搜索展开的形状是一棵树。每个版本的产物是树上的一个节点,可以被再次选中、改写并长出新的分支,也可以暂时搁置几十版之后再被拿起;得分较高的分支会获得更多改写机会。
每一轮迭代包括四步:选择一个父版本,交给模型改写,进沙箱评分并挂成新节点,最后把这次访问记账到它的全部祖先上。运行失败的版本同样入树,标记为失败;死循环和超时都会被沙箱隔离,因此不必对模型生成的代码预设限制。
目标给定之后,往哪个方向走、退回哪一版、在哪里深入,都由程序自己决定——这就是递归自改进(RSI)的一种形态。
半无穷区间上的振荡积分是物理计算绕不开的一类量,通用积分器在此失灵:它靠局部误差估计决定在何处加密采样,而这些函数振荡不停,给不出可靠的收敛判断。
取 38 道这样的积分,题面和答案 AI 全程看不到,唯一反馈是精度分。直接调用 scipy.integrate.quad 得 −3.40:19 道里只有 3 道进入 3% 容差,最差一道与真值相差约 24 亿倍。搜索到第 119 版时,得分来到 −0.0007:用于打分的 19 道全部算准,平均相对误差 0.07%。最终那份 247 行的程序会先判断发散位置与振荡快慢,再分情况选择算法——这是一套通用规则,在未参与打分的 19 道题上同样有效。整场搜索约 2 小时、236 个版本,无人工干预。

同样的机制换到高斯超几何函数 ₂F₁ 的双精度求值:公认没有单一算法能覆盖全参数域,在测试参数分布上约三分之一的点有效数字不足 10 位。这次用 glm-5.2 跑 48 次扩展、598 秒,产出一份 199 行程序。在 1000 个未参与训练的点上,平均正确位数从 9.836 升到 11.771。程序还自行发现了一条经典恒等式的用法:z 小于 −1 时标准算法不收敛,它把 z 换成 1/z 绕开这段,并自己确定了切换条件。

AlgoTune 汇集了 154 个来自 numpy、scipy、networkx、cvxpy 的真实数值计算任务,要求产出相同结果,得分是相对参考实现的加速比。其基线论文自己也承认:现有模型“倾向于表层优化,而未能发现算法层面的创新”。
按 AlgoTune 自己的评分规则,ScienceDiscovery 用同一套配置跑两个随机种子,平均加速 2.279 倍,同样结果耗时降到原来的四成多;提示词里没有点名任何加速技术,改动全部由搜索自行找出。作为对照,官方榜单最高是 claude-opus-4.6 的 1.837,需要先用强化学习训练一个模型的 MetaEvolve 为 2.045——而这里用的模型现成可用,没有做任何训练。

第三个场景属于科学发现本身:只给观测数据,反推背后的解析表达式。LLM-SRBench 的 LSR-Transform 子集给出的是一张纯数字表——4000 行采样点、一列目标值;树上每个节点是一段完整的 Python 程序,返回一个解析表达式。

111 道题中有 41.4% 写出了正确方程,包括玻尔能级反解主量子数、普朗克分布反解温度、相对论多普勒等;每题平均只有 16.5 次模型调用,用 deepseek-v4-flash 的总费用不足 3 元。

在决定往哪里改时,ScienceDiscovery 并不从根节点逐层深入,而是把全树所有节点放在一起比较,给每个节点算一个分数。名次越靠前越容易被选中,预算因此流向表现好的版本,这是“深挖”的一侧;同一个节点每被选中一次权重就衰减一次,一条路径连续改上几轮之后选择会转向别处,这是“铺开”的一侧。
积分案例最能说明问题:最终版本的父节点是第 116 版,而第 116 版由得分仅 −2.22、早已被超越的第 65 版改写而来。第 65 版被重新选中时,当时的最优版本是第 95 版(−0.99),后者已连续改写 5 次都没有更好结果。如果选择规则只盯着当前最优版本,这一支永远不会再被拾起。

搜索结束时,积分问题上长出的 236 个节点摊开来看:前 6 轮全部直接改写根节点,随后迅速收敛,229 个节点挂在同一条分支下面;最宽的一个节点被反复改写了 7 次,最深路径达 15 层,空心节点是运行失败的 49 个版本。
免费获取企业 AI 成熟度诊断报告,发现转型机会


这些搜索跑在 openJiuwen 开源 AI 科研工作台 ScienceDiscovery 上。底座把演进循环固定成四个插槽:改什么、从哪个候选出发、怎么跑与打分、怎么合并提交。循环本身不动,换算法只是更换插入的对象——换成遗传式交叉变异、只留一条最优链的爬山、或按不同特点各留一版的存档策略,其余三格都不用改。
换任务也是同理。积分、代码加速、符号回归三个案例共用同一套底座、并发方式和治理规则,换掉的只有评分函数与根节点。异步也由底座自带:n 个 worker 各取一份产物快照、各产生一个候选,评估完成后交给合并层,无需等待同轮其他 worker。Google ERA 的参考实现是逐节点串行扩展的,放到这个底座上就能实现 n 个节点同时扩展。

三个案例成立有一个共同前提:结果能被机器快速判定。积分算得准不准、代码快了几倍、方程有没有写对,跑一遍就有答案,单次评分几秒到几十秒——整棵树的迭代因此可以按小时计,全程无需人工干预。
科研中的大多数问题不是这样:验证一个想法要合成样品、跑风洞实验、等细胞长起来,周期以天甚至月计,每次试错成本都不低。验证慢一个数量级,整个循环就慢一个数量级。
要把同样的循环推向更多领域,需要两头补:一头把验证做快做便宜,用仿真替代部分真实实验、用代理模型先筛掉明显不行的方案、用自动化实验室把“跑一次”从几天压到几小时;另一头把分数做得更可信,通过更严格的验证让分数不与真实目标脱钩。
这一环每向前一步,就多一类能被交给搜索自行完成的任务。人负责定义目标与判断标准,剩下的几十上百次改写,由搜索自己完成。








关注公众号

扫码关注,获取最新 AI 资讯
3 步完成企业诊断,获取专属转型建议
已有 200+ 企业完成诊断