用于科学计算的长时运行 Claude

Anthropic 已经证明,为期数天的智能体编码工作流可以自动化复杂的科学计算任务,将研究人员数月的工作量压缩到几天内。通过利用具有持久记忆、测试预言机(test oracles)和特定编排模式的 Claude Opus 4.6,一名非领域专家能够从头开始实现一个可微宇宙学 Boltzmann 求解器,其准确度与参考实现相比达到了百分之以下。

用于科学的自主智能体工作流

科学计算任务——例如重新实现数值求解器、将旧有的 Fortran 代码转换为现代语言,或调试大型代码库——非常适合自主智能体,因为它们通常具有明确定义的范围和清晰的成功标准。与可并行化的任务不同,科学流水线通常是深度耦合的,其中一个阶段的微小数值误差可能会向下游传播。这需要一种能够追踪因果链、借鉴领域知识并利用参考实现来二分查找差异的顺序智能体方法。

长时运行智能体的技术框架

为了实现持续数天的自主工作,Anthropic 确定了几个关键的架构组件:

项目指令 (CLAUDE.md)

指令被编纂在根目录下的 CLAUDE.md 文件中。Claude 将此文件视为持久上下文,在制定整体计划时引用它,并随着项目的演进进行更新。在宇宙学求解器的示例中,目标被定义为实现与参考 CLASS 实现的完全功能对等,以及 0.1% 的准确度目标。

持久记忆 (CHANGELOG.md)

为了防止智能体重复失败的尝试,CHANGELOG.md 文件充当了可移植的长期记忆。该文件记录了:

  • 当前状态和已完成的任务。
  • 失败的方法及其失败原因(例如,针对刚性扰动 ODE,从 Tsit5 切换到 Kvaerno5)。
  • 关键检查点的准确度表。
  • 已知的局限性。

测试预言机 (The Test Oracle)

自主进展依赖于“测试预言机”——一种让智能体验证其工作的方法。对于科学代码,这通常是一个参考实现、一个可量化的目标,或一个现有的测试套件。在这个项目中,Claude 使用 CLASS C 源码作为参考,来构建并持续运行单元测试。

通过 Git 进行协调

Git 被用于监控进度并确保可恢复性。智能体被指示在每个有意义的工作单元完成后,只要 pytest 通过,就进行 commit 和 push,以确保不会提交破坏性的更改。

执行与编排

HPC 集成

对于计算密集型任务,Claude Code 可以在 HPC 集群上使用 SLURM 作业调度器,在 tmux 等终端复用器中运行。这允许智能体在后台运行,而人类用户可以偶尔分离并重新连接,以通过 GitHub 引导过程或检查进度。

Ralph 循环

为了应对“智能体惰性”——即模型可能会在复杂任务完全完成之前就停止工作——Anthropic 利用了“Ralph 循环”。这是一种 for 循环编排模式,当智能体声称完成时,会再次提示智能体,询问其是否真的已经结束。

在提供的示例中,Ralph 循环通过一个插件调用,并带有特定的成功标准:

/ralph-loop:ralph-loop “Please keep working on the task until the success criterion of 0.1% accuracy across the entire parameter range is achieved.” --max-iterations 20 --completion-promise “DONE”

结果与启示

使用该框架,Claude Opus 4.6 在几天内从头实现了 clax 项目,最终达到了与参考 CLASS 实现百分之以下的吻合度。虽然智能体的轨迹显得“笨拙”——包括测试覆盖率的缺失以及偶尔在规范(gauge conventions)方面犯下初级错误——但它保持了朝着目标的持续进展。

这一演示表明,智能体驱动的开发可以显著压缩科学软件开发的周期。作者指出,在定义明确的项目上不运行智能体,其机会成本现在已成为一种实实在在的潜在进展损失。

Sources

相关

  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch