PKU-YuanGroup/OpenAI4S

GitHub: PKU-YuanGroup/OpenAI4S

开源的 Code-as-Action 科学研究 Agent,通过持久化 Python/R 内核和 JSON 编排引擎,以低成本复现 Claude Science 的科学研究自动化能力。

Stars: 91 | Forks: 11

OpenAI4S · Open AI for Scientist ### 面向科学家的开放 AI ## 💸 两次切割或更少步数内复现 Claude Science **一个开源的混合科学研究 agent。**
JSON 工具负责编排;持久化的 Python/R 内核执行科学计算。

License: MIT Python Core deps Paradigm Tests

Stars Forks Issues PRs Welcome

**English** · [简体中文](README_zh.md)
Volcengine Ark · Agent Plan — Small tier at ¥9.9/month
Volcengine Ark · Agent Plan (Personal) — the entry Small tier is ¥9.9 / month.
## 🧬 JSON 编排,Code-as-Action 科学计算 OpenAI4S 刻意采用了两个动作平面。提供商原生的 **JSON 工具调用**负责处理确定性的编排、权限、元数据、外部服务以及人工审批。**Python/R Code-as-Action** 负责在持久化的内核中处理计算、探索、分析、模拟以及长时间运行的科学任务。Python cells 在运行时可以同步调用内核内的 `host` API;而 R 则是一个独立的持久化分析通道。 这不是在工具和代码之间做单选题:两者各司其职。纯工具和对话类工作可以通过引擎拥有的、结构严格的 `finalize_response` 动作来完成。科学计算 cells 保留了重要的 `host.submit_output(...)` 完成契约,包括结构化的产出物和指标。`host.submit_output` 是唯一可以在 Cell *内部* 触发的完成信号;在之前的 Cells 运行完毕后,后续单独的 `finalize_response` 仍然可以关闭 Engine。
JSON 控制平面Python/R 科学计算平面
最适用场景工作流、权限、元数据、服务计算、分析、模拟
动作单元一个有序的原生工具批次一个完整的代码 cell
组合可审计的 schema 和资源策略forif、第三方库、cell 内的 Host RPC
状态只追加的 Action Ledger内核内存 + 版本化的产出物
完成方式引擎拥有的 finalize_responsehost.submit_output(...)
扩展命名的 Tool 子类导入第三方库或加载 Skill
``` # ReAct:~14 次往返(read → … → filter → sort → plot)。 OpenAI4S:一个 code 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] # a 100k-row DataFrame stays in the kernel... host.save_artifact(plot(frames)) # ...only "" hits context ```
## 📣 新闻 - **`2026-07-06`** 🎉 **正式开源** — 包含纯标准库实现的 Code-as-Action 引擎、科学 Web 应用、24 个科学 Skills 以及 BYOC 远程计算功能。 ## 😮 亮点 - **🧬 混合动作引擎** — 基于类的原生 JSON 工具负责编排,而持久化的 Python/R 内核负责执行科学计算。CLI 和 Web 适配器会延迟启动语言环境,因此仅涉及工具/finalize 的运行不会生成内核。 - **📒 Ledger 优先的运行时** — 动作组/事件和终端事实均为只追加;执行尝试、生成生命周期、使用量和完成记录均可持久化且可重构。 - **🐍 纯标准库核心** — 引擎**和** Web 服务器均仅使用标准库(`http.server` + 手工编写的 WebSocket,无框架,无额外依赖项)。LLM 客户端完全通过 `urllib` 与 OpenAI / Anthropic / Gemini 通信。 - **🔌 一行代码多提供商支持** — `ark`(doubao · glm · kimi · deepseek · minimax)以及官方的 `chatgpt · claude · gemini`,统一由单个 `host.llm` 提供支持;可在 UI 中切换。 - **🖥️ 科学工作台** — 实时流媒体传输、版本化产出物、溯源信息、Action Timeline 表面,以及一个**默认只读的 Notebook**。通过显式的开发者标志,可以针对共享内核启用多行 Python/R 输入。 - **🔐 强化的本地执行** — 严格的子环境允许列表、持久化的审批机制、一次性的受生成周期限制的 `host.bash` 功能,以及 OS 沙箱适配器(macOS 上使用 Seatbelt,Linux 上使用 bubblewrap),并带有可见的降级/故障关闭模式。 - **🔬 内置 24 个 Skills** — 14 个 GPU/模型科学 Skills(AlphaFold2 · ESMFold2 · Boltz · Chai-1 · OpenFold3 · ProteinMPNN · ESM-2 · Evo2 · Borzoi · scGPT · scVI · DiffDock …)+ 研究工作流 Skills。Skills 是**代码的配方**,而不是 JSON schema;用户自编写的 Skills 仅保留在数据目录下,无法覆盖内置的信任机制。 - **☁️ BYOC 远程计算** — 通过 `ssh:` 或内置的 **NVIDIA NIM** 提供商将 GPU 任务分发到你自己的机器上;在严格的禁止伪造策略下提供真实的 `host.fold`(单序列 Protenix / AF3 级别)。 ## 🎬 演示
Live API workflow — from UniProt / RCSB to a 3D structure & report
Live API workflow: from UniProt / RCSB to a 3D structure and report
Real-data analysis — human insulin INS (P01308): from UniProt / RCSB to a reproducible report
Real-data analysis: human insulin INS / UniProt P01308 from UniProt / RCSB to a reproducible report
Visual artifact editing — “raise the confidence cutoff to 75” in one line
Visual artifact editing: raise the confidence cutoff to 75 in one line
Annotation-driven chart editing — lasso a region & recolor the legend
Annotation-driven chart editing: lasso a region and recolor the legend
Plan-mode research — artemisinin & paclitaxel solubility prediction
Plan-mode research: artemisinin and paclitaxel solubility prediction
Protein engineering — from sequence to ranked mutants & structural rationale
Protein engineering: from sequence to ranked mutants and structural rationale
## ⚡ 快速开始 ``` git clone https://github.com/PKU-YuanGroup/OpenAI4S && cd OpenAI4S ./setup.sh # one-time: build the environment with uv ./start.sh # launch the web UI at http://127.0.0.1:8760/ ``` `setup.sh` 会使用 **uv** 创建 `.venv`;`start.sh` 会从中启动 daemon + 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`。 ## 📚 文档 | 文档 | 内容 | |---|---| | [**架构**](docs/architecture.md) | 混合动作路由器、Action Ledger、`host` RPC 和惰性内核 | | [**后端扩展指南**](docs/backend-extension-guide.md) | 新的 Tool 类、host 服务、仓库和 session 行为应放置的位置 | | [**Skills**](docs/skills.md) | 24 个内置 Skills + 如何编写自己的 Skill | | [**远程计算**](docs/compute.md) | BYOC GPU 任务、`host.fold`、自动配置 | | [**Web 应用**](docs/webapp.md) | UI 功能、Action Timeline、只读 Notebook、产出物及实现状态 | | [**Jupyter 适配器**](docs/jupyter.md) | 可选的独立 Python/R KernelSpecs、安装命令及兼容性限制 | | [**配置**](docs/configuration.md) | 模型提供商、环境变量、conda 环境、CLI | | [**安全性**](docs/security.md) | 纵深防御安全层及远程访问注意事项 | ## 🗺️ 路线图 - [x] 发布下一代工作台基础:分支激活和只追加的 Revert/Undo 投影、带有显式 Partial/Failed 状态的验证恢复、依赖级别的陈旧状态传播、持久化委托、隔离的可移植 Session 包、检查点化的计划/审查/记忆状态,以及专用的 2D 化学/基因组/序列/MSA/LaTeX 渲染器。任意内存中的命名空间对象被刻意不进行序列化;除非有安全的配方可以重建并验证它们,否则恢复状态将保持为 Partial。 - [ ] 在可能的情况下,在 bubblewrap 之外添加更强的 Linux 隔离(例如 seccomp),并扩大打包沙箱的冒烟测试覆盖范围。 - [ ] 超越 DuckDuckGo 的无密钥 `web_search`(提高速率限制恢复能力)。 - [ ] 除了 SSH + NVIDIA NIM 之外,提供更多的 BYOC 提供商(Modal / SLURM)。 - [ ] 端到端科学工作流的公共基准测试。 - [ ] 本地 GPU 模型服务,使结构/设计相关的 Skills 无需远程计算即可运行。 ## 👍 致谢与相关工作 - **Claude Science** (Anthropic) — 作为一个闭源的参考架构,OpenAI4S 在开源层面上独立复现了其 Code-as-Action 设计、持久化内核、host-RPC 协议和安全层。 - **CodeAct** — *"Executable Code Actions Elicit Better LLM Agents"* — 将代码作为一种统一的动作接口。 - **ReAct** — *"Synergizing Reasoning and Acting in Language Models"* — 本项目扬弃的 `tool_use` 基准。 - 科学 Skills 站在 **ColabFold / AlphaFold, ESM, OpenFold, Boltz, Chai, ProteinMPNN, DiffDock, Evo2, Borzoi, scGPT, scVI-tools** 以及开放数据服务(NCBI、UniProt、RCSB PDB、EBI、OpenAlex、Crossref)的肩膀上。 ## 🔒 许可证 基于 **MIT License** 发布 — 见 [`LICENSE`](LICENSE)。 ## ✏️ 引用 ``` @software{openai4s2026, title = {OpenAI4S: An Open-Source Code-as-Action Scientific Research Agent}, author = {OpenAI4S contributors}, year = {2026}, url = {https://github.com/PKU-YuanGroup/OpenAI4S}, note = {Open AI for Scientist — a pure-stdlib reproduction of the Code-as-Action paradigm} } ```
标签:AI工作流编排, AI智能体, Python, 大语言模型API, 无后门, 科学研究, 豆包API, 逆向工具