环境与依赖
当你打开一个项目后,OOMOL Studio 会在后台启动一个 Linux 容器。你的项目会运行在这个容器里,与宿主机环境隔离。
每个项目都有自己独立的环境,因此不同项目之间的代码和依赖不会相互影响,也不会污染你电脑本身的运行环境。
当你删除项目后,对应容器也会被移除,而你的电脑和其他项目不会受到影响。
容器环境
新建项目时创建的容器是一个最小化环境。为了保证启动速度,容器里默认只安装必要软件。因此如果你需要某些系统命令或工具(例如 netcat),就需要自行在容器中安装。
容器在第一次加载时会运行 package.oo.yaml 中的 script.bootstrap 属性下的脚本:

你可以在这个脚本里添加需要安装的系统依赖。这个脚本本身使用 shell 编写。
默认的脚本用于安装 Node.js 和 Python 代码的依赖,请不要删除,否则会导致代码无法运行。
在编写完启动脚本后,你可以在底部面板的项目初始化栏中找到重新执行初始化脚本的按钮。点击后会再次运行 package.oo.yaml 中 script.bootstrap 下的脚本:

你编写的初始化脚本也会随着包一起被分发。其他人在使用你的项目时,也会执行同样的脚本来完成环境准备。
初始化脚本成功执行后,就说明项目环境已经准备好,可以开始编写工作流了。
代码依赖
编写代码时,通常会依赖第三方库。你可以通过下面几种方式引入这些依赖:
Studio 内置的 Fusion SDK
oomol-fusion-sdk 默认已经集成在 OOMOL Studio 里。
这意味着如果你是在 Studio 里编写 Scriptlet Block 或 Task Block,通常可以直接使用 Fusion SDK,而不必先手动安装。
这也是更推荐的使用方式,尤其是在下面这些场景里:
- 你要调用的是已经通过 OOMOL Fusion 暴露出来的第三方能力
- 你想把这些调用封装成可复用 block
- 你希望认证直接走 OOMOL 的运行时 token 流程
只有在不通过 Studio 运行,或者你在自己的应用里需要显式管理 SDK 版本时,才更适合把它当作普通依赖手动安装。
相关文档:
代码依赖管理
在底部面板的代码依赖管理栏中,可以搜索对应语言的依赖并安装。

使用这种方式安装的依赖,会自动把版本信息记录到项目文件中。
Python 依赖会记录在 poetry.toml 下:

Node.js 依赖会记录在 package.json 下:

由于这个搜索界面只能安装最新版本,如果你想安装历史版本,请改用终端命令。
在终端中安装依赖
在终端里直接安装依赖时,可以明确指定要安装的版本。
Python 语言依赖可以使用 Poetry 命令进行安装:

Node.js 语言依赖可以使用 Npm 命令进行安装:

OOMOL Studio 并没有限制用户一定要使用文档中描述的依赖管理软件,文档描述的是 OOMOL Studio 的默认实现。
用户可以自行选择依赖管理软件,但注意一定要实现版本管理机制,否则无法保证用户在下载包时安装的依赖与开发者安装的版本相同,可能会导致工作流无法正常运行。
由于每个项目都是一个容器,你在项目中安装的代码依赖可以在项目内所有地方引用。