我用一句 /goal,让 Codex 自己复现了一个 COMSOL 仿真

lxiol

原文链接:https://mp.weixin.qq.com/s/_gojZIHx9Mg4OcdO19FWzA

我让 Codex 复现一个 COMSOL 官方样例。真正有用的不是“它跑成了”,而是我看清了 AI 做科研该信到哪一步。

硅潮开场动图

那天我丢给 Codex 的,不是什么前沿课题。

只是 COMSOL 官网的一个官方样例。

我想做的事也很小:让它照着样例,把模型从头复现一遍,最后用一个脚本把关键结果抽出来,跟官方图里的目标值对一下。

听起来像个玩具任务。

可它跑起来之后,我反而觉得这事有点重要。因为它把 AI 做科研最容易被吹过头的地方,切出了一条很清楚的线:

规范好的东西,它能接;没规范好的东西,它会自信地乱补

Codex 复现 COMSOL 样例的验收线

这比“Codex 能不能跑 COMSOL”本身有用得多。

别一上来就把最难的课题丢给 AI

如果你还没真正把 AI Agent 用进科研,我现在的建议很简单:先别碰你最前沿、最不确定的那个问题。

从复现开始

复现有一个巨大好处:答案是已知的。Agent 给你的结果对不对,你不用靠感觉判断,直接拿标准答案去验就行。

这和让它分析一个你自己都没摸清的新体系,是完全不同的安全等级。

我那次选 COMSOL 官方样例,就是因为它站在最友好的那一端:页面写清楚了物理场、边界条件、材料参数、求解方式,结果也有可以对照的图。Agent 接到的不是一团雾,而是一份结构化任务。

这种任务特别适合练手。

你既能学到样例背后的建模思路,又能顺手得到一个跑通的基线。以后要改材料参数、换几何、换边界条件,至少不是从一张白纸开始。

但问题也在这里。

科研里的复现,大多数没有这么友好。

复现这件事,照出了科研的老毛病

你真动手复现过论文就知道:很多论文不是“不会复现”,而是根本没把能复现的东西交出来。

代码没有。

环境没有。

关键参数写得像谜语。

方法部分看上去很完整,真到实现时,才发现最要命的几步都藏在“we followed the standard procedure”里面。

这正好是 AI Agent 的命门。

有个很新的基准,叫 AutoMat,专门测“编程 Agent 能不能复现计算材料学论文里的结论”。它不是让 Agent 写一个网页,也不是修一个单测,而是让它从真实材料学论文里恢复计算流程,再判断结果能不能支撑论文 claim。

结果不算乐观。

AutoMat 论文里,最好的一组设置成功率也只有 54.1%。更要紧的是它的失败模式:Agent 最差的情况,恰好是只能从论文正文里重建流程、没有现成代码的时候。主要翻车原因也很眼熟:步骤不完整、方法被悄悄改了、代码跑不起来。

这不是“模型不够聪明”这么简单。

它是在告诉你:如果人类作者自己都没把流程写成可执行的东西,AI 再能干,也只能在空白处猜。

论文方法空白需要先列假设

另一边也有反例。

一篇关于社科计算复现的研究,用 5 个已经可复现的 R-based 社科研究做 controlled testbed,再故意注入依赖、路径、版本、缺失逻辑这些常见故障,让自动化流程去修。prompt-based 方法成功率在 31–79% 之间;agent-based workflow 好很多,可以到 69–96%

注意,这里不是“五十篇论文全自动复现九成”。那样写就过头了。

它真正说明的是另一件事:当代码、数据、环境和验收目标都在,Agent 的手脚很快;当你只给它一段含糊的方法描述,它就开始危险。

我那个 COMSOL 样例能顺利,靠的不是魔法。

靠的是输入规范

我现在会先给 Agent 立一份“复现规矩”

做过几次之后,我不再直接对 Agent 说“帮我复现一下”。

这句话太松了。

它会给你一个看上去很像样的结果,然后把所有没说清楚的地方自己补上。补得对,你运气好;补得错,它也一样能写得头头是道。

所以我会先在仓库根目录放一份说明文件。

