← Về thư mục
📄 / / profiles / r-and-d / raw_evidence / OpenAI4S / README_zh.md
OpenAI4S · 面向科学家的开源 AI ### 面向科学家的开源 AI ## 💸 9.9 元豆包 API 复刻 Claude Science **一个开源的混合式科研智能体。**
原生 JSON 工具负责编排与权限;持久 Python/R 内核负责科学执行。 **由北京大学—元空AI联合实验室推出。**
Launched by the Peking University–YuanKong Intelligence AI Joint Research Laboratory.

License: MIT Python Core deps Paradigm Tests

Stars Forks Issues PRs Welcome

[English](README.md) · **简体中文**

[!TIP] 为什么是 9.9 元? 不需要昂贵的前沿模型 Key —— OpenAI4S 跑在豆包上,用的是 火山方舟 最便宜的「Small」套餐:¥9.9 / 月。在 UI 里把供应商选成 ark,你就用不到一杯咖啡的钱得到了一个 Claude Science 级的智能体。

火山方舟 · Agent Plan —— Small 套餐 ¥9.9/月
火山方舟 · Agent Plan(个人版)—— 入门的 Small 套餐仅 ¥9.9 / 月。

🧬 JSON 编排,Code-as-Action 科学执行

OpenAI4S 刻意保留两个动作平面。供应商原生 JSON tool call 处理确定性编排、权限、元数据、外部服务和人工审批;Python/R Code-as-Action 在持久内核中执行计算、探索、分析、仿真与长时任务。Python Cell 运行期间可以同步调用内核中的 host API;R 是独立的持久分析通道。

工具和代码并非二选一,它们各自承担适合的职责。纯工具或对话型任务可以通过 Engine 自有、严格结构化的 finalize_response 完成。科学 Python Cell 保留 host.submit_output(...) 契约,包括结构化 Artifact 与指标。host.submit_output 是唯一能从 Cell 内部发出的完成信号;先执行过 Cell 后,后续单独且有效的 finalize_response 仍可关闭 Engine。

JSON 控制平面Python/R 科学平面
适用场景工作流、权限、元数据、服务计算、分析、仿真
动作单元一个有序原生工具批次一个完整代码 Cell
组合方式可审计 schema 与资源策略for、if、库;Python 还支持 Cell 中途 Host RPC
状态追加式 Action Ledger内核内存 + 版本化 Artifact
完成方式Engine 自有 finalize_responsePython:host.submit_output(...);R:无 Cell 内完成信号
扩展方式具名 Tool 子类导入库或加载 Skill
# ReAct 需约 14 次往返(read → … → filter → sort → plot)。   OpenAI4S:一个代码 cell。
hits   = [f for f in files if pattern in host.read_file(f)]
top3   = sorted(hits, key=os.path.getsize, reverse=True)[:3]
frames = [pd.read_csv(f) for f in top3]      # 10 万行的 DataFrame 留在内核里……
host.save_artifact(plot(frames))             # ……上下文里只留 "<DataFrame 100000×20>"

📣 更新


😮 亮点


📦 当前已交付的能力

当前代码树的能力地图——按平面列出已实现且可达的部分。

