Skip to content

Simplify workspace mounting with SANDBOX_VOLUMES #8242

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 22 commits into from
May 7, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
9367e3d
Simplify workspace mounting with RUNTIME_MOUNT environment variable
openhands-agent May 3, 2025
7bdb4e8
Add support for multiple mount paths with RUNTIME_MOUNT and CUSTOM_VO…
openhands-agent May 3, 2025
eb2f4a7
Fix mypy type error in Docker runtime
openhands-agent May 3, 2025
c4a347b
Remove RUNTIME_MOUNT and update tests to use CUSTOM_VOLUMES
openhands-agent May 3, 2025
c77fa8e
Fix linting issues in test_docker_runtime.py
openhands-agent May 3, 2025
25ef7d8
Update tests and documentation to use CUSTOM_VOLUMES instead of depre…
openhands-agent May 4, 2025
f4506b8
🤖 Auto-fix Python linting issues
openhands-agent May 5, 2025
06bc45b
Refactor Docker runtime volume processing and update tests to call ac…
openhands-agent May 5, 2025
652e9b9
🤖 Auto-fix Python linting issues
openhands-agent May 5, 2025
1afb038
Merge branch 'main' into openhands/multiple-mount-paths
enyst May 5, 2025
70ca48c
Move custom_volumes to SandboxConfig and rename to volumes, update al…
openhands-agent May 5, 2025
7aae2e0
Merge branch 'main' into openhands/multiple-mount-paths
xingyaoww May 5, 2025
4757ef5
docs: improve documentation about /workspace path and read-only data …
openhands-agent May 5, 2025
2458616
Update tests/unit/test_config.py
xingyaoww May 5, 2025
bca19f4
Merge branch 'main' into openhands/multiple-mount-paths
xingyaoww May 5, 2025
da5ee15
🤖 Auto-fix Python linting issues
openhands-agent May 5, 2025
b8fcae4
Merge branch 'main' into openhands/multiple-mount-paths
xingyaoww May 5, 2025
1777ca0
Mark workspace_* parameters as deprecated in configuration-options.md
openhands-agent May 6, 2025
636a69e
Update translations to mark workspace_* parameters as deprecated
openhands-agent May 6, 2025
76633c8
Update all translation files for configuration-options.md
openhands-agent May 6, 2025
6f3db69
remove update_translations.py
xingyaoww May 6, 2025
79c0e86
update a huge chunk of documentations results from docs/translation_u…
xingyaoww May 6, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,28 +1,25 @@


# À propos d'OpenHands

## Stratégie de recherche

La réplication complète d'applications de niveau production avec des LLM est une entreprise complexe. Notre stratégie implique :
Réaliser une réplication complète d'applications de qualité production avec des LLM est une entreprise complexe. Notre stratégie comprend :

1. **Recherche technique fondamentale :** Se concentrer sur la recherche fondamentale pour comprendre et améliorer les aspects techniques de la génération et de la gestion du code
2. **Capacités spécialisées :** Améliorer l'efficacité des composants de base grâce à la curation des données, aux méthodes d'entraînement, et plus encore
3. **Planification des tâches :** Développer des capacités pour la détection des bugs, la gestion des bases de code et l'optimisation
4. **Évaluation :** Établir des métriques d'évaluation complètes pour mieux comprendre et améliorer nos modèles
- **Recherche technique fondamentale :** Concentration sur la recherche fondamentale pour comprendre et améliorer les aspects techniques de la génération et de la gestion du code.
- **Planification des tâches :** Développement de capacités pour la détection de bugs, la gestion de base de code et l'optimisation.
- **Évaluation :** Établissement de métriques d'évaluation complètes pour mieux comprendre et améliorer nos agents.

## Agent par défaut

Notre Agent par défaut est actuellement le [CodeActAgent](agents), qui est capable de générer du code et de gérer des fichiers.

## Construit avec

OpenHands est construit en utilisant une combinaison de frameworks et de bibliothèques puissants, fournissant une base solide pour son développement. Voici les principales technologies utilisées dans le projet :
OpenHands est construit en utilisant une combinaison de frameworks et bibliothèques puissants, fournissant une base solide pour son développement. Voici les technologies clés utilisées dans le projet :

![FastAPI](https://img.shields.io/badge/FastAPI-black?style=for-the-badge) ![uvicorn](https://img.shields.io/badge/uvicorn-black?style=for-the-badge) ![LiteLLM](https://img.shields.io/badge/LiteLLM-black?style=for-the-badge) ![Docker](https://img.shields.io/badge/Docker-black?style=for-the-badge) ![Ruff](https://img.shields.io/badge/Ruff-black?style=for-the-badge) ![MyPy](https://img.shields.io/badge/MyPy-black?style=for-the-badge) ![LlamaIndex](https://img.shields.io/badge/LlamaIndex-black?style=for-the-badge) ![React](https://img.shields.io/badge/React-black?style=for-the-badge)

Veuillez noter que la sélection de ces technologies est en cours et que des technologies supplémentaires peuvent être ajoutées ou des technologies existantes peuvent être supprimées à mesure que le projet évolue. Nous nous efforçons d'adopter les outils les plus appropriés et les plus efficaces pour améliorer les capacités d'OpenHands.
Veuillez noter que la sélection de ces technologies est en cours, et des technologies supplémentaires peuvent être ajoutées ou des existantes peuvent être supprimées à mesure que le projet évolue. Nous nous efforçons d'adopter les outils les plus appropriés et efficaces pour améliorer les capacités d'OpenHands.

## Licence

Distribué sous la [Licence](https://github.com/All-Hands-AI/OpenHands/blob/main/LICENSE) MIT.
Distribué sous la [Licence](https://github.com/All-Hands-AI/OpenHands/blob/main/LICENSE) MIT.
Original file line number Diff line number Diff line change
@@ -1,25 +1,23 @@


# 🧠 Agent Principal et Capacités

## CodeActAgent

### Description

Cet agent implémente l'idée de CodeAct ([article](https://arxiv.org/abs/2402.01030), [tweet](https://twitter.com/xingyaow_/status/1754556835703751087)) qui consolide les **act**ions des agents LLM dans un espace d'action de **code** unifié à la fois pour la _simplicité_ et la _performance_.
Cet agent implémente l'idée CodeAct ([article](https://arxiv.org/abs/2402.01030), [tweet](https://twitter.com/xingyaow_/status/1754556835703751087)) qui consolide les **act**ions des agents LLM dans un espace d'action **code** unifié pour la _simplicité_ et la _performance_.

L'idée conceptuelle est illustrée ci-dessous. À chaque tour, l'agent peut :

1. **Converser** : Communiquer avec les humains en langage naturel pour demander des clarifications, des confirmations, etc.
2. **CodeAct** : Choisir d'effectuer la tâche en exécutant du code

- Exécuter n'importe quelle commande Linux `bash` valide
- Exécuter n'importe quel code `Python` valide avec [un interpréteur Python interactif](https://ipython.org/). Ceci est simulé via une commande `bash`, voir le système de plugin ci-dessous pour plus de détails.
- Exécuter n'importe quel code `Python` valide avec [un interpréteur Python interactif](https://ipython.org/). Ceci est simulé via la commande `bash`, voir le système de plugins ci-dessous pour plus de détails.

![image](https://github.com/All-Hands-AI/OpenHands/assets/38853559/92b622e3-72ad-4a61-8f41-8c040b6d5fb3)

### Démo

https://github.com/All-Hands-AI/OpenHands/assets/38853559/f592a192-e86c-4f48-ad31-d69282d5f6ac

_Exemple de CodeActAgent avec `gpt-4-turbo-2024-04-09` effectuant une tâche de science des données (régression linéaire)_.
_Exemple de CodeActAgent avec `gpt-4-turbo-2024-04-09` réalisant une tâche de science des données (régression linéaire)_.
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@


# 🏛️ Architecture du Système

<div style={{ textAlign: 'center' }}>
<img src="https://github.com/All-Hands-AI/OpenHands/assets/16201837/97d747e3-29d8-4ccb-8d34-6ad1adb17f38" alt="OpenHands System Architecture Diagram Jul 4 2024" />
<p><em>Diagramme de l'Architecture du Système OpenHands (4 juillet 2024)</em></p>
<img src="https://github.com/All-Hands-AI/OpenHands/assets/16201837/97d747e3-29d8-4ccb-8d34-6ad1adb17f38" alt="Diagramme d'Architecture OpenHands 4 juillet 2024" />
<p><em>Diagramme d'Architecture OpenHands (4 juillet 2024)</em></p>
</div>

Ceci est une vue d'ensemble de haut niveau de l'architecture du système. Le système est divisé en deux composants principaux : le frontend et le backend. Le frontend est responsable de la gestion des interactions utilisateur et de l'affichage des résultats. Le backend est responsable de la gestion de la logique métier et de l'exécution des agents.
Voici une vue d'ensemble de l'architecture du système. Le système est divisé en deux composants principaux : le frontend et le backend. Le frontend est responsable de la gestion des interactions utilisateur et de l'affichage des résultats. Le backend est responsable de la gestion de la logique métier et de l'exécution des agents.

# Architecture du Frontend {#frontend-architecture-fr}
# Architecture Frontend {#frontend-architecture-en}

![system_architecture.svg](/img/system_architecture.svg)

Cette vue d'ensemble est simplifiée pour montrer les principaux composants et leurs interactions. Pour une vue plus détaillée de l'architecture du backend, voir la section Architecture du Backend ci-dessous.
Cette vue d'ensemble est simplifiée pour montrer les composants principaux et leurs interactions. Pour une vue plus détaillée de l'architecture backend, consultez la section Architecture Backend ci-dessous.

# Architecture du Backend {#backend-architecture-fr}
# Architecture Backend {#backend-architecture-en}

_**Avertissement** : L'architecture du backend est en cours de développement et est sujette à changement. Le diagramme suivant montre l'architecture actuelle du backend basée sur le commit indiqué dans le pied de page du diagramme._
_**Avertissement** : L'architecture backend est en cours de développement et peut être modifiée. Le diagramme suivant montre l'architecture actuelle du backend basée sur le commit indiqué dans le pied de page du diagramme._

![backend_architecture.svg](/img/backend_architecture.svg)

<details>
<summary>Mise à jour de ce Diagramme</summary>
<summary>Mise à jour de ce diagramme</summary>
<div>
La génération du diagramme d'architecture du backend est partiellement automatisée.
Le diagramme est généré à partir des indications de type dans le code en utilisant l'outil py2puml. Le diagramme est ensuite manuellement revu, ajusté et exporté en PNG et SVG.
La génération du diagramme d'architecture backend est partiellement automatisée.
Le diagramme est généré à partir des annotations de type dans le code en utilisant l'outil
py2puml. Le diagramme est ensuite manuellement révisé, ajusté et exporté en PNG
et SVG.

## Prérequis

- Environnement python fonctionnel dans lequel openhands est exécutable
- Environnement Python opérationnel dans lequel openhands est exécutable
(selon les instructions du fichier README.md à la racine du dépôt)
- [py2puml](https://github.com/lucsorel/py2puml) installé

Expand All @@ -38,17 +38,17 @@ _**Avertissement** : L'architecture du backend est en cours de développement et
1. Générer automatiquement le diagramme en exécutant la commande suivante depuis la racine du dépôt :
`py2puml openhands openhands > docs/architecture/backend_architecture.puml`

2. Ouvrir le fichier généré dans un éditeur PlantUML, par ex. Visual Studio Code avec l'extension PlantUML ou [PlantText](https://www.planttext.com/)
2. Ouvrir le fichier généré dans un éditeur PlantUML, par exemple Visual Studio Code avec l'extension PlantUML ou [PlantText](https://www.planttext.com/)

3. Revoir le PUML généré et effectuer tous les ajustements nécessaires au diagramme (ajouter les parties manquantes, corriger les erreurs, améliorer le positionnement).
_py2puml crée le diagramme en se basant sur les indications de type dans le code, donc des indications manquantes ou incorrectes peuvent entraîner un diagramme incomplet ou incorrect._
3. Examiner le PUML généré et faire tous les ajustements nécessaires au diagramme (ajouter les parties manquantes, corriger les erreurs, améliorer le positionnement).
_py2puml crée le diagramme basé sur les annotations de type dans le code, donc des annotations manquantes ou incorrectes peuvent entraîner un diagramme incomplet ou incorrect._

4. Revoir la différence entre le nouveau diagramme et le précédent et vérifier manuellement si les changements sont corrects.
_S'assurer de ne pas supprimer des parties qui ont été ajoutées manuellement au diagramme par le passé et qui sont toujours pertinentes._
4. Examiner la différence entre le nouveau diagramme et le précédent et vérifier manuellement si les changements sont corrects.
_Assurez-vous de ne pas supprimer des parties qui ont été ajoutées manuellement au diagramme dans le passé et qui sont toujours pertinentes._

5. Ajouter le hash du commit qui a été utilisé pour générer le diagramme dans le pied de page du diagramme.

6. Exporter le diagramme sous forme de fichiers PNG et SVG et remplacer les diagrammes existants dans le répertoire `docs/architecture`. Cela peut être fait avec (par ex. [PlantText](https://www.planttext.com/))
6. Exporter le diagramme en fichiers PNG et SVG et remplacer les diagrammes existants dans le répertoire `docs/architecture`. Cela peut être fait avec (par exemple [PlantText](https://www.planttext.com/))

</div>
</details>
</details>
Loading
Loading