用 Claude Code 的人,可以放进 CLAUDE.md;用 Codex 的,就放进 AGENTS.md。意思都一样:这是常驻规矩,Agent 每次开工先读。

我会写得很死:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
`# 复现任务说明(给 Agent)

## 目标
复现论文 Figure 3 的关键结果:<一句话写清楚要复现哪个量>。

## 验收线
Figure 3 给出的目标值约为 X(容差 ±Y)。
复现结果落在这个范围内,才算通过。

## 环境
- 严格按 environment.yml 建环境,不要擅自升级依赖版本。
- 所有随机过程固定 seed=42。

## 流程
1. 先只读 /paper 和 /code,列出复现这张图需要的全部步骤和输入。
2. 凡是原文没写清、需要你假设的参数,先停下来列给我,不要默默填。
3. 跑通后,把结果和目标值 X 对比,报告相对误差。
4. 对不上,先查环境和参数,不要改核心算法去“凑”结果。

## 红线
- 不许为了好看而改动数据或评价指标。
- 任何“为了跑通”做的简化、对原文的偏离,都要显式标出来。`

这份文件看起来很啰嗦,但它值钱。

因为复现最怕的不是失败。

失败至少会暴露问题。

最怕的是它用一条你没留意的捷径,凑出了一个对的数。那种“结果对、过程错”,才是最容易把人带沟里的。

/goal 适合复现,因为复现有明确终点

我用的是 Codex 里已经打开的 goals 能力。不同安装版本入口可能不一样,但思路很简单:你不是让它“下一步做什么”,而是给它一个目标,让它自己拆步骤、自己跑命令、自己看结果、自己修。

复现任务特别适合这种模式。

原因只有一个:它知道什么时候该停。

很多 AI 任务最大的问题,是“完成”长什么样说不清楚。你让它“把模型调好”“把分析做完”“把结果写漂亮”,它就会在一堆模糊判断里打转。

复现不一样。

你可以把终点写成一条命令:

1
`python check.py`

这个脚本只干一件事:从仿真输出里抽出关键数值,和目标值 X 比较,误差小于 Y 就通过,否则失败。

这样 /goal 才转得起来。

命令行运行与脚本验收形成复现循环

我会先把仓库准备成这样:

1
2
3
4
5
6
7
`npm install -g @openai/codex
cd ~/repro/comsol-case

git init
git checkout -b codex/repro

codex --sandbox workspace-write --ask-for-approval never -C . 2>&1 | tee codex-session.log`

这里我不会建议你一上来就开最危险的全权限模式。复现目录、独立分支、workspace-write,已经够 Agent 折腾了。真要跑大算力、调许可证、动共享数据,另说,别让它默认有整块硬盘的钥匙。

进到会话后,我会把目标写得很硬:

1
2
3
4
5
6
`/goal 复现这个 COMSOL 案例 Figure 3 的稳态结果。
用批处理模式跑模型,跑完用 check.py 把关键输出抽出来,
和目标值 X(容差 ±Y)比对。
没对上就检查网格、边界条件、材料参数,重跑,直到落进容差内;
连续三轮还对不上就停,把试过什么、卡在哪写清楚。
不许为了凑到 X 而改 check.py 或评价口径,AGENTS.md 里的红线照旧生效。`

然后它就能自己转一阵。

建环境,跑批处理,读输出,跑 check.py,发现不对,再回头看网格、边界条件、材料参数。

你不需要盯着它每敲一行命令。

你真正要看的,是最后两样东西:codex-session.log 和 git diff

日志告诉你它一路试过什么。

diff 告诉你它到底动了哪里。

这一步不能省

让仿真进循环,关键是“命令行可运行、脚本可验收”

很多人把 Agent 用不起来,不是模型问题,是任务没有被做成机器能循环的形状。

COMSOL 也一样。

你如果只把一个 .mph 文件丢在那里,让 Agent “看看哪里不对”,它很难形成稳定闭环。可你把它变成两条命令,情况就变了:

1
2
`comsol batch -inputfile model.mph -outputfile out.mph
python check.py out.mph`

