メインコンテンツに直接移動

カスタムサンドボックス

サンドボックスは、エージェントがタスクを実行する場所です。コンピュータ上で直接コマンドを実行する(これはリスクがある可能性があります)代わりに、エージェントはDockerコンテナ内でそれらを実行します。

デフォルトのOpenHandsサンドボックス(nikolaik/python-nodejspython-nodejs:python3.12-nodejs22)にはPythonやNode.jsなどのパッケージがインストールされていますが、デフォルトでインストールする必要のある他のソフトウェアがある場合があります。

カスタマイズには2つのオプションがあります:

  • 必要なソフトウェアがインストールされている既存のイメージを使用する。
  • 独自のカスタムDockerイメージを作成する。

最初のオプションを選択した場合は、Dockerイメージの作成セクションをスキップできます。

Dockerイメージの作成

カスタムDockerイメージを作成するには、Debianベースである必要があります。

たとえば、OpenHandsにrubyをインストールしたい場合は、次の内容でDockerfileを作成できます:

FROM nikolaik/python-nodejs:python3.12-nodejs22

# 必要なパッケージをインストール
RUN apt-get update && apt-get install -y ruby

または、Ruby固有のベースイメージを使用することもできます:

FROM ruby:latest

このファイルをフォルダに保存します。次に、ターミナルでフォルダに移動し、次のコマンドを実行して、Dockerイメージ(たとえば、custom-imageという名前)をビルドします:

docker build -t custom-image .

これにより、custom-imageという新しいイメージが作成され、Dockerで利用できるようになります。

Dockerコマンドの使用

dockerコマンドを使用してOpenHandsを実行する場合は、-e SANDBOX_RUNTIME_CONTAINER_IMAGE=...-e SANDBOX_BASE_CONTAINER_IMAGE=<カスタムイメージ名>に置き換えます:

docker run -it --rm --pull=always \
-e SANDBOX_BASE_CONTAINER_IMAGE=custom-image \
...

開発ワークフローの使用

セットアップ

まず、Development.mdの手順に従って、OpenHandsを実行できることを確認してください。

ベースサンドボックスイメージの指定

OpenHandsディレクトリ内のconfig.tomlファイルで、base_container_imageを使用するイメージに設定します。これは、すでにプルしたイメージまたは構築したイメージにすることができます:

[core]
...
[sandbox]
base_container_image="custom-image"

その他の設定オプション

config.tomlファイルは、サンドボックスをカスタマイズするためのいくつかの他のオプションをサポートしています:

[core]
# ランタイムのビルド時に追加の依存関係をインストールする
# 有効なシェルコマンドを含めることができる
# これらのコマンドのいずれかでPythonインタープリターへのパスが必要な場合は、$OH_INTERPRETER_PATH変数を使用できる
runtime_extra_deps = """
pip install numpy pandas
apt-get update && apt-get install -y ffmpeg
"""

# ランタイムの環境変数を設定する
# ランタイムで使用可能である必要がある設定に役立つ
runtime_startup_env_vars = { DATABASE_URL = "postgresql://user:pass@localhost/db" }

# マルチアーキテクチャビルドのプラットフォームを指定する(例: "linux/amd64"または"linux/arm64")
platform = "linux/amd64"

実行

トップレベルのディレクトリでmake runを実行して、OpenHandsを実行します。