Aller directement au contenu principal

Sandbox personnalisé

remarque

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.