Simplify workspace mounting with SANDBOX_VOLUMES (#8242)

This commit is contained in:
Xingyao Wang
2025-05-07 12:15:52 +08:00
committed by GitHub
parent e8bd59ec22
commit 2f4b70159e
189 changed files with 7417 additions and 4807 deletions

View File

@@ -1,43 +1,44 @@
# ヘッドレスモード
OpenHandsは、Webアプリケーションを起動せずに単一のコマンドで実行できます。
これにより、OpenHandsを使用してスクリプトを作成したり、タスクを自動化したりするのが簡単になります。
OpenHandsは、Webアプリケーションを起動せずに単一のコマンドで実行できます。
これにより、スクリプトを作成してOpenHandsでタスクを自動化することが容易になります。
これは、インタラクティブで、アクティブな開発に適し[CLIモード](cli-mode)とは異なります。
これは対話型で、アクティブな開発に適している[CLIモード](cli-mode)とは異なります。
## Pythonを使用する場合
## Pythonでの実行
PythonでOpenHandsをヘッドレスモードで実行するには:
1. [開発セットアップ手順](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)に従っていることを確認してください。
2. 以下のコマンドを実行します:
PythonでヘッドレスモードでOpenHandsを実行するには
1. [開発セットアップ手順](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)に従っていることを確認してください。
2. のコマンドを実行します
```bash
poetry run python -m openhands.core.main -t "write a bash script that prints hi"
```
モデル、APIキー、その他の設定は、環境変数[または`config.toml`ファイル](https://github.com/All-Hands-AI/OpenHands/blob/main/config.template.toml)を介して設定する必要があります
環境変数または[`config.toml`ファイル](https://github.com/All-Hands-AI/OpenHands/blob/main/config.template.toml)を通じて、モデル、APIキー、その他の設定を必ず設定してください
## Dockerを使用する場合
## Dockerでの実行
DockerでOpenHandsをヘッドレスモードで実行するには:
DockerでヘッドレスモードでOpenHandsを実行するには
1. ターミナルで以下の環境変数を設定します:
1. ターミナルでの環境変数を設定します
- `WORKSPACE_BASE`OpenHandsが編集するディレクトリに設定 (例: `export WORKSPACE_BASE=$(pwd)/workspace`)
- `LLM_MODEL`を使用するモデルに設定 (例: `export LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"`)
- `LLM_API_KEY`をAPIキーに設定 (例: `export LLM_API_KEY="sk_test_12345"`)
- `SANDBOX_VOLUMES`OpenHandsがアクセスするディレクトリを指定します(例:`export SANDBOX_VOLUMES=$(pwd)/workspace:/workspace:rw`
- エージェントはデフォルトで`/workspace`で作業するため、エージェントにファイルを変更させたい場合はプロジェクトディレクトリをそこにマウントします
- 読み取り専用データの場合は、異なるマウントパスを使用します(例:`export SANDBOX_VOLUMES=$(pwd)/workspace:/workspace:rw,/path/to/large/dataset:/data:ro`
- `LLM_MODEL`に使用するモデルを設定します(例:`export LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"`)。
- `LLM_API_KEY`にAPIキーを設定します`export LLM_API_KEY="sk_test_12345"`)。
2. 以下のDockerコマンドを実行します:
2. のDockerコマンドを実行します
```bash
docker run -it \
--pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.36-nikolaik \
-e SANDBOX_USER_ID=$(id -u) \
-e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
-e SANDBOX_VOLUMES=$SANDBOX_VOLUMES \
-e LLM_API_KEY=$LLM_API_KEY \
-e LLM_MODEL=$LLM_MODEL \
-e LOG_ALL_EVENTS=true \
-v $WORKSPACE_BASE:/opt/workspace_base \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
--add-host host.docker.internal:host-gateway \
@@ -46,10 +47,12 @@ docker run -it \
python -m openhands.core.main -t "write a bash script that prints hi"
```
`-e SANDBOX_USER_ID=$(id -u)`はDockerコマンドに渡され、サンドボックスユーザーがホストユーザーの権限と一致するようにします。これにより、エージェントがマウントされたワークスペースにroot所有のファイルを作成するのを防ぎます。
## 高度なヘッドレス設定
ヘッドレスモードで利用可能なすべての設定オプションを表示するには、`--help`フラグを付けてPythonコマンドを実行します。
ヘッドレスモードで利用可能なすべての設定オプションを表示するには、Pythonコマンドに`--help`フラグを付けて実行します。
### 追加ログ
### 追加ログ
ヘッドレスモードでエージェントのすべてのアクションをログに記録するには、ターミナルで`export LOG_ALL_EVENTS=true`を実行します。
ヘッドレスモードですべてのエージェントアクションをログに記録するには、ターミナルで次のコマンドを実行します:`export LOG_ALL_EVENTS=true`