实战 📋 6 个步骤 第 244 / 460 篇

开源版「科研 Agent」实测:用 OpenAI4S 的 Code-as-Action 把研究跑成流水线

元空 AI Science(OpenAI4S)零依赖、MIT 协议开源,内置 30 多项科研 Skills。核心是 Code-as-Action:智能体直接生成 Python/R 代码并在持久内核中执行,中间结果留在工作环境不必回传模型,产物自动保存并版本化,研究者随时能打开 Notebook 接手。本教程拆解它与工具菜单式 Agent 的本质差异和迁移方法。

2026.08.07· 16 分钟阅读· 约 2029 字· 🔬 OpenAI4S / 🐍 Python

大多数 AI Agent 干活的方式是这样的:模型面对一份提前准备好的工具菜单,判断该调用哪个工具,然后一步一步往下走。简单任务够用,但科研不是三五步能搞定的事。

查多个数据库、下载数据、清洗数据、反复改代码、调用专业算法、请求算力、生成图表、整理报告——任何一步出问题都可能要回头重来元空 AI Science(OpenAI4S)给出的答案是 Code-as-Action(代码即行动),并以 MIT 协议开源、零依赖、内置 30 多项科研 Skills。

🔬 本教程适合:需要跑数据分析流水线的研究人员与数据工作者,以及想理解「代码即行动」这套范式、准备改造自己 Agent 的开发者。这套思路不限于科研,任何多步数据处理场景都适用。

Step 1:工具菜单 vs 代码即行动

1 差别不在语法,在执行粒度
维度工具菜单式Code-as-Action
执行单位一次一个工具调用一段可含循环与判断的代码
处理 100 个文件调用 100 次,每次回传模型一个 for 循环,一次执行
中间数据每步都要塞回上下文留在内核工作环境里
条件分支靠模型每轮重新判断代码里的 if 直接搞定
token 消耗随步骤数线性增长与数据量基本解耦

OpenAI4S 让智能体直接生成 Python 或 R 代码,并在一个持续运行的内核环境中执行。循环、条件判断、批量数据处理和绘图可以组合在一次执行里完成;数据和中间结果也不必在每一步重新交给模型,而是保留在工作环境中。

💡 用一句话概括它的设计:「代码即行动,内核即环境。」前半句解决「怎么做」,后半句解决「状态存哪」——两者缺一不可。只有代码没有持久内核,每次执行都从零开始,等于白干。

Step 2:持久内核带来的连贯性

2 前一步的产物,后一步直接能用

对使用者来说,最直接的变化是 AI 可以把更长、更复杂的任务串起来:

持久内核下的典型链路

  第 1 步  下载数据      →  df 变量留在内核里
  第 2 步  清洗          →  直接操作 df,不用重新读文件
  第 3 步  特征计算      →  中间矩阵留在内存
  第 4 步  绘图          →  图片自动保存
  第 5 步  写报告        →  引用前面所有产物

对比:无状态执行
  每一步都要重新读文件、重新加载
  中间结果靠模型上下文传递(很快就爆)
  一个环节改动,整条链重跑

三个直接收益:前一步下载的数据可以直接交给后一步分析;生成的图片、表格和报告会自动保存;研究人员也能随时打开 Notebook,检查代码、接手分析或修改结果。

持久内核也有代价:状态污染。跑了几十步之后,内核里堆满了各种中间变量,一个同名变量被覆盖就可能让后续结果悄悄出错。务实做法:关键节点把数据落盘(parquet / csv),而不是全靠内存变量传递。这样即使内核崩了或状态乱了,也能从最近的落盘点续跑。

Step 3:一个完整的例子——蛋白质分析

3 从检索到成文,一个界面里跑完

官方给的示例任务是分析一个蛋白质,整条链路是这样的:

任务:分析某个蛋白质

  ① 检索真实的蛋白质序列和结构数据(公开科研数据源)
  ② 完成特征计算与可视化
  ③ 把分析过程、数据来源和结果一起写进报告

强调的一点:数据是真的,计算也是真的。
  不是让模型「说出一个看起来正确的答案」,
  而是真的去查、真的去算。

产出形式包括图片、表格、三维结构或 Markdown 报告。而且整个过程不是做完就散——每一份科研产物都会被记录、保存和版本化,方便后续检查、修改和复用。

🎯 「数据是真的,计算也是真的」这句话是科研场景的生命线。纯语言模型最危险的失败模式是生成一个格式完美、数值编造的结果——它看起来和真结果一模一样。Code-as-Action 的关键价值在于:每个数字都有对应的代码和数据来源可以回溯。

Step 4:产物版本化——可复现的前提

4 科研工具和玩具的分界线

OpenAI4S 更像一张人和 AI 共用的科研工作台。每份产物被记录、保存和版本化,这一点看起来平淡,实际上是判断一个科研 Agent 能不能用的硬指标:

要求没有版本化有版本化
结果能复现「上次那张图是怎么出来的?」找到对应版本,重跑
审稿人质疑只能重做一遍,还未必一样直接出示过程记录
换参数对比覆盖掉旧结果并排比较多个版本
协作接手口头交接打开 Notebook 直接续

把「可复现」当成硬性验收项。评估任何科研或数据类 Agent 时,问一个问题就够了:「三个月后,我能不能一字不差地重现今天这张图?」答不上来的工具,产出的结论就没法写进正式材料。

Step 5:把这套模式搬进自己的流程

5 不装 OpenAI4S 也能用的四条改造

Code-as-Action 不是某个产品的专利,它是一种范式。你可以直接改造现有的 Agent:

① 把「多个细粒度工具」合并成「一个代码执行工具」
   原来:read_file / filter_rows / compute_mean / plot ...
   改成:run_python(code)  ← 一个工具解决所有

② 给它一个持久内核
   Jupyter kernel / IPython 会话 / 长驻的 Python 进程
   要点:跨轮次保持变量不丢

③ 中间结果不回传模型
   模型只需要看到:执行成功与否 + 关键摘要(如 shape、前 5 行)
   千万别把整个 DataFrame 打印回上下文

④ 产物自动落盘并编号
   图表 / 表格 / 报告统一存到带时间戳的目录
   同时记录生成它的那段代码
💡 第③条是最容易做错、收益也最大的一条。很多人写代码执行工具时习惯把 stdout 全量回传,一个 print(df) 就能塞满上下文。正确做法是只回传「够模型判断下一步」的最小信息——形状、列名、异常摘要,而不是数据本身。

Step 6:适用边界与风险

6 代码执行 = 最强能力,也是最大风险
场景是否适合 Code-as-Action
批量数据清洗与统计✅ 最佳场景
多数据源检索 + 交叉分析✅ 明显优于工具菜单
需要反复调参的实验✅ 持久内核优势最大
调用外部 SaaS API⚠️ 用 MCP 工具更合适
不可信输入的自动化❌ 必须先上沙箱隔离

让模型生成并执行任意代码,等于把 shell 交出去了。本地跑自己的数据没问题,但只要涉及不可信输入、共享环境或联网写操作,就必须先套一层隔离——可参考第 214 篇沙箱教程持久内核尤其要注意:它是长期存活的,一次注入的影响会一直留在环境里。

一句话总结:Code-as-Action 的本质是把「让模型一步步指挥工具」换成「让模型写一段程序,一次跑完」。它在多步数据处理场景下能同时降低 token 消耗、提升连贯性、保住可复现性——代价是必须认真对待代码执行的安全边界。项目地址:chatexcel.com/homesite/openAI4S,具体功能与 Skills 清单以官方最新说明为准。

← 返回教程中心