智能体驱动科学计算:宇宙学代码的 72 小时开发实验
当一位并非宇宙学专业的研究者,在数天内完成了一套可微分宇宙学玻尔兹曼求解器的核心开发工作,传统科研范式正在被重新定义。
Anthropic 公司的研究员 Siddharth Mishra-Sharma 在近期发表的文章中详细披露了这一实验的全过程。他没有沿用那种每一步都需要人工介入的,科学家与 AI 对话式交互的传统模式,而是借鉴了 Anthropic 此前 C 编译器项目的经验,搭建起一套能够自主运行数天的智能体工作流。这套方案的核心在于:用高层次的科学目标替代微观的过程管理,释放 AI 的自主探索能力。
整个项目围绕 CLASS 宇宙学玻尔兹曼求解器的可微分版本展开。这是一类数值计算代码,用于模拟宇宙早期光子、重子、中微子和暗物质的耦合演化,从而预测宇宙微波背景辐射的统计特性。完成这类求解器的可微分改造,意味着可以通过梯度下降等优化算法加速宇宙学参数估计,这是现代宇宙学数据处理的关键环节。
研究团队采用 JAX 框架来实现这一目标,它提供了自动微分功能和 GPU 加速支持。然而,开发过程中的一个核心挑战在于,这类求解器是紧密耦合的数值计算管道,任何微小的数值误差都会级联影响最终结果。因此需要采用顺序执行模式,由单个智能体主导,遇到特定子问题时才动态生成辅助智能体来处理。这种架构与 Anthropic 早期并行化的 C 编译器项目形成对比,后者可以分散处理不同编译任务。
研究者首先在本地迭代中确立了开发计划,将其写入 CLAUDE.md 文件作为项目指令的基础。这个文件会被 Claude Code 特殊对待,始终保留在上下文记忆中并用于指导整体规划。研究者随后通过 CHANGELOG.md 持续记录开发进展,包括当前状态、已完成的任务、失败尝试及其原因、准确度检查点表格、已知限制等。这个进度文件相当于智能体的长期记忆。没有这些记录,后续会话会重复走入同一条死胡同。
为了验证求解器的正确性,研究者建立了一套测试框架,以 CLASS 的 C 语言实现作为参考标准,逐项构建单元测试。智能体还被要求在开发过程中持续扩展测试集以防止回归。 Git 被用于协调工作,智能体被要求在每个有意义的开发单元后提交推送代码,并在每次提交前运行测试套件确保不破坏已有功能。这种设计不仅提供了可恢复的历史记录,也让研究者在任何时刻都能监控项目状态。
执行过程中,系统在 SLURM 调度的高性能计算节点上通过 tmux 终端复用器保持长期会话运行。研究者完成初始指令后便可以断开连接,间隔检查 GitHub 上的进展。项目引入了“Ralph 循环”机制来处理模型的“智能体惰性”问题——当模型声称已完成任务时,该机制会促使其重新评估是否真正达到预期标准,要求其继续工作直至明确输出“DONE”标志。研究团队设定的开发目标是与 CLASS 参考实现的全参数范围准确度偏差控制在 0.1%以内,这相当于 CLASS 与另一主流求解器 CAMB 之间的通常差异水平。
经过数天的连续开发,系统实现的求解器在与 CLASS 参考实现的多个宇宙微波背景角功率谱输出一致性上已接近亚百分之一精度。开发轨迹并非一帆风顺。早期阶段测试覆盖存在明显缺口,仅在单一参考参数点进行验证,这大幅降低了问题发现的概率。其间还出现了规范约定等基础性错误,耗费数小时追踪的缺陷对专业宇宙学家而言一目了然。但智能体保持着向目标迈进的持续动力。
研究者从这个实验中获得了一个意外的收获:通过追踪 Git 提交历史和查看开发日志,他对玻尔兹曼求解器的物理机制有了深入理解。这种学习方式类似于观察一位高效、精确的博士后如何逐步推进工作日志,虽然项目本身不属于他的核心专业领域。这种“渗透式”科学学习在没有直接介入开发细节的情况下实现了知识传递。
虽然最终版本尚未达到生产级标准,并非所有参数区间都完全一致,但这已足以证明智能体驱动开发能够将原本需要数月甚至数年的工作压缩到数天内完成。这种效率提升正在改变科研中“闲置时间”的定义。以往科研人员习惯夜间运行实验次日查看结果,机会成本在于实验结果的对等等待。而今不运行智能体也产生了类似的机会成本。只要手头有明确定义成功标准的项目,每个没有智能体运转的夜晚都是被搁置的进展。
创艺洞察
这场实验的核心价值不在于那个求解器最终达到的精度数字,而在于它揭示了一种可复制的方法论:文档即契约,测试即标准,迭代即进化。 CLAUDE.md 、 CHANGELOG.md 、 Git 提交记录。这些原本用于代码管理的工具,在智能体工作流中被重新赋予了认知锚点的功能,它们帮助一个缺乏领域知识的观察者理解整个系统的演化轨迹,也为智能体的自主决策提供了可追溯的依据。对于国内从事天体物理、计算生物、材料模拟等需要大量数值计算的研究团队而言,这套方案的技术门槛并不高。JAX 生态已经相当成熟,高性能计算资源也日趋普及,真正需要转变的是对“科研时间”的理解:当智能体可以 7×24 小时不知疲倦地比对代码、追踪误差时,科学家的时间应当更多地分配到提出正确的问题,而非执行已知的流程。


