Mode Headless
Vous pouvez exécuter OpenHands avec une seule commande, sans démarrer l'application web. Cela facilite l'écriture de scripts et l'automatisation des tâches avec OpenHands.
C'est différent du Mode CLI, qui est interactif et plus adapté au développement actif.
Avec Python
Pour exécuter OpenHands en mode headless avec Python :
- Assurez-vous d'avoir suivi les instructions de configuration pour le développement.
- Exécutez la commande suivante :
poetry run python -m openhands.core.main -t "write a bash script that prints hi"
Vous devrez vous assurer de définir votre modèle, clé API et autres paramètres via des variables d'environnement
ou le fichier config.toml
.
Avec Docker
Pour exécuter OpenHands en mode Headless avec Docker :
- Définissez les variables d'environnement suivantes dans votre terminal :
SANDBOX_VOLUMES
pour spécifier le répertoire auquel OpenHands doit accéder (Ex :export SANDBOX_VOLUMES=$(pwd)/workspace:/workspace:rw
).- L'agent travaille dans
/workspace
par défaut, donc montez votre répertoire de projet à cet emplacement si vous souhaitez que l'agent modifie des fichiers. - Pour les données en lecture seule, utilisez un chemin de montage différent (Ex :
export SANDBOX_VOLUMES=$(pwd)/workspace:/workspace:rw,/path/to/large/dataset:/data:ro
).
- L'agent travaille dans
LLM_MODEL
pour le modèle à utiliser (Ex :export LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"
).LLM_API_KEY
pour la clé API (Ex :export LLM_API_KEY="sk_test_12345"
).
- Exécutez la commande Docker suivante :
docker run -it \
--pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik \
-e SANDBOX_USER_ID=$(id -u) \
-e SANDBOX_VOLUMES=$SANDBOX_VOLUMES \
-e LLM_API_KEY=$LLM_API_KEY \
-e LLM_MODEL=$LLM_MODEL \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
--add-host host.docker.internal:host-gateway \
--name openhands-app-$(date +%Y%m%d%H%M%S) \
docker.all-hands.dev/all-hands-ai/openhands:0.39 \
python -m openhands.core.main -t "write a bash script that prints hi"
Le paramètre -e SANDBOX_USER_ID=$(id -u)
est transmis à la commande Docker pour s'assurer que l'utilisateur du sandbox correspond aux permissions de l'utilisateur hôte. Cela empêche l'agent de créer des fichiers appartenant à root dans l'espace de travail monté.
Configurations avancées du mode Headless
Pour voir toutes les options de configuration disponibles pour le mode headless, exécutez la commande Python avec l'option --help
.
Journaux supplémentaires
Pour que le mode headless enregistre toutes les actions de l'agent, exécutez dans le terminal : export LOG_ALL_EVENTS=true