平面 已实现
控制与编排 基于类的原生 Tool · 追加式 Action Ledger · 带持久状态机的 plan/review · 会归档原始切片的上下文压缩 · 可中途叫停的并发子代理委派(fanout 48、depth 4)· 子代理无法自行放宽的 Specialist 白名单 · MCP 连接器 · 跨会话记忆
科学执行 持久的 Python 与 R 内核 · cell 执行中途的同步 host RPC · 对象级数据血缘 · 版本化 Artifact · 按内核 generation 记录的环境溯源(绝不借用守护进程的)· 后台执行 · 604 个 Skill(43 个精选维护 + 561 个固定版本 bioSkills)· 带 ABA 安全看门狗恢复的 FIFO 执行协调器
数据与检索 七个规范化公共数据库连接器(UniProt · RCSB PDB · Ensembl · ChEMBL · PubChem · arXiv · OpenAlex),记录自带来源与时间 · 覆盖其中三个的每日金丝雀 · 以 Agent Plan Key 授权的豆包搜索 Custom 版作为联网搜索主选 · Tavily 与免密钥搜索作为备用 · 托管的 DataPro 专业数据集检索
工作台 实时流式 · Action Timeline · 默认只读的 Notebook · 分支 fork/激活/revert · 带明确 Partial/Failed 状态的验证式恢复 · 锁定到所指版本的 @file 引用 · 2D 化学/基因组/序列/MSA/LaTeX 渲染器 · Markdown 与 .ipynb 导出
共享与可移植 经由你自己运行的 relay 的只读会话共享 · 隔离的可移植 Session 包 · 可选的、接到同一批内核上的 Jupyter KernelSpec 桥
运维、安全与发布 /api/v1 与启动凭据 · Seatbelt/bubblewrap 沙箱适配器,降级与 fail-closed 状态显式呈现 · 无人值守时默认拒绝的持久审批 · 脱敏诊断 · 可撤销遥测 · 环境即事务 · 跑在真实 Store、内核与 dispatcher 上的 11 workflow/34 case 基准 · 公开前先验证产物的分阶段发布流水线

🎬 效果演示

Live API 工作流:从 UniProt / RCSB 到 3D 结构和报告
Live API 工作流:从 UniProt / RCSB 到 3D 结构和报告
真实数据分析:人胰岛素 INS 从 UniProt / RCSB 到可复现报告
真实数据分析:人胰岛素 INS 从 UniProt / RCSB 到可复现报告
可视化 Artifact 编辑:一句话把 confidence 阈值线抬到 75
可视化 Artifact 编辑:一句话把 confidence 阈值线抬到 75
注释驱动图表编辑:圈选区域并重绘图例配色
注释驱动图表编辑:圈选区域并重绘图例配色
计划模式科研分析:青蒿素与紫杉醇溶解度预测
计划模式科研分析:青蒿素与紫杉醇溶解度预测
蛋白质工程:从序列到突变候选与结构解释
蛋白质工程:从序列到突变候选与结构解释

⚡ 快速开始

git clone https://github.com/PKU-YuanGroup/OpenAI4S && cd OpenAI4S
./setup.sh     # 一次性:用 uv 创建环境
./start.sh     # 启动 Web UI(http://127.0.0.1:8760/)

setup.sh 用 uv 创建轻量控制面 .venv。如需完整的 Python + R 科学计算内核,请先安装 micromamba、mamba 或 conda,然后改用 ./setup.sh --with-kernel-envs;已有环境可用 ./setup.sh --update-kernel-envs 同步,且不会删除用户自行安装的包。start.sh 从环境中启动守护进程 + Web UI。启动无需 API Key —— 在 UI 里设置你的模型(Customize → Models)。不启动 UI 跑单个任务:uv run openai4s run "Compute the mean of [4,8,15,16,23,42] and submit it." -v。

macOS

[!NOTE] v0.3.0 不发布 macOS 磁盘镜像。 发布流程只在 .dmg 经过 Developer ID 签名并完成公证时才上传它。这些凭据目前还不存在,所以本次选择不带镜像,而不是发布一个未签名的镜像。在 Mac 上请按下面的方式从 PyPI 安装,或使用上面的源码方式运行。旧的 v0.2.0 预览镜像仍可从 v0.2.0 release 页面下载(不是最新 Release)。它运行的是 0.2.0,不包含 0.3.0 的任何改动,并且不能打开已被 0.3.0 升级过的数据目录(见 从 0.2.x 升级)。

请从 PyPI 安装到一个单独的虚拟环境中。Apple Silicon 与 Intel 都适用,需要 Python 3.10 或更新版本:

python3 -m venv ~/.venvs/openai4s && source ~/.venvs/openai4s/bin/activate
pip install "openai4s[science]"   # numpy · pandas · matplotlib · scikit-learn;需要 RDKit 时用 [science,chemistry]
openai4s serve                    # 启动守护进程,并用访问令牌打开工作台

