Sandbox personnalisé
Ce guide est destiné aux utilisateurs qui souhaitent utiliser leur propre image Docker personnalisée pour l'environnement d'exécution. Par exemple, avec certains outils ou langages de programmation préinstallés.
Le sandbox est l'endroit où l'agent effectue ses tâches. Au lieu d'exécuter des commandes directement sur votre ordinateur (ce qui pourrait être risqué), l'agent les exécute à l'intérieur d'un conteneur Docker.
Le sandbox OpenHands par défaut (python-nodejs:python3.12-nodejs22
de nikolaik/python-nodejs) est livré avec certains packages installés comme python et Node.js, mais peut nécessiter d'autres logiciels installés par défaut.
Vous avez deux options pour la personnalisation :
- Utiliser une image existante avec les logiciels requis.
- Créer votre propre image Docker personnalisée.
Si vous choisissez la première option, vous pouvez ignorer la section Créer votre image Docker
.
Créer votre image Docker
Pour créer une image Docker personnalisée, elle doit être basée sur Debian.
Par exemple, si vous voulez qu'OpenHands ait ruby
installé, vous pourriez créer un Dockerfile
avec le contenu suivant :
FROM nikolaik/python-nodejs:python3.12-nodejs22
# Install required packages
RUN apt-get update && apt-get install -y ruby
Ou vous pourriez utiliser une image de base spécifique à Ruby :
FROM ruby:latest
Enregistrez ce fichier dans un dossier. Ensuite, construisez votre image Docker (par exemple, nommée custom-image) en naviguant vers le dossier dans le terminal et en exécutant :
docker build -t custom-image .
Cela produira une nouvelle image appelée custom-image
, qui sera disponible dans Docker.
Utilisation de la commande Docker
Lorsque vous exécutez OpenHands en utilisant la commande docker, remplacez -e SANDBOX_RUNTIME_CONTAINER_IMAGE=...
par -e SANDBOX_BASE_CONTAINER_IMAGE=<nom de l'image personnalisée>
:
docker run -it --rm --pull=always \
-e SANDBOX_BASE_CONTAINER_IMAGE=custom-image \
...
Utilisation du flux de travail de développement
Configuration
Tout d'abord, assurez-vous de pouvoir exécuter OpenHands en suivant les instructions dans Development.md.
Spécifier l'image de base du Sandbox
Dans le fichier config.toml
du répertoire OpenHands, définissez base_container_image
sur l'image que vous souhaitez utiliser. Il peut s'agir d'une image que vous avez déjà téléchargée ou que vous avez construite :
[core]
...
[sandbox]
base_container_image="custom-image"
Options de configuration supplémentaires
Le fichier config.toml
prend en charge plusieurs autres options pour personnaliser votre sandbox :
[core]
# Install additional dependencies when the runtime is built
# Can contain any valid shell commands
# If you need the path to the Python interpreter in any of these commands, you can use the $OH_INTERPRETER_PATH variable
runtime_extra_deps = """
pip install numpy pandas
apt-get update && apt-get install -y ffmpeg
"""
# Set environment variables for the runtime
# Useful for configuration that needs to be available at runtime
runtime_startup_env_vars = { DATABASE_URL = "postgresql://user:pass@localhost/db" }
# Specify platform for multi-architecture builds (e.g., "linux/amd64" or "linux/arm64")
platform = "linux/amd64"
Exécution
Exécutez OpenHands en lançant make run
dans le répertoire principal.