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

カスタムサンドボックス

メモ

このガイドは、ランタイム用に独自のカスタムDockerイメージを使用したいユーザー向けです。例えば、 特定のツールやプログラミング言語があらかじめインストールされているものなどです。

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

デフォルトのOpenHandsサンドボックス(nikolaik/python-nodejsから python-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を起動します。