数据写在 ~/.openai4s。如果关掉了标签页,openai4s url 会再次打印带令牌的工作台 URL。R 内核需要一个 Conda 家族管理器(micromamba、mamba 或 conda),运行一次 openai4s setup 即可构建。

首次运行 —— 先配模型,再配搜索。 启动不带任何 Key,所以打开工作台之后:

  1. 模型 API —— 打开 设置 ⚙ → 模型,选协议(ark 兼容协议 对应豆包/GLM/Kimi/DeepSeek/MiniMax,或 OpenAI / Anthropic 兼容协议),粘贴 API Key,点 新增,再点 设为当前。最省钱:用火山方舟 ¥9.9/月 套餐的 ark 协议。
  2. 搜索 API (可选、推荐) —— 打开 设置 ⚙ → 网络,保持 允许联网 打开,把火山方舟 Agent Plan Key 粘进主选的豆包搜索 Custom 版卡片 → 保存凭证。当前 Ark 模型已使用同一个 Key 时会自动复用。Tavily 与免密钥引擎仍作为备用;豆包专用健康检查不会把备用结果冒充豆包成功。

完整流程(安装 → 模型 → 搜索 → R 内核,以及 v0.2.0 预览镜像的 Gatekeeper 步骤)见:上手指南。

Linux 应用(无需任何工具链)

[!NOTE] Linux 安装包自 v0.2.0 起随每个 release 发布。Windows/WSL2 安装包自 v0.3.0 起发布,见下方 Windows 一节。更早的版本(v0.1.0 只带 macOS 镜像,v0.2.0 没有 Windows 包)请用上面的源码方式,或 pip install openai4s。

从 最新 Release 下载 OpenAI4S-<version>-linux-x86_64.tar.gz,解包到任意位置直接运行。它内嵌自带的 Python 和预装科学栈,形态是一个可任意移动的目录:

tar -xzf OpenAI4S-*-linux-x86_64.tar.gz && cd OpenAI4S-*-linux-x86_64
./OpenAI4S          # 启动守护进程并打开 http://127.0.0.1:8760/
./install.sh        # 可选:把 `openai4s` 挂到 PATH,并注册应用菜单项

install.sh 是单用户级的、不需要 root——它只往 $HOME 里写;./uninstall.sh 会撤销这些改动,而 ~/.openai4s 里的数据原样保留。建议装上 bubblewrap(apt install bubblewrap)让 cell 在沙箱里跑;没有它,默认的 OPENAI4S_KERNEL_SANDBOX=auto 会明确报告内核处于降级、未隔离状态。目前只发布 x86_64——arm64 Linux 请改用 PyPI 安装(pip install openai4s)。

Windows(经由 WSL2)

下载 OpenAI4S-<version>-windows-x86_64.zip,解压后双击 OpenAI4S.cmd。首次运行会检查 WSL2 与可工作的 bubblewrap 0.8.0+ 沙箱,校验并安装随包 Linux payload,创建 ~/.local/bin/openai4s,在 WSL 中启动守护进程,再用 Windows 浏览器打开带本地登录引导的安全 URL。应用本体不下载、不 pip、不装工具链;支持基线是 Ubuntu 24.04,启动器可配置国内 PyPI/Conda 镜像以及 WSL 可访问的代理。详见双语 Windows/WSL2 指南。

v0.3.0 是第一个发布这个安装包的版本,它的验收证据只覆盖 x86_64 上的 WSL2 和测试所用的 Ubuntu 24.04 发行版。WSL2 一致性审计的最后一节(「修复验收记录 — 2026-09-07」)列出以下尚未验证的范围:

原生 Windows 不受支持,而且程序会直接拒绝在那里启动内核,不是「先警告再照跑」——内核要拉起 POSIX 子进程,R 通道靠 shell 重定向走文件描述符 3 和 4,沙箱也没有 Windows 后端。WSL2 报告自己是 Linux,所以这个包跑的就是其他平台跑的同一个构建。如果你还没有 WSL2,启动器会停下来并给出那条确切的命令(管理员 PowerShell 里的 wsl --install)。详见:平台支持矩阵。