第一条负责跑。

第二条负责判。

只要这两条能在你的机器上稳定执行,Agent 才能自我纠错。否则它每一轮都要靠自然语言猜“是不是好了”,那基本就会变成玄学。

这也是我现在判断一个科研任务适不适合交给 Agent 的标准:

它能不能被压成一个可重复执行的命令?

结果能不能被一个脚本判断对错?

如果能,它就适合交给 Agent 连轴转。

如果不能,那你先别急着自动化。先把“怎么跑、怎么验”铺出来。

MCP 是把手伸到项目外面,不是把家门全打开

上面这套流程,Codex 主要在当前复现目录里干活。

但科研项目里,东西经常不在一个目录:论文 PDF 在资料库里,参考数据在另一个数据库,作者代码在 GitHub,实验记录在别的文件夹。

这时候 MCP 就有用了。

MCP,全称 Model Context ProtocolAnthropic 在 2024 年 11 月把它开源出来,官方文档里有个很形象的比喻:它像 AI 应用的 USB-C。

意思不是“它很神”。

意思是你不用每接一个工具就手写一套胶水。文件系统、数据库、网页抓取、Git 服务,都可以通过同一种协议挂给支持 MCP 的 Agent。

最简单的例子,是只把论文资料库挂进去:

1
2
3
4
5
6
7
8
9
10
11
12
`{
  "mcpServers": {
    "papers": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/yourname/papers"
      ]
    }
  }
}`

这件事有用,但也危险。

只挂 /Users/yourname/papers,别图省事把整个 /Users/yourname 扔进去。Agent 够到项目之外,是为了拿论文、拿参考数据、拿作者仓库,不是为了把你的电脑变成开放厨房。

我更愿意把 MCP 看成“受控的外部手臂”。

MCP 只打开受控资料小门

它能帮 Agent 查资料。

但你要决定它能查到哪里。

复现不是省时间,是校准信任

我后来越来越觉得,复现可能是 AI 科研最好的入口。

不是因为它最酷。

而是因为它最会教你分寸。

它让你亲手看见:什么情况下 Agent 很强,什么情况下它开始胡来;什么叫“代码和数据都在,它能修”;什么叫“方法没写清,它开始补”;什么叫“结果看着对,但过程可能偏了”。

这比任何“AI 会颠覆科研”的大话都管用。

它甚至会反过来倒逼科研本身变干净。

如果一个 Agent 能在几分钟里,从你公开的代码、数据和环境文件里复现出计算结果,那“不公开能跑的代码”就会变得越来越难看。

AI 未必能直接修复复现性危机。

但它会让“可复现”变便宜。

也会让“不可复现”变尴尬。

所以,如果你还没开始把 Agent 放进科研流程里,别从那个最难、最贵、最模糊的问题开始

找一个你知道答案的样例。

写清验收线。

把 check.py 放在那里。

然后让它跑。

你不是在测试它有多神。

你是在学一件更重要的事:它到底配得上你信几分

参考资料

OpenAI****Codex CLI README / npm package metadata

Codex 本机版本功能检查:goals stable true

arXiv:2605.00803, Can Coding Agents Reproduce Findings in Computational Materials Science?

arXiv:2602.08561, Automating Computational Reproducibility in Social Science

Anthropic: Introducing the Model Context Protocol, 2024-11-25

Model Context Protocol 官方文档

往期推荐

把 Codex 接到超算上跑 VASP:科研计算的苦活,真的能少很多

AI 已经能自己跑 DFT 了,但它卡住的地方,我是真没想到

我把 vibe coding 搬进实验室:AI 最后放大的,是判断力

硅潮结尾动图

本文转载自微信公众号,如有侵权请联系删除。

  • 标题: 我用一句 /goal,让 Codex 自己复现了一个 COMSOL 仿真
  • 作者: lxiol
  • 创建于 : 2026-06-20 01:24:36
  • 更新于 : 2026-06-20 01:24:36
  • 链接: https://blog.lxiol.cn/2026/06/20/我用一句-goal让-Codex-自己复现了一个-COMSOL-仿真/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。