用於科學計算的長期運行 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 被用於監控進度並確保可恢復性。代理被指示在每個有意義的工作單元完成後進行 commit 和 push,前提是 pytest 通過,以確保不會提交破壞性的更改。
執行與編排
HPC 集成
對於計算密集型任務,Claude Code 可以在 HPC 集群上使用 SLURM 作業調度器,在類似 tmux 的終端機多路復用器中運行。這允許代理在背景運行,而人類用戶可以偶爾脫離並重新連接,以引導過程或透過 GitHub 檢查進度。
Ralph Loop
為了對抗「代理懶惰」(即模型可能在複雜任務完全完成之前就停止工作),Anthropic 利用了「Ralph loop」。這是一種 for 迴圈編排模式,當代理聲稱完成時,會重新向其發出提示,詢問其是否真的完成了。
在提供的範例中,Ralph loop 是透過一個插件調用,並帶有特定的成功標準:
/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