🐳 Docker 与 Kubernetes

docker compose up -d --build          # http://127.0.0.1:8760/
docker compose exec openai4s openai4s url   # 带令牌、可直接打开的 URL

镜像由本仓库构建——Debian-slim 上的 CPython、wheel,以及 science extra——以非特权用户运行,只有一个挂在 /data 的卷。模型 key 用 OPENAI4S_SECRET_LLM_LLM_API_KEY 传入(在集群里就是一个 Secret);镜像从环境读取凭据,不会把任何凭据形状的东西写到卷上。上集群则是 kubectl apply -f deploy/kubernetes.yaml:一个单副本 Deployment、一个 ReadWriteOnce 声明、一个 ClusterIP Service,探针打在 /health 上。

发布版镜像由 publish-image.yml 推送到 GitHub Packages,名为 ghcr.io/pku-yuangroup/openai4s:<version> 与 :latest(linux/amd64,自 0.2.0 起);只有通过与每个 PR 相同的 container_smoke.sh 冒烟的镜像才会被推送。如果 docker pull ghcr.io/pku-yuangroup/openai4s:latest 要求你登录,请照上面的方式从检出的源码自行构建。公开它之前有两件事值得知道。在容器内绑定 0.0.0.0 会让访问令牌变成强制、同时关掉防 DNS 重绑定的 Host 白名单,于是挡在那些会执行代码的端点前面的就只剩令牌——这也是为什么 compose 只发布到 loopback、Service 只用 ClusterIP。另外,非特权容器无法给 bubblewrap 它所需要的命名空间,因此内核沙箱会可见地降级、由容器充当边界;那是一道更粗的边界,容器指南 写清楚了它不再覆盖什么。

🧩 把 Skills 带去任何地方(npx)

内置的 604 个 Skill 是配方——文字、代码,以及跑通它们所需的操作知识——其中没有任何东西是 OpenAI4S 专属的。npm 发布版 @pku-yuangroup/openai4s-skills@0.2.0 包含 603 个 Skill:42 个精选 + 561 个固定版本 bioSkills。以下命令固定安装该发布版本:

npx @pku-yuangroup/openai4s-skills@0.2.0 install --all                  # v0.2.0:42 个精选 Skill
npx @pku-yuangroup/openai4s-skills@0.2.0 install --collection bioskills # v0.2.0:561 个固定版生信配方
npx @pku-yuangroup/openai4s-skills@0.2.0 install alphafold2 boltz --target claude
npx @pku-yuangroup/openai4s-skills@0.2.0 list
npx @pku-yuangroup/openai4s-skills@0.2.0 uninstall --all

npx @pku-yuangroup/openai4s-skills <command> 使用 npm 上的最新发布版。若要使用当前仓库目录(604 个 Skill:43 个精选 + 561 个 bioSkills),可直接从 GitHub 运行;这种写法跟随默认分支:

npx github:PKU-YuanGroup/OpenAI4S install --all                  # 43 个精选 Skill
npx github:PKU-YuanGroup/OpenAI4S install --collection bioskills # 561 个固定版生信配方

两种来源使用相同的目标目录与覆盖规则。--target claude 写入 ~/.claude/skills,--target openai4s 写入 <data_dir>/user-skills,--dir <path> 则写入你指定的任意位置;在往目标写任何东西之前,解析出的绝对路径都会先打印出来,而 --dry-run 到此为止、不再写入。每个已安装文件的 SHA-256 都会记进 Skills 旁边的清单,因此重装会拒绝覆盖你改过的、或不是它自己装的 Skill,卸载也只删它自己写下的文件。skills/ 下每个精选 Skill 页面和集合根目录页面都带一节安装,命令里已经填好它自己的名字,所以你跳到哪一页,就可以在哪一页直接装。

如果你本来就在用本检出源码运行 OpenAI4S,那 604 个你已经全有了——同名时自带 Skill 优先于数据目录里的那个。这条命令是为反方向准备的。


📚 文档

中英双语的标准公开文档发布在 openai4s.org/docs。文档源码与 issue 追踪位于 Nobody-Zhang/openai4s-docs;下表链接指向与源码仓库同步保留的代码就近文档。

文档 内容
上手指南 macOS 全流程:从 PyPI 安装(v0.3.0 不发布 .dmg)或使用 v0.2.0 预览镜像、配置模型,以及用一个 Agent Plan Key 授权豆包搜索(Tavily/免密钥备用)
从 0.2.x 升级 在 schema 27 → 32 迁移之前备份数据库、为什么不支持退回 0.2.x,以及现在总是必需的访问令牌
架构 混合动作路由、Action Ledger、host RPC 与惰性内核
后端扩展指南 新 Tool、Host service、repository 与 session 行为应归属的位置
模型后端 bring-up 本地/远程 GPU 选择、checkpoint staging、真实推理 canary 准入与 connector 可移植性
Skills 43 个精选 Skill + 561 个固定版本 bioSkills + 如何自撰
远程计算 BYOC GPU 作业、host.fold、自动预置
科学连接器 七个公共数据库、各自的过滤条件与检索溯源
Web 应用 UI 功能、Action Timeline、只读 Notebook、Artifact 与实现状态
Web 共享 只读会话共享、信任模型,以及如何运行自己的 relay
Jupyter 适配器 可选的独立 Python/R KernelSpec、安装命令与兼容边界
配置 模型供应商、环境变量、conda 环境、CLI
Docker / Kubernetes 镜像、compose.yaml、集群清单,以及通配绑定究竟改变了什么
平台支持 各操作系统的支持等级,以及原生 Windows 为何拒绝启动内核
Windows / WSL2 Ubuntu 24.04 安装、沙箱自检、生命周期命令、国内镜像与 localhost 代理说明
安全 纵深防御安全层与远程访问说明

🗺️ 路线图

已交付

下一步


💡 如何贡献

OpenAI4S 是一个让 Code-as-Action 范式保持开源的社区项目。

提 PR 前请先阅读 .github/CONTRIBUTING.md —— 它定义了分支命名、PR 检查清单(.github/pull_request_template.md)、代码所有权(.github/CODEOWNERS)、评审与发布政策,以及离线测试政策。

开发环境配置

需要 Python ≥ 3.10 与 uv。

git clone https://github.com/PKU-YuanGroup/OpenAI4S && cd OpenAI4S
./setup.sh                          # uv sync --locked --extra science + pre-commit hook
./setup.sh --with-kernel-envs       # 可选:完整 Python + R 内核环境
uv run pytest                       # 离线测试套件(LLM 被 mock)
uv run pre-commit run --all-files   # 全量格式化 + lint

代码风格由 pre-commit 强制执行 —— black、isort(--profile black)、ruff(版本锁定在 .pre-commit-config.yaml)。运行时依赖:核心零依赖(纯标准库);可选 science extra 锁定 numpy>=1.24 · pandas>=2.0 · matplotlib>=3.7。

欢迎的贡献

请保持核心零依赖,把可选科学库导入包在 try/except ImportError 里,并在提 PR 前确保 uv run pytest 与 uv run pre-commit run --all-files 通过。


👍 致谢与相关工作


🔒 许可证

以 MIT License 发布 —— 见 LICENSE。


🤝 社区贡献者

Nobody-Zhang wangyu-sd HowardLi1984 Linmj-Judy YuyangSunshine Lyu6PosHao Devin-jun Grace-xyx WenyuLiang ClarenceYC cursoragent yusowa0716 riiiiiiin jiangzx25 stau-7001 EQSTLab difficulttopickaname

由 scripts/update_contributors.py 每日根据 GitHub 贡献者图谱与维护中的公开署名名单自动生成。


OpenAI4S · 代码即行动,内核即环境。 · English · 友情链接 https://linux.do