diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/about.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/about.md
index a38679543382..b6dc0a9c7bbf 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/about.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/about.md
@@ -1,15 +1,12 @@
-
-
# À 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
@@ -17,12 +14,12 @@ Notre Agent par défaut est actuellement le [CodeActAgent](agents), qui est capa
## 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 :
       
-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.
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/agents.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/agents.md
index d283f428418b..7b9cce4943a2 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/agents.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/agents.md
@@ -1,12 +1,10 @@
-
-
# 🧠 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 :
@@ -14,7 +12,7 @@ L'idée conceptuelle est illustrée ci-dessous. À chaque tour, l'agent peut :
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.

@@ -22,4 +20,4 @@ L'idée conceptuelle est illustrée ci-dessous. À chaque tour, l'agent peut :
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)_.
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/architecture/backend.mdx b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/architecture/backend.mdx
index d422c59abca5..9a793fe9aec4 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/architecture/backend.mdx
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/architecture/backend.mdx
@@ -1,35 +1,35 @@
-
-
# 🏛️ Architecture du Système
-
-
Diagramme de l'Architecture du Système OpenHands (4 juillet 2024)
+
+
Diagramme d'Architecture OpenHands (4 juillet 2024)
-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}

-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._

- Mise à jour de ce Diagramme
+ Mise à jour de ce diagramme
- 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é
@@ -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/))
-
+
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/architecture/runtime.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/architecture/runtime.md
index 71e121d45d62..d951347a2645 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/architecture/runtime.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/architecture/runtime.md
@@ -1,19 +1,17 @@
+# 📦 Docker Runtime
+Le Docker Runtime d'OpenHands est le composant central qui permet l'exécution sécurisée et flexible des actions d'un agent IA.
+Il crée un environnement isolé (sandbox) en utilisant Docker, où du code arbitraire peut être exécuté en toute sécurité sans risquer de compromettre le système hôte.
-# 📦 Runtime Docker
-
-Le Runtime Docker d'OpenHands est le composant principal qui permet l'exécution sécurisée et flexible des actions des agents d'IA.
-Il crée un environnement en bac à sable (sandbox) en utilisant Docker, où du code arbitraire peut être exécuté en toute sécurité sans risquer le système hôte.
-
-## Pourquoi avons-nous besoin d'un runtime en bac à sable ?
+## Pourquoi avons-nous besoin d'un environnement d'exécution isolé ?
OpenHands doit exécuter du code arbitraire dans un environnement sécurisé et isolé pour plusieurs raisons :
-1. Sécurité : L'exécution de code non fiable peut poser des risques importants pour le système hôte. Un environnement en bac à sable empêche le code malveillant d'accéder ou de modifier les ressources du système hôte
-2. Cohérence : Un environnement en bac à sable garantit que l'exécution du code est cohérente sur différentes machines et configurations, éliminant les problèmes du type "ça fonctionne sur ma machine"
-3. Contrôle des ressources : Le bac à sable permet un meilleur contrôle de l'allocation et de l'utilisation des ressources, empêchant les processus incontrôlés d'affecter le système hôte
+1. Sécurité : L'exécution de code non fiable peut présenter des risques importants pour le système hôte. Un environnement isolé empêche le code malveillant d'accéder ou de modifier les ressources du système hôte
+2. Cohérence : Un environnement isolé garantit que l'exécution du code est cohérente sur différentes machines et configurations, éliminant les problèmes du type "ça marche sur ma machine"
+3. Contrôle des ressources : L'isolation permet un meilleur contrôle de l'allocation et de l'utilisation des ressources, empêchant les processus incontrôlés d'affecter le système hôte
4. Isolation : Différents projets ou utilisateurs peuvent travailler dans des environnements isolés sans interférer les uns avec les autres ou avec le système hôte
-5. Reproductibilité : Les environnements en bac à sable facilitent la reproduction des bugs et des problèmes, car l'environnement d'exécution est cohérent et contrôlable
+5. Reproductibilité : Les environnements isolés facilitent la reproduction des bugs et des problèmes, car l'environnement d'exécution est cohérent et contrôlable
## Comment fonctionne le Runtime ?
@@ -23,17 +21,17 @@ Le système Runtime d'OpenHands utilise une architecture client-serveur impléme
graph TD
A[Image Docker personnalisée fournie par l'utilisateur] --> B[Backend OpenHands]
B -->|Construit| C[Image OH Runtime]
- C -->|Lance| D[Exécuteur d'actions]
+ C -->|Lance| D[Action Executor]
D -->|Initialise| E[Navigateur]
D -->|Initialise| F[Shell Bash]
D -->|Initialise| G[Plugins]
G -->|Initialise| L[Serveur Jupyter]
- B -->|Génère| H[Agent]
- B -->|Génère| I[EventStream]
+ B -->|Crée| H[Agent]
+ B -->|Crée| I[EventStream]
I <--->|Exécute l'action pour
obtenir l'observation
- via l'API REST
+ via API REST
| D
H -->|Génère l'action| I
@@ -50,80 +48,72 @@ graph TD
1. Entrée utilisateur : L'utilisateur fournit une image Docker de base personnalisée
2. Construction de l'image : OpenHands construit une nouvelle image Docker (l'"image OH runtime") basée sur l'image fournie par l'utilisateur. Cette nouvelle image inclut le code spécifique à OpenHands, principalement le "client runtime"
-3. Lancement du conteneur : Lorsqu'OpenHands démarre, il lance un conteneur Docker en utilisant l'image OH runtime
-4. Initialisation du serveur d'exécution des actions : Le serveur d'exécution des actions initialise un `ActionExecutor` à l'intérieur du conteneur, mettant en place les composants nécessaires comme un shell bash et chargeant les plugins spécifiés
-5. Communication : Le backend OpenHands (`openhands/runtime/impl/eventstream/eventstream_runtime.py`) communique avec le serveur d'exécution des actions via une API RESTful, envoyant des actions et recevant des observations
-6. Exécution des actions : Le client runtime reçoit les actions du backend, les exécute dans l'environnement en bac à sable et renvoie les observations
-7. Retour des observations : Le serveur d'exécution des actions renvoie les résultats d'exécution au backend OpenHands sous forme d'observations
-
+3. Lancement du conteneur : Lorsqu'OpenHands démarre, il lance un conteneur Docker utilisant l'image OH runtime
+4. Initialisation du serveur d'exécution d'actions : Le serveur d'exécution d'actions initialise un `ActionExecutor` à l'intérieur du conteneur, configurant les composants nécessaires comme un shell bash et chargeant les plugins spécifiés
+5. Communication : Le backend OpenHands (`openhands/runtime/impl/eventstream/eventstream_runtime.py`) communique avec le serveur d'exécution d'actions via une API RESTful, envoyant des actions et recevant des observations
+6. Exécution d'actions : Le client runtime reçoit les actions du backend, les exécute dans l'environnement isolé, et renvoie des observations
+7. Retour d'observation : Le serveur d'exécution d'actions renvoie les résultats d'exécution au backend OpenHands sous forme d'observations
Le rôle du client :
-- Il agit comme un intermédiaire entre le backend OpenHands et l'environnement en bac à sable
-- Il exécute différents types d'actions (commandes shell, opérations sur les fichiers, code Python, etc.) en toute sécurité dans le conteneur
-- Il gère l'état de l'environnement en bac à sable, y compris le répertoire de travail courant et les plugins chargés
-- Il formate et renvoie les observations au backend, assurant une interface cohérente pour le traitement des résultats
+- Il agit comme intermédiaire entre le backend OpenHands et l'environnement isolé
+- Il exécute divers types d'actions (commandes shell, opérations sur fichiers, code Python, etc.) en toute sécurité dans le conteneur
+- Il gère l'état de l'environnement isolé, y compris le répertoire de travail actuel et les plugins chargés
+- Il formate et renvoie les observations au backend, assurant une interface cohérente pour le traitement des résultats
## Comment OpenHands construit et maintient les images OH Runtime
-L'approche d'OpenHands pour la construction et la gestion des images runtime assure l'efficacité, la cohérence et la flexibilité dans la création et la maintenance des images Docker pour les environnements de production et de développement.
-
-Consultez le [code pertinent](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/runtime/utils/runtime_build.py) si vous souhaitez plus de détails.
+L'approche d'OpenHands pour construire et gérer les images runtime assure efficacité, cohérence et flexibilité dans la création et la maintenance des images Docker pour les environnements de production et de développement.
-### Système de balises d'images
+Consultez le [code pertinent](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/runtime/utils/runtime_build.py) si vous êtes intéressé par plus de détails.
-OpenHands utilise un système à trois balises pour ses images runtime afin d'équilibrer la reproductibilité et la flexibilité.
-Les balises peuvent être dans l'un des 2 formats suivants :
+### Système de marquage d'images
-- **Balise versionnée** : `oh_v{openhands_version}_{base_image}` (ex : `oh_v0.9.9_nikolaik_s_python-nodejs_t_python3.12-nodejs22`)
-- **Balise de verrouillage** : `oh_v{openhands_version}_{16_digit_lock_hash}` (ex : `oh_v0.9.9_1234567890abcdef`)
-- **Balise source** : `oh_v{openhands_version}_{16_digit_lock_hash}_{16_digit_source_hash}`
- (ex : `oh_v0.9.9_1234567890abcdef_1234567890abcdef`)
+OpenHands utilise un système à trois tags pour ses images runtime afin d'équilibrer reproductibilité et flexibilité.
+Les tags peuvent être dans l'un des 2 formats suivants :
+- **Tag versionné** : `oh_v{openhands_version}_{base_image}` (ex. : `oh_v0.9.9_nikolaik_s_python-nodejs_t_python3.12-nodejs22`)
+- **Tag de verrouillage** : `oh_v{openhands_version}_{16_digit_lock_hash}` (ex. : `oh_v0.9.9_1234567890abcdef`)
+- **Tag source** : `oh_v{openhands_version}_{16_digit_lock_hash}_{16_digit_source_hash}`
+ (ex. : `oh_v0.9.9_1234567890abcdef_1234567890abcdef`)
-#### Balise source - La plus spécifique
+#### Tag source - Le plus spécifique
Il s'agit des 16 premiers chiffres du MD5 du hash du répertoire pour le répertoire source. Cela donne un hash
-uniquement pour la source d'openhands
+uniquement pour la source openhands.
-
-#### Balise de verrouillage
+#### Tag de verrouillage
Ce hash est construit à partir des 16 premiers chiffres du MD5 de :
-- Le nom de l'image de base sur laquelle l'image a été construite (ex : `nikolaik/python-nodejs:python3.12-nodejs22`)
+
+- Le nom de l'image de base sur laquelle l'image a été construite (ex. : `nikolaik/python-nodejs:python3.12-nodejs22`)
- Le contenu du `pyproject.toml` inclus dans l'image.
- Le contenu du `poetry.lock` inclus dans l'image.
Cela donne effectivement un hash pour les dépendances d'Openhands indépendamment du code source.
-#### Balise versionnée - La plus générique
+#### Tag versionné - Le plus générique
-Cette balise est une concaténation de la version d'openhands et du nom de l'image de base (transformé pour s'adapter au standard des balises).
+Ce tag est une concaténation de la version openhands et du nom de l'image de base (transformé pour s'adapter au standard des tags).
#### Processus de construction
Lors de la génération d'une image...
-- **Pas de reconstruction** : OpenHands vérifie d'abord si une image avec la même **balise source la plus spécifique** existe. S'il existe une telle image,
- aucune construction n'est effectuée - l'image existante est utilisée.
-- **Reconstruction la plus rapide** : OpenHands vérifie ensuite si une image avec la **balise de verrouillage générique** existe. S'il existe une telle image,
- OpenHands construit une nouvelle image basée sur celle-ci, en contournant toutes les étapes d'installation (comme `poetry install` et
- `apt-get`) sauf une opération finale pour copier le code source actuel. La nouvelle image est balisée avec une
- balise **source** uniquement.
-- **Reconstruction correcte** : Si ni une balise **source** ni une balise **de verrouillage** n'existe, une image sera construite sur la base de l'image avec la balise **versionnée**.
- Dans l'image avec la balise versionnée, la plupart des dépendances devraient déjà être installées, ce qui permet de gagner du temps.
-- **Reconstruction la plus lente** : Si les trois balises n'existent pas, une toute nouvelle image est construite à partir de
- l'image de base (ce qui est une opération plus lente). Cette nouvelle image est balisée avec toutes les balises **source**, **de verrouillage** et **versionnée**.
+- **Pas de reconstruction** : OpenHands vérifie d'abord si une image avec le même **tag source le plus spécifique** existe. S'il existe une telle image, aucune construction n'est effectuée - l'image existante est utilisée.
+- **Reconstruction la plus rapide** : OpenHands vérifie ensuite si une image avec le **tag de verrouillage générique** existe. S'il existe une telle image, OpenHands construit une nouvelle image basée sur celle-ci, contournant toutes les étapes d'installation (comme `poetry install` et `apt-get`) sauf une opération finale pour copier le code source actuel. La nouvelle image est marquée uniquement avec un tag **source**.
+- **Reconstruction acceptable** : Si ni un tag **source** ni un tag **verrouillage** n'existe, une image sera construite basée sur l'image avec le tag **versionné**. Dans l'image avec tag versionné, la plupart des dépendances devraient déjà être installées, ce qui permet de gagner du temps.
+- **Reconstruction la plus lente** : Si aucun des trois tags n'existe, une toute nouvelle image est construite basée sur l'image de base (ce qui est une opération plus lente). Cette nouvelle image est marquée avec tous les tags **source**, **verrouillage** et **versionné**.
-Cette approche de balisage permet à OpenHands de gérer efficacement les environnements de développement et de production.
+Cette approche de marquage permet à OpenHands de gérer efficacement les environnements de développement et de production.
-1. Un code source et un Dockerfile identiques produisent toujours la même image (via des balises basées sur des hashs)
-2. Le système peut reconstruire rapidement les images lorsque des changements mineurs se produisent (en s'appuyant sur des images compatibles récentes)
-3. La balise **de verrouillage** (ex : `runtime:oh_v0.9.3_1234567890abcdef`) pointe toujours vers la dernière version pour une combinaison particulière d'image de base, de dépendances et de version d'OpenHands
+1. Un code source et un Dockerfile identiques produisent toujours la même image (via des tags basés sur des hashs)
+2. Le système peut rapidement reconstruire des images lorsque des changements mineurs se produisent (en exploitant des images compatibles récentes)
+3. Le tag **verrouillage** (ex., `runtime:oh_v0.9.3_1234567890abcdef`) pointe toujours vers la dernière construction pour une combinaison particulière d'image de base, de dépendances et de version OpenHands
-## Système de plugins du Runtime
+## Système de plugins Runtime
-Le Runtime d'OpenHands prend en charge un système de plugins qui permet d'étendre les fonctionnalités et de personnaliser l'environnement d'exécution. Les plugins sont initialisés lorsque le client runtime démarre.
+Le Runtime OpenHands prend en charge un système de plugins qui permet d'étendre les fonctionnalités et de personnaliser l'environnement d'exécution. Les plugins sont initialisés au démarrage du client runtime.
Consultez [un exemple de plugin Jupyter ici](https://github.com/All-Hands-AI/OpenHands/blob/ecf4aed28b0cf7c18d4d8ff554883ba182fc6bdd/openhands/runtime/plugins/jupyter/__init__.py#L21-L55) si vous souhaitez implémenter votre propre plugin.
@@ -131,8 +121,8 @@ Consultez [un exemple de plugin Jupyter ici](https://github.com/All-Hands-AI/Ope
Aspects clés du système de plugins :
-1. Définition des plugins : Les plugins sont définis comme des classes Python qui héritent d'une classe de base `Plugin`
-2. Enregistrement des plugins : Les plugins disponibles sont enregistrés dans un dictionnaire `ALL_PLUGINS`
-3. Spécification des plugins : Les plugins sont associés à `Agent.sandbox_plugins: list[PluginRequirement]`. Les utilisateurs peuvent spécifier quels plugins charger lors de l'initialisation du runtime
-4. Initialisation : Les plugins sont initialisés de manière asynchrone lorsque le client runtime démarre
-5. Utilisation : Le client runtime peut utiliser les plugins initialisés pour étendre ses capacités (par exemple, le JupyterPlugin pour exécuter des cellules IPython)
+1. Définition du plugin : Les plugins sont définis comme des classes Python qui héritent d'une classe de base `Plugin`
+2. Enregistrement du plugin : Les plugins disponibles sont enregistrés dans un dictionnaire `ALL_PLUGINS`
+3. Spécification du plugin : Les plugins sont associés à `Agent.sandbox_plugins: list[PluginRequirement]`. Les utilisateurs peuvent spécifier quels plugins charger lors de l'initialisation du runtime
+4. Initialisation : Les plugins sont initialisés de manière asynchrone au démarrage du client runtime
+5. Utilisation : Le client runtime peut utiliser les plugins initialisés pour étendre ses capacités (par exemple, le JupyterPlugin pour exécuter des cellules IPython)
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/cloud/cloud-api.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/cloud/cloud-api.md
new file mode 100644
index 000000000000..9f95c97fa475
--- /dev/null
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/cloud/cloud-api.md
@@ -0,0 +1,177 @@
+# API Cloud OpenHands
+
+OpenHands Cloud fournit une API REST qui vous permet d'interagir programmatiquement avec le service. Cela est utile si vous souhaitez facilement lancer vos propres tâches depuis vos programmes de manière flexible.
+
+Ce guide explique comment obtenir une clé API et utiliser l'API pour démarrer des conversations.
+Pour des informations plus détaillées sur l'API, consultez la [Référence API OpenHands](https://docs.all-hands.dev/swagger-ui/).
+
+## Obtention d'une clé API
+
+Pour utiliser l'API OpenHands Cloud, vous devrez générer une clé API :
+
+1. Connectez-vous à votre compte [OpenHands Cloud](https://app.all-hands.dev)
+2. Accédez à la [page Paramètres](https://app.all-hands.dev/settings)
+3. Localisez la section "Clés API"
+4. Cliquez sur "Générer une nouvelle clé"
+5. Donnez à votre clé un nom descriptif (par exemple, "Développement", "Production")
+6. Copiez la clé API générée et conservez-la en lieu sûr - elle ne sera affichée qu'une seule fois
+
+
+
+## Utilisation de l'API
+
+### Démarrer une nouvelle conversation
+
+Pour démarrer une nouvelle conversation avec OpenHands effectuant une tâche, vous devrez faire une requête POST vers le point de terminaison de conversation.
+
+#### Paramètres de la requête
+
+| Paramètre | Type | Obligatoire | Description |
+|-----------|------|-------------|-------------|
+| `initial_user_msg` | chaîne | Oui | Le message initial pour démarrer la conversation |
+| `repository` | chaîne | Non | Nom du dépôt Git pour fournir du contexte au format `propriétaire/repo`. Vous devez avoir accès au dépôt. |
+
+#### Exemples
+
+
+cURL
+
+```bash
+curl -X POST "https://app.all-hands.dev/api/conversations" \
+ -H "Authorization: Bearer YOUR_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "initial_user_msg": "Check whether there is any incorrect information in the README.md file and send a PR to fix it if so.",
+ "repository": "yourusername/your-repo"
+ }'
+```
+
+
+
+Python (avec requests)
+
+```python
+import requests
+
+api_key = "YOUR_API_KEY"
+url = "https://app.all-hands.dev/api/conversations"
+
+headers = {
+ "Authorization": f"Bearer {api_key}",
+ "Content-Type": "application/json"
+}
+
+data = {
+ "initial_user_msg": "Check whether there is any incorrect information in the README.md file and send a PR to fix it if so.",
+ "repository": "yourusername/your-repo"
+}
+
+response = requests.post(url, headers=headers, json=data)
+conversation = response.json()
+
+print(f"Conversation Link: https://app.all-hands.dev/conversations/{conversation['id']}")
+print(f"Status: {conversation['status']}")
+```
+
+
+
+TypeScript/JavaScript (avec fetch)
+
+```typescript
+const apiKey = "YOUR_API_KEY";
+const url = "https://app.all-hands.dev/api/conversations";
+
+const headers = {
+ "Authorization": `Bearer ${apiKey}`,
+ "Content-Type": "application/json"
+};
+
+const data = {
+ initial_user_msg: "Check whether there is any incorrect information in the README.md file and send a PR to fix it if so.",
+ repository: "yourusername/your-repo"
+};
+
+async function startConversation() {
+ try {
+ const response = await fetch(url, {
+ method: "POST",
+ headers: headers,
+ body: JSON.stringify(data)
+ });
+
+ const conversation = await response.json();
+
+ console.log(`Conversation Link: https://app.all-hands.dev/conversations/${conversation.id}`);
+ console.log(`Status: ${conversation.status}`);
+
+ return conversation;
+ } catch (error) {
+ console.error("Error starting conversation:", error);
+ }
+}
+
+startConversation();
+```
+
+
+
+#### Réponse
+
+L'API renverra un objet JSON avec les détails de la conversation créée :
+
+```json
+{
+ "status": "ok",
+ "conversation_id": "abc1234",
+}
+```
+
+Vous pouvez également recevoir une `AuthenticationError` si :
+
+1. Vous avez fourni une clé API invalide
+2. Vous avez fourni un nom de dépôt incorrect
+3. Vous n'avez pas accès au dépôt
+
+
+### Récupération du statut d'une conversation
+
+Vous pouvez vérifier le statut d'une conversation en faisant une requête GET vers le point de terminaison de conversation.
+
+#### Point de terminaison
+
+```
+GET https://app.all-hands.dev/api/conversations/{conversation_id}
+```
+
+#### Exemple
+
+
+cURL
+
+```bash
+curl -X GET "https://app.all-hands.dev/api/conversations/{conversation_id}" \
+ -H "Authorization: Bearer YOUR_API_KEY"
+```
+
+
+#### Réponse
+
+La réponse est formatée comme suit :
+
+```json
+{
+ "conversation_id":"abc1234",
+ "title":"Update README.md",
+ "created_at":"2025-04-29T15:13:51.370706Z",
+ "last_updated_at":"2025-04-29T15:13:57.199210Z",
+ "status":"RUNNING",
+ "selected_repository":"yourusername/your-repo",
+ "trigger":"gui"
+}
+```
+
+## Limites de taux
+
+L'API a une limite de 10 conversations simultanées par compte. Si vous avez besoin d'une limite plus élevée pour votre cas d'utilisation, veuillez nous contacter à [contact@all-hands.dev](mailto:contact@all-hands.dev).
+
+Si vous dépassez cette limite, l'API renverra une réponse 429 Too Many Requests.
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/cloud/cloud-github-resolver.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/cloud/cloud-github-resolver.md
new file mode 100644
index 000000000000..fc3ef90413a0
--- /dev/null
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/cloud/cloud-github-resolver.md
@@ -0,0 +1,33 @@
+# Résolveur GitHub Cloud
+
+Le Résolveur GitHub automatise les corrections de code et fournit une assistance intelligente pour vos dépôts.
+
+## Configuration
+
+Le Résolveur GitHub Cloud est disponible automatiquement lorsque vous
+[accordez l'accès au dépôt OpenHands Cloud](./openhands-cloud#adding-repository-access).
+
+## Utilisation
+
+Après avoir accordé l'accès au dépôt OpenHands Cloud, vous pouvez utiliser le Résolveur GitHub Cloud sur les problèmes et les pull requests
+du dépôt.
+
+### Problèmes (Issues)
+
+Sur votre dépôt, étiquetez un problème avec `openhands`. OpenHands va :
+1. Commenter le problème pour vous informer qu'il y travaille.
+ - Vous pouvez cliquer sur le lien pour suivre la progression sur OpenHands Cloud.
+2. Ouvrir une pull request s'il détermine que le problème a été résolu avec succès.
+3. Commenter le problème avec un résumé des tâches effectuées et un lien vers la pull request.
+
+
+### Pull Requests
+
+Pour qu'OpenHands travaille sur des pull requests, utilisez `@openhands` dans les commentaires de premier niveau ou en ligne pour :
+ - Poser des questions
+ - Demander des mises à jour
+ - Obtenir des explications de code
+
+OpenHands va :
+1. Commenter la PR pour vous informer qu'il y travaille.
+2. Effectuer la tâche.
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/cloud/openhands-cloud.mdx b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/cloud/openhands-cloud.mdx
new file mode 100644
index 000000000000..d1191c2c5ea5
--- /dev/null
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/cloud/openhands-cloud.mdx
@@ -0,0 +1,65 @@
+# OpenHands Cloud
+
+OpenHands Cloud est la version hébergée dans le cloud d'OpenHands par All Hands AI.
+
+## Accéder à OpenHands Cloud
+
+OpenHands Cloud est accessible à l'adresse https://app.all-hands.dev/.
+
+Vous pouvez également interagir avec OpenHands Cloud par programmation en utilisant l'[API](./cloud-api).
+
+## Premiers pas
+
+Après avoir visité OpenHands Cloud, il vous sera demandé de vous connecter avec votre compte GitHub ou GitLab :
+
+1. Après avoir lu et accepté les conditions d'utilisation, cliquez sur `Log in with GitHub` ou `Log in with GitLab`.
+2. Examinez les autorisations demandées par OpenHands, puis cliquez sur `Authorize OpenHands AI`.
+ - OpenHands nécessitera certaines autorisations de votre compte GitHub ou GitLab. Pour en savoir plus sur ces autorisations :
+ - GitHub : Vous pouvez cliquer sur le lien `Learn more` sur la page d'autorisation GitHub.
+ - GitLab : Vous pouvez développer chaque demande d'autorisation sur la page d'autorisation GitLab.
+
+## Accès aux dépôts
+
+### GitHub
+
+#### Ajouter l'accès aux dépôts
+
+Vous pouvez accorder à OpenHands un accès à des dépôts spécifiques :
+1. Cliquez sur `Add GitHub repos` sur la page d'accueil.
+2. Sélectionnez l'organisation, puis choisissez les dépôts spécifiques auxquels vous souhaitez donner accès à OpenHands.
+
+ Détails des autorisations pour l'accès aux dépôts
+
+ Openhands demande des jetons à courte durée de vie (expiration de 8 heures) avec ces autorisations :
+ - Actions : Lecture et écriture
+ - Administration : Lecture seule
+ - Statuts de commit : Lecture et écriture
+ - Contenus : Lecture et écriture
+ - Issues : Lecture et écriture
+ - Métadonnées : Lecture seule
+ - Pull requests : Lecture et écriture
+ - Webhooks : Lecture et écriture
+ - Workflows : Lecture et écriture
+
+ L'accès au dépôt pour un utilisateur est accordé en fonction de :
+ - L'autorisation accordée pour le dépôt.
+ - Les autorisations GitHub de l'utilisateur (propriétaire/collaborateur).
+
+
+3. Cliquez sur `Install & Authorize`.
+
+#### Modifier l'accès aux dépôts
+
+Vous pouvez modifier l'accès aux dépôts GitHub à tout moment en :
+* Utilisant le même processus `Add GitHub repos`, ou
+* Visitant la page Paramètres et en sélectionnant `Configure GitHub Repositories` dans la section `Git Settings`.
+
+### GitLab
+
+Lorsque vous utilisez votre compte GitLab, OpenHands aura automatiquement accès à vos dépôts.
+
+## Persistance des conversations
+
+- Liste des conversations – Affiche uniquement les 10 conversations les plus récentes initiées au cours des 10 derniers jours.
+- Espaces de travail – Les espaces de travail de conversation sont conservés pendant 14 jours.
+- Environnements d'exécution – Les environnements d'exécution restent actifs ("chauds") pendant 30 minutes. Après cette période, la reprise d'une conversation peut prendre 1 à 2 minutes.
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/configuration-options.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/configuration-options.md
index 41bfd143d2ae..e15d2bd94216 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/configuration-options.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/configuration-options.md
@@ -1,387 +1,395 @@
-# Options de configuration
-
-Ce guide détaille toutes les options de configuration disponibles pour OpenHands, vous aidant à personnaliser son comportement et à l'intégrer avec d'autres services.
+# Options de Configuration
:::note
-Si vous exécutez en [Mode GUI](https://docs.all-hands.dev/modules/usage/how-to/gui-mode), les paramètres disponibles dans l'interface utilisateur des paramètres auront toujours
-la priorité.
+Cette page présente toutes les options de configuration disponibles pour OpenHands, vous permettant de personnaliser son comportement et
+de l'intégrer avec d'autres services. En Mode GUI, tous les paramètres appliqués via l'interface Paramètres auront la priorité.
:::
----
-
-# Table des matières
-
-1. [Configuration de base](#core-configuration)
- - [Clés API](#api-keys)
- - [Espace de travail](#workspace)
- - [Débogage et journalisation](#debugging-and-logging)
- - [Trajectoires](#trajectories)
- - [Stockage de fichiers](#file-store)
- - [Gestion des tâches](#task-management)
- - [Configuration du bac à sable](#sandbox-configuration)
- - [Divers](#miscellaneous)
-2. [Configuration LLM](#llm-configuration)
- - [Informations d'identification AWS](#aws-credentials)
- - [Configuration de l'API](#api-configuration)
- - [Fournisseur LLM personnalisé](#custom-llm-provider)
- - [Embeddings](#embeddings)
- - [Gestion des messages](#message-handling)
- - [Sélection du modèle](#model-selection)
- - [Nouvelles tentatives](#retrying)
- - [Options avancées](#advanced-options)
-3. [Configuration de l'agent](#agent-configuration)
- - [Configuration de la mémoire](#memory-configuration)
- - [Configuration LLM](#llm-configuration-1)
- - [Configuration de l'espace d'action](#actionspace-configuration)
- - [Utilisation du micro-agent](#microagent-usage)
-4. [Configuration du bac à sable](#sandbox-configuration-1)
- - [Exécution](#execution)
- - [Image de conteneur](#container-image)
- - [Mise en réseau](#networking)
- - [Linting et plugins](#linting-and-plugins)
- - [Dépendances et environnement](#dependencies-and-environment)
- - [Évaluation](#evaluation)
-5. [Configuration de sécurité](#security-configuration)
- - [Mode de confirmation](#confirmation-mode)
- - [Analyseur de sécurité](#security-analyzer)
-
----
-
-## Configuration de base
-
-Les options de configuration de base sont définies dans la section `[core]` du fichier `config.toml`.
-
-**Clés API**
+## Configuration Principale
+
+Les options de configuration principales sont définies dans la section `[core]` du fichier `config.toml`.
+
+### Clés API
- `e2b_api_key`
- - Type : `str`
- - Valeur par défaut : `""`
- - Description : Clé API pour E2B
+ - Type: `str`
+ - Défaut: `""`
+ - Description: Clé API pour E2B
- `modal_api_token_id`
- - Type : `str`
- - Valeur par défaut : `""`
- - Description : ID du jeton API pour Modal
+ - Type: `str`
+ - Défaut: `""`
+ - Description: ID de token API pour Modal
- `modal_api_token_secret`
- - Type : `str`
- - Valeur par défaut : `""`
- - Description : Secret du jeton API pour Modal
+ - Type: `str`
+ - Défaut: `""`
+ - Description: Secret de token API pour Modal
-**Espace de travail**
-- `workspace_base`
- - Type : `str`
- - Valeur par défaut : `"./workspace"`
- - Description : Chemin de base pour l'espace de travail
+### Espace de travail
+- `workspace_base` **(Déprécié)**
+ - Type: `str`
+ - Défaut: `"./workspace"`
+ - Description: Chemin de base pour l'espace de travail. **Déprécié: Utilisez `SANDBOX_VOLUMES` à la place.**
- `cache_dir`
- - Type : `str`
- - Valeur par défaut : `"/tmp/cache"`
- - Description : Chemin du répertoire de cache
+ - Type: `str`
+ - Défaut: `"/tmp/cache"`
+ - Description: Chemin du répertoire de cache
-**Débogage et journalisation**
+### Débogage et Journalisation
- `debug`
- - Type : `bool`
- - Valeur par défaut : `false`
- - Description : Activer le débogage
+ - Type: `bool`
+ - Défaut: `false`
+ - Description: Activer le débogage
- `disable_color`
- - Type : `bool`
- - Valeur par défaut : `false`
- - Description : Désactiver la couleur dans la sortie du terminal
+ - Type: `bool`
+ - Défaut: `false`
+ - Description: Désactiver la couleur dans la sortie du terminal
-**Trajectoires**
+### Trajectoires
- `save_trajectory_path`
- - Type : `str`
- - Valeur par défaut : `"./trajectories"`
- - Description : Chemin pour stocker les trajectoires (peut être un dossier ou un fichier). Si c'est un dossier, les trajectoires seront enregistrées dans un fichier nommé avec l'ID de session et l'extension .json, dans ce dossier.
+ - Type: `str`
+ - Défaut: `"./trajectories"`
+ - Description: Chemin pour stocker les trajectoires (peut être un dossier ou un fichier). Si c'est un dossier, les trajectoires seront sauvegardées dans un fichier nommé avec l'ID de session et l'extension .json, dans ce dossier.
-**Stockage de fichiers**
+- `replay_trajectory_path`
+ - Type: `str`
+ - Défaut: `""`
+ - Description: Chemin pour charger une trajectoire et la rejouer. Si fourni, doit être un chemin vers le fichier de trajectoire au format JSON. Les actions dans le fichier de trajectoire seront rejouées d'abord avant que toute instruction utilisateur ne soit exécutée.
+
+### Stockage de Fichiers
- `file_store_path`
- - Type : `str`
- - Valeur par défaut : `"/tmp/file_store"`
- - Description : Chemin de stockage des fichiers
+ - Type: `str`
+ - Défaut: `"/tmp/file_store"`
+ - Description: Chemin du stockage de fichiers
- `file_store`
- - Type : `str`
- - Valeur par défaut : `"memory"`
- - Description : Type de stockage de fichiers
+ - Type: `str`
+ - Défaut: `"memory"`
+ - Description: Type de stockage de fichiers
- `file_uploads_allowed_extensions`
- - Type : `list of str`
- - Valeur par défaut : `[".*"]`
- - Description : Liste des extensions de fichiers autorisées pour les téléchargements
+ - Type: `liste de str`
+ - Défaut: `[".*"]`
+ - Description: Liste des extensions de fichiers autorisées pour les téléchargements
- `file_uploads_max_file_size_mb`
- - Type : `int`
- - Valeur par défaut : `0`
- - Description : Taille maximale des fichiers pour les téléchargements, en mégaoctets
+ - Type: `int`
+ - Défaut: `0`
+ - Description: Taille maximale de fichier pour les téléchargements, en mégaoctets
- `file_uploads_restrict_file_types`
- - Type : `bool`
- - Valeur par défaut : `false`
- - Description : Restreindre les types de fichiers pour les téléchargements de fichiers
+ - Type: `bool`
+ - Défaut: `false`
+ - Description: Restreindre les types de fichiers pour les téléchargements
- `file_uploads_allowed_extensions`
- - Type : `list of str`
- - Valeur par défaut : `[".*"]`
- - Description : Liste des extensions de fichiers autorisées pour les téléchargements
+ - Type: `liste de str`
+ - Défaut: `[".*"]`
+ - Description: Liste des extensions de fichiers autorisées pour les téléchargements
-**Gestion des tâches**
+### Gestion des Tâches
- `max_budget_per_task`
- - Type : `float`
- - Valeur par défaut : `0.0`
- - Description : Budget maximal par tâche (0.0 signifie aucune limite)
+ - Type: `float`
+ - Défaut: `0.0`
+ - Description: Budget maximum par tâche (0.0 signifie pas de limite)
- `max_iterations`
- - Type : `int`
- - Valeur par défaut : `100`
- - Description : Nombre maximal d'itérations
-
-**Configuration du bac à sable**
-- `workspace_mount_path_in_sandbox`
- - Type : `str`
- - Valeur par défaut : `"/workspace"`
- - Description : Chemin de montage de l'espace de travail dans le bac à sable
-
-- `workspace_mount_path`
- - Type : `str`
- - Valeur par défaut : `""`
- - Description : Chemin de montage de l'espace de travail
-
-- `workspace_mount_rewrite`
- - Type : `str`
- - Valeur par défaut : `""`
- - Description : Chemin pour réécrire le chemin de montage de l'espace de travail. Vous pouvez généralement ignorer cela, cela fait référence à des cas spéciaux d'exécution à l'intérieur d'un autre conteneur.
-
-**Divers**
+ - Type: `int`
+ - Défaut: `100`
+ - Description: Nombre maximum d'itérations
+
+### Configuration du Sandbox
+- `volumes`
+ - Type: `str`
+ - Défaut: `None`
+ - Description: Montages de volumes au format 'chemin_hôte:chemin_conteneur[:mode]', par ex. '/my/host/dir:/workspace:rw'. Plusieurs montages peuvent être spécifiés en utilisant des virgules, par ex. '/path1:/workspace/path1,/path2:/workspace/path2:ro'
+
+- `workspace_mount_path_in_sandbox` **(Déprécié)**
+ - Type: `str`
+ - Défaut: `"/workspace"`
+ - Description: Chemin pour monter l'espace de travail dans le sandbox. **Déprécié: Utilisez `SANDBOX_VOLUMES` à la place.**
+
+- `workspace_mount_path` **(Déprécié)**
+ - Type: `str`
+ - Défaut: `""`
+ - Description: Chemin pour monter l'espace de travail. **Déprécié: Utilisez `SANDBOX_VOLUMES` à la place.**
+
+- `workspace_mount_rewrite` **(Déprécié)**
+ - Type: `str`
+ - Défaut: `""`
+ - Description: Chemin pour réécrire le chemin de montage de l'espace de travail. Vous pouvez généralement ignorer cela, cela fait référence à des cas spéciaux d'exécution à l'intérieur d'un autre conteneur. **Déprécié: Utilisez `SANDBOX_VOLUMES` à la place.**
+
+### Divers
- `run_as_openhands`
- - Type : `bool`
- - Valeur par défaut : `true`
- - Description : Exécuter en tant qu'OpenHands
+ - Type: `bool`
+ - Défaut: `true`
+ - Description: Exécuter en tant qu'OpenHands
- `runtime`
- - Type : `str`
- - Valeur par défaut : `"docker"`
- - Description : Environnement d'exécution
+ - Type: `str`
+ - Défaut: `"docker"`
+ - Description: Environnement d'exécution
- `default_agent`
- - Type : `str`
- - Valeur par défaut : `"CodeActAgent"`
- - Description : Nom de l'agent par défaut
+ - Type: `str`
+ - Défaut: `"CodeActAgent"`
+ - Description: Nom de l'agent par défaut
- `jwt_secret`
- - Type : `str`
- - Valeur par défaut : `uuid.uuid4().hex`
- - Description : Secret JWT pour l'authentification. Veuillez le définir sur votre propre valeur.
+ - Type: `str`
+ - Défaut: `uuid.uuid4().hex`
+ - Description: Secret JWT pour l'authentification. Veuillez le définir avec votre propre valeur.
## Configuration LLM
Les options de configuration LLM (Large Language Model) sont définies dans la section `[llm]` du fichier `config.toml`.
-Pour les utiliser avec la commande docker, passez `-e LLM_`. Exemple : `-e LLM_NUM_RETRIES`.
+Pour les utiliser avec la commande docker, passez `-e LLM_ `. Exemple: `-e LLM_NUM_RETRIES`.
:::note
-Pour les configurations de développement, vous pouvez également définir des configurations LLM personnalisées. Voir [Configurations LLM personnalisées](./llms/custom-llm-configs) pour plus de détails.
+Pour les configurations de développement, vous pouvez également définir des configurations LLM personnalisées nommées. Voir [Configurations LLM personnalisées](./llms/custom-llm-configs) pour plus de détails.
:::
-**Informations d'identification AWS**
+**Identifiants AWS**
- `aws_access_key_id`
- - Type : `str`
- - Valeur par défaut : `""`
- - Description : ID de clé d'accès AWS
+ - Type: `str`
+ - Défaut: `""`
+ - Description: ID de clé d'accès AWS
- `aws_region_name`
- - Type : `str`
- - Valeur par défaut : `""`
- - Description : Nom de la région AWS
+ - Type: `str`
+ - Défaut: `""`
+ - Description: Nom de région AWS
- `aws_secret_access_key`
- - Type : `str`
- - Valeur par défaut : `""`
- - Description : Clé d'accès secrète AWS
+ - Type: `str`
+ - Défaut: `""`
+ - Description: Clé d'accès secrète AWS
-**Configuration de l'API**
+### Configuration API
- `api_key`
- - Type : `str`
- - Valeur par défaut : `None`
- - Description : Clé API à utiliser
+ - Type: `str`
+ - Défaut: `None`
+ - Description: Clé API à utiliser
- `base_url`
- - Type : `str`
- - Valeur par défaut : `""`
- - Description : URL de base de l'API
+ - Type: `str`
+ - Défaut: `""`
+ - Description: URL de base de l'API
- `api_version`
- - Type : `str`
- - Valeur par défaut : `""`
- - Description : Version de l'API
+ - Type: `str`
+ - Défaut: `""`
+ - Description: Version de l'API
- `input_cost_per_token`
- - Type : `float`
- - Valeur par défaut : `0.0`
- - Description : Coût par jeton d'entrée
+ - Type: `float`
+ - Défaut: `0.0`
+ - Description: Coût par token d'entrée
- `output_cost_per_token`
- - Type : `float`
- - Valeur par défaut : `0.0`
- - Description : Coût par jeton de sortie
+ - Type: `float`
+ - Défaut: `0.0`
+ - Description: Coût par token de sortie
-**Fournisseur LLM personnalisé**
+### Fournisseur LLM personnalisé
- `custom_llm_provider`
- - Type : `str`
- - Valeur par défaut : `""`
- - Description : Fournisseur LLM personnalisé
-
-**Embeddings**
-- `embedding_base_url`
- - Type : `str`
- - Valeur par défaut : `""`
- - Description : URL de base de l'API d'embedding
-
-- `embedding_deployment_name`
- - Type : `str`
- - Valeur par défaut : `""`
- - Description : Nom du déploiement d'embedding
-
-- `embedding_model`
- - Type : `str`
- - Valeur par défaut : `"local"`
- - Description : Modèle d'embedding à utiliser
-
-**Gestion des messages**
+ - Type: `str`
+ - Défaut: `""`
+ - Description: Fournisseur LLM personnalisé
+
+### Gestion des messages
- `max_message_chars`
- - Type : `int`
- - Valeur par défaut : `30000`
- - Description : Le nombre maximum approximatif de caractères dans le contenu d'un événement inclus dans l'invite au LLM. Les observations plus grandes sont tronquées.
+ - Type: `int`
+ - Défaut: `30000`
+ - Description: Le nombre approximatif maximum de caractères dans le contenu d'un événement inclus dans le prompt au LLM. Les observations plus grandes sont tronquées.
- `max_input_tokens`
- - Type : `int`
- - Valeur par défaut : `0`
- - Description : Nombre maximal de jetons d'entrée
+ - Type: `int`
+ - Défaut: `0`
+ - Description: Nombre maximum de tokens d'entrée
- `max_output_tokens`
- - Type : `int`
- - Valeur par défaut : `0`
- - Description : Nombre maximal de jetons de sortie
+ - Type: `int`
+ - Défaut: `0`
+ - Description: Nombre maximum de tokens de sortie
-**Sélection du modèle**
+### Sélection du modèle
- `model`
- - Type : `str`
- - Valeur par défaut : `"claude-3-5-sonnet-20241022"`
- - Description : Modèle à utiliser
+ - Type: `str`
+ - Défaut: `"claude-3-5-sonnet-20241022"`
+ - Description: Modèle à utiliser
-**Nouvelles tentatives**
+### Nouvelles tentatives
- `num_retries`
- - Type : `int`
- - Valeur par défaut : `8`
- - Description : Nombre de nouvelles tentatives à effectuer
+ - Type: `int`
+ - Défaut: `8`
+ - Description: Nombre de tentatives à effectuer
- `retry_max_wait`
- - Type : `int`
- - Valeur par défaut : `120`
- - Description : Temps d'attente maximal (en secondes) entre les tentatives de nouvelle tentative
+ - Type: `int`
+ - Défaut: `120`
+ - Description: Temps d'attente maximum (en secondes) entre les tentatives
- `retry_min_wait`
- - Type : `int`
- - Valeur par défaut : `15`
- - Description : Temps d'attente minimal (en secondes) entre les tentatives de nouvelle tentative
+ - Type: `int`
+ - Défaut: `15`
+ - Description: Temps d'attente minimum (en secondes) entre les tentatives
- `retry_multiplier`
- - Type : `float`
- - Valeur par défaut : `2.0`
- - Description : Multiplicateur pour le calcul du backoff exponentiel
+ - Type: `float`
+ - Défaut: `2.0`
+ - Description: Multiplicateur pour le calcul de backoff exponentiel
-**Options avancées**
+### Options avancées
- `drop_params`
- - Type : `bool`
- - Valeur par défaut : `false`
- - Description : Supprimer tous les paramètres non mappés (non pris en charge) sans provoquer d'exception
+ - Type: `bool`
+ - Défaut: `false`
+ - Description: Ignorer les paramètres non mappés (non pris en charge) sans provoquer d'exception
- `caching_prompt`
- - Type : `bool`
- - Valeur par défaut : `true`
- - Description : Utiliser la fonctionnalité de mise en cache des invites si elle est fournie par le LLM et prise en charge
+ - Type: `bool`
+ - Défaut: `true`
+ - Description: Utiliser la fonctionnalité de mise en cache des prompts si fournie par le LLM et prise en charge
- `ollama_base_url`
- - Type : `str`
- - Valeur par défaut : `""`
- - Description : URL de base pour l'API OLLAMA
+ - Type: `str`
+ - Défaut: `""`
+ - Description: URL de base pour l'API OLLAMA
- `temperature`
- - Type : `float`
- - Valeur par défaut : `0.0`
- - Description : Température pour l'API
+ - Type: `float`
+ - Défaut: `0.0`
+ - Description: Température pour l'API
- `timeout`
- - Type : `int`
- - Valeur par défaut : `0`
- - Description : Délai d'expiration pour l'API
+ - Type: `int`
+ - Défaut: `0`
+ - Description: Délai d'attente pour l'API
- `top_p`
- - Type : `float`
- - Valeur par défaut : `1.0`
- - Description : Top p pour l'API
+ - Type: `float`
+ - Défaut: `1.0`
+ - Description: Top p pour l'API
- `disable_vision`
- - Type : `bool`
- - Valeur par défaut : `None`
- - Description : Si le modèle est capable de vision, cette option permet de désactiver le traitement des images (utile pour réduire les coûts)
+ - Type: `bool`
+ - Défaut: `None`
+ - Description: Si le modèle est capable de vision, cette option permet de désactiver le traitement d'images (utile pour réduire les coûts)
-## Configuration de l'agent
+## Configuration de l'Agent
Les options de configuration de l'agent sont définies dans les sections `[agent]` et `[agent.]` du fichier `config.toml`.
-**Configuration de la mémoire**
-- `memory_enabled`
- - Type : `bool`
- - Valeur par défaut : `false`
- - Description : Si la mémoire à long terme (embeddings) est activée
-
-- `memory_max_threads`
- - Type : `int`
- - Valeur par défaut : `3`
- - Description : Le nombre maximum de threads indexant en même temps pour les embeddings
-
-**Configuration LLM**
+### Configuration LLM
- `llm_config`
- - Type : `str`
- - Valeur par défaut : `'your-llm-config-group'`
- - Description : Le nom de la configuration LLM à utiliser
+ - Type: `str`
+ - Défaut: `'your-llm-config-group'`
+ - Description: Le nom de la configuration LLM à utiliser
-**Configuration de l'espace d'action**
+### Configuration de l'espace d'action
- `function_calling`
- - Type : `bool`
- - Valeur par défaut : `true`
- - Description : Si l'appel de fonction est activé
+ - Type: `bool`
+ - Défaut: `true`
+ - Description: Si l'appel de fonction est activé
- `enable_browsing`
- - Type : `bool`
- - Valeur par défaut : `false`
- - Description : Si le délégué de navigation est activé dans l'espace d'action (fonctionne uniquement avec l'appel de fonction)
+ - Type: `bool`
+ - Défaut: `false`
+ - Description: Si le délégué de navigation est activé dans l'espace d'action (fonctionne uniquement avec l'appel de fonction)
- `enable_llm_editor`
- - Type : `bool`
- - Valeur par défaut : `false`
- - Description : Si l'éditeur LLM est activé dans l'espace d'action (fonctionne uniquement avec l'appel de fonction)
+ - Type: `bool`
+ - Défaut: `false`
+ - Description: Si l'éditeur LLM est activé dans l'espace d'action (fonctionne uniquement avec l'appel de fonction)
+
+- `enable_jupyter`
+ - Type: `bool`
+ - Défaut: `false`
+ - Description: Si Jupyter est activé dans l'espace d'action
+
+- `enable_history_truncation`
+ - Type: `bool`
+ - Défaut: `true`
+ - Description: Si l'historique doit être tronqué pour continuer la session lorsqu'on atteint la limite de longueur de contexte du LLM
-**Utilisation du micro-agent**
+### Utilisation des microagents
- `enable_prompt_extensions`
- - Type : `bool`
- - Valeur par défaut : `true`
- - Description : Indique si l'utilisation des micro-agents est activée ou non
+ - Type: `bool`
+ - Défaut: `true`
+ - Description: Si les microagents doivent être utilisés
- `disabled_microagents`
- - Type : `list of str`
- - Valeur par défaut : `None`
- - Description : Liste des micro-agents à désactiver
+ - Type: `liste de str`
+ - Défaut: `None`
+ - Description: Une liste de microagents à désactiver
+
+## Configuration du Sandbox
+
+Les options de configuration du sandbox sont définies dans la section `[sandbox]` du fichier `config.toml`.
+
+Pour les utiliser avec la commande docker, passez `-e SANDBOX_`. Exemple: `-e SANDBOX_TIMEOUT`.
### Exécution
- `timeout`
- - Type : `int`
- - Valeur par défaut : `120`
- - Description : Délai d'expiration du bac à sable, en secondes
+ - Type: `int`
+ - Défaut: `120`
+ - Description: Délai d'attente du sandbox en secondes
- `user_id`
- - Type : `int`
- - Valeur par défaut : `1000`
- - Description : ID de l'utilisateur du bac à sable
+ - Type: `int`
+ - Défaut: `1000`
+ - Description: ID utilisateur du sandbox
+
+### Image du conteneur
+- `base_container_image`
+ - Type: `str`
+ - Défaut: `"nikolaik/python-nodejs:python3.12-nodejs22"`
+ - Description: Image de conteneur à utiliser pour le sandbox
+
+### Réseau
+- `use_host_network`
+ - Type: `bool`
+ - Défaut: `false`
+ - Description: Utiliser le réseau de l'hôte
+
+- `runtime_binding_address`
+ - Type: `str`
+ - Défaut: `0.0.0.0`
+ - Description: L'adresse de liaison pour les ports d'exécution. Elle spécifie quelle interface réseau sur la machine hôte Docker doit lier les ports d'exécution.
+
+### Linting et Plugins
+- `enable_auto_lint`
+ - Type: `bool`
+ - Défaut: `false`
+ - Description: Activer le linting automatique après l'édition
+
+- `initialize_plugins`
+ - Type: `bool`
+ - Défaut: `true`
+ - Description: Si les plugins doivent être initialisés
+
+### Dépendances et Environnement
+- `runtime_extra_deps`
+ - Type: `str`
+ - Défaut: `""`
+ - Description: Dépendances supplémentaires à installer dans l'image d'exécution
+
+- `runtime_startup_env_vars`
+ - Type: `dict`
+ - Défaut: `{}`
+ - Description: Variables d'environnement à définir au lancement de l'exécution
+
+### Évaluation
+- `browsergym_eval_env`
+ - Type: `str`
+ - Défaut: `""`
+ - Description: Environnement BrowserGym à utiliser pour l'évaluation
+
+## Configuration de Sécurité
+
+Les options de configuration de sécurité sont définies dans la section `[security]` du fichier `config.toml`.
+
+Pour les utiliser avec la commande docker, passez `-e SECURITY
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/customization/repository.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/customization/repository.md
new file mode 100644
index 000000000000..46352db69dbd
--- /dev/null
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/customization/repository.md
@@ -0,0 +1,23 @@
+# Personnalisation du dépôt
+
+Vous pouvez personnaliser la façon dont OpenHands interagit avec votre dépôt en créant un
+répertoire `.openhands` à la racine.
+
+## Microagents
+
+Les microagents vous permettent d'étendre les prompts d'OpenHands avec des informations spécifiques à votre projet et de définir comment OpenHands
+doit fonctionner. Consultez [Vue d'ensemble des microagents](../prompting/microagents-overview) pour plus d'informations.
+
+
+## Script de configuration
+Vous pouvez ajouter un fichier `.openhands/setup.sh`, qui s'exécutera chaque fois qu'OpenHands commence à travailler avec votre dépôt.
+C'est un emplacement idéal pour installer des dépendances, définir des variables d'environnement et effectuer d'autres tâches de configuration.
+
+Par exemple :
+```bash
+#!/bin/bash
+export MY_ENV_VAR="my value"
+sudo apt-get update
+sudo apt-get install -y lsof
+cd frontend && npm install ; cd ..
+```
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/feedback.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/feedback.md
index f8942943aeb6..b9641e1f60db 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/feedback.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/feedback.md
@@ -1,23 +1,21 @@
+# ✅ Fournir des Commentaires
+Lorsque vous utilisez OpenHands, vous rencontrerez des cas où les choses fonctionnent bien, et d'autres où ce n'est pas le cas. Nous vous encourageons à fournir des commentaires lorsque vous utilisez OpenHands pour aider à donner un retour à l'équipe de développement et, peut-être plus important encore, créer un corpus ouvert d'exemples d'entraînement pour les agents de codage -- Share-OpenHands!
-# ✅ Fournir des commentaires
+## 📝 Comment Fournir des Commentaires
-Lorsque vous utilisez OpenHands, vous rencontrerez des cas où les choses fonctionnent bien, et d'autres où elles ne fonctionnent pas. Nous vous encourageons à fournir des commentaires lorsque vous utilisez OpenHands pour aider à donner des retours à l'équipe de développement, et peut-être plus important encore, créer un corpus ouvert d'exemples d'entraînement d'agents de codage -- Share-OpenHands !
-
-## 📝 Comment fournir des commentaires
-
-Fournir des commentaires est facile ! Lorsque vous utilisez OpenHands, vous pouvez appuyer sur le bouton pouce vers le haut ou pouce vers le bas à tout moment pendant votre interaction. Vous serez invité à fournir votre adresse e-mail (par exemple, afin que nous puissions vous contacter si nous voulons poser des questions de suivi), et vous pouvez choisir si vous souhaitez fournir des commentaires publiquement ou en privé.
+Fournir des commentaires est facile ! Lorsque vous utilisez OpenHands, vous pouvez appuyer sur le bouton pouce levé ou pouce baissé à tout moment pendant votre interaction. Il vous sera demandé de fournir votre adresse e-mail (par exemple, pour que nous puissions vous contacter si nous souhaitons poser des questions complémentaires), et vous pouvez choisir si vous souhaitez fournir des commentaires publiquement ou en privé.
VIDEO
-## 📜 Utilisation des données et confidentialité
+## 📜 Utilisation des Données et Confidentialité
### Paramètres de partage des données
-Lorsque vous soumettez des données, vous pouvez les soumettre publiquement ou en privé.
+Lorsque vous soumettez des données, vous pouvez les soumettre soit publiquement, soit en privé.
-* Les données **publiques** seront distribuées sous la licence MIT, comme OpenHands lui-même, et pourront être utilisées par la communauté pour entraîner et tester des modèles. Évidemment, les commentaires que vous pouvez rendre publics seront plus précieux pour la communauté dans son ensemble, donc lorsque vous ne traitez pas d'informations sensibles, nous vous encourageons à choisir cette option !
-* Les données **privées** ne seront partagées qu'avec l'équipe OpenHands dans le but d'améliorer OpenHands.
+- Les données **publiques** seront distribuées sous la licence MIT, comme OpenHands lui-même, et pourront être utilisées par la communauté pour entraîner et tester des modèles. Évidemment, les commentaires que vous pouvez rendre publics seront plus précieux pour la communauté dans son ensemble, donc lorsque vous ne traitez pas d'informations sensibles, nous vous encourageons à choisir cette option !
+- Les données **privées** seront mises à la disposition de l'équipe OpenHands dans le but d'améliorer OpenHands. Cependant, un lien avec un identifiant unique sera toujours créé que vous pourrez partager publiquement avec d'autres.
### Qui collecte et stocke les données ?
@@ -25,17 +23,16 @@ Les données sont collectées et stockées par [All Hands AI](https://all-hands.
### Comment les données publiques seront-elles publiées ?
-Les données publiques seront publiées lorsque nous atteindrons des jalons fixes, tels que 1 000 exemples publics, 10 000 exemples publics, etc.
-À ce moment-là, nous suivrons le processus de publication suivant :
+Les données publiques seront publiées lorsque nous atteindrons des jalons fixes, tels que 1 000 exemples publics, 10 000 exemples publics, etc. À ce moment-là, nous suivrons le processus de publication suivant :
-1. Toutes les personnes qui ont contribué à des commentaires publics recevront un e-mail décrivant la publication des données et auront la possibilité de se retirer.
-2. La ou les personnes en charge de la publication des données effectueront un contrôle de la qualité des données, en supprimant les commentaires de mauvaise qualité, en supprimant les adresses e-mail des soumissionnaires et en essayant de supprimer toute information sensible.
+1. Toutes les personnes ayant contribué avec des commentaires publics recevront un e-mail décrivant la publication des données et auront la possibilité de se désinscrire.
+2. La ou les personnes responsables de la publication des données effectueront un contrôle de qualité des données, supprimant les commentaires de faible qualité, supprimant les adresses e-mail des soumissionnaires et tentant de supprimer toute information sensible.
3. Les données seront publiées publiquement sous la licence MIT via des sites couramment utilisés tels que GitHub ou Hugging Face.
-### Que faire si je veux que mes données soient supprimées ?
+### Que faire si je souhaite que mes données soient supprimées ?
Pour les données sur les serveurs d'All Hands AI, nous sommes heureux de les supprimer sur demande :
-**Une pièce de données :** Si vous souhaitez supprimer une pièce de données, nous ajouterons prochainement un mécanisme pour supprimer les pièces de données en utilisant le lien et le mot de passe qui s'affichent sur l'interface lorsque vous soumettez des données.
+**Une Seule Donnée :** Si vous souhaitez qu'une donnée soit supprimée, nous ajouterons prochainement un mécanisme pour supprimer des éléments de données en utilisant le lien et le mot de passe qui s'affichent sur l'interface lorsque vous soumettez des données.
-**Toutes les données :** Si vous souhaitez que toutes vos données soient supprimées, ou si vous n'avez pas l'ID et le mot de passe que vous avez reçus lors de la soumission des données, veuillez contacter `contact@all-hands.dev` à partir de l'adresse e-mail que vous avez enregistrée lorsque vous avez initialement soumis les données.
+**Toutes les Données :** Si vous souhaitez que toutes vos données soient supprimées, ou si vous ne disposez pas de l'identifiant et du mot de passe que vous avez reçus lors de la soumission des données, veuillez contacter `contact@all-hands.dev` depuis l'adresse e-mail que vous avez enregistrée lors de la soumission initiale des données.
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/getting-started.mdx b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/getting-started.mdx
index 85e11a0e7239..cfbbe96c2347 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/getting-started.mdx
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/getting-started.mdx
@@ -1,113 +1,99 @@
+# Premiers pas avec OpenHands
-
-# Démarrer avec OpenHands
-
-Vous avez donc [installé OpenHands](./installation) et avez
+Vous avez [exécuté OpenHands](./installation) et vous avez
[configuré votre LLM](./installation#setup). Et maintenant ?
-OpenHands peut vous aider à aborder une grande variété de tâches d'ingénierie. Mais la technologie
-est encore nouvelle, et nous sommes loin d'avoir des agents capables de prendre en charge des tâches
-d'ingénierie vastes et compliquées sans aucune aide. Il est donc important de se faire une idée de ce que l'agent
-fait bien, et où il pourrait avoir besoin d'un coup de main.
+OpenHands peut vous aider pour diverses tâches d'ingénierie. Cependant, la technologie est encore nouvelle, et nous sommes loin d'avoir
+des agents capables de gérer des tâches complexes de manière autonome. Il est important de comprendre ce que l'agent fait bien et où il
+a besoin de soutien.
## Hello World
-La première chose que vous voudrez peut-être essayer est un simple exemple "hello world".
-Cela peut être plus compliqué qu'il n'y paraît !
+Commencez par un simple exemple "hello world". Cela pourrait être plus délicat qu'il n'y paraît !
-Essayez de demander à l'agent :
-> Veuillez écrire un script bash hello.sh qui affiche "hello world!"
+Demandez à l'agent :
+> Écrivez un script bash hello.sh qui affiche "hello world!"
-Vous devriez constater que l'agent non seulement écrit le script, mais définit également les
-permissions correctes et exécute le script pour vérifier la sortie.
+L'agent écrira le script, définira les permissions correctes et l'exécutera pour vérifier la sortie.
Vous pouvez continuer à demander à l'agent d'affiner votre code. C'est une excellente façon de
-travailler avec les agents. Commencez simplement, et itérez.
+travailler avec les agents. Commencez simplement, puis itérez.
-> Veuillez modifier hello.sh pour qu'il accepte un nom comme premier argument, mais par défaut "world"
+> Modifiez hello.sh pour qu'il accepte un nom comme premier argument, mais utilise "world" par défaut
-Vous pouvez également travailler dans n'importe quel langage dont vous avez besoin, bien que l'agent puisse avoir besoin de passer du
-temps à configurer son environnement !
+Vous pouvez également utiliser n'importe quel langage dont vous avez besoin. L'agent peut avoir besoin de temps pour configurer l'environnement.
-> Veuillez convertir hello.sh en un script Ruby, et l'exécuter
+> Veuillez convertir hello.sh en script Ruby, et exécutez-le
## Construire à partir de zéro
-Les agents se débrouillent exceptionnellement bien pour les tâches "greenfield" (tâches où ils n'ont pas besoin
-de contexte sur une base de code existante) et ils peuvent simplement commencer à partir de zéro.
-
-Il est préférable de commencer par une tâche simple, puis d'itérer. Il est également préférable d'être
-aussi précis que possible sur ce que vous voulez, sur la pile technologique à utiliser, etc.
+Les agents excellent dans les tâches "greenfield", où ils n'ont pas besoin de contexte sur le code existant et
+peuvent partir de zéro.
+Commencez par une tâche simple et itérez à partir de là. Soyez précis sur ce que vous voulez et la pile technologique.
Par exemple, nous pourrions construire une application TODO :
-> Veuillez créer une application basique de liste de tâches en React. Elle devrait être uniquement frontend, et tout l'état
-> devrait être conservé dans localStorage.
-
-Nous pouvons continuer à itérer sur l'application une fois le squelette en place :
+> Construisez une application TODO frontend uniquement en React. Tout l'état doit être stocké dans localStorage.
-> Veuillez permettre d'ajouter une date d'échéance optionnelle à chaque tâche
+Une fois la structure de base en place, continuez à affiner :
-Tout comme avec le développement normal, il est bon de commiter et de pousser votre code fréquemment.
-De cette façon, vous pouvez toujours revenir à un ancien état si l'agent dévie.
-Vous pouvez demander à l'agent de commiter et de pousser pour vous :
+> Permettez d'ajouter une date d'échéance optionnelle à chaque tâche.
-> Veuillez commiter les changements et les pousser sur une nouvelle branche appelée "feature/due-dates"
+Comme pour le développement normal, committez et poussez votre code souvent.
+De cette façon, vous pouvez toujours revenir à un état antérieur si l'agent s'égare.
+Vous pouvez demander à l'agent de committer et pousser pour vous :
+> Committez les changements et poussez-les vers une nouvelle branche appelée "feature/due-dates"
## Ajouter du nouveau code
-OpenHands peut également faire un excellent travail en ajoutant du nouveau code à une base de code existante.
+OpenHands est excellent pour ajouter du nouveau code à une base de code existante.
-Par exemple, vous pouvez demander à OpenHands d'ajouter une nouvelle action GitHub à votre projet
-qui analyse votre code. OpenHands peut jeter un coup d'œil à votre base de code pour voir quel langage
-il doit utiliser, mais ensuite il peut simplement déposer un nouveau fichier dans `./github/workflows/lint.yml`
+Par exemple, vous pouvez demander à OpenHands d'ajouter une action GitHub qui vérifie votre code. Il pourrait vérifier votre base de code pour
+déterminer le langage, puis créer un nouveau fichier dans `./github/workflows/lint.yml`.
-> Veuillez ajouter une action GitHub qui analyse le code dans ce dépôt
+> Ajoutez une action GitHub qui vérifie le code dans ce dépôt.
-Certaines tâches peuvent nécessiter un peu plus de contexte. Bien qu'OpenHands puisse utiliser `ls` et `grep`
-pour rechercher dans votre base de code, fournir le contexte à l'avance lui permet d'aller plus vite,
-et plus précisément. Et cela vous coûtera moins de tokens !
+Certaines tâches nécessitent plus de contexte. Bien qu'OpenHands puisse utiliser des commandes comme ls et grep pour rechercher, fournir du contexte dès le départ
+accélère les choses et réduit l'utilisation de tokens.
-> Veuillez modifier ./backend/api/routes.js pour ajouter une nouvelle route qui renvoie une liste de toutes les tâches
+> Modifiez ./backend/api/routes.js pour ajouter une nouvelle route qui renvoie une liste de toutes les tâches.
-> Veuillez ajouter un nouveau composant React qui affiche une liste de Widgets dans le répertoire ./frontend/components.
+> Ajoutez un nouveau composant React au répertoire ./frontend/components pour afficher une liste de Widgets.
> Il devrait utiliser le composant Widget existant.
## Refactoring
-OpenHands est excellent pour refactoriser du code existant, surtout par petits morceaux.
-Vous ne voulez probablement pas essayer de réarchitecturer toute votre base de code, mais diviser
-les longs fichiers et fonctions, renommer les variables, etc. ont tendance à très bien fonctionner.
+OpenHands est très efficace pour refactoriser du code en petits morceaux. Plutôt que de réarchitecturer l'ensemble de la base de code,
+il est plus efficace de décomposer les fichiers et fonctions longs ou de renommer des variables.
-> Veuillez renommer toutes les variables à une lettre dans ./app.go
+> Renommez toutes les variables à une seule lettre dans ./app.go.
-> Veuillez diviser la fonction `build_and_deploy_widgets` en deux fonctions, `build_widgets` et `deploy_widgets` dans widget.php
+> Divisez la fonction `build_and_deploy_widgets` en deux fonctions, `build_widgets` et `deploy_widgets` dans widget.php.
-> Veuillez diviser ./api/routes.js en fichiers séparés pour chaque route
+> Décomposez ./api/routes.js en fichiers séparés pour chaque route.
## Corrections de bugs
-OpenHands peut également vous aider à traquer et corriger des bugs dans votre code. Mais, comme tout
-développeur le sait, la correction de bugs peut être extrêmement délicate, et souvent OpenHands aura besoin de plus de contexte.
-Cela aide si vous avez diagnostiqué le bug, mais que vous voulez qu'OpenHands comprenne la logique.
+OpenHands peut aider à traquer et corriger des bugs, mais la correction de bugs peut être délicate et nécessite souvent plus de contexte.
+C'est utile si vous avez déjà diagnostiqué le problème et avez juste besoin qu'OpenHands gère la logique.
-> Actuellement, le champ email dans le point de terminaison `/subscribe` rejette les domaines .io. Veuillez corriger cela.
+> Le champ email dans le point de terminaison `/subscribe` rejette les domaines .io. Corrigez cela.
-> La fonction `search_widgets` dans ./app.py effectue une recherche sensible à la casse. Veuillez la rendre insensible à la casse.
+> La fonction `search_widgets` dans ./app.py effectue une recherche sensible à la casse. Rendez-la insensible à la casse.
-Il est souvent utile de faire du développement piloté par les tests lors de la correction de bugs avec un agent.
-Vous pouvez demander à l'agent d'écrire un nouveau test, puis d'itérer jusqu'à ce qu'il corrige le bug :
+Pour la correction de bugs, le développement piloté par les tests peut être vraiment utile. Vous pouvez demander à l'agent d'écrire un nouveau test et d'itérer
+jusqu'à ce que le bug soit corrigé :
-> La fonction `hello` plante sur la chaîne vide. Veuillez écrire un test qui reproduit ce bug, puis corrigez le code pour qu'il passe.
+> La fonction `hello` plante sur une chaîne vide. Écrivez un test qui reproduit ce bug, puis corrigez le code pour qu'il passe.
## Plus
-OpenHands est capable d'aider sur à peu près n'importe quelle tâche de codage. Mais il faut de la pratique
-pour en tirer le meilleur parti. N'oubliez pas de :
-* Garder vos tâches petites
-* Être aussi précis que possible
-* Fournir autant de contexte que possible
-* Commiter et pousser fréquemment
+OpenHands peut vous aider pour presque n'importe quelle tâche de codage, mais il faut un peu de pratique pour obtenir les meilleurs résultats.
+Gardez ces conseils à l'esprit :
+* Gardez vos tâches petites.
+* Soyez précis.
+* Fournissez beaucoup de contexte.
+* Committez et poussez fréquemment.
-Voir [Bonnes pratiques de prompting](./prompting/prompting-best-practices) pour plus de conseils sur la façon de tirer le meilleur parti d'OpenHands.
+Consultez [Meilleures pratiques de prompt](./prompting/prompting-best-practices) pour plus de conseils sur la façon de tirer le meilleur parti d'OpenHands.
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/cli-mode.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/cli-mode.md
index be5524d370f7..001b3c550b1c 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/cli-mode.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/cli-mode.md
@@ -1,5 +1,3 @@
-
-
# Mode CLI
OpenHands peut être exécuté en mode CLI interactif, ce qui permet aux utilisateurs de démarrer une session interactive via la ligne de commande.
@@ -8,105 +6,50 @@ Ce mode est différent du [mode headless](headless-mode), qui est non interactif
## Avec Python
-Pour démarrer une session OpenHands interactive via la ligne de commande, suivez ces étapes :
-
-1. Assurez-vous d'avoir suivi les [instructions de configuration de développement](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md).
+Pour démarrer une session interactive OpenHands via la ligne de commande :
+1. Assurez-vous d'avoir suivi les [instructions de configuration pour le développement](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md).
2. Exécutez la commande suivante :
```bash
poetry run python -m openhands.core.cli
```
-Cette commande démarrera une session interactive où vous pourrez saisir des tâches et recevoir des réponses d'OpenHands.
+Cette commande lancera une session interactive où vous pourrez saisir des tâches et recevoir des réponses d'OpenHands.
-Vous devrez vous assurer de définir votre modèle, votre clé API et d'autres paramètres via des variables d'environnement
+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`](https://github.com/All-Hands-AI/OpenHands/blob/main/config.template.toml).
-
## Avec Docker
-Pour exécuter OpenHands en mode CLI avec Docker, suivez ces étapes :
+Pour exécuter OpenHands en mode CLI avec Docker :
-1. Définissez `WORKSPACE_BASE` sur le répertoire que vous voulez qu'OpenHands modifie :
+1. Définissez les variables d'environnement suivantes dans votre terminal :
-```bash
-WORKSPACE_BASE=$(pwd)/workspace
-```
-
-2. Définissez `LLM_MODEL` sur le modèle que vous voulez utiliser :
-
-```bash
-LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"
-
-```
+- `SANDBOX_VOLUMES` pour spécifier le répertoire auquel vous souhaitez qu'OpenHands accède (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`).
+- `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"`).
-3. Définissez `LLM_API_KEY` sur votre clé API :
-
-```bash
-LLM_API_KEY="sk_test_12345"
-```
-
-4. Exécutez la commande Docker suivante :
+2. Exécutez la commande Docker suivante :
```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 \
- -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 \
--name openhands-app-$(date +%Y%m%d%H%M%S) \
docker.all-hands.dev/all-hands-ai/openhands:0.36 \
python -m openhands.core.cli
```
-Cette commande démarrera une session interactive dans Docker où vous pourrez saisir des tâches et recevoir des réponses d'OpenHands.
-
-## Exemples de commandes CLI et de sorties attendues
-
-Voici quelques exemples de commandes CLI et leurs sorties attendues :
-
-### Exemple 1 : Tâche simple
-
-```bash
-How can I help? >> Écrivez un script Python qui affiche "Hello, World!"
-```
-
-Sortie attendue :
-
-```bash
-🤖 Bien sûr ! Voici un script Python qui affiche "Hello, World!" :
-
-❯ print("Hello, World!")
-```
-
-### Exemple 2 : Commande Bash
+Cette commande lancera une session interactive dans Docker où vous pourrez saisir des tâches et recevoir des réponses d'OpenHands.
-```bash
-How can I help? >> Créez un répertoire nommé "test_dir"
-```
-
-Sortie attendue :
-
-```bash
-🤖 Création d'un répertoire nommé "test_dir" :
-
-❯ mkdir test_dir
-```
-
-### Exemple 3 : Gestion des erreurs
-
-```bash
-How can I help? >> Supprimez un fichier inexistant
-```
-
-Sortie attendue :
-
-```bash
-🤖 Une erreur s'est produite. Veuillez réessayer.
-```
+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é.
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/custom-sandbox-guide.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/custom-sandbox-guide.md
index d3209c5d9f2e..8fb03e824024 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/custom-sandbox-guide.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/custom-sandbox-guide.md
@@ -1,50 +1,65 @@
+# Sandbox personnalisé
-
-# Sandbox Personnalisé
+:::note
+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](https://hub.docker.com/r/nikolaik/python-nodejs)) est livré avec certains paquets installés tels que Python et Node.js mais peut nécessiter l'installation d'autres logiciels par défaut.
+Le sandbox OpenHands par défaut (`python-nodejs:python3.12-nodejs22` de [nikolaik/python-nodejs](https://hub.docker.com/r/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 :
-1. Utiliser une image existante avec les logiciels requis.
-2. Créer votre propre image Docker personnalisée.
+- 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 passer la section `Créer Votre Image Docker`.
+Si vous choisissez la première option, vous pouvez ignorer la section `Créer votre image Docker`.
-## 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é, créez un `Dockerfile` avec le contenu suivant :
+Par exemple, si vous voulez qu'OpenHands ait `ruby` installé, vous pourriez créer un `Dockerfile` avec le contenu suivant :
```dockerfile
-FROM debian:latest
+FROM nikolaik/python-nodejs:python3.12-nodejs22
-# Installer les paquets requis
+# Install required packages
RUN apt-get update && apt-get install -y ruby
```
-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 :
+Ou vous pourriez utiliser une image de base spécifique à Ruby :
+```dockerfile
+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 :
```bash
docker build -t custom-image .
```
Cela produira une nouvelle image appelée `custom-image`, qui sera disponible dans Docker.
-> Notez que dans la configuration décrite dans ce document, OpenHands s'exécutera en tant qu'utilisateur "openhands" à l'intérieur du sandbox et donc tous les paquets installés via le docker file devraient être disponibles pour tous les utilisateurs du système, pas seulement root.
+## Utilisation de la commande Docker
+
+Lorsque vous exécutez OpenHands en utilisant [la commande docker](/modules/usage/installation#start-the-app), remplacez `-e SANDBOX_RUNTIME_CONTAINER_IMAGE=...` par `-e SANDBOX_BASE_CONTAINER_IMAGE=` :
-## Utilisation du Workflow de Développement
+```commandline
+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](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md).
-### Spécifier l'Image de Base du Sandbox
+### Spécifier l'image de base du Sandbox
-Dans le fichier `config.toml` dans le répertoire OpenHands, définissez `base_container_image` sur l'image que vous souhaitez utiliser. Cela peut être une image que vous avez déjà extraite ou une que vous avez construite :
+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 :
```bash
[core]
@@ -53,10 +68,28 @@ Dans le fichier `config.toml` dans le répertoire OpenHands, définissez `base_c
base_container_image="custom-image"
```
-### Exécution
+### Options de configuration supplémentaires
-Exécutez OpenHands en exécutant ```make run``` dans le répertoire de niveau supérieur.
+Le fichier `config.toml` prend en charge plusieurs autres options pour personnaliser votre sandbox :
-## Explication Technique
+```toml
+[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
-Veuillez vous référer à la [section image docker personnalisée de la documentation d'exécution](https://docs.all-hands.dev/modules/usage/architecture/runtime#advanced-how-openhands-builds-and-maintains-od-runtime-images) pour plus de détails.
+Exécutez OpenHands en lançant ```make run``` dans le répertoire principal.
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/debugging.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/debugging.md
index cc5f10827894..1c67c7284f49 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/debugging.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/debugging.md
@@ -1,12 +1,10 @@
-
-
# Débogage
Ce qui suit est destiné à servir d'introduction au débogage d'OpenHands à des fins de développement.
## Serveur / VSCode
-Le `launch.json` suivant permettra de déboguer les éléments agent, contrôleur et serveur, mais pas le bac à sable (qui s'exécute dans docker). Il ignorera toutes les modifications à l'intérieur du répertoire `workspace/` :
+Le fichier `launch.json` suivant permettra de déboguer les éléments de l'agent, du contrôleur et du serveur, mais pas le bac à sable (qui s'exécute dans Docker). Il ignorera tous les changements dans le répertoire `workspace/` :
```
{
@@ -38,7 +36,7 @@ Le `launch.json` suivant permettra de déboguer les éléments agent, contrôleu
}
```
-Des configurations de débogage plus spécifiques qui incluent plus de paramètres peuvent être spécifiées :
+Des configurations de débogage plus spécifiques qui incluent davantage de paramètres peuvent être spécifiées :
```
...
@@ -49,7 +47,7 @@ Des configurations de débogage plus spécifiques qui incluent plus de paramètr
"module": "openhands.core.main",
"args": [
"-t",
- "Demandez-moi quelle est votre tâche.",
+ "Ask me what your task is.",
"-d",
"${workspaceFolder}/workspace",
"-c",
@@ -64,10 +62,10 @@ Des configurations de débogage plus spécifiques qui incluent plus de paramètr
...
```
-Les valeurs dans l'extrait ci-dessus peuvent être mises à jour de telle sorte que :
+Les valeurs dans l'extrait ci-dessus peuvent être mises à jour de sorte que :
* *t* : la tâche
- * *d* : le répertoire de l'espace de travail openhands
+ * *d* : le répertoire de travail openhands
* *c* : l'agent
* *l* : la configuration LLM (prédéfinie dans config.toml)
- * *n* : le nom de la session (par exemple, le nom du flux d'événements)
+ * *n* : nom de session (par exemple, nom d'eventstream)
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/development-overview.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/development-overview.md
new file mode 100644
index 000000000000..6a4805d612a9
--- /dev/null
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/development-overview.md
@@ -0,0 +1,74 @@
+---
+sidebar_position: 9
+---
+
+# Aperçu du développement
+
+Ce guide fournit un aperçu des principales ressources de documentation disponibles dans le dépôt OpenHands. Que vous souhaitiez contribuer, comprendre l'architecture ou travailler sur des composants spécifiques, ces ressources vous aideront à naviguer efficacement dans le code.
+
+## Documentation principale
+
+### Fondamentaux du projet
+- **Aperçu principal du projet** (`/README.md`)
+ Le point d'entrée principal pour comprendre OpenHands, y compris les fonctionnalités et les instructions de configuration de base.
+
+- **Guide de développement** (`/Development.md`)
+ Guide complet pour les développeurs travaillant sur OpenHands, incluant la configuration, les exigences et les flux de travail de développement.
+
+- **Directives de contribution** (`/CONTRIBUTING.md`)
+ Informations essentielles pour les contributeurs, couvrant le style de code, le processus de PR et les flux de travail de contribution.
+
+### Documentation des composants
+
+#### Frontend
+- **Application Frontend** (`/frontend/README.md`)
+ Guide complet pour configurer et développer l'application frontend basée sur React.
+
+#### Backend
+- **Implémentation Backend** (`/openhands/README.md`)
+ Documentation détaillée de l'implémentation et de l'architecture du backend Python.
+
+- **Documentation du serveur** (`/openhands/server/README.md`)
+ Détails d'implémentation du serveur, documentation API et architecture des services.
+
+- **Environnement d'exécution** (`/openhands/runtime/README.md`)
+ Documentation couvrant l'environnement d'exécution, le modèle d'exécution et les configurations d'exécution.
+
+#### Infrastructure
+- **Documentation des conteneurs** (`/containers/README.md`)
+ Informations complètes sur les conteneurs Docker, les stratégies de déploiement et la gestion des conteneurs.
+
+### Tests et évaluation
+- **Guide des tests unitaires** (`/tests/unit/README.md`)
+ Instructions pour écrire, exécuter et maintenir les tests unitaires.
+
+- **Cadre d'évaluation** (`/evaluation/README.md`)
+ Documentation du cadre d'évaluation, des benchmarks et des tests de performance.
+
+### Fonctionnalités avancées
+- **Architecture des microagents** (`/microagents/README.md`)
+ Informations détaillées sur l'architecture des microagents, leur implémentation et leur utilisation.
+
+### Normes de documentation
+- **Guide de style de documentation** (`/docs/DOC_STYLE_GUIDE.md`)
+ Normes et directives pour la rédaction et la maintenance de la documentation du projet.
+
+## Débuter avec le développement
+
+Si vous débutez dans le développement avec OpenHands, nous vous recommandons de suivre cette séquence :
+
+1. Commencez par le `README.md` principal pour comprendre l'objectif et les fonctionnalités du projet
+2. Consultez les directives de `CONTRIBUTING.md` si vous prévoyez de contribuer
+3. Suivez les instructions de configuration dans `Development.md`
+4. Plongez dans la documentation spécifique des composants selon votre domaine d'intérêt :
+ - Les développeurs frontend devraient se concentrer sur `/frontend/README.md`
+ - Les développeurs backend devraient commencer par `/openhands/README.md`
+ - Le travail d'infrastructure devrait commencer par `/containers/README.md`
+
+## Mises à jour de la documentation
+
+Lorsque vous apportez des modifications au code, veuillez vous assurer que :
+1. La documentation pertinente est mise à jour pour refléter vos changements
+2. Les nouvelles fonctionnalités sont documentées dans les fichiers README appropriés
+3. Tout changement d'API est reflété dans la documentation du serveur
+4. La documentation suit le guide de style dans `/docs/DOC_STYLE_GUIDE.md`
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/evaluation-harness.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/evaluation-harness.md
index b0aee6764acf..7ea683e05fd9 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/evaluation-harness.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/evaluation-harness.md
@@ -1,19 +1,17 @@
-
-
# Évaluation
Ce guide fournit un aperçu de la façon d'intégrer votre propre benchmark d'évaluation dans le framework OpenHands.
-## Configuration de l'environnement et de la configuration LLM
+## Configuration de l'environnement et configuration du LLM
Veuillez suivre les instructions [ici](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md) pour configurer votre environnement de développement local.
-OpenHands en mode développement utilise `config.toml` pour garder une trace de la plupart des configurations.
+OpenHands en mode développement utilise `config.toml` pour suivre la plupart des configurations.
-Voici un exemple de fichier de configuration que vous pouvez utiliser pour définir et utiliser plusieurs LLMs :
+Voici un exemple de fichier de configuration que vous pouvez utiliser pour définir et utiliser plusieurs LLM :
```toml
[llm]
-# IMPORTANT : ajoutez votre clé API ici et définissez le modèle que vous souhaitez évaluer
+# IMPORTANT: ajoutez votre clé API ici et définissez le modèle que vous souhaitez évaluer
model = "claude-3-5-sonnet-20241022"
api_key = "sk-XXX"
@@ -47,7 +45,7 @@ Par exemple :
```bash
poetry run python ./openhands/core/main.py \
-i 10 \
- -t "Écrivez-moi un script bash qui affiche hello world." \
+ -t "Write me a bash script that prints hello world." \
-c CodeActAgent \
-l llm
```
@@ -55,29 +53,29 @@ poetry run python ./openhands/core/main.py \
Cette commande exécute OpenHands avec :
- Un maximum de 10 itérations
- La description de tâche spécifiée
-- En utilisant CodeActAgent
+- Utilisant le CodeActAgent
- Avec la configuration LLM définie dans la section `llm` de votre fichier `config.toml`
## Comment fonctionne OpenHands
Le point d'entrée principal d'OpenHands se trouve dans `openhands/core/main.py`. Voici un flux simplifié de son fonctionnement :
-1. Analyse des arguments de ligne de commande et chargement de la configuration
-2. Création d'un environnement d'exécution à l'aide de `create_runtime()`
-3. Initialisation de l'agent spécifié
-4. Exécution du contrôleur à l'aide de `run_controller()`, qui :
- - Attache l'environnement d'exécution à l'agent
+1. Analyser les arguments de ligne de commande et charger la configuration
+2. Créer un environnement d'exécution en utilisant `create_runtime()`
+3. Initialiser l'agent spécifié
+4. Exécuter le contrôleur en utilisant `run_controller()`, qui :
+ - Attache le runtime à l'agent
- Exécute la tâche de l'agent
- Renvoie un état final une fois terminé
-La fonction `run_controller()` est le cœur de l'exécution d'OpenHands. Elle gère l'interaction entre l'agent, l'environnement d'exécution et la tâche, en gérant des choses comme la simulation d'entrée utilisateur et le traitement des événements.
+La fonction `run_controller()` est le cœur de l'exécution d'OpenHands. Elle gère l'interaction entre l'agent, le runtime et la tâche, en gérant des éléments comme la simulation d'entrée utilisateur et le traitement des événements.
-## Le moyen le plus simple de commencer : Explorer les benchmarks existants
+## Façon la plus simple de commencer : Explorer les benchmarks existants
Nous vous encourageons à examiner les différents benchmarks d'évaluation disponibles dans le [répertoire `evaluation/benchmarks/`](https://github.com/All-Hands-AI/OpenHands/blob/main/evaluation/benchmarks) de notre dépôt.
-Pour intégrer votre propre benchmark, nous vous suggérons de commencer par celui qui ressemble le plus à vos besoins. Cette approche peut considérablement rationaliser votre processus d'intégration, vous permettant de vous appuyer sur les structures existantes et de les adapter à vos exigences spécifiques.
+Pour intégrer votre propre benchmark, nous vous suggérons de commencer par celui qui ressemble le plus à vos besoins. Cette approche peut considérablement simplifier votre processus d'intégration, vous permettant de vous appuyer sur des structures existantes et de les adapter à vos exigences spécifiques.
## Comment créer un workflow d'évaluation
@@ -126,7 +124,7 @@ Pour créer un workflow d'évaluation pour votre benchmark, suivez ces étapes :
return config
```
-3. Initialisez l'environnement d'exécution et configurez l'environnement d'évaluation :
+3. Initialisez le runtime et configurez l'environnement d'évaluation :
```python
def initialize_runtime(runtime: Runtime, instance: pd.Series):
# Configurez votre environnement d'évaluation ici
@@ -183,19 +181,19 @@ Pour créer un workflow d'évaluation pour votre benchmark, suivez ces étapes :
Ce workflow configure la configuration, initialise l'environnement d'exécution, traite chaque instance en exécutant l'agent et en évaluant ses actions, puis collecte les résultats dans un objet `EvalOutput`. La fonction `run_evaluation` gère la parallélisation et le suivi de la progression.
-N'oubliez pas de personnaliser les fonctions `get_instruction`, `your_user_response_function` et `evaluate_agent_actions` en fonction des exigences spécifiques de votre benchmark.
+N'oubliez pas de personnaliser les fonctions `get_instruction`, `your_user_response_function` et `evaluate_agent_actions` selon les exigences spécifiques de votre benchmark.
En suivant cette structure, vous pouvez créer un workflow d'évaluation robuste pour votre benchmark dans le framework OpenHands.
-## Comprendre la `user_response_fn`
+## Comprendre la fonction `user_response_fn`
-La `user_response_fn` est un composant crucial dans le workflow d'évaluation d'OpenHands. Elle simule l'interaction de l'utilisateur avec l'agent, permettant des réponses automatisées pendant le processus d'évaluation. Cette fonction est particulièrement utile lorsque vous voulez fournir des réponses cohérentes et prédéfinies aux requêtes ou actions de l'agent.
+La fonction `user_response_fn` est un composant crucial dans le workflow d'évaluation d'OpenHands. Elle simule l'interaction utilisateur avec l'agent, permettant des réponses automatisées pendant le processus d'évaluation. Cette fonction est particulièrement utile lorsque vous souhaitez fournir des réponses cohérentes et prédéfinies aux requêtes ou actions de l'agent.
### Workflow et interaction
-Le workflow correct pour gérer les actions et la `user_response_fn` est le suivant :
+Le workflow correct pour gérer les actions et la fonction `user_response_fn` est le suivant :
1. L'agent reçoit une tâche et commence à la traiter
2. L'agent émet une Action
@@ -203,7 +201,7 @@ Le workflow correct pour gérer les actions et la `user_response_fn` est le suiv
- Le Runtime traite l'Action
- Le Runtime renvoie une Observation
4. Si l'Action n'est pas exécutable (généralement une MessageAction) :
- - La `user_response_fn` est appelée
+ - La fonction `user_response_fn` est appelée
- Elle renvoie une réponse utilisateur simulée
5. L'agent reçoit soit l'Observation, soit la réponse simulée
6. Les étapes 2 à 5 se répètent jusqu'à ce que la tâche soit terminée ou que le nombre maximum d'itérations soit atteint
@@ -214,7 +212,7 @@ Voici une représentation visuelle plus précise :
[Agent]
|
v
- [Émettre une Action]
+ [Émet Action]
|
v
[L'Action est-elle exécutable ?]
@@ -225,48 +223,48 @@ Voici une représentation visuelle plus précise :
[Runtime] [user_response_fn]
| |
v v
- [Renvoyer une Observation] [Réponse simulée]
+ [Renvoie Observation] [Réponse simulée]
\ /
\ /
v v
[L'agent reçoit le feedback]
|
v
- [Continuer ou terminer la tâche]
+ [Continue ou termine la tâche]
```
Dans ce workflow :
- Les actions exécutables (comme l'exécution de commandes ou de code) sont gérées directement par le Runtime
-- Les actions non exécutables (généralement lorsque l'agent veut communiquer ou demander des clarifications) sont gérées par la `user_response_fn`
-- L'agent traite ensuite le feedback, qu'il s'agisse d'une Observation du Runtime ou d'une réponse simulée de la `user_response_fn`
+- Les actions non exécutables (généralement lorsque l'agent veut communiquer ou demander des clarifications) sont gérées par la fonction `user_response_fn`
+- L'agent traite ensuite le feedback, qu'il s'agisse d'une Observation du Runtime ou d'une réponse simulée de la fonction `user_response_fn`
-Cette approche permet une gestion automatisée des actions concrètes et des interactions utilisateur simulées, ce qui la rend adaptée aux scénarios d'évaluation où vous voulez tester la capacité de l'agent à accomplir des tâches avec une intervention humaine minimale.
+Cette approche permet une gestion automatisée des actions concrètes et des interactions utilisateur simulées, ce qui la rend adaptée aux scénarios d'évaluation où vous souhaitez tester la capacité de l'agent à accomplir des tâches avec une intervention humaine minimale.
### Exemple d'implémentation
-Voici un exemple de `user_response_fn` utilisée dans l'évaluation SWE-Bench :
+Voici un exemple de fonction `user_response_fn` utilisée dans l'évaluation SWE-Bench :
```python
def codeact_user_response(state: State | None) -> str:
msg = (
- 'Veuillez continuer à travailler sur la tâche avec l\'approche que vous jugez appropriée.\n'
- 'Si vous pensez avoir résolu la tâche, veuillez d\'abord envoyer votre réponse à l\'utilisateur via un message, puis exit .\n'
- 'IMPORTANT : VOUS NE DEVEZ JAMAIS DEMANDER DE L\'AIDE HUMAINE.\n'
+ 'Please continue working on the task on whatever approach you think is suitable.\n'
+ 'If you think you have solved the task, please first send your answer to user through message and then exit .\n'
+ 'IMPORTANT: YOU SHOULD NEVER ASK FOR HUMAN HELP.\n'
)
if state and state.history:
- # vérifier si l'agent a essayé de parler à l'utilisateur 3 fois, si oui, faire savoir à l'agent qu'il peut abandonner
+ # check if the agent has tried to talk to the user 3 times, if so, let the agent know it can give up
user_msgs = [
event
for event in state.history
if isinstance(event, MessageAction) and event.source == 'user'
]
if len(user_msgs) >= 2:
- # faire savoir à l'agent qu'il peut abandonner quand il a essayé 3 fois
+ # let the agent know that it can give up when it has tried 3 times
return (
msg
- + 'Si vous voulez abandonner, exécutez : exit .\n'
+ + 'If you want to give up, run: exit .\n'
)
return msg
```
@@ -275,6 +273,6 @@ Cette fonction fait ce qui suit :
1. Fournit un message standard encourageant l'agent à continuer à travailler
2. Vérifie combien de fois l'agent a tenté de communiquer avec l'utilisateur
-3. Si l'agent a fait plusieurs tentatives, il lui donne la possibilité d'abandonner
+3. Si l'agent a fait plusieurs tentatives, elle lui fournit une option pour abandonner
-En utilisant cette fonction, vous pouvez assurer un comportement cohérent sur plusieurs exécutions d'évaluation et empêcher l'agent de rester bloqué en attendant une entrée humaine.
+En utilisant cette fonction, vous pouvez assurer un comportement cohérent à travers plusieurs séries d'évaluations et empêcher l'agent de rester bloqué en attendant une entrée humaine.
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/github-action.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/github-action.md
index a12e444be005..d7aa330303af 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/github-action.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/github-action.md
@@ -1,51 +1,51 @@
-
-
# Utilisation de l'Action GitHub OpenHands
-Ce guide explique comment utiliser l'Action GitHub OpenHands, à la fois dans le dépôt OpenHands et dans vos propres projets.
+Ce guide explique comment utiliser l'Action GitHub OpenHands dans vos propres projets.
-## Utilisation de l'Action dans le dépôt OpenHands
+## Utilisation de l'Action dans le Dépôt OpenHands
Pour utiliser l'Action GitHub OpenHands dans un dépôt, vous pouvez :
-1. Créer un ticket dans le dépôt.
-2. Ajouter l'étiquette `fix-me` au ticket ou laisser un commentaire sur le ticket commençant par `@openhands-agent`.
+1. Créer une issue dans le dépôt.
+2. Ajouter l'étiquette `fix-me` à l'issue ou laisser un commentaire sur l'issue commençant par `@openhands-agent`.
-L'action se déclenchera automatiquement et tentera de résoudre le ticket.
+L'action se déclenchera automatiquement et tentera de résoudre l'issue.
-## Installation de l'Action dans un nouveau dépôt
+## Installation de l'Action dans un Nouveau Dépôt
-Pour installer l'Action GitHub OpenHands dans votre propre dépôt, suivez le [README pour le Resolver OpenHands](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/resolver/README.md).
+Pour installer l'Action GitHub OpenHands dans votre propre dépôt, suivez
+le [README du Résolveur OpenHands](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/resolver/README.md).
-## Conseils d'utilisation
+## Conseils d'Utilisation
### Résolution itérative
-1. Créez un ticket dans le dépôt.
-2. Ajoutez l'étiquette `fix-me` au ticket, ou laissez un commentaire commençant par `@openhands-agent`
-3. Examinez la tentative de résolution du ticket en vérifiant la pull request
-4. Faites un suivi avec des commentaires via des commentaires généraux, des commentaires de revue ou des commentaires de fil en ligne
-5. Ajoutez l'étiquette `fix-me` à la pull request, ou adressez un commentaire spécifique en commençant par `@openhands-agent`
+1. Créez une issue dans le dépôt.
+2. Ajoutez l'étiquette `fix-me` à l'issue, ou laissez un commentaire commençant par `@openhands-agent`.
+3. Examinez la tentative de résolution de l'issue en vérifiant la pull request.
+4. Donnez votre feedback via des commentaires généraux, des commentaires de révision ou des commentaires en ligne.
+5. Ajoutez l'étiquette `fix-me` à la pull request, ou répondez à un commentaire spécifique en commençant par `@openhands-agent`.
### Étiquette versus Macro
-- Étiquette (`fix-me`) : Demande à OpenHands de traiter le ticket ou la pull request dans son **intégralité**.
-- Macro (`@openhands-agent`) : Demande à OpenHands de ne considérer que la description du ticket/de la pull request et **le commentaire spécifique**.
+- Étiquette (`fix-me`) : Demande à OpenHands de traiter **l'ensemble** de l'issue ou de la pull request.
+- Macro (`@openhands-agent`) : Demande à OpenHands de considérer uniquement la description de l'issue/pull request et **le commentaire spécifique**.
-## Paramètres avancés
+## Paramètres Avancés
-### Ajouter des paramètres de dépôt personnalisés
+### Ajouter des paramètres personnalisés au dépôt
-Vous pouvez fournir des instructions personnalisées pour OpenHands en suivant le [README pour le resolver](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/resolver/README.md#providing-custom-instructions).
+Vous pouvez fournir des instructions personnalisées pour OpenHands en suivant le [README du résolveur](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/resolver/README.md#providing-custom-instructions).
### Configurations personnalisées
-Le resolver Github vérifiera automatiquement les [secrets de dépôt](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions?tool=webui#creating-secrets-for-a-repository) ou les [variables de dépôt](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/store-information-in-variables#creating-configuration-variables-for-a-repository) valides pour personnaliser son comportement.
+Le résolveur GitHub vérifiera automatiquement les [secrets du dépôt](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions?tool=webui#creating-secrets-for-a-repository) valides ou les [variables du dépôt](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/store-information-in-variables#creating-configuration-variables-for-a-repository) pour personnaliser son comportement.
Les options de personnalisation que vous pouvez définir sont :
-| **Nom de l'attribut** | **Type** | **Objectif** | **Exemple** |
-|----------------------------------| -------- |-------------------------------------------------------------------------------------------------------------|------------------------------------------------------|
-| `LLM_MODEL` | Variable | Définir le LLM à utiliser avec OpenHands | `LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"` |
-| `OPENHANDS_MAX_ITER` | Variable | Définir la limite maximale pour les itérations de l'agent | `OPENHANDS_MAX_ITER=10` |
-| `OPENHANDS_MACRO` | Variable | Personnaliser la macro par défaut pour invoquer le resolver | `OPENHANDS_MACRO=@resolveit` |
-| `OPENHANDS_BASE_CONTAINER_IMAGE` | Variable | Sandbox personnalisé ([en savoir plus](https://docs.all-hands.dev/modules/usage/how-to/custom-sandbox-guide))| `OPENHANDS_BASE_CONTAINER_IMAGE="custom_image"` |
+| **Nom de l'attribut** | **Type** | **Objectif** | **Exemple** |
+| -------------------------------- | -------- | --------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
+| `LLM_MODEL` | Variable | Définir le LLM à utiliser avec OpenHands | `LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"` |
+| `OPENHANDS_MAX_ITER` | Variable | Définir la limite maximale d'itérations de l'agent | `OPENHANDS_MAX_ITER=10` |
+| `OPENHANDS_MACRO` | Variable | Personnaliser la macro par défaut pour invoquer le résolveur | `OPENHANDS_MACRO=@resolveit` |
+| `OPENHANDS_BASE_CONTAINER_IMAGE` | Variable | Sandbox personnalisé ([en savoir plus](https://docs.all-hands.dev/modules/usage/how-to/custom-sandbox-guide)) | `OPENHANDS_BASE_CONTAINER_IMAGE="custom_image"` |
+| `TARGET_BRANCH` | Variable | Fusionner vers une branche autre que `main` | `TARGET_BRANCH="dev"` |
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/gui-mode.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/gui-mode.md
index 4ae04026cac8..7a9a2d4b7f26 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/gui-mode.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/gui-mode.md
@@ -1,168 +1,142 @@
+# Mode GUI
-
-# Mode Interface Graphique
-
-## Introduction
-
-OpenHands fournit un mode Interface Graphique (GUI) convivial pour interagir avec l'assistant IA. Ce mode offre une façon intuitive de configurer l'environnement, gérer les paramètres et communiquer avec l'IA.
+OpenHands fournit un mode d'Interface Graphique Utilisateur (GUI) pour interagir avec l'assistant IA.
## Installation et Configuration
-1. Suivez les instructions du guide [Installation](../installation) pour installer OpenHands.
+1. Suivez les instructions d'installation pour installer OpenHands.
+2. Après avoir exécuté la commande, accédez à OpenHands à [http://localhost:3000](http://localhost:3000).
-2. Après avoir exécuté la commande, accédez à OpenHands à l'adresse [http://localhost:3000](http://localhost:3000).
+## Interagir avec l'interface graphique
-## Interagir avec l'Interface Graphique
+### Configuration initiale
-### Configuration Initiale
-
-1. Lors du premier lancement, vous verrez une fenêtre modale de paramètres.
-2. Sélectionnez un `Fournisseur LLM` et un `Modèle LLM` dans les menus déroulants.
+1. Lors du premier lancement, vous verrez une fenêtre de paramètres.
+2. Sélectionnez un `Fournisseur LLM` et un `Modèle LLM` dans les menus déroulants. Si le modèle requis n'existe pas dans la liste,
+ sélectionnez `voir les paramètres avancés`. Ensuite, activez les options `Avancées` et saisissez-le avec le préfixe correct dans la
+ zone de texte `Modèle personnalisé`.
3. Entrez la `Clé API` correspondante pour le fournisseur choisi.
-4. Cliquez sur "Enregistrer" pour appliquer les paramètres.
+4. Cliquez sur `Enregistrer les modifications` pour appliquer les paramètres.
-### Jetons de Contrôle de Version
+### Jetons de contrôle de version
OpenHands prend en charge plusieurs fournisseurs de contrôle de version. Vous pouvez configurer des jetons pour plusieurs fournisseurs simultanément.
-#### Configuration du Jeton GitHub
-
-OpenHands exporte automatiquement un `GITHUB_TOKEN` vers l'environnement shell s'il est disponible. Cela peut se produire de deux manières :
-
-1. **Localement (OSS)** : L'utilisateur saisit directement son jeton GitHub
-2. **En ligne (SaaS)** : Le jeton est obtenu via l'authentification OAuth GitHub
-
-##### Configuration d'un Jeton GitHub Local
-
-1. **Générer un Personal Access Token (PAT)** :
- - Allez dans Paramètres GitHub > Paramètres développeur > Personal Access Tokens > Tokens (classique)
- - Cliquez sur "Générer un nouveau jeton (classique)"
- - Portées requises :
- - `repo` (Contrôle total des dépôts privés)
- - `workflow` (Mettre à jour les workflows GitHub Action)
- - `read:org` (Lire les données de l'organisation)
-
-2. **Entrer le Jeton dans OpenHands** :
- - Cliquez sur le bouton Paramètres (icône d'engrenage) en haut à droite
- - Accédez à la section "Git Provider Settings"
- - Collez votre jeton dans le champ "Jeton GitHub"
- - Cliquez sur "Enregistrer" pour appliquer les modifications
-
-##### Politiques de Jetons Organisationnels
-
-Si vous travaillez avec des dépôts organisationnels, une configuration supplémentaire peut être nécessaire :
-
-1. **Vérifier les Exigences de l'Organisation** :
- - Les administrateurs de l'organisation peuvent appliquer des politiques de jetons spécifiques
- - Certaines organisations exigent que les jetons soient créés avec SSO activé
- - Consultez les [paramètres de politique de jetons](https://docs.github.com/en/organizations/managing-programmatic-access-to-your-organization/setting-a-personal-access-token-policy-for-your-organization) de votre organisation
-
-2. **Vérifier l'Accès à l'Organisation** :
- - Allez dans les paramètres de votre jeton sur GitHub
- - Recherchez l'organisation sous "Accès à l'organisation"
- - Si nécessaire, cliquez sur "Activer SSO" à côté de votre organisation
- - Terminez le processus d'autorisation SSO
-
-##### Authentification OAuth (Mode En Ligne)
-
-Lorsque vous utilisez OpenHands en mode en ligne, le flux OAuth GitHub :
-
-1. Demande les autorisations suivantes :
- - Accès au dépôt (lecture/écriture)
- - Gestion des workflows
- - Accès en lecture à l'organisation
-
-2. Étapes d'authentification :
- - Cliquez sur "Se connecter avec GitHub" lorsque vous y êtes invité
- - Examinez les autorisations demandées
- - Autorisez OpenHands à accéder à votre compte GitHub
- - Si vous utilisez une organisation, autorisez l'accès à l'organisation si vous y êtes invité
-
-##### Dépannage
-
-Problèmes courants et solutions :
-
-1. **Jeton Non Reconnu** :
- - Assurez-vous que le jeton est correctement enregistré dans les paramètres
- - Vérifiez que le jeton n'a pas expiré
- - Vérifiez que le jeton a les portées requises
- - Essayez de régénérer le jeton
-
-2. **Accès à l'Organisation Refusé** :
- - Vérifiez si SSO est requis mais non activé
- - Vérifiez l'appartenance à l'organisation
- - Contactez l'administrateur de l'organisation si les politiques de jetons bloquent l'accès
-
-3. **Vérifier que le Jeton Fonctionne** :
- - L'application affichera une coche verte si le jeton est valide
- - Essayez d'accéder à un dépôt pour confirmer les autorisations
- - Vérifiez la console du navigateur pour tout message d'erreur
- - Utilisez le bouton "Tester la connexion" dans les paramètres s'il est disponible
-
-#### Configuration du Jeton GitLab
-
-OpenHands exporte automatiquement un `GITLAB_TOKEN` vers l'environnement shell, uniquement pour les installations locales, s'il est disponible.
-
-##### Configuration d'un Jeton GitLab
-
-1. **Générer un Personal Access Token (PAT)** :
- - Sur GitLab, allez dans Paramètres utilisateur > Jetons d'accès
+#### Configuration du jeton GitHub
+
+OpenHands exporte automatiquement un `GITHUB_TOKEN` vers l'environnement shell s'il est fourni :
+
+
+ Configuration d'un jeton GitHub
+
+ 1. **Générer un jeton d'accès personnel (PAT)** :
+ - Sur GitHub, allez dans Paramètres > Paramètres développeur > Jetons d'accès personnels > Jetons (classique).
+ - **Nouveau jeton (classique)**
+ - Portées requises :
+ - `repo` (Contrôle complet des dépôts privés)
+ - **Jetons à portée précise**
+ - Tous les dépôts (Vous pouvez sélectionner des dépôts spécifiques, mais cela affectera les résultats de recherche)
+ - Autorisations minimales (Sélectionnez `Meta Data = Lecture seule` pour la recherche, `Pull Requests = Lecture et écriture` et `Content = Lecture et écriture` pour la création de branches)
+ 2. **Entrer le jeton dans OpenHands** :
+ - Cliquez sur le bouton Paramètres (icône d'engrenage).
+ - Collez votre jeton dans le champ `Jeton GitHub`.
+ - Cliquez sur `Enregistrer` pour appliquer les modifications.
+
+
+
+ Politiques de jetons organisationnels
+
+ Si vous travaillez avec des dépôts organisationnels, une configuration supplémentaire peut être nécessaire :
+
+ 1. **Vérifier les exigences de l'organisation** :
+ - Les administrateurs de l'organisation peuvent imposer des politiques de jetons spécifiques.
+ - Certaines organisations exigent que les jetons soient créés avec SSO activé.
+ - Consultez les [paramètres de politique de jetons](https://docs.github.com/en/organizations/managing-programmatic-access-to-your-organization/setting-a-personal-access-token-policy-for-your-organization) de votre organisation.
+ 2. **Vérifier l'accès à l'organisation** :
+ - Accédez à vos paramètres de jeton sur GitHub.
+ - Recherchez l'organisation sous `Accès à l'organisation`.
+ - Si nécessaire, cliquez sur `Activer SSO` à côté de votre organisation.
+ - Complétez le processus d'autorisation SSO.
+
+
+
+ Dépannage
+
+ Problèmes courants et solutions :
+
+ - **Jeton non reconnu** :
+ - Assurez-vous que le jeton est correctement enregistré dans les paramètres.
+ - Vérifiez que le jeton n'a pas expiré.
+ - Vérifiez que le jeton dispose des portées requises.
+ - Essayez de régénérer le jeton.
+
+ - **Accès à l'organisation refusé** :
+ - Vérifiez si SSO est requis mais non activé.
+ - Vérifiez l'appartenance à l'organisation.
+ - Contactez l'administrateur de l'organisation si les politiques de jetons bloquent l'accès.
+
+ - **Vérification du fonctionnement du jeton** :
+ - L'application affichera une coche verte si le jeton est valide.
+ - Essayez d'accéder à un dépôt pour confirmer les autorisations.
+ - Vérifiez la console du navigateur pour tout message d'erreur.
+
+
+#### Configuration du jeton GitLab
+
+OpenHands exporte automatiquement un `GITLAB_TOKEN` vers l'environnement shell s'il est fourni :
+
+
+ Configuration d'un jeton GitLab
+
+ 1. **Générer un jeton d'accès personnel (PAT)** :
+ - Sur GitLab, allez dans Paramètres utilisateur > Jetons d'accès.
- Créez un nouveau jeton avec les portées suivantes :
- `api` (Accès API)
- - `read_user` (Lecture des informations utilisateur)
- - `read_repository` (Lecture du dépôt)
- - `write_repository` (Écriture du dépôt)
- - Définissez une date d'expiration ou laissez vide pour un jeton sans expiration
-
-2. **Entrer le Jeton dans OpenHands** :
- - Cliquez sur le bouton Paramètres (icône d'engrenage)
- - Accédez à la section `Git Provider Settings`
- - Collez votre jeton dans le champ `Jeton GitLab`
- - Si vous utilisez GitLab auto-hébergé, entrez l'URL de votre instance GitLab
- - Cliquez sur `Enregistrer les modifications` pour appliquer les changements
-
-##### Dépannage
-
-Problèmes courants et solutions :
-
-1. **Jeton Non Reconnu** :
- - Assurez-vous que le jeton est correctement enregistré dans les paramètres
- - Vérifiez que le jeton n'a pas expiré
- - Vérifiez que le jeton a les portées requises
- - Pour les instances auto-hébergées, vérifiez l'URL correcte de l'instance
-
-2. **Accès Refusé** :
- - Vérifiez les permissions d'accès au projet
- - Vérifiez si le jeton possède les portées nécessaires
- - Pour les dépôts de groupe/organisation, assurez-vous d'avoir les accès appropriés
-
-### Paramètres Avancés
-
-1. Basculez sur `Options Avancées` pour accéder aux paramètres supplémentaires.
-2. Utilisez la zone de texte `Modèle Personnalisé` pour saisir manuellement un modèle s'il ne figure pas dans la liste.
-3. Spécifiez une `URL de Base` si requis par votre fournisseur LLM.
-
-### Interface Principale
-
-L'interface principale se compose de plusieurs composants clés :
-
-1. **Fenêtre de Chat** : La zone centrale où vous pouvez voir l'historique de conversation avec l'assistant IA.
-2. **Zone de Saisie** : Située en bas de l'écran, utilisez-la pour taper vos messages ou commandes à l'IA.
-3. **Bouton Envoyer** : Cliquez dessus pour envoyer votre message à l'IA.
-4. **Bouton Paramètres** : Une icône d'engrenage qui ouvre la fenêtre modale des paramètres, vous permettant d'ajuster votre configuration à tout moment.
-5. **Panneau Espace de Travail** : Affiche les fichiers et dossiers de votre espace de travail, vous permettant de naviguer et de visualiser les fichiers, ou les commandes passées de l'agent ou l'historique de navigation web.
+ - `read_user` (Lire les informations utilisateur)
+ - `read_repository` (Lire le dépôt)
+ - `write_repository` (Écrire dans le dépôt)
+ - Définissez une date d'expiration ou laissez-la vide pour un jeton sans expiration.
+ 2. **Entrer le jeton dans OpenHands** :
+ - Cliquez sur le bouton Paramètres (icône d'engrenage).
+ - Collez votre jeton dans le champ `Jeton GitLab`.
+ - Entrez l'URL de votre instance GitLab si vous utilisez GitLab auto-hébergé.
+ - Cliquez sur `Enregistrer` pour appliquer les modifications.
+
+
+
+ Dépannage
+
+ Problèmes courants et solutions :
+
+ - **Jeton non reconnu** :
+ - Assurez-vous que le jeton est correctement enregistré dans les paramètres.
+ - Vérifiez que le jeton n'a pas expiré.
+ - Vérifiez que le jeton dispose des portées requises.
+ - Pour les instances auto-hébergées, vérifiez l'URL correcte de l'instance.
+
+ - **Accès refusé** :
+ - Vérifiez les autorisations d'accès au projet.
+ - Vérifiez si le jeton dispose des portées nécessaires.
+ - Pour les dépôts de groupe/organisation, assurez-vous d'avoir un accès approprié.
+
+
+### Paramètres avancés
+
+1. Dans la page Paramètres, activez les options `Avancées` pour accéder aux paramètres supplémentaires.
+2. Utilisez la zone de texte `Modèle personnalisé` pour saisir manuellement un modèle s'il n'est pas dans la liste.
+3. Spécifiez une `URL de base` si requis par votre fournisseur LLM.
### Interagir avec l'IA
-1. Tapez votre question, demande ou description de tâche dans la zone de saisie.
+1. Tapez votre requête dans la zone de saisie.
2. Cliquez sur le bouton d'envoi ou appuyez sur Entrée pour soumettre votre message.
-3. L'IA traitera votre saisie et fournira une réponse dans la fenêtre de chat.
-4. Vous pouvez poursuivre la conversation en posant des questions de suivi ou en fournissant des informations supplémentaires.
+3. L'IA traitera votre saisie et fournira une réponse dans la fenêtre de discussion.
+4. Vous pouvez poursuivre la conversation en posant des questions complémentaires ou en fournissant des informations supplémentaires.
-## Conseils pour une Utilisation Efficace
+## Conseils pour une utilisation efficace
-1. Soyez précis dans vos demandes pour obtenir les réponses les plus précises et utiles, comme décrit dans les [meilleures pratiques d'incitation](../prompting/prompting-best-practices).
-2. Utilisez le panneau d'espace de travail pour explorer la structure de votre projet.
-3. Utilisez l'un des modèles recommandés, comme décrit dans la section [LLMs](usage/llms/llms.md).
+- Soyez précis dans vos demandes pour obtenir les réponses les plus précises et utiles, comme décrit dans les [meilleures pratiques de prompt](../prompting/prompting-best-practices).
+- Utilisez l'un des modèles recommandés, comme décrit dans la [section LLMs](usage/llms/llms.md).
-N'oubliez pas que le mode Interface Graphique d'OpenHands est conçu pour rendre votre interaction avec l'assistant IA aussi fluide et intuitive que possible. N'hésitez pas à explorer ses fonctionnalités pour maximiser votre productivité.
+N'oubliez pas que le mode GUI d'OpenHands est conçu pour rendre votre interaction avec l'assistant IA aussi fluide et intuitive
+que possible. N'hésitez pas à explorer ses fonctionnalités pour maximiser votre productivité.
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/headless-mode.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/headless-mode.md
index d79c505c8a5f..abda52e7d14d 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/headless-mode.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/how-to/headless-mode.md
@@ -1,61 +1,59 @@
-
-
-# Mode sans interface
+# 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.
-Ceci est différent du [Mode CLI](cli-mode), qui est interactif et mieux adapté au développement actif.
+C'est différent du [Mode CLI](cli-mode), qui est interactif et plus adapté au développement actif.
## Avec Python
-Pour exécuter OpenHands en mode sans interface avec Python,
-[suivez les instructions de configuration de développement](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md),
-puis exécutez :
-
+Pour exécuter OpenHands en mode headless avec Python :
+1. Assurez-vous d'avoir suivi les [instructions de configuration pour le développement](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md).
+2. Exécutez la commande suivante :
```bash
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, votre clé API et d'autres paramètres via des variables d'environnement
+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`](https://github.com/All-Hands-AI/OpenHands/blob/main/config.template.toml).
## Avec Docker
-1. Définissez `WORKSPACE_BASE` sur le répertoire que vous voulez qu'OpenHands modifie :
-
-```bash
-WORKSPACE_BASE=$(pwd)/workspace
-```
-
-2. Définissez `LLM_MODEL` sur le modèle que vous voulez utiliser :
-
-```bash
-LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"
-
-```
+Pour exécuter OpenHands en mode Headless avec Docker :
-3. Définissez `LLM_API_KEY` sur votre clé API :
+1. Définissez les variables d'environnement suivantes dans votre terminal :
-```bash
-LLM_API_KEY="sk_test_12345"
-```
+- `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`).
+- `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"`).
-4. Exécutez la commande Docker suivante :
+2. Exécutez la commande Docker suivante :
```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 \
--name openhands-app-$(date +%Y%m%d%H%M%S) \
docker.all-hands.dev/all-hands-ai/openhands:0.36 \
- python -m openhands.core.main -t "write a bash script that prints hi" --no-auto-continue
+ 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`
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/installation.mdx b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/installation.mdx
index a857caee3bcc..91b075efe518 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/installation.mdx
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/installation.mdx
@@ -1,16 +1,61 @@
-
-
# Exécution d'OpenHands
## Configuration système requise
-* Docker version 26.0.0+ ou Docker Desktop 4.31.0+.
-* Vous devez utiliser Linux ou Mac OS.
- * Si vous êtes sous Windows, vous devez utiliser [WSL](https://learn.microsoft.com/en-us/windows/wsl/install).
+- MacOS avec [support Docker Desktop](https://docs.docker.com/desktop/setup/install/mac-install/#system-requirements)
+- Linux
+- Windows avec [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) et [support Docker Desktop](https://docs.docker.com/desktop/setup/install/windows-install/#system-requirements)
+
+Un système avec un processeur moderne et un minimum de **4 Go de RAM** est recommandé pour exécuter OpenHands.
+
+## Prérequis
+
+
+ MacOS
+
+ **Docker Desktop**
+
+ 1. [Installer Docker Desktop sur Mac](https://docs.docker.com/desktop/setup/install/mac-install).
+ 2. Ouvrez Docker Desktop, allez dans `Settings > Advanced` et assurez-vous que `Allow the default Docker socket to be used` est activé.
+
+
+
+ Linux
+
+ :::note
+ Testé avec Ubuntu 22.04.
+ :::
+
+ **Docker Desktop**
+
+ 1. [Installer Docker Desktop sur Linux](https://docs.docker.com/desktop/setup/install/linux/).
+
+
+
+
+ Windows
+
+ **WSL**
+
+ 1. [Installer WSL](https://learn.microsoft.com/en-us/windows/wsl/install).
+ 2. Exécutez `wsl --version` dans powershell et confirmez `Default Version: 2`.
+
+ **Docker Desktop**
+
+ 1. [Installer Docker Desktop sur Windows](https://docs.docker.com/desktop/setup/install/windows-install).
+ 2. Ouvrez Docker Desktop, allez dans `Settings` et confirmez les points suivants :
+ - General: `Use the WSL 2 based engine` est activé.
+ - Resources > WSL Integration: `Enable integration with my default WSL distro` est activé.
+
+ :::note
+ La commande docker ci-dessous pour démarrer l'application doit être exécutée dans le terminal WSL.
+ :::
+
+
## Démarrer l'application
-La façon la plus simple d'exécuter OpenHands est avec Docker.
+La façon la plus simple d'exécuter OpenHands est dans Docker.
```bash
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.36-nikolaik
@@ -19,39 +64,58 @@ docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.36-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
+ -v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.36
```
-Vous pouvez également exécuter OpenHands en mode [headless scriptable](https://docs.all-hands.dev/modules/usage/how-to/headless-mode), en tant que [CLI interactive](https://docs.all-hands.dev/modules/usage/how-to/cli-mode), ou en utilisant l'[Action GitHub OpenHands](https://docs.all-hands.dev/modules/usage/how-to/github-action).
+Vous trouverez OpenHands en cours d'exécution à l'adresse http://localhost:3000 !
+
+Vous pouvez également [connecter OpenHands à votre système de fichiers local](https://docs.all-hands.dev/modules/usage/runtimes/docker#connecting-to-your-filesystem),
+exécuter OpenHands en [mode headless](https://docs.all-hands.dev/modules/usage/how-to/headless-mode) scriptable,
+interagir avec lui via une [CLI conviviale](https://docs.all-hands.dev/modules/usage/how-to/cli-mode),
+ou l'exécuter sur des problèmes étiquetés avec [une action GitHub](https://docs.all-hands.dev/modules/usage/how-to/github-action).
## Configuration
-Après avoir exécuté la commande ci-dessus, vous trouverez OpenHands en cours d'exécution à l'adresse [http://localhost:3000](http://localhost:3000).
+Après avoir lancé OpenHands, vous **devez** sélectionner un `LLM Provider` et un `LLM Model` et saisir une `API Key` correspondante.
+Cela peut être fait lors de la fenêtre contextuelle des paramètres initiaux ou en sélectionnant le bouton `Settings`
+(icône d'engrenage) dans l'interface utilisateur.
-Au lancement d'OpenHands, vous verrez une fenêtre modale de paramètres. Vous **devez** sélectionner un `Fournisseur LLM` et un `Modèle LLM`, et entrer une `Clé API` correspondante.
-Ces paramètres peuvent être modifiés à tout moment en sélectionnant le bouton `Paramètres` (icône d'engrenage) dans l'interface utilisateur.
+Si le modèle requis n'existe pas dans la liste, vous pouvez activer les options `Advanced` et le saisir manuellement avec le préfixe correct
+dans la zone de texte `Custom Model`.
+Les options `Advanced` vous permettent également de spécifier une `Base URL` si nécessaire.
-Si le `Modèle LLM` requis n'existe pas dans la liste, vous pouvez activer les `Options avancées` et l'entrer manuellement avec le préfixe correct
-dans la zone de texte `Modèle personnalisé`.
-Les `Options avancées` vous permettent également de spécifier une `URL de base` si nécessaire.
+### Obtenir une clé API
-
-
-
-
+OpenHands nécessite une clé API pour accéder à la plupart des modèles de langage. Voici comment obtenir une clé API auprès des fournisseurs recommandés :
-## Versions
+#### Anthropic (Claude)
-La commande ci-dessus récupère la version stable la plus récente d'OpenHands. Vous avez également d'autres options :
-- Pour une version spécifique, utilisez `docker.all-hands.dev/all-hands-ai/openhands:$VERSION`, en remplaçant $VERSION par le numéro de version.
-- Nous utilisons semver et publions des tags majeurs, mineurs et de patch. Ainsi, `0.9` pointera automatiquement vers la dernière version `0.9.x`, et `0` pointera vers la dernière version `0.x.x`.
-- Pour la version de développement la plus à jour, vous pouvez utiliser `docker.all-hands.dev/all-hands-ai/openhands:main`. Cette version est instable et n'est recommandée qu'à des fins de test ou de développement.
+1. [Créez un compte Anthropic](https://console.anthropic.com/).
+2. [Générez une clé API](https://console.anthropic.com/settings/keys).
+3. [Configurez la facturation](https://console.anthropic.com/settings/billing).
+
+Envisagez de définir des limites d'utilisation pour contrôler les coûts.
+
+#### OpenAI
+
+1. [Créez un compte OpenAI](https://platform.openai.com/).
+2. [Générez une clé API](https://platform.openai.com/api-keys).
+3. [Configurez la facturation](https://platform.openai.com/account/billing/overview).
+
+Vous êtes maintenant prêt à [commencer avec OpenHands](./getting-started).
+
+## Versions
-Vous pouvez choisir le tag qui convient le mieux à vos besoins en fonction des exigences de stabilité et des fonctionnalités souhaitées.
+La [commande docker ci-dessus](./installation#start-the-app) extrait la version stable la plus récente d'OpenHands. Vous avez également d'autres options :
+- Pour une version spécifique, remplacez $VERSION dans `openhands:$VERSION` et `runtime:$VERSION` par le numéro de version.
+Nous utilisons SemVer, donc `0.9` pointera automatiquement vers la dernière version `0.9.x`, et `0` pointera vers la dernière version `0.x.x`.
+- Pour la version de développement la plus à jour, remplacez $VERSION dans `openhands:$VERSION` et `runtime:$VERSION` par `main`.
+Cette version est instable et est recommandée uniquement à des fins de test ou de développement.
-Pour le workflow de développement, consultez [Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md).
+Pour le flux de travail de développement, consultez [Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md).
-Vous rencontrez des problèmes ? Consultez notre [Guide de dépannage](https://docs.all-hands.dev/modules/usage/troubleshooting).
+Vous rencontrez des problèmes ? Consultez notre [Guide de dépannage](https://docs.all-hands.dev/modules/usage/troubleshooting).
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/key-features.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/key-features.md
new file mode 100644
index 000000000000..56ac4b5b03cc
--- /dev/null
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/key-features.md
@@ -0,0 +1,29 @@
+# Aperçu des fonctionnalités d'OpenHands
+
+
+
+### Panneau de discussion
+- Affiche la conversation entre l'utilisateur et OpenHands.
+- OpenHands explique ses actions dans ce panneau.
+
+### Modifications
+- Montre les modifications de fichiers effectuées par OpenHands.
+
+### VS Code
+- VS Code intégré pour parcourir et modifier des fichiers.
+- Peut également être utilisé pour télécharger et importer des fichiers.
+
+### Terminal
+- Un espace permettant à OpenHands et aux utilisateurs d'exécuter des commandes terminal.
+
+### Jupyter
+- Affiche toutes les commandes Python exécutées par OpenHands.
+- Particulièrement utile lors de l'utilisation d'OpenHands pour des tâches de visualisation de données.
+
+### Application
+- Affiche le serveur web lorsqu'OpenHands exécute une application.
+- Les utilisateurs peuvent interagir avec l'application en cours d'exécution.
+
+### Navigateur
+- Utilisé par OpenHands pour naviguer sur des sites web.
+- Le navigateur n'est pas interactif.
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/azure-llms.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/azure-llms.md
index 0146f02c4557..d7c3896069ea 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/azure-llms.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/azure-llms.md
@@ -1,16 +1,14 @@
-
-
# Azure
-OpenHands utilise LiteLLM pour faire des appels aux modèles de chat d'Azure. Vous pouvez trouver leur documentation sur l'utilisation d'Azure comme fournisseur [ici](https://docs.litellm.ai/docs/providers/azure).
+OpenHands utilise LiteLLM pour effectuer des appels aux modèles de chat d'Azure. Vous pouvez trouver leur documentation sur l'utilisation d'Azure comme fournisseur [ici](https://docs.litellm.ai/docs/providers/azure).
## Configuration d'Azure OpenAI
-Lorsque vous exécutez OpenHands, vous devrez définir la variable d'environnement suivante en utilisant `-e` dans la
-[commande docker run](/modules/usage/installation#start-the-app) :
+Lors de l'exécution d'OpenHands, vous devrez définir la variable d'environnement suivante en utilisant `-e` dans la
+[commande docker run](../installation#running-openhands) :
```
-LLM_API_VERSION="" # par exemple "2023-05-15"
+LLM_API_VERSION="" # ex. "2023-05-15"
```
Exemple :
@@ -20,29 +18,24 @@ docker run -it --pull=always \
...
```
-Ensuite, définissez les éléments suivants dans l'interface utilisateur d'OpenHands via les paramètres :
+Ensuite, dans les paramètres de l'interface OpenHands :
:::note
-Vous aurez besoin du nom de votre déploiement ChatGPT qui peut être trouvé sur la page des déploiements dans Azure. Il est référencé comme
+Vous aurez besoin du nom de déploiement ChatGPT qui peut être trouvé sur la page des déploiements dans Azure. Il est référencé comme
<deployment-name> ci-dessous.
:::
-* Activez `Advanced Options`
-* `Custom Model` à azure/<deployment-name>
-* `Base URL` à votre URL de base de l'API Azure (par exemple `https://example-endpoint.openai.azure.com`)
-* `API Key` à votre clé API Azure
-
-## Embeddings
-
-OpenHands utilise llama-index pour les embeddings. Vous pouvez trouver leur documentation sur Azure [ici](https://docs.llamaindex.ai/en/stable/api_reference/embeddings/azure_openai/).
+1. Activez les options `Advanced`.
+2. Définissez les éléments suivants :
+ - `Custom Model` à azure/<deployment-name>
+ - `Base URL` à votre URL de base de l'API Azure (ex. `https://example-endpoint.openai.azure.com`)
+ - `API Key` à votre clé API Azure
### Configuration d'Azure OpenAI
-Lorsque vous exécutez OpenHands, définissez les variables d'environnement suivantes en utilisant `-e` dans la
-[commande docker run](/modules/usage/installation#start-the-app) :
+Lors de l'exécution d'OpenHands, définissez la variable d'environnement suivante en utilisant `-e` dans la
+[commande docker run](../installation#running-openhands) :
```
-LLM_EMBEDDING_MODEL="azureopenai"
-LLM_EMBEDDING_DEPLOYMENT_NAME="" # par exemple "TextEmbedding..."
-LLM_API_VERSION="" # par exemple "2024-02-15-preview"
-```
+LLM_API_VERSION="" # ex. "2024-02-15-preview"
+```
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/custom-llm-configs.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/custom-llm-configs.md
index 3aea32cdb5af..2341af86f0a0 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/custom-llm-configs.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/custom-llm-configs.md
@@ -1,6 +1,6 @@
# Configurations LLM personnalisées
-OpenHands permet de définir plusieurs configurations LLM nommées dans votre fichier `config.toml`. Cette fonctionnalité vous permet d'utiliser différentes configurations LLM pour différents usages, comme utiliser un modèle moins coûteux pour les tâches qui ne nécessitent pas de réponses de haute qualité, ou utiliser différents modèles avec différents paramètres pour des agents spécifiques.
+OpenHands permet de définir plusieurs configurations LLM nommées dans votre fichier `config.toml`. Cette fonctionnalité vous permet d'utiliser différentes configurations LLM pour différents usages, comme utiliser un modèle moins coûteux pour des tâches qui ne nécessitent pas de réponses de haute qualité, ou utiliser différents modèles avec différents paramètres pour des agents spécifiques.
## Comment ça fonctionne
@@ -10,19 +10,19 @@ Les configurations LLM nommées sont définies dans le fichier `config.toml` en
# Configuration LLM par défaut
[llm]
model = "gpt-4"
-api_key = "votre-clé-api"
+api_key = "your-api-key"
temperature = 0.0
-# Configuration LLM personnalisée pour un modèle moins coûteux
+# Configuration LLM personnalisée pour un modèle moins cher
[llm.gpt3]
model = "gpt-3.5-turbo"
-api_key = "votre-clé-api"
+api_key = "your-api-key"
temperature = 0.2
-# Une autre configuration personnalisée avec des paramètres différents
-[llm.haute-creativite]
+# Une autre configuration personnalisée avec différents paramètres
+[llm.high-creativity]
model = "gpt-4"
-api_key = "votre-clé-api"
+api_key = "your-api-key"
temperature = 0.8
top_p = 0.9
```
@@ -37,12 +37,12 @@ Vous pouvez spécifier quelle configuration LLM un agent doit utiliser en défin
```toml
[agent.RepoExplorerAgent]
-# Utiliser la configuration GPT-3 moins coûteuse pour cet agent
+# Utiliser la configuration GPT-3 moins chère pour cet agent
llm_config = 'gpt3'
[agent.CodeWriterAgent]
# Utiliser la configuration haute créativité pour cet agent
-llm_config = 'haute-creativite'
+llm_config = 'high-creativity'
```
### Options de configuration
@@ -53,32 +53,32 @@ Chaque configuration LLM nommée prend en charge toutes les mêmes options que l
- Configuration de l'API (`api_key`, `base_url`, etc.)
- Paramètres du modèle (`temperature`, `top_p`, etc.)
- Paramètres de nouvelle tentative (`num_retries`, `retry_multiplier`, etc.)
-- Limites de jetons (`max_input_tokens`, `max_output_tokens`)
+- Limites de tokens (`max_input_tokens`, `max_output_tokens`)
- Et toutes les autres options de configuration LLM
-Pour une liste complète des options disponibles, consultez la section Configuration LLM dans la documentation des [Options de configuration](../configuration-options).
+Pour une liste complète des options disponibles, consultez la section Configuration LLM dans la documentation [Options de configuration](../configuration-options).
## Cas d'utilisation
Les configurations LLM personnalisées sont particulièrement utiles dans plusieurs scénarios :
-- **Optimisation des coûts** : Utiliser des modèles moins coûteux pour les tâches qui ne nécessitent pas de réponses de haute qualité, comme l'exploration de dépôt ou les opérations simples sur les fichiers.
-- **Réglage spécifique aux tâches** : Configurer différentes valeurs de température et de top_p pour les tâches qui nécessitent différents niveaux de créativité ou de déterminisme.
-- **Différents fournisseurs** : Utiliser différents fournisseurs LLM ou points d'accès API pour différentes tâches.
-- **Tests et développement** : Basculer facilement entre différentes configurations de modèles pendant le développement et les tests.
+- **Optimisation des coûts** : Utilisez des modèles moins chers pour des tâches qui ne nécessitent pas de réponses de haute qualité, comme l'exploration de dépôts ou les opérations simples sur les fichiers.
+- **Réglage spécifique aux tâches** : Configurez différentes valeurs de température et de top_p pour des tâches qui nécessitent différents niveaux de créativité ou de déterminisme.
+- **Différents fournisseurs** : Utilisez différents fournisseurs LLM ou points d'accès API pour différentes tâches.
+- **Tests et développement** : Passez facilement d'une configuration de modèle à une autre pendant le développement et les tests.
## Exemple : Optimisation des coûts
-Un exemple pratique d'utilisation des configurations LLM personnalisées pour optimiser les coûts :
+Un exemple pratique d'utilisation de configurations LLM personnalisées pour optimiser les coûts :
```toml
# Configuration par défaut utilisant GPT-4 pour des réponses de haute qualité
[llm]
model = "gpt-4"
-api_key = "votre-clé-api"
+api_key = "your-api-key"
temperature = 0.0
-# Configuration moins coûteuse pour l'exploration de dépôt
+# Configuration moins chère pour l'exploration de dépôts
[llm.repo-explorer]
model = "gpt-3.5-turbo"
temperature = 0.2
@@ -97,10 +97,40 @@ llm_config = 'code-gen'
```
Dans cet exemple :
-- L'exploration de dépôt utilise un modèle moins coûteux car il s'agit principalement de comprendre et de naviguer dans le code
-- La génération de code utilise GPT-4 avec une limite de jetons plus élevée pour générer des blocs de code plus importants
-- La configuration par défaut reste disponible pour les autres tâches
+- L'exploration de dépôts utilise un modèle moins cher puisqu'il s'agit principalement de comprendre et de naviguer dans le code
+- La génération de code utilise GPT-4 avec une limite de tokens plus élevée pour générer des blocs de code plus grands
+- La configuration par défaut reste disponible pour d'autres tâches
+
+# Configurations personnalisées avec des noms réservés
+
+OpenHands peut utiliser des configurations LLM personnalisées nommées avec des noms réservés, pour des cas d'utilisation spécifiques. Si vous spécifiez le modèle et d'autres paramètres sous les noms réservés, OpenHands les chargera et les utilisera pour un objectif spécifique. À ce jour, une telle configuration est implémentée : l'éditeur de brouillon.
+
+## Configuration de l'éditeur de brouillon
+
+La configuration `draft_editor` est un groupe de paramètres que vous pouvez fournir pour spécifier le modèle à utiliser pour l'ébauche préliminaire des modifications de code, pour toutes les tâches qui impliquent l'édition et le raffinement du code. Vous devez la fournir sous la section `[llm.draft_editor]`.
+
+Par exemple, vous pouvez définir dans `config.toml` un éditeur de brouillon comme ceci :
+
+```toml
+[llm.draft_editor]
+model = "gpt-4"
+temperature = 0.2
+top_p = 0.95
+presence_penalty = 0.0
+frequency_penalty = 0.0
+```
+
+Cette configuration :
+- Utilise GPT-4 pour des modifications et suggestions de haute qualité
+- Définit une température basse (0,2) pour maintenir la cohérence tout en permettant une certaine flexibilité
+- Utilise une valeur top_p élevée (0,95) pour considérer un large éventail d'options de tokens
+- Désactive les pénalités de présence et de fréquence pour maintenir l'accent sur les modifications spécifiques nécessaires
+
+Utilisez cette configuration lorsque vous souhaitez qu'un LLM ébauche des modifications avant de les effectuer. En général, cela peut être utile pour :
+- Examiner et suggérer des améliorations de code
+- Affiner le contenu existant tout en conservant son sens fondamental
+- Apporter des modifications précises et ciblées au code ou au texte
:::note
-Les configurations LLM personnalisées ne sont disponibles que lors de l'utilisation d'OpenHands en mode développement, via `main.py` ou `cli.py`. Lors de l'exécution via `docker run`, veuillez utiliser les options de configuration standard.
-:::
+Les configurations LLM personnalisées ne sont disponibles que lorsque vous utilisez OpenHands en mode développement, via `main.py` ou `cli.py`. Lors de l'exécution via `docker run`, veuillez utiliser les options de configuration standard.
+:::
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/google-llms.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/google-llms.md
index 04dfbddbcb42..f96a067b7867 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/google-llms.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/google-llms.md
@@ -1,31 +1,29 @@
-
-
# Google Gemini/Vertex
-OpenHands utilise LiteLLM pour faire des appels aux modèles de chat de Google. Vous pouvez trouver leur documentation sur l'utilisation de Google comme fournisseur :
+OpenHands utilise LiteLLM pour effectuer des appels aux modèles de chat de Google. Vous pouvez consulter leur documentation sur l'utilisation de Google comme fournisseur :
- [Gemini - Google AI Studio](https://docs.litellm.ai/docs/providers/gemini)
- [VertexAI - Google Cloud Platform](https://docs.litellm.ai/docs/providers/vertex)
-## Configurations de Gemini - Google AI Studio
+## Configurations Gemini - Google AI Studio
-Lors de l'exécution d'OpenHands, vous devrez définir les éléments suivants dans l'interface utilisateur d'OpenHands via les paramètres :
-* `LLM Provider` à `Gemini`
-* `LLM Model` au modèle que vous utiliserez.
-Si le modèle ne figure pas dans la liste, activez `Advanced Options` et entrez-le dans `Custom Model` (par exemple, gemini/<model-name> comme `gemini/gemini-1.5-pro`).
-* `API Key` à votre clé API Gemini
+Lors de l'exécution d'OpenHands, vous devrez définir les éléments suivants dans l'interface utilisateur d'OpenHands via les Paramètres :
+- `LLM Provider` sur `Gemini`
+- `LLM Model` sur le modèle que vous utiliserez.
+Si le modèle n'est pas dans la liste, activez les options `Advanced`, et saisissez-le dans `Custom Model` (par exemple gemini/<nom-du-modèle> comme `gemini/gemini-2.0-flash`).
+- `API Key` avec votre clé API Gemini
-## Configurations de VertexAI - Google Cloud Platform
+## Configurations VertexAI - Google Cloud Platform
-Pour utiliser Vertex AI via Google Cloud Platform lors de l'exécution d'OpenHands, vous devrez définir les variables d'environnement suivantes en utilisant `-e` dans la [commande docker run](/modules/usage/installation#start-the-app) :
+Pour utiliser Vertex AI via Google Cloud Platform lors de l'exécution d'OpenHands, vous devrez définir les variables d'environnement suivantes en utilisant `-e` dans la [commande docker run](../installation#running-openhands) :
```
-GOOGLE_APPLICATION_CREDENTIALS=""
-VERTEXAI_PROJECT=""
-VERTEXAI_LOCATION=""
+GOOGLE_APPLICATION_CREDENTIALS=""
+VERTEXAI_PROJECT=""
+VERTEXAI_LOCATION=""
```
-Ensuite, définissez les éléments suivants dans l'interface utilisateur d'OpenHands via les paramètres :
-* `LLM Provider` à `VertexAI`
-* `LLM Model` au modèle que vous utiliserez.
-Si le modèle ne figure pas dans la liste, activez `Advanced Options` et entrez-le dans `Custom Model` (par exemple, vertex_ai/<model-name>).
+Ensuite, définissez les éléments suivants dans l'interface utilisateur d'OpenHands via les Paramètres :
+- `LLM Provider` sur `VertexAI`
+- `LLM Model` sur le modèle que vous utiliserez.
+Si le modèle n'est pas dans la liste, activez les options `Advanced`, et saisissez-le dans `Custom Model` (par exemple vertex_ai/<nom-du-modèle>).
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/groq.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/groq.md
index 178b14eee6c9..a9efcf482c5c 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/groq.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/groq.md
@@ -1,22 +1,22 @@
-
-
# Groq
-OpenHands utilise LiteLLM pour faire des appels aux modèles de chat sur Groq. Vous pouvez trouver leur documentation sur l'utilisation de Groq comme fournisseur [ici](https://docs.litellm.ai/docs/providers/groq).
+OpenHands utilise LiteLLM pour effectuer des appels aux modèles de chat sur Groq. Vous pouvez trouver leur documentation sur l'utilisation de Groq comme fournisseur [ici](https://docs.litellm.ai/docs/providers/groq).
## Configuration
-Lorsque vous exécutez OpenHands, vous devrez définir les éléments suivants dans l'interface utilisateur d'OpenHands via les paramètres :
-* `LLM Provider` à `Groq`
-* `LLM Model` au modèle que vous utiliserez. [Visitez ici pour voir la liste des modèles hébergés par Groq](https://console.groq.com/docs/models). Si le modèle n'est pas dans la liste, activez les `Advanced Options` et entrez-le dans `Custom Model` (par exemple, groq/<model-name> comme `groq/llama3-70b-8192`).
-* `API key` à votre clé API Groq. Pour trouver ou créer votre clé API Groq, [voir ici](https://console.groq.com/keys).
-
-
+Lors de l'exécution d'OpenHands, vous devrez définir les éléments suivants dans l'interface utilisateur d'OpenHands via les Paramètres :
+- `LLM Provider` sur `Groq`
+- `LLM Model` sur le modèle que vous utiliserez. [Visitez ce lien pour voir la liste des
+modèles hébergés par Groq](https://console.groq.com/docs/models). Si le modèle n'est pas dans la liste, activez
+les options `Advanced`, et saisissez-le dans `Custom Model` (par exemple groq/<nom-du-modèle> comme `groq/llama3-70b-8192`).
+- `API key` avec votre clé API Groq. Pour trouver ou créer votre clé API Groq, [voir ici](https://console.groq.com/keys).
## Utilisation de Groq comme point de terminaison compatible OpenAI
-Le point de terminaison Groq pour la complétion de chat est [principalement compatible OpenAI](https://console.groq.com/docs/openai). Par conséquent, vous pouvez accéder aux modèles Groq comme vous le feriez pour n'importe quel point de terminaison compatible OpenAI. Vous pouvez définir les éléments suivants dans l'interface utilisateur d'OpenHands via les paramètres :
-* Activer les `Advanced Options`
-* `Custom Model` au préfixe `openai/` + le modèle que vous utiliserez (par exemple, `openai/llama3-70b-8192`)
-* `Base URL` à `https://api.groq.com/openai/v1`
-* `API Key` à votre clé API Groq
+Le point de terminaison Groq pour la complétion de chat est [majoritairement compatible avec OpenAI](https://console.groq.com/docs/openai). Par conséquent, vous pouvez accéder aux modèles Groq comme vous
+accéderiez à n'importe quel point de terminaison compatible OpenAI. Dans l'interface utilisateur d'OpenHands via les Paramètres :
+1. Activez les options `Advanced`
+2. Définissez les éléments suivants :
+ - `Custom Model` avec le préfixe `openai/` + le modèle que vous utiliserez (par exemple `openai/llama3-70b-8192`)
+ - `Base URL` sur `https://api.groq.com/openai/v1`
+ - `API Key` avec votre clé API Groq
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/litellm-proxy.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/litellm-proxy.md
index 3577e392ace3..6788a2641e37 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/litellm-proxy.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/litellm-proxy.md
@@ -1,5 +1,3 @@
-
-
# Proxy LiteLLM
OpenHands prend en charge l'utilisation du [proxy LiteLLM](https://docs.litellm.ai/docs/proxy/quick_start) pour accéder à divers fournisseurs de LLM.
@@ -9,14 +7,14 @@ OpenHands prend en charge l'utilisation du [proxy LiteLLM](https://docs.litellm.
Pour utiliser le proxy LiteLLM avec OpenHands, vous devez :
1. Configurer un serveur proxy LiteLLM (voir la [documentation LiteLLM](https://docs.litellm.ai/docs/proxy/quick_start))
-2. Lors de l'exécution d'OpenHands, vous devrez définir les éléments suivants dans l'interface utilisateur d'OpenHands via les paramètres :
- * Activer les `Options avancées`
- * `Custom Model` au préfixe `litellm_proxy/` + le modèle que vous utiliserez (par exemple, `litellm_proxy/anthropic.claude-3-5-sonnet-20241022-v2:0`)
- * `Base URL` à l'URL de votre proxy LiteLLM (par exemple, `https://your-litellm-proxy.com`)
- * `API Key` à votre clé API du proxy LiteLLM
+2. Lors de l'exécution d'OpenHands, vous devrez définir les éléments suivants dans l'interface utilisateur d'OpenHands via les Paramètres :
+ * Activer les options `Avancées`
+ * Définir `Modèle personnalisé` avec le préfixe `litellm_proxy/` + le modèle que vous utiliserez (par exemple `litellm_proxy/anthropic.claude-3-5-sonnet-20241022-v2:0`)
+ * Définir `URL de base` avec l'URL de votre proxy LiteLLM (par exemple `https://your-litellm-proxy.com`)
+ * Définir `Clé API` avec votre clé API du proxy LiteLLM
## Modèles pris en charge
Les modèles pris en charge dépendent de la configuration de votre proxy LiteLLM. OpenHands prend en charge tous les modèles que votre proxy LiteLLM est configuré pour gérer.
-Reportez-vous à la configuration de votre proxy LiteLLM pour obtenir la liste des modèles disponibles et leurs noms.
+Référez-vous à la configuration de votre proxy LiteLLM pour la liste des modèles disponibles et leurs noms.
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/llms.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/llms.md
index 85ba17431449..7f469743cf37 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/llms.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/llms.md
@@ -1,50 +1,55 @@
-
-
# 🤖 Backends LLM
-OpenHands peut se connecter à n'importe quel LLM supporté par LiteLLM. Cependant, il nécessite un modèle puissant pour fonctionner.
-
-## Recommandations de modèles
+:::note
+Cette section est destinée aux utilisateurs qui souhaitent connecter OpenHands à différents LLMs.
+:::
-Sur la base de nos évaluations des modèles de langage pour les tâches de codage (en utilisant le jeu de données SWE-bench), nous pouvons fournir quelques recommandations pour la sélection des modèles. Certaines analyses peuvent être trouvées dans [cet article de blog comparant les LLM](https://www.all-hands.dev/blog/evaluation-of-llms-as-coding-agents-on-swe-bench-at-30x-speed) et [cet article de blog avec des résultats plus récents](https://www.all-hands.dev/blog/openhands-codeact-21-an-open-state-of-the-art-software-development-agent).
+OpenHands peut se connecter à n'importe quel LLM pris en charge par LiteLLM. Cependant, il nécessite un modèle puissant pour fonctionner.
-Lors du choix d'un modèle, considérez à la fois la qualité des sorties et les coûts associés. Voici un résumé des résultats :
+## Recommandations de modèles
-- Claude 3.5 Sonnet est le meilleur de loin, atteignant un taux de résolution de 53% sur SWE-Bench Verified avec l'agent par défaut dans OpenHands.
-- GPT-4o est à la traîne, et o1-mini a en fait obtenu des performances légèrement inférieures à celles de GPT-4o. Nous avons analysé les résultats un peu, et brièvement, il semblait que o1 "réfléchissait trop" parfois, effectuant des tâches de configuration d'environnement supplémentaires alors qu'il aurait pu simplement aller de l'avant et terminer la tâche.
-- Enfin, les modèles ouverts les plus puissants étaient Llama 3.1 405 B et deepseek-v2.5, et ils ont obtenu des performances raisonnables, surpassant même certains des modèles fermés.
+Sur la base de nos évaluations des modèles de langage pour les tâches de programmation (utilisant le jeu de données SWE-bench), nous pouvons fournir quelques
+recommandations pour la sélection de modèles. Nos derniers résultats d'évaluation peuvent être consultés dans [ce tableur](https://docs.google.com/spreadsheets/d/1wOUdFCMyY6Nt0AIqF705KN4JKOWgeI4wUGUP60krXXs/edit?gid=0).
-Veuillez vous référer à [l'article complet](https://www.all-hands.dev/blog/evaluation-of-llms-as-coding-agents-on-swe-bench-at-30x-speed) pour plus de détails.
+Sur la base de ces résultats et des retours de la communauté, les modèles suivants ont été vérifiés comme fonctionnant raisonnablement bien avec OpenHands :
-Sur la base de ces résultats et des commentaires de la communauté, il a été vérifié que les modèles suivants fonctionnent raisonnablement bien avec OpenHands :
+- [anthropic/claude-3-7-sonnet-20250219](https://www.anthropic.com/api) (recommandé)
+- [gemini/gemini-2.5-pro](https://blog.google/technology/google-deepmind/gemini-model-thinking-updates-march-2025/)
+- [deepseek/deepseek-chat](https://api-docs.deepseek.com/)
+- [openai/o3-mini](https://openai.com/index/openai-o3-mini/)
+- [openai/o3](https://openai.com/index/introducing-o3-and-o4-mini/)
+- [openai/o4-mini](https://openai.com/index/introducing-o3-and-o4-mini/)
+- [all-hands/openhands-lm-32b-v0.1](https://www.all-hands.dev/blog/introducing-openhands-lm-32b----a-strong-open-coding-agent-model) -- disponible via [OpenRouter](https://openrouter.ai/all-hands/openhands-lm-32b-v0.1)
-- claude-3-5-sonnet (recommandé)
-- gpt-4 / gpt-4o
-- llama-3.1-405b
-- deepseek-v2.5
:::warning
-OpenHands enverra de nombreuses invites au LLM que vous configurez. La plupart de ces LLM sont payants, alors assurez-vous de définir des limites de dépenses et de surveiller l'utilisation.
+OpenHands enverra de nombreuses requêtes au LLM que vous configurez. La plupart de ces LLMs ont un coût, alors assurez-vous de définir des limites de dépenses et de surveiller l'utilisation.
:::
-Si vous avez réussi à exécuter OpenHands avec des LLM spécifiques qui ne figurent pas dans la liste, veuillez les ajouter à la liste vérifiée. Nous vous encourageons également à ouvrir une PR pour partager votre processus de configuration afin d'aider les autres utilisant le même fournisseur et LLM !
+Si vous avez réussi à exécuter OpenHands avec des LLMs spécifiques qui ne figurent pas dans la liste, veuillez les ajouter à la liste vérifiée. Nous
+vous encourageons également à ouvrir une PR pour partager votre processus de configuration afin d'aider d'autres utilisateurs du même fournisseur et LLM !
-Pour une liste complète des fournisseurs et des modèles disponibles, veuillez consulter la [documentation litellm](https://docs.litellm.ai/docs/providers).
+Pour une liste complète des fournisseurs et modèles disponibles, veuillez consulter la
+[documentation litellm](https://docs.litellm.ai/docs/providers).
:::note
-La plupart des modèles locaux et open source actuels ne sont pas aussi puissants. Lors de l'utilisation de tels modèles, vous pouvez constater de longs temps d'attente entre les messages, des réponses médiocres ou des erreurs concernant du JSON mal formé. OpenHands ne peut être aussi puissant que les modèles qui le pilotent. Cependant, si vous en trouvez qui fonctionnent, veuillez les ajouter à la liste vérifiée ci-dessus.
+La plupart des modèles locaux et open source actuels ne sont pas aussi puissants. Lorsque vous utilisez de tels modèles, vous pourriez constater de longs
+temps d'attente entre les messages, des réponses médiocres ou des erreurs concernant un JSON mal formé. OpenHands ne peut être que aussi puissant que les
+modèles qui l'alimentent. Cependant, si vous en trouvez qui fonctionnent, veuillez les ajouter à la liste vérifiée ci-dessus.
:::
## Configuration LLM
-Les éléments suivants peuvent être définis dans l'interface utilisateur d'OpenHands via les paramètres :
+Les éléments suivants peuvent être définis dans l'interface utilisateur d'OpenHands via les Paramètres :
- `Fournisseur LLM`
- `Modèle LLM`
- `Clé API`
-- `URL de base` (via `Paramètres avancés`)
+- `URL de base` (via les paramètres `Avancés`)
-Il existe certains paramètres qui peuvent être nécessaires pour certains LLM/fournisseurs et qui ne peuvent pas être définis via l'interface utilisateur. Au lieu de cela, ils peuvent être définis via des variables d'environnement passées à la [commande docker run](/modules/usage/installation#start-the-app) en utilisant `-e` :
+Il existe certains paramètres qui peuvent être nécessaires pour certains LLMs/fournisseurs qui ne peuvent pas être définis via l'interface utilisateur. Au lieu de cela, ils
+peuvent être définis via des variables d'environnement transmises à la commande docker run lors du démarrage de l'application
+en utilisant `-e` :
- `LLM_API_VERSION`
- `LLM_EMBEDDING_MODEL`
@@ -58,27 +63,30 @@ Nous avons quelques guides pour exécuter OpenHands avec des fournisseurs de mod
- [Azure](llms/azure-llms)
- [Google](llms/google-llms)
- [Groq](llms/groq)
-- [LiteLLM Proxy](llms/litellm-proxy)
+- [LLMs locaux avec SGLang ou vLLM](llms/../local-llms.md)
+- [Proxy LiteLLM](llms/litellm-proxy)
- [OpenAI](llms/openai-llms)
- [OpenRouter](llms/openrouter)
-### Nouvelles tentatives d'API et limites de débit
+### Nouvelles tentatives d'API et limites de taux
-Les fournisseurs de LLM ont généralement des limites de débit, parfois très basses, et peuvent nécessiter de nouvelles tentatives. OpenHands réessaiera automatiquement les requêtes s'il reçoit une erreur de limite de débit (code d'erreur 429), une erreur de connexion API ou d'autres erreurs transitoires.
+Les fournisseurs de LLM ont généralement des limites de taux, parfois très basses, et peuvent nécessiter des nouvelles tentatives. OpenHands réessaiera automatiquement
+les requêtes s'il reçoit une erreur de limite de taux (code d'erreur 429).
-Vous pouvez personnaliser ces options selon vos besoins pour le fournisseur que vous utilisez. Consultez leur documentation et définissez les variables d'environnement suivantes pour contrôler le nombre de nouvelles tentatives et le temps entre les tentatives :
+Vous pouvez personnaliser ces options selon vos besoins pour le fournisseur que vous utilisez. Consultez leur documentation et définissez les
+variables d'environnement suivantes pour contrôler le nombre de nouvelles tentatives et le temps entre les tentatives :
-- `LLM_NUM_RETRIES` (Par défaut 8)
-- `LLM_RETRY_MIN_WAIT` (Par défaut 15 secondes)
-- `LLM_RETRY_MAX_WAIT` (Par défaut 120 secondes)
+- `LLM_NUM_RETRIES` (Par défaut 4 fois)
+- `LLM_RETRY_MIN_WAIT` (Par défaut 5 secondes)
+- `LLM_RETRY_MAX_WAIT` (Par défaut 30 secondes)
- `LLM_RETRY_MULTIPLIER` (Par défaut 2)
Si vous exécutez OpenHands en mode développement, vous pouvez également définir ces options dans le fichier `config.toml` :
```toml
[llm]
-num_retries = 8
-retry_min_wait = 15
-retry_max_wait = 120
+num_retries = 4
+retry_min_wait = 5
+retry_max_wait = 30
retry_multiplier = 2
-```
+```
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/local-llms.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/local-llms.md
index 4f23b8feb884..25d2ff7b2f26 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/local-llms.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/local-llms.md
@@ -1,193 +1,83 @@
-
-
-# LLM local avec Ollama
+# LLM local avec SGLang ou vLLM
:::warning
-Lors de l'utilisation d'un LLM local, OpenHands peut avoir des fonctionnalités limitées.
+Lorsque vous utilisez un LLM local, OpenHands peut avoir des fonctionnalités limitées.
+Il est fortement recommandé d'utiliser des GPU pour servir les modèles locaux afin d'obtenir une expérience optimale.
:::
-Assurez-vous que le serveur Ollama est opérationnel.
-Pour des instructions détaillées sur le démarrage, référez-vous à [ici](https://github.com/ollama/ollama).
+## Actualités
-Ce guide suppose que vous avez démarré ollama avec `ollama serve`. Si vous exécutez ollama différemment (par exemple dans docker), les instructions peuvent nécessiter des modifications. Veuillez noter que si vous utilisez WSL, la configuration par défaut d'ollama bloque les requêtes provenant des conteneurs docker. Voir [ici](#configuring-ollama-service-wsl-fr).
+- 2025/03/31 : Nous avons publié un modèle ouvert OpenHands LM v0.1 32B qui atteint 37,1% sur SWE-Bench Verified
+([blog](https://www.all-hands.dev/blog/introducing-openhands-lm-32b----a-strong-open-coding-agent-model), [modèle](https://huggingface.co/all-hands/openhands-lm-32b-v0.1)).
-## Récupérer les modèles
+## Télécharger le modèle depuis Huggingface
-Les noms des modèles Ollama peuvent être trouvés [ici](https://ollama.com/library). Pour un petit exemple, vous pouvez utiliser le modèle `codellama:7b`. Les modèles plus gros auront généralement de meilleures performances.
+Par exemple, pour télécharger [OpenHands LM 32B v0.1](https://huggingface.co/all-hands/openhands-lm-32b-v0.1) :
```bash
-ollama pull codellama:7b
+huggingface-cli download all-hands/openhands-lm-32b-v0.1 --local-dir all-hands/openhands-lm-32b-v0.1
```
-Vous pouvez vérifier quels modèles vous avez téléchargés comme ceci :
-
-```bash
-~$ ollama list
-NAME ID SIZE MODIFIED
-codellama:7b 8fdf8f752f6e 3.8 GB 6 weeks ago
-mistral:7b-instruct-v0.2-q4_K_M eb14864c7427 4.4 GB 2 weeks ago
-starcoder2:latest f67ae0f64584 1.7 GB 19 hours ago
-```
+## Créer un point de terminaison compatible OpenAI avec un framework de service de modèle
-## Exécuter OpenHands avec Docker
+### Service avec SGLang
-### Démarrer OpenHands
-Utilisez les instructions [ici](../getting-started) pour démarrer OpenHands en utilisant Docker.
-Mais lorsque vous exécutez `docker run`, vous devrez ajouter quelques arguments supplémentaires :
+- Installez SGLang en suivant [la documentation officielle](https://docs.sglang.ai/start/install.html).
+- Exemple de commande de lancement pour OpenHands LM 32B (avec au moins 2 GPU) :
```bash
-docker run # ...
- --add-host host.docker.internal:host-gateway \
- -e LLM_OLLAMA_BASE_URL="http://host.docker.internal:11434" \
- # ...
+SGLANG_ALLOW_OVERWRITE_LONGER_CONTEXT_LEN=1 python3 -m sglang.launch_server \
+ --model all-hands/openhands-lm-32b-v0.1 \
+ --served-model-name openhands-lm-32b-v0.1 \
+ --port 8000 \
+ --tp 2 --dp 1 \
+ --host 0.0.0.0 \
+ --api-key mykey --context-length 131072
```
-LLM_OLLAMA_BASE_URL est optionnel. Si vous le définissez, il sera utilisé pour afficher
-les modèles installés disponibles dans l'interface utilisateur.
-
-
-### Configurer l'application Web
-
-Lors de l'exécution d'`openhands`, vous devrez définir les éléments suivants dans l'interface utilisateur d'OpenHands via les paramètres :
-- le modèle à "ollama/<nom-du-modèle>"
-- l'URL de base à `http://host.docker.internal:11434`
-- la clé API est optionnelle, vous pouvez utiliser n'importe quelle chaîne, comme `ollama`.
+### Service avec vLLM
-
-## Exécuter OpenHands en mode développement
-
-### Compiler à partir du code source
-
-Utilisez les instructions dans [Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md) pour compiler OpenHands.
-Assurez-vous que `config.toml` est présent en exécutant `make setup-config` qui en créera un pour vous. Dans `config.toml`, entrez ce qui suit :
-
-```
-[core]
-workspace_base="./workspace"
-
-[llm]
-embedding_model="local"
-ollama_base_url="http://localhost:11434"
-
-```
-
-Terminé ! Vous pouvez maintenant démarrer OpenHands avec : `make run`. Vous devriez maintenant pouvoir vous connecter à `http://localhost:3000/`
-
-### Configurer l'application Web
-
-Dans l'interface utilisateur d'OpenHands, cliquez sur la roue des paramètres dans le coin inférieur gauche.
-Ensuite, dans le champ `Model`, entrez `ollama/codellama:7b`, ou le nom du modèle que vous avez récupéré précédemment.
-S'il n'apparaît pas dans la liste déroulante, activez `Advanced Settings` et tapez-le. Veuillez noter : vous avez besoin du nom du modèle tel qu'il est listé par `ollama list`, avec le préfixe `ollama/`.
-
-Dans le champ API Key, entrez `ollama` ou n'importe quelle valeur, puisque vous n'avez pas besoin d'une clé particulière.
-
-Dans le champ Base URL, entrez `http://localhost:11434`.
-
-Et maintenant vous êtes prêt à démarrer !
-
-## Configurer le service ollama (WSL) {#configuring-ollama-service-wsl-fr}
-
-La configuration par défaut d'ollama dans WSL ne sert que localhost. Cela signifie que vous ne pouvez pas y accéder depuis un conteneur docker. Par ex. cela ne fonctionnera pas avec OpenHands. Testons d'abord qu'ollama fonctionne correctement.
+- Installez vLLM en suivant [la documentation officielle](https://docs.vllm.ai/en/latest/getting_started/installation.html).
+- Exemple de commande de lancement pour OpenHands LM 32B (avec au moins 2 GPU) :
```bash
-ollama list # obtenir la liste des modèles installés
-curl http://localhost:11434/api/generate -d '{"model":"[NOM]","prompt":"hi"}'
-#ex. curl http://localhost:11434/api/generate -d '{"model":"codellama:7b","prompt":"hi"}'
-#ex. curl http://localhost:11434/api/generate -d '{"model":"codellama","prompt":"hi"}' #le tag est optionnel s'il n'y en a qu'un
+vllm serve all-hands/openhands-lm-32b-v0.1 \
+ --host 0.0.0.0 --port 8000 \
+ --api-key mykey \
+ --tensor-parallel-size 2 \
+ --served-model-name openhands-lm-32b-v0.1
+ --enable-prefix-caching
```
-Une fois cela fait, testez qu'il autorise les requêtes "extérieures", comme celles provenant d'un conteneur docker.
+## Exécuter et configurer OpenHands
-```bash
-docker ps # obtenir la liste des conteneurs docker en cours d'exécution, pour un test plus précis choisissez le conteneur sandbox OpenHands.
-docker exec [ID CONTENEUR] curl http://host.docker.internal:11434/api/generate -d '{"model":"[NOM]","prompt":"hi"}'
-#ex. docker exec cd9cc82f7a11 curl http://host.docker.internal:11434/api/generate -d '{"model":"codellama","prompt":"hi"}'
-```
+### Exécuter OpenHands
-## Résoudre le problème
+#### Utilisation de Docker
-Maintenant, faisons en sorte que cela fonctionne. Modifiez /etc/systemd/system/ollama.service avec des privilèges sudo. (Le chemin peut varier selon la distribution Linux)
+Exécutez OpenHands en utilisant [la commande docker run officielle](../installation#start-the-app).
-```bash
-sudo vi /etc/systemd/system/ollama.service
-```
+#### Utilisation du mode développement
-ou
-
-```bash
-sudo nano /etc/systemd/system/ollama.service
-```
-
-Dans le bloc [Service], ajoutez ces lignes
-
-```
-Environment="OLLAMA_HOST=0.0.0.0:11434"
-Environment="OLLAMA_ORIGINS=*"
-```
-
-Ensuite, sauvegardez, rechargez la configuration et redémarrez le service.
-
-```bash
-sudo systemctl daemon-reload
-sudo systemctl restart ollama
-```
-
-Enfin, testez qu'ollama est accessible depuis le conteneur
-
-```bash
-ollama list # obtenir la liste des modèles installés
-docker ps # obtenir la liste des conteneurs docker en cours d'exécution, pour un test plus précis choisissez le conteneur sandbox OpenHands.
-docker exec [ID CONTENEUR] curl http://host.docker.internal:11434/api/generate -d '{"model":"[NOM]","prompt":"hi"}'
-```
-
-
-# LLM local avec LM Studio
-
-Étapes pour configurer LM Studio :
-1. Ouvrez LM Studio
-2. Allez dans l'onglet Serveur local.
-3. Cliquez sur le bouton "Démarrer le serveur".
-4. Sélectionnez le modèle que vous souhaitez utiliser dans la liste déroulante.
-
-
-Définissez les configurations suivantes :
-```bash
-LLM_MODEL="openai/lmstudio"
-LLM_BASE_URL="http://localhost:1234/v1"
-CUSTOM_LLM_PROVIDER="openai"
-```
-
-### Docker
-
-```bash
-docker run # ...
- -e LLM_MODEL="openai/lmstudio" \
- -e LLM_BASE_URL="http://host.docker.internal:1234/v1" \
- -e CUSTOM_LLM_PROVIDER="openai" \
- # ...
-```
-
-Vous devriez maintenant pouvoir vous connecter à `http://localhost:3000/`
-
-Dans l'environnement de développement, vous pouvez définir les configurations suivantes dans le fichier `config.toml` :
+Utilisez les instructions dans [Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md) pour construire OpenHands.
+Assurez-vous que `config.toml` existe en exécutant `make setup-config` qui en créera un pour vous. Dans le fichier `config.toml`, saisissez ce qui suit :
```
[core]
-workspace_base="./workspace"
+workspace_base="/path/to/your/workspace"
[llm]
-model="openai/lmstudio"
-base_url="http://localhost:1234/v1"
-custom_llm_provider="openai"
+model="openhands-lm-32b-v0.1"
+ollama_base_url="http://localhost:8000"
```
-Terminé ! Vous pouvez maintenant démarrer OpenHands avec : `make run` sans Docker. Vous devriez maintenant pouvoir vous connecter à `http://localhost:3000/`
+Démarrez OpenHands en utilisant `make run`.
-# Note
+### Configurer OpenHands
-Pour WSL, exécutez les commandes suivantes dans cmd pour configurer le mode réseau en miroir :
-
-```
-python -c "print('[wsl2]\nnetworkingMode=mirrored',file=open(r'%UserProfile%\.wslconfig','w'))"
-wsl --shutdown
-```
+Une fois qu'OpenHands est en cours d'exécution, vous devrez définir les éléments suivants dans l'interface utilisateur d'OpenHands via les Paramètres :
+1. Activez les options `Avancées`.
+2. Définissez les éléments suivants :
+- `Modèle personnalisé` sur `openai/` (par exemple `openai/openhands-lm-32b-v0.1`)
+- `URL de base` sur `http://host.docker.internal:8000`
+- `Clé API` sur la même chaîne que celle que vous avez définie lors du service du modèle (par exemple `mykey`)
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/openai-llms.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/openai-llms.md
index a9276fc47449..e2ba01aba9c5 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/openai-llms.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/openai-llms.md
@@ -1,26 +1,25 @@
-
-
# OpenAI
-OpenHands utilise LiteLLM pour effectuer des appels aux modèles de chat d'OpenAI. Vous pouvez trouver leur documentation sur l'utilisation d'OpenAI en tant que fournisseur [ici](https://docs.litellm.ai/docs/providers/openai).
+OpenHands utilise LiteLLM pour effectuer des appels aux modèles de chat d'OpenAI. Vous pouvez trouver leur documentation sur l'utilisation d'OpenAI comme fournisseur [ici](https://docs.litellm.ai/docs/providers/openai).
## Configuration
-Lors de l'exécution d'OpenHands, vous devrez définir les éléments suivants dans l'interface utilisateur d'OpenHands via les paramètres :
-* `LLM Provider` à `OpenAI`
-* `LLM Model` au modèle que vous utiliserez.
+Lors de l'exécution d'OpenHands, vous devrez définir les éléments suivants dans l'interface utilisateur d'OpenHands via les Paramètres :
+* `LLM Provider` sur `OpenAI`
+* `LLM Model` sur le modèle que vous utiliserez.
[Visitez ce lien pour voir une liste complète des modèles OpenAI pris en charge par LiteLLM.](https://docs.litellm.ai/docs/providers/openai#openai-chat-completion-models)
-Si le modèle ne figure pas dans la liste, activez les `Advanced Options` et entrez-le dans `Custom Model` (par exemple, openai/<model-name> comme `openai/gpt-4o`).
-* `API Key` à votre clé API OpenAI. Pour trouver ou créer votre clé API de projet OpenAI, [voir ici](https://platform.openai.com/api-keys).
+Si le modèle ne figure pas dans la liste, activez les options `Advanced`, et saisissez-le dans `Custom Model` (par exemple openai/<nom-du-modèle> comme `openai/gpt-4o`).
+* `API Key` avec votre clé API OpenAI. Pour trouver ou créer votre clé API de projet OpenAI, [voir ici](https://platform.openai.com/api-keys).
-## Utilisation des endpoints compatibles OpenAI
+## Utilisation des points de terminaison compatibles avec OpenAI
-Tout comme pour les chat completions OpenAI, nous utilisons LiteLLM pour les endpoints compatibles OpenAI. Vous pouvez trouver leur documentation complète sur ce sujet [ici](https://docs.litellm.ai/docs/providers/openai_compatible).
+Tout comme pour les compléments de chat OpenAI, nous utilisons LiteLLM pour les points de terminaison compatibles avec OpenAI. Vous pouvez trouver leur documentation complète sur ce sujet [ici](https://docs.litellm.ai/docs/providers/openai_compatible).
## Utilisation d'un proxy OpenAI
-Si vous utilisez un proxy OpenAI, vous devrez définir les éléments suivants dans l'interface utilisateur d'OpenHands via les paramètres :
-* Activer les `Advanced Options`
-* `Custom Model` à openai/<model-name> (par exemple, `openai/gpt-4o` ou openai/<proxy-prefix>/<model-name>)
-* `Base URL` à l'URL de votre proxy OpenAI
-* `API Key` à votre clé API OpenAI
+Si vous utilisez un proxy OpenAI, dans l'interface utilisateur d'OpenHands via les Paramètres :
+1. Activez les options `Advanced`
+2. Définissez les éléments suivants :
+ - `Custom Model` sur openai/<nom-du-modèle> (par exemple `openai/gpt-4o` ou openai/<préfixe-proxy>/<nom-du-modèle>)
+ - `Base URL` sur l'URL de votre proxy OpenAI
+ - `API Key` sur votre clé API OpenAI
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/openrouter.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/openrouter.md
index 7338d42b2667..1e339835b2db 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/openrouter.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/llms/openrouter.md
@@ -1,14 +1,12 @@
-
-
# OpenRouter
-OpenHands utilise LiteLLM pour effectuer des appels aux modèles de chat sur OpenRouter. Vous pouvez trouver leur documentation sur l'utilisation d'OpenRouter en tant que fournisseur [ici](https://docs.litellm.ai/docs/providers/openrouter).
+OpenHands utilise LiteLLM pour effectuer des appels aux modèles de chat sur OpenRouter. Vous pouvez trouver leur documentation sur l'utilisation d'OpenRouter comme fournisseur [ici](https://docs.litellm.ai/docs/providers/openrouter).
## Configuration
-Lors de l'exécution d'OpenHands, vous devrez définir les éléments suivants dans l'interface utilisateur d'OpenHands via les paramètres :
-* `LLM Provider` à `OpenRouter`
-* `LLM Model` au modèle que vous utiliserez.
-[Visitez ici pour voir une liste complète des modèles OpenRouter](https://openrouter.ai/models).
-Si le modèle ne figure pas dans la liste, activez `Advanced Options`, et entrez-le dans `Custom Model` (par exemple openrouter/<model-name> comme `openrouter/anthropic/claude-3.5-sonnet`).
-* `API Key` à votre clé API OpenRouter.
+Lors de l'exécution d'OpenHands, vous devrez définir les éléments suivants dans l'interface utilisateur d'OpenHands via les Paramètres :
+* `LLM Provider` sur `OpenRouter`
+* `LLM Model` sur le modèle que vous utiliserez.
+[Visitez ce lien pour voir une liste complète des modèles OpenRouter](https://openrouter.ai/models).
+Si le modèle ne figure pas dans la liste, activez les options `Advanced`, et saisissez-le dans `Custom Model` (par exemple openrouter/<nom-du-modèle> comme `openrouter/anthropic/claude-3.5-sonnet`).
+* `API Key` avec votre clé API OpenRouter.
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/mcp.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/mcp.md
new file mode 100644
index 000000000000..9c8684d38471
--- /dev/null
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/mcp.md
@@ -0,0 +1,96 @@
+# Protocole de Contexte de Modèle (MCP)
+
+:::note
+Cette page explique comment configurer et utiliser le Protocole de Contexte de Modèle (MCP) dans OpenHands, vous permettant d'étendre les capacités de l'agent avec des outils personnalisés.
+:::
+
+## Aperçu
+
+Le Protocole de Contexte de Modèle (MCP) est un mécanisme qui permet à OpenHands de communiquer avec des serveurs d'outils externes. Ces serveurs peuvent fournir des fonctionnalités supplémentaires à l'agent, comme le traitement spécialisé de données, l'accès à des API externes, ou des outils personnalisés. MCP est basé sur le standard ouvert défini sur [modelcontextprotocol.io](https://modelcontextprotocol.io).
+
+## Configuration
+
+La configuration MCP est définie dans la section `[mcp]` de votre fichier `config.toml`.
+
+### Exemple de configuration
+
+```toml
+[mcp]
+# Serveurs SSE - Serveurs externes qui communiquent via Server-Sent Events
+sse_servers = [
+ # Serveur SSE basique avec juste une URL
+ "http://example.com:8080/mcp",
+
+ # Serveur SSE avec authentification par clé API
+ {url="https://secure-example.com/mcp", api_key="your-api-key"}
+]
+
+# Serveurs Stdio - Processus locaux qui communiquent via entrée/sortie standard
+stdio_servers = [
+ # Serveur stdio basique
+ {name="fetch", command="uvx", args=["mcp-server-fetch"]},
+
+ # Serveur stdio avec variables d'environnement
+ {
+ name="data-processor",
+ command="python",
+ args=["-m", "my_mcp_server"],
+ env={
+ "DEBUG": "true",
+ "PORT": "8080"
+ }
+ }
+]
+```
+
+## Options de configuration
+
+### Serveurs SSE
+
+Les serveurs SSE sont configurés en utilisant soit une URL sous forme de chaîne, soit un objet avec les propriétés suivantes :
+
+- `url` (obligatoire)
+ - Type: `str`
+ - Description: L'URL du serveur SSE
+
+- `api_key` (optionnel)
+ - Type: `str`
+ - Par défaut: `None`
+ - Description: Clé API pour l'authentification avec le serveur SSE
+
+### Serveurs Stdio
+
+Les serveurs Stdio sont configurés en utilisant un objet avec les propriétés suivantes :
+
+- `name` (obligatoire)
+ - Type: `str`
+ - Description: Un nom unique pour le serveur
+
+- `command` (obligatoire)
+ - Type: `str`
+ - Description: La commande pour exécuter le serveur
+
+- `args` (optionnel)
+ - Type: `list of str`
+ - Par défaut: `[]`
+ - Description: Arguments de ligne de commande à passer au serveur
+
+- `env` (optionnel)
+ - Type: `dict of str to str`
+ - Par défaut: `{}`
+ - Description: Variables d'environnement à définir pour le processus du serveur
+
+## Comment fonctionne MCP
+
+Lorsque OpenHands démarre, il :
+
+1. Lit la configuration MCP depuis `config.toml`
+2. Se connecte à tous les serveurs SSE configurés
+3. Démarre tous les serveurs stdio configurés
+4. Enregistre les outils fournis par ces serveurs auprès de l'agent
+
+L'agent peut alors utiliser ces outils comme n'importe quel outil intégré. Lorsque l'agent appelle un outil MCP :
+
+1. OpenHands achemine l'appel vers le serveur MCP approprié
+2. Le serveur traite la demande et renvoie une réponse
+3. OpenHands convertit la réponse en une observation et la présente à l'agent
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/prompting/microagents-keyword.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/prompting/microagents-keyword.md
new file mode 100644
index 000000000000..009335033ff4
--- /dev/null
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/prompting/microagents-keyword.md
@@ -0,0 +1,36 @@
+# Microagents déclenchés par mots-clés
+
+## Objectif
+
+Les microagents déclenchés par mots-clés fournissent à OpenHands des instructions spécifiques qui sont activées lorsque certains mots-clés apparaissent dans la requête. Cela est utile pour adapter le comportement en fonction d'outils, langages ou frameworks particuliers.
+
+## Utilisation
+
+Ces microagents ne sont chargés que lorsqu'une requête inclut l'un des mots déclencheurs.
+
+## Syntaxe du frontmatter
+
+Le frontmatter est requis pour les microagents déclenchés par mots-clés. Il doit être placé en haut du fichier, au-dessus des directives.
+
+Encadrez le frontmatter par des triples tirets (---) et incluez les champs suivants :
+
+| Champ | Description | Obligatoire | Valeur par défaut |
+|------------|----------------------------------------------------|-------------|-------------------|
+| `triggers` | Une liste de mots-clés qui activent le microagent. | Oui | Aucune |
+| `agent` | L'agent auquel ce microagent s'applique. | Non | 'CodeActAgent' |
+
+
+## Exemple
+
+Exemple de fichier de microagent déclenché par mot-clé situé à `.openhands/microagents/yummy.md` :
+```
+---
+triggers:
+- yummyhappy
+- happyyummy
+---
+
+L'utilisateur a dit le mot magique. Répondez avec "C'était délicieux !"
+```
+
+[Voir des exemples de microagents déclenchés par mots-clés dans le dépôt officiel OpenHands](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents)
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/prompting/microagents-overview.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/prompting/microagents-overview.md
new file mode 100644
index 000000000000..5c4e0df65b37
--- /dev/null
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/prompting/microagents-overview.md
@@ -0,0 +1,40 @@
+# Aperçu des Microagents
+
+Les microagents sont des prompts spécialisés qui améliorent OpenHands avec des connaissances spécifiques à un domaine.
+Ils fournissent des conseils d'experts, automatisent les tâches courantes et assurent des pratiques cohérentes dans les projets.
+
+## Types de Microagents
+
+Actuellement, OpenHands prend en charge les types de microagents suivants :
+
+- [Microagents Généraux de Dépôt](./microagents-repo) : Directives générales pour OpenHands concernant le dépôt.
+- [Microagents Déclenchés par Mots-clés](./microagents-keyword) : Directives activées par des mots-clés spécifiques dans les prompts.
+
+Pour personnaliser le comportement d'OpenHands, créez un répertoire .openhands/microagents/ à la racine de votre dépôt et
+ajoutez des fichiers `.md` à l'intérieur.
+
+:::note
+Les microagents chargés occupent de l'espace dans la fenêtre de contexte.
+Ces microagents, ainsi que les messages des utilisateurs, informent OpenHands sur la tâche et l'environnement.
+:::
+
+Exemple de structure de dépôt :
+
+```
+some-repository/
+└── .openhands/
+ └── microagents/
+ └── repo.md # Directives générales du dépôt
+ └── trigger_this.md # Microagent déclenché par des mots-clés spécifiques
+ └── trigger_that.md # Microagent déclenché par des mots-clés spécifiques
+```
+
+## Exigences de Frontmatter pour les Microagents
+
+Chaque fichier de microagent peut inclure un frontmatter qui fournit des informations supplémentaires. Dans certains cas, ce frontmatter
+est requis :
+
+| Type de Microagent | Requis |
+|----------------------------------------|---------|
+| `Microagents Généraux de Dépôt` | Non |
+| `Microagents Déclenchés par Mots-clés` | Oui |
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/prompting/microagents-public.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/prompting/microagents-public.md
new file mode 100644
index 000000000000..534f22865cdf
--- /dev/null
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/prompting/microagents-public.md
@@ -0,0 +1,50 @@
+# Microagents globaux
+
+## Aperçu
+
+Les microagents globaux sont des [microagents déclenchés par mot-clé](./microagents-keyword) qui s'appliquent à tous les utilisateurs d'OpenHands. Une liste des microagents globaux actuels peut être trouvée [dans le dépôt OpenHands](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents).
+
+## Contribuer un microagent global
+
+Vous pouvez créer des microagents globaux et les partager avec la communauté en ouvrant une pull request sur le dépôt officiel.
+
+Consultez le fichier [CONTRIBUTING.md](https://github.com/All-Hands-AI/OpenHands/blob/main/CONTRIBUTING.md) pour des instructions spécifiques sur la façon de contribuer à OpenHands.
+
+### Bonnes pratiques pour les microagents globaux
+
+- **Portée claire** : Gardez le microagent concentré sur un domaine ou une tâche spécifique.
+- **Instructions explicites** : Fournissez des directives claires et sans ambiguïté.
+- **Exemples utiles** : Incluez des exemples pratiques de cas d'utilisation courants.
+- **Sécurité d'abord** : Incluez les avertissements et contraintes nécessaires.
+- **Conscience d'intégration** : Tenez compte de la façon dont le microagent interagit avec d'autres composants.
+
+### Étapes pour contribuer un microagent global
+
+#### 1. Planifier le microagent global
+
+Avant de créer un microagent global, considérez :
+
+- Quel problème spécifique ou cas d'utilisation va-t-il traiter ?
+- Quelles capacités ou connaissances uniques devrait-il avoir ?
+- Quels mots déclencheurs ont du sens pour l'activer ?
+- Quelles contraintes ou directives devrait-il suivre ?
+
+#### 2. Créer le fichier
+
+Créez un nouveau fichier Markdown avec un nom descriptif dans le répertoire approprié :
+[`microagents/`](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents)
+
+#### 3. Tester le microagent global
+
+- Testez l'agent avec diverses requêtes.
+- Vérifiez que les mots déclencheurs activent correctement l'agent.
+- Assurez-vous que les instructions sont claires et complètes.
+- Vérifiez les conflits potentiels et les chevauchements avec les agents existants.
+
+#### 4. Processus de soumission
+
+Soumettez une pull request avec :
+
+- Le nouveau fichier de microagent.
+- Documentation mise à jour si nécessaire.
+- Description de l'objectif et des capacités de l'agent.
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/prompting/microagents-repo.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/prompting/microagents-repo.md
new file mode 100644
index 000000000000..c4f6cda30352
--- /dev/null
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/prompting/microagents-repo.md
@@ -0,0 +1,31 @@
+# Microagents Généraux de Dépôt
+
+## Objectif
+
+Directives générales pour qu'OpenHands travaille plus efficacement avec le dépôt.
+
+## Utilisation
+
+Ces microagents sont toujours chargés dans le contexte.
+
+## Syntaxe du Frontmatter
+
+Le frontmatter pour ce type de microagent est facultatif.
+
+Le frontmatter doit être encadré par des triples tirets (---) et peut inclure les champs suivants :
+
+| Champ | Description | Obligatoire | Valeur par défaut |
+|------------|-----------------------------------------|-------------|-------------------|
+| `agent` | L'agent auquel ce microagent s'applique | Non | 'CodeActAgent' |
+
+## Exemple
+
+Exemple de fichier microagent général de dépôt situé à `.openhands/microagents/repo.md` :
+```
+Ce projet est une application TODO qui permet aux utilisateurs de suivre des éléments TODO.
+
+Pour la configurer, vous pouvez exécuter `npm run build`.
+Assurez-vous toujours que les tests sont réussis avant de valider les modifications. Vous pouvez exécuter les tests en lançant `npm run test`.
+```
+
+[Voir plus d'exemples de microagents généraux de dépôt ici.](https://github.com/All-Hands-AI/OpenHands/tree/main/.openhands/microagents)
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/prompting/prompting-best-practices.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/prompting/prompting-best-practices.md
index 41f3d3d0e6b6..5fabdc815dcf 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/prompting/prompting-best-practices.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/prompting/prompting-best-practices.md
@@ -1,43 +1,37 @@
-
-
# Meilleures pratiques pour les prompts
-Lorsque vous travaillez avec le développeur de logiciels OpenHands AI, il est crucial de fournir des prompts clairs et efficaces. Ce guide décrit les meilleures pratiques pour créer des prompts qui produiront les réponses les plus précises et les plus utiles.
+Lorsque vous travaillez avec le développeur IA OpenHands, fournir des prompts clairs et efficaces est essentiel pour obtenir des réponses précises et utiles. Ce guide présente les meilleures pratiques pour élaborer des prompts efficaces.
## Caractéristiques des bons prompts
Les bons prompts sont :
-1. **Concrets** : Ils expliquent exactement quelle fonctionnalité doit être ajoutée ou quelle erreur doit être corrigée.
-2. **Spécifiques à l'emplacement** : Si connu, ils expliquent les emplacements dans la base de code qui doivent être modifiés.
-3. **Correctement dimensionnés** : Ils doivent avoir la taille d'une seule fonctionnalité, ne dépassant généralement pas 100 lignes de code.
+- **Concrets** : Décrivez clairement quelle fonctionnalité doit être ajoutée ou quelle erreur doit être corrigée.
+- **Spécifiques à l'emplacement** : Précisez les emplacements dans la base de code qui doivent être modifiés, si connus.
+- **Correctement délimités** : Concentrez-vous sur une seule fonctionnalité, ne dépassant généralement pas 100 lignes de code.
## Exemples
### Exemples de bons prompts
-1. "Ajoutez une fonction `calculate_average` dans `utils/math_operations.py` qui prend une liste de nombres en entrée et renvoie leur moyenne."
-
-2. "Corrigez le TypeError dans `frontend/src/components/UserProfile.tsx` se produisant à la ligne 42. L'erreur suggère que nous essayons d'accéder à une propriété de undefined."
-
-3. "Implémentez la validation des entrées pour le champ email dans le formulaire d'inscription. Mettez à jour `frontend/src/components/RegistrationForm.tsx` pour vérifier si l'email est dans un format valide avant la soumission."
+- Ajouter une fonction `calculate_average` dans `utils/math_operations.py` qui prend une liste de nombres en entrée et renvoie leur moyenne.
+- Corriger le TypeError dans `frontend/src/components/UserProfile.tsx` qui se produit à la ligne 42. L'erreur suggère que nous essayons d'accéder à une propriété de undefined.
+- Implémenter la validation des entrées pour le champ email dans le formulaire d'inscription. Mettre à jour `frontend/src/components/RegistrationForm.tsx` pour vérifier si l'email est dans un format valide avant la soumission.
### Exemples de mauvais prompts
-1. "Améliorez le code." (Trop vague, pas concret)
-
-2. "Réécrivez tout le backend pour utiliser un framework différent." (Pas correctement dimensionné)
-
-3. "Il y a un bug quelque part dans l'authentification des utilisateurs. Pouvez-vous le trouver et le corriger ?" (Manque de spécificité et d'informations de localisation)
+- Améliorer le code. (Trop vague, pas concret)
+- Réécrire tout le backend pour utiliser un framework différent. (Portée inappropriée)
+- Il y a un bug quelque part dans l'authentification utilisateur. Pouvez-vous le trouver et le corriger ? (Manque de spécificité et d'informations sur l'emplacement)
## Conseils pour des prompts efficaces
-1. Soyez aussi précis que possible sur le résultat souhaité ou le problème à résoudre.
-2. Fournissez du contexte, y compris les chemins de fichiers et les numéros de ligne pertinents si disponibles.
-3. Décomposez les grandes tâches en prompts plus petits et gérables.
-4. Incluez tous les messages d'erreur ou logs pertinents.
-5. Spécifiez le langage de programmation ou le framework s'il n'est pas évident d'après le contexte.
+- Soyez aussi précis que possible sur le résultat souhaité ou le problème à résoudre.
+- Fournissez du contexte, y compris les chemins de fichiers pertinents et les numéros de ligne si disponibles.
+- Décomposez les tâches importantes en prompts plus petits et gérables.
+- Incluez les messages d'erreur ou les journaux pertinents.
+- Précisez le langage de programmation ou le framework, si ce n'est pas évident.
-N'oubliez pas, plus votre prompt est précis et informatif, mieux l'IA pourra vous aider à développer ou à modifier le logiciel OpenHands.
+Plus votre prompt est précis et informatif, mieux OpenHands pourra vous aider.
-Voir [Démarrer avec OpenHands](../getting-started) pour plus d'exemples de prompts utiles.
+Voir [Démarrer avec OpenHands](../getting-started) pour plus d'exemples de prompts utiles.
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes-index.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes-index.md
new file mode 100644
index 000000000000..850e77a6ea78
--- /dev/null
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes-index.md
@@ -0,0 +1,25 @@
+# Configuration d'exécution
+
+:::note
+Cette section est destinée aux utilisateurs qui souhaitent utiliser un environnement d'exécution autre que Docker pour OpenHands.
+:::
+
+Un environnement d'exécution est un environnement où l'agent OpenHands peut modifier des fichiers et exécuter des commandes.
+
+Par défaut, OpenHands utilise un [environnement d'exécution basé sur Docker](./runtimes/docker), fonctionnant sur votre ordinateur local.
+Cela signifie que vous ne payez que pour le LLM que vous utilisez, et votre code n'est jamais envoyé qu'au LLM.
+
+Nous prenons également en charge d'autres environnements d'exécution, qui sont généralement gérés par des tiers.
+
+De plus, nous fournissons un [Environnement d'exécution local](./runtimes/local) qui s'exécute directement sur votre machine sans Docker,
+ce qui peut être utile dans des environnements contrôlés comme les pipelines CI.
+
+## Environnements d'exécution disponibles
+
+OpenHands prend en charge plusieurs environnements d'exécution différents :
+
+- [Environnement Docker](./runtimes/docker.md) - L'environnement d'exécution par défaut qui utilise des conteneurs Docker pour l'isolation (recommandé pour la plupart des utilisateurs).
+- [Environnement distant OpenHands](./runtimes/remote.md) - Environnement d'exécution basé sur le cloud pour l'exécution parallèle (bêta).
+- [Environnement Modal](./runtimes/modal.md) - Environnement d'exécution fourni par nos partenaires chez Modal.
+- [Environnement Daytona](./runtimes/daytona.md) - Environnement d'exécution fourni par Daytona.
+- [Environnement local](./runtimes/local.md) - Exécution directe sur votre machine locale sans Docker.
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes.md
index ba65b8d944a3..13d5ba09abb5 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes.md
@@ -1,78 +1,8 @@
+---
+slug: /usage/runtimes
+title: Runtime Configuration
+---
+import { Redirect } from '@docusaurus/router';
-# Configuration d'exécution
-
-Un Runtime est un environnement où l'agent OpenHands peut modifier des fichiers et exécuter des commandes.
-
-Par défaut, OpenHands utilise un runtime basé sur Docker, s'exécutant sur votre ordinateur local. Cela signifie que vous n'avez à payer que pour le LLM que vous utilisez, et votre code n'est envoyé qu'au LLM.
-
-Nous prenons également en charge les runtimes "distants", qui sont généralement gérés par des tiers. Ils peuvent simplifier la configuration et la rendre plus évolutive, en particulier si vous exécutez de nombreuses conversations OpenHands en parallèle (par exemple pour faire de l'évaluation).
-
-## Runtime Docker
-C'est le Runtime par défaut qui est utilisé lorsque vous démarrez OpenHands. Vous remarquerez peut-être que certains flags sont passés à `docker run` pour rendre cela possible :
-
-```
-docker run # ...
- -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.36-nikolaik \
- -v /var/run/docker.sock:/var/run/docker.sock \
- # ...
-```
-
-Le `SANDBOX_RUNTIME_CONTAINER_IMAGE` de nikolaik est une image de runtime pré-construite qui contient notre serveur Runtime, ainsi que quelques utilitaires de base pour Python et NodeJS. Vous pouvez également [construire votre propre image de runtime](how-to/custom-sandbox-guide).
-
-### Connexion à votre système de fichiers
-Une fonctionnalité utile ici est la possibilité de se connecter à votre système de fichiers local.
-
-Pour monter votre système de fichiers dans le runtime, définissez d'abord WORKSPACE_BASE :
-```bash
-export WORKSPACE_BASE=/chemin/vers/votre/code
-
-# Exemple Linux et Mac
-# export WORKSPACE_BASE=$HOME/OpenHands
-# Définira $WORKSPACE_BASE sur /home//OpenHands
-#
-# Exemple WSL sur Windows
-# export WORKSPACE_BASE=/mnt/c/dev/OpenHands
-# Définira $WORKSPACE_BASE sur C:\dev\OpenHands
-```
-
-puis ajoutez les options suivantes à la commande `docker run` :
-
-```bash
-docker run # ...
- -e SANDBOX_USER_ID=$(id -u) \
- -e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
- -v $WORKSPACE_BASE:/opt/workspace_base \
- # ...
-```
-
-Attention ! Rien n'empêche l'agent OpenHands de supprimer ou de modifier les fichiers montés dans son espace de travail.
-
-Cette configuration peut causer des problèmes de permissions de fichiers (d'où la variable `SANDBOX_USER_ID`) mais semble bien fonctionner sur la plupart des systèmes.
-
-## Runtime All Hands
-Le Runtime All Hands est actuellement en version bêta. Vous pouvez demander l'accès en rejoignant le canal #remote-runtime-limited-beta sur Slack ([voir le README](https://github.com/All-Hands-AI/OpenHands?tab=readme-ov-file#-join-our-community) pour une invitation).
-
-Pour utiliser le Runtime All Hands, définissez les variables d'environnement suivantes lors du démarrage d'OpenHands :
-
-```bash
-docker run # ...
- -e RUNTIME=remote \
- -e SANDBOX_REMOTE_RUNTIME_API_URL="https://runtime.app.all-hands.dev" \
- -e SANDBOX_API_KEY="votre-clé-api-all-hands" \
- -e SANDBOX_KEEP_RUNTIME_ALIVE="true" \
- # ...
-```
-
-## Runtime Modal
-Nos partenaires de [Modal](https://modal.com/) ont également fourni un runtime pour OpenHands.
-
-Pour utiliser le Runtime Modal, créez un compte, puis [créez une clé API.](https://modal.com/settings)
-
-Vous devrez ensuite définir les variables d'environnement suivantes lors du démarrage d'OpenHands :
-```bash
-docker run # ...
- -e RUNTIME=modal \
- -e MODAL_API_TOKEN_ID="votre-id" \
- -e MODAL_API_TOKEN_SECRET="votre-secret" \
-```
+
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes/daytona.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes/daytona.md
new file mode 100644
index 000000000000..13a4a64f6100
--- /dev/null
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes/daytona.md
@@ -0,0 +1,32 @@
+# Runtime Daytona
+
+Vous pouvez utiliser [Daytona](https://www.daytona.io/) comme fournisseur de runtime :
+
+## Étape 1 : Récupérer votre clé API Daytona
+1. Visitez le [Tableau de bord Daytona](https://app.daytona.io/dashboard/keys).
+2. Cliquez sur **"Create Key"**.
+3. Entrez un nom pour votre clé et confirmez la création.
+4. Une fois la clé générée, copiez-la.
+
+## Étape 2 : Définir votre clé API comme variable d'environnement
+Exécutez la commande suivante dans votre terminal, en remplaçant `` par la clé que vous avez copiée :
+```bash
+export DAYTONA_API_KEY=""
+```
+
+Cette étape garantit qu'OpenHands peut s'authentifier auprès de la plateforme Daytona lors de son exécution.
+
+## Étape 3 : Exécuter OpenHands localement avec Docker
+Pour démarrer la dernière version d'OpenHands sur votre machine, exécutez la commande suivante dans votre terminal :
+```bash
+bash -i <(curl -sL https://get.daytona.io/openhands)
+```
+
+### Ce que fait cette commande :
+- Télécharge le script de la dernière version d'OpenHands.
+- Exécute le script dans une session Bash interactive.
+- Extrait et exécute automatiquement le conteneur OpenHands à l'aide de Docker.
+
+Une fois exécuté, OpenHands devrait fonctionner localement et être prêt à l'emploi.
+
+Pour plus de détails et une initialisation manuelle, consultez le [README.md](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/runtime/impl/daytona/README.md) complet
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes/docker.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes/docker.md
new file mode 100644
index 000000000000..37ae755d218b
--- /dev/null
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes/docker.md
@@ -0,0 +1,129 @@
+# Docker Runtime
+
+C'est le Runtime par défaut qui est utilisé lorsque vous démarrez OpenHands.
+
+## Image
+Le `SANDBOX_RUNTIME_CONTAINER_IMAGE` de nikolaik est une image runtime pré-construite
+qui contient notre serveur Runtime, ainsi que quelques utilitaires de base pour Python et NodeJS.
+Vous pouvez également [construire votre propre image runtime](../how-to/custom-sandbox-guide).
+
+## Connexion à votre système de fichiers
+Une fonctionnalité utile est la possibilité de se connecter à votre système de fichiers local. Pour monter votre système de fichiers dans le runtime :
+
+### Utilisation de SANDBOX_VOLUMES
+
+La façon la plus simple de monter votre système de fichiers local est d'utiliser la variable d'environnement `SANDBOX_VOLUMES` :
+
+```bash
+docker run # ...
+ -e SANDBOX_USER_ID=$(id -u) \
+ -e SANDBOX_VOLUMES=/path/to/your/code:/workspace:rw \
+ # ...
+```
+
+Le format de `SANDBOX_VOLUMES` est : `chemin_hôte:chemin_conteneur[:mode]`
+
+- `chemin_hôte` : Le chemin sur votre machine hôte que vous souhaitez monter
+- `chemin_conteneur` : Le chemin à l'intérieur du conteneur où le chemin de l'hôte sera monté
+ - Utilisez `/workspace` pour les fichiers que vous voulez que l'agent modifie. L'agent travaille dans `/workspace` par défaut.
+ - Utilisez un chemin différent (par exemple, `/data`) pour les documents de référence en lecture seule ou les grands ensembles de données
+- `mode` : Mode de montage optionnel, soit `rw` (lecture-écriture, par défaut) soit `ro` (lecture seule)
+
+Vous pouvez également spécifier plusieurs montages en les séparant par des virgules (`,`) :
+
+```bash
+export SANDBOX_VOLUMES=/path1:/workspace/path1,/path2:/workspace/path2:ro
+```
+
+Exemples :
+
+```bash
+# Exemple Linux et Mac - Espace de travail modifiable
+export SANDBOX_VOLUMES=$HOME/OpenHands:/workspace:rw
+
+# Exemple WSL sur Windows - Espace de travail modifiable
+export SANDBOX_VOLUMES=/mnt/c/dev/OpenHands:/workspace:rw
+
+# Exemple de code de référence en lecture seule
+export SANDBOX_VOLUMES=/path/to/reference/code:/data:ro
+
+# Exemple de montages multiples - Espace de travail modifiable avec données de référence en lecture seule
+export SANDBOX_VOLUMES=$HOME/projects:/workspace:rw,/path/to/large/dataset:/data:ro
+```
+
+> **Remarque :** Lors de l'utilisation de plusieurs montages, le premier montage est considéré comme l'espace de travail principal et sera utilisé pour la compatibilité avec les outils qui s'attendent à un espace de travail unique.
+
+> **Important :** L'agent travaillera dans `/workspace` par défaut. Si vous voulez que l'agent modifie des fichiers dans votre répertoire local, vous devriez monter ce répertoire sur `/workspace`. Si vous avez des données en lecture seule que vous voulez que l'agent accède mais ne modifie pas, montez-les sur un chemin différent (comme `/data`) et demandez explicitement à l'agent de regarder à cet endroit.
+
+### Utilisation des variables WORKSPACE_* (Déprécié)
+
+> **Remarque :** Cette méthode est dépréciée et sera supprimée dans une version future. Veuillez utiliser `SANDBOX_VOLUMES` à la place.
+
+1. Définissez `WORKSPACE_BASE` :
+
+ ```bash
+ export WORKSPACE_BASE=/path/to/your/code
+ ```
+
+2. Ajoutez les options suivantes à la commande `docker run` :
+
+ ```bash
+ docker run # ...
+ -e SANDBOX_USER_ID=$(id -u) \
+ -e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
+ -v $WORKSPACE_BASE:/opt/workspace_base \
+ # ...
+ ```
+
+Soyez prudent ! Rien n'empêche l'agent OpenHands de supprimer ou de modifier
+les fichiers qui sont montés dans son espace de travail.
+
+Le `-e SANDBOX_USER_ID=$(id -u)` est passé à 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é.
+
+## Installation Docker renforcée
+
+Lors du déploiement d'OpenHands dans des environnements où la sécurité est une priorité, vous devriez envisager d'implémenter une
+configuration Docker renforcée. Cette section fournit des recommandations pour sécuriser votre déploiement Docker OpenHands au-delà de la configuration par défaut.
+
+### Considérations de sécurité
+
+La configuration Docker par défaut dans le README est conçue pour faciliter l'utilisation sur une machine de développement locale. Si vous
+l'exécutez sur un réseau public (par exemple, le WiFi d'un aéroport), vous devriez mettre en œuvre des mesures de sécurité supplémentaires.
+
+### Sécurité de liaison réseau
+
+Par défaut, OpenHands se lie à toutes les interfaces réseau (`0.0.0.0`), ce qui peut exposer votre instance à tous les réseaux auxquels
+l'hôte est connecté. Pour une configuration plus sécurisée :
+
+1. **Restreindre la liaison réseau** : Utilisez la configuration `runtime_binding_address` pour restreindre les interfaces réseau sur lesquelles OpenHands écoute :
+
+ ```bash
+ docker run # ...
+ -e SANDBOX_RUNTIME_BINDING_ADDRESS=127.0.0.1 \
+ # ...
+ ```
+
+ Cette configuration garantit qu'OpenHands n'écoute que sur l'interface de bouclage (`127.0.0.1`), le rendant accessible uniquement depuis la machine locale.
+
+2. **Liaison de port sécurisée** : Modifiez l'option `-p` pour ne se lier qu'à localhost au lieu de toutes les interfaces :
+
+ ```bash
+ docker run # ... \
+ -p 127.0.0.1:3000:3000 \
+ ```
+
+ Cela garantit que l'interface web OpenHands n'est accessible que depuis la machine locale, et non depuis d'autres machines du réseau.
+
+### Isolation réseau
+
+Utilisez les fonctionnalités réseau de Docker pour isoler OpenHands :
+
+```bash
+# Créer un réseau isolé
+docker network create openhands-network
+
+# Exécuter OpenHands dans le réseau isolé
+docker run # ... \
+ --network openhands-network \
+```
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes/local.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes/local.md
new file mode 100644
index 000000000000..b505fadc8590
--- /dev/null
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes/local.md
@@ -0,0 +1,74 @@
+# Runtime Local
+
+Le Runtime Local permet à l'agent OpenHands d'exécuter des actions directement sur votre machine locale sans utiliser Docker.
+Ce runtime est principalement destiné aux environnements contrôlés comme les pipelines CI ou les scénarios de test où Docker n'est pas disponible.
+
+:::caution
+**Avertissement de sécurité** : Le Runtime Local s'exécute sans aucune isolation sandbox. L'agent peut directement accéder et modifier
+des fichiers sur votre machine. N'utilisez ce runtime que dans des environnements contrôlés ou lorsque vous comprenez pleinement les implications de sécurité.
+:::
+
+## Prérequis
+
+Avant d'utiliser le Runtime Local, assurez-vous que :
+
+1. Vous pouvez exécuter OpenHands en utilisant le [workflow de développement](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md).
+2. tmux est disponible sur votre système.
+
+## Configuration
+
+Pour utiliser le Runtime Local, en plus des configurations requises comme le fournisseur LLM, le modèle et la clé API, vous devrez définir
+les options suivantes via des variables d'environnement ou le [fichier config.toml](https://github.com/All-Hands-AI/OpenHands/blob/main/config.template.toml) lors du démarrage d'OpenHands :
+
+Via des variables d'environnement :
+
+```bash
+# Requis
+export RUNTIME=local
+
+# Optionnel mais recommandé
+# L'agent travaille dans /workspace par défaut, donc montez votre répertoire de projet à cet endroit
+export SANDBOX_VOLUMES=/chemin/vers/votre/espace_de_travail:/workspace:rw
+# Pour des données en lecture seule, utilisez un chemin de montage différent
+# export SANDBOX_VOLUMES=/chemin/vers/votre/espace_de_travail:/workspace:rw,/chemin/vers/grand/dataset:/data:ro
+```
+
+Via `config.toml` :
+
+```toml
+[core]
+runtime = "local"
+
+[sandbox]
+# L'agent travaille dans /workspace par défaut, donc montez votre répertoire de projet à cet endroit
+volumes = "/chemin/vers/votre/espace_de_travail:/workspace:rw"
+# Pour des données en lecture seule, utilisez un chemin de montage différent
+# volumes = "/chemin/vers/votre/espace_de_travail:/workspace:rw,/chemin/vers/grand/dataset:/data:ro"
+```
+
+Si `SANDBOX_VOLUMES` n'est pas défini, le runtime créera un répertoire temporaire pour que l'agent y travaille.
+
+## Exemple d'utilisation
+
+Voici un exemple de démarrage d'OpenHands avec le Runtime Local en Mode Headless :
+
+```bash
+# Définir le type de runtime sur local
+export RUNTIME=local
+
+# Définir un répertoire de travail (l'agent travaille dans /workspace par défaut)
+export SANDBOX_VOLUMES=/chemin/vers/votre/projet:/workspace:rw
+# Pour des données en lecture seule que vous ne voulez pas que l'agent modifie, utilisez un chemin différent
+# export SANDBOX_VOLUMES=/chemin/vers/votre/projet:/workspace:rw,/chemin/vers/données/référence:/data:ro
+
+# Démarrer OpenHands
+poetry run python -m openhands.core.main -t "écrire un script bash qui affiche bonjour"
+```
+
+## Cas d'utilisation
+
+Le Runtime Local est particulièrement utile pour :
+
+- Les pipelines CI/CD où Docker n'est pas disponible.
+- Les tests et le développement d'OpenHands lui-même.
+- Les environnements où l'utilisation de conteneurs est restreinte.
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes/modal.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes/modal.md
new file mode 100644
index 000000000000..0036325f1901
--- /dev/null
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes/modal.md
@@ -0,0 +1,13 @@
+# Runtime Modal
+
+Nos partenaires chez [Modal](https://modal.com/) ont fourni un runtime pour OpenHands.
+
+Pour utiliser le Runtime Modal, créez un compte, puis [créez une clé API.](https://modal.com/settings)
+
+Vous devrez ensuite définir les variables d'environnement suivantes lors du démarrage d'OpenHands :
+```bash
+docker run # ...
+ -e RUNTIME=modal \
+ -e MODAL_API_TOKEN_ID="your-id" \
+ -e MODAL_API_TOKEN_SECRET="modal-api-key" \
+```
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes/remote.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes/remote.md
new file mode 100644
index 000000000000..91321749e268
--- /dev/null
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/runtimes/remote.md
@@ -0,0 +1,9 @@
+# OpenHands Remote Runtime
+
+:::note
+Ce runtime est spécifiquement conçu uniquement pour des fins d'évaluation d'agents via le
+[harnais d'évaluation OpenHands](https://github.com/All-Hands-AI/OpenHands/tree/main/evaluation). Il ne doit pas être utilisé pour lancer des applications OpenHands en production.
+:::
+
+OpenHands Remote Runtime est actuellement en version bêta (lisez [ici](https://runtime.all-hands.dev/) pour plus de détails), il vous permet de lancer des runtimes
+en parallèle dans le cloud. Remplissez [ce formulaire](https://docs.google.com/forms/d/e/1FAIpQLSckVz_JFwg2_mOxNZjCtr7aoBFI2Mwdan3f75J_TrdMS1JV2g/viewform) pour postuler si vous souhaitez l'essayer !
\ No newline at end of file
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/troubleshooting/troubleshooting.md b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/troubleshooting/troubleshooting.md
index 23b0e9849562..2ae427da6ed4 100644
--- a/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/troubleshooting/troubleshooting.md
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/usage/troubleshooting/troubleshooting.md
@@ -1,46 +1,68 @@
-
-
# 🚧 Dépannage
:::tip
OpenHands ne prend en charge Windows que via WSL. Veuillez vous assurer d'exécuter toutes les commandes dans votre terminal WSL.
:::
+### Impossible d'accéder à l'onglet VS Code via une IP locale
+
+**Description**
+
+Lors de l'accès à OpenHands via une URL non-localhost (comme une adresse IP LAN), l'onglet VS Code affiche une erreur "Forbidden", alors que les autres parties de l'interface fonctionnent correctement.
+
+**Résolution**
+
+Cela se produit car VS Code s'exécute sur un port élevé aléatoire qui peut ne pas être exposé ou accessible depuis d'autres machines. Pour résoudre ce problème :
+
+1. Définissez un port spécifique pour VS Code en utilisant la variable d'environnement `SANDBOX_VSCODE_PORT` :
+ ```bash
+ docker run -it --rm \
+ -e SANDBOX_VSCODE_PORT=41234 \
+ -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:latest \
+ -v /var/run/docker.sock:/var/run/docker.sock \
+ -v ~/.openhands-state:/.openhands-state \
+ -p 3000:3000 \
+ -p 41234:41234 \
+ --add-host host.docker.internal:host-gateway \
+ --name openhands-app \
+ docker.all-hands.dev/all-hands-ai/openhands:latest
+ ```
+
+2. Assurez-vous d'exposer le même port avec `-p 41234:41234` dans votre commande Docker.
+
+3. Alternativement, vous pouvez définir cela dans votre fichier `config.toml` :
+ ```toml
+ [sandbox]
+ vscode_port = 41234
+ ```
+
### Échec du lancement du client docker
**Description**
-Lors de l'exécution d'OpenHands, l'erreur suivante est observée :
+Lors de l'exécution d'OpenHands, l'erreur suivante apparaît :
```
Launch docker client failed. Please make sure you have installed docker and started docker desktop/daemon.
```
**Résolution**
-Essayez ces étapes dans l'ordre :
-* Vérifiez que `docker` est en cours d'exécution sur votre système. Vous devriez pouvoir exécuter `docker ps` dans le terminal avec succès.
-* Si vous utilisez Docker Desktop, assurez-vous que `Settings > Advanced > Allow the default Docker socket to be used` est activé.
-* Selon votre configuration, vous devrez peut-être activer `Settings > Resources > Network > Enable host networking` dans Docker Desktop.
+Essayez ces solutions dans l'ordre :
+* Confirmez que `docker` est en cours d'exécution sur votre système. Vous devriez pouvoir exécuter `docker ps` dans le terminal avec succès.
+* Si vous utilisez Docker Desktop, assurez-vous que `Paramètres > Avancé > Autoriser l'utilisation du socket Docker par défaut` est activé.
+* Selon votre configuration, vous pourriez avoir besoin d'activer `Paramètres > Ressources > Réseau > Activer le réseau hôte` dans Docker Desktop.
* Réinstallez Docker Desktop.
----
-# Spécifique au flux de travail de développement
-### Erreur lors de la construction de l'image docker du runtime
+### Erreur de permission
**Description**
-Les tentatives de démarrage d'une nouvelle session échouent et des erreurs contenant des termes comme les suivants apparaissent dans les logs :
-```
-debian-security bookworm-security
-InRelease At least one invalid signature was encountered.
-```
+Lors de la première invite, une erreur avec `Permission Denied` ou `PermissionError` est affichée.
-Cela semble se produire lorsque le hash d'une bibliothèque externe existante change et que votre instance docker locale a
-mis en cache une version précédente. Pour contourner ce problème, veuillez essayer ce qui suit :
+**Résolution**
-* Arrêtez tous les conteneurs dont le nom a le préfixe `openhands-runtime-` :
- `docker ps --filter name=openhands-runtime- --filter status=running -aq | xargs docker stop`
-* Supprimez tous les conteneurs dont le nom a le préfixe `openhands-runtime-` :
- `docker rmi $(docker images --filter name=openhands-runtime- -q --no-trunc)`
-* Arrêtez et supprimez tous les conteneurs / images dont le nom a le préfixe `openhands-runtime-`
-* Nettoyez les conteneurs / images : `docker container prune -f && docker image prune -f`
+* Vérifiez si le répertoire `~/.openhands-state` appartient à `root`. Si c'est le cas, vous pouvez :
+ * Changer le propriétaire du répertoire : `sudo chown : ~/.openhands-state`.
+ * ou mettre à jour les permissions du répertoire : `sudo chmod 777 ~/.openhands-state`
+ * ou le supprimer si vous n'avez pas besoin des données précédentes. OpenHands le recréera. Vous devrez ressaisir les paramètres LLM.
+* Si vous montez un répertoire local, assurez-vous que votre `WORKSPACE_BASE` dispose des permissions nécessaires pour l'utilisateur exécutant OpenHands.
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/about.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/about.md
index aff9df37c63c..217d73ed9278 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/about.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/about.md
@@ -1,27 +1,25 @@
-# OpenHands について
+# OpenHandsについて
## 研究戦略
-LLM を使用して本番レベルのアプリケーションを完全に複製することは複雑な endeavor です。私たちの戦略は以下の通りです:
+LLMによる本番グレードのアプリケーションの完全な複製を達成することは複雑な取り組みです。私たちの戦略は以下を含みます:
-- **コア技術研究:** コード生成と処理の技術的側面を理解し改善するための基礎研究に注力します。
-- **タスク計画:** バグ検出、コードベース管理、最適化の機能を開発します。
-- **評価:** 私たちのエージェントをより良く理解し改善するための包括的な評価指標を確立します。
+- **コア技術研究:** コード生成と処理の技術的側面を理解し改善するための基礎研究に焦点を当てる。
+- **タスク計画:** バグ検出、コードベース管理、最適化のための能力開発。
+- **評価:** エージェントをより良く理解し改善するための包括的な評価指標の確立。
## デフォルトエージェント
-現在のデフォルトエージェントは、コードの生成とファイル処理が可能な [CodeActAgent](agents) です。
+現在のデフォルトエージェントは[CodeActAgent](agents)で、コードの生成とファイル処理が可能です。
-## 構築技術
+## 使用技術
-OpenHands は、強力なフレームワークとライブラリを組み合わせて構築されており、開発のための堅牢な基盤を提供しています。
-プロジェクトで使用されている主要な技術は以下の通りです:
+OpenHandsは強力なフレームワークとライブラリの組み合わせを使用して構築されており、その開発のための堅牢な基盤を提供しています。以下はプロジェクトで使用されている主要な技術です:
       
-これらの技術の選択は進行中であり、プロジェクトの進化に伴って新しい技術が追加されたり、既存の技術が削除されたりする可能性があることに注意してください。
-私たちは OpenHands の機能を強化するために、最も適切で効率的なツールを採用するよう努めています。
+これらの技術の選択は進行中であり、プロジェクトの進化に伴い、追加の技術が加えられたり、既存のものが削除されたりする可能性があることにご注意ください。私たちはOpenHandsの能力を高めるために、最も適切で効率的なツールを採用するよう努めています。
## ライセンス
-MIT [ライセンス](https://github.com/All-Hands-AI/OpenHands/blob/main/LICENSE) の下で配布されています。
+MIT [ライセンス](https://github.com/All-Hands-AI/OpenHands/blob/main/LICENSE)の下で配布されています。
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/agents.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/agents.md
index 7096246ffa72..bb05b15dd50a 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/agents.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/agents.md
@@ -4,15 +4,15 @@
### 説明
-このエージェントは、CodeActのアイデア ([論文](https://arxiv.org/abs/2402.01030), [ツイート](https://twitter.com/xingyaow_/status/1754556835703751087)) を実装しており、LLMエージェントの**行動**を、_シンプルさ_と_パフォーマンス_の両方のために、統一された**コード**行動空間に統合します。
+このエージェントはCodeActのアイデア([論文](https://arxiv.org/abs/2402.01030)、[ツイート](https://twitter.com/xingyaow_/status/1754556835703751087))を実装しており、LLMエージェントの**アクション**を統一された**コード**アクション空間に統合することで、_シンプルさ_と_パフォーマンス_の両方を実現します。
-概念的なアイデアは以下の図に示されています。各ターンで、エージェントは以下のことができます。
+概念的なアイデアは以下のように示されています。各ターンで、エージェントは以下のことができます:
-1. **会話**: 明確化、確認などのために、自然言語で人間とコミュニケーションをとる。
+1. **会話**: 人間と自然言語でコミュニケーションを取り、明確化や確認などを求める
2. **CodeAct**: コードを実行してタスクを実行することを選択する
-- 任意の有効なLinux `bash`コマンドを実行する
-- [対話型Pythonインタープリター](https://ipython.org/)で任意の有効な`Python`コードを実行する。これは`bash`コマンドを通してシミュレートされます。詳細はプラグインシステムを参照してください。
+- 有効なLinux `bash` コマンドを実行する
+- [インタラクティブなPythonインタプリタ](https://ipython.org/)で有効な`Python`コードを実行する。これは`bash`コマンドを通じてシミュレートされます。詳細については以下のプラグインシステムを参照してください。

@@ -20,4 +20,4 @@
https://github.com/All-Hands-AI/OpenHands/assets/38853559/f592a192-e86c-4f48-ad31-d69282d5f6ac
-_データサイエンスタスク(線形回帰)を実行する`gpt-4-turbo-2024-04-09`を使用したCodeActAgentの例_。
+_`gpt-4-turbo-2024-04-09`を使用したCodeActAgentがデータサイエンスタスク(線形回帰)を実行する例_。
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/architecture/backend.mdx b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/architecture/backend.mdx
index 40462d111b8c..42fbde13e594 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/architecture/backend.mdx
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/architecture/backend.mdx
@@ -2,52 +2,51 @@
-
OpenHands システムアーキテクチャ図 (2024年7月4日)
+
OpenHandsシステムアーキテクチャ図(2024年7月4日)
-これはシステムアーキテクチャの高レベルな概要です。システムはフロントエンドとバックエンドの2つの主要コンポーネントに分かれています。フロントエンドはユーザーインタラクションを処理し、結果を表示する役割を担います。バックエンドはビジネスロジックを処理し、エージェントを実行する役割を担います。
+これはシステムアーキテクチャの高レベル概要です。システムはフロントエンドとバックエンドの2つの主要コンポーネントに分かれています。フロントエンドはユーザーインタラクションの処理と結果の表示を担当します。バックエンドはビジネスロジックの処理とエージェントの実行を担当します。
-# フロントエンドアーキテクチャ {#frontend-architecture-ja}
+# フロントエンドアーキテクチャ {#frontend-architecture-en}

-この概要は、主要なコンポーネントとそれらの相互作用を示すために簡略化されています。バックエンドアーキテクチャのより詳細なビューについては、以下のバックエンドアーキテクチャのセクションを参照してください。
+この概要は主要コンポーネントとその相互作用を示すために簡略化されています。バックエンドアーキテクチャのより詳細な表示については、以下のバックエンドアーキテクチャセクションを参照してください。
-# バックエンドアーキテクチャ {#backend-architecture-ja}
+# バックエンドアーキテクチャ {#backend-architecture-en}
-_**免責事項**: バックエンドアーキテクチャは現在進行中の作業であり、変更される可能性があります。以下の図は、図のフッターに示されているコミットに基づくバックエンドの現在のアーキテクチャを示しています。_
+_**免責事項**: バックエンドアーキテクチャは進行中の作業であり、変更される可能性があります。以下の図は、図のフッターに表示されているコミットに基づく現在のバックエンドアーキテクチャを示しています。_

- この図の更新
+ この図の更新について
バックエンドアーキテクチャ図の生成は部分的に自動化されています。
- この図は、py2pumlツールを使用してコード内の型ヒントから生成されます。
- その後、図は手動でレビュー、調整され、PNGとSVGにエクスポートされます。
+ この図はpy2pumlツールを使用してコード内の型ヒントから生成されます。その後、図は手動でレビュー、調整され、PNGおよびSVGにエクスポートされます。
## 前提条件
- - openhandsが実行可能なPython環境
- (リポジトリのルートにあるREADME.mdファイルの指示に従って)
+ - openhandsが実行可能なPython環境が稼働していること
+ (リポジトリのルートにあるREADME.mdファイルの指示に従って)
- [py2puml](https://github.com/lucsorel/py2puml)がインストールされていること
## 手順
-1. リポジトリのルートから以下のコマンドを実行して、図を自動生成します:
+1. リポジトリのルートから次のコマンドを実行して図を自動生成します:
`py2puml openhands openhands > docs/architecture/backend_architecture.puml`
-2. 生成されたファイルをPlantUMLエディタで開きます。例えば、PlantUML拡張機能を使用したVisual Studio Codeや[PlantText](https://www.planttext.com/)など。
+2. 生成されたファイルをPlantUMLエディタで開きます。例えば、PlantUML拡張機能を持つVisual Studio Codeや[PlantText](https://www.planttext.com/)などです。
-3. 生成されたPUMLをレビューし、図に必要な調整を行います(欠落部分の追加、ミスの修正、位置の改善など)。
- _py2pumlは、コード内の型ヒントに基づいて図を作成するため、型ヒントが欠落していたり正しくない場合、図が不完全または不正確になることがあります。_
+3. 生成されたPUMLをレビューし、図に必要な調整をすべて行います(不足している部分の追加、ミスの修正、配置の改善)。
+ _py2pumlはコード内の型ヒントに基づいて図を作成するため、型ヒントが不足または不正確な場合、不完全または不正確な図が生成される可能性があります。_
-4. 新旧の図の差分をレビューし、変更が正しいかどうかを手動で確認します。
- _過去に図に手動で追加され、現在も関連性のある部分を削除しないように注意してください。_
+4. 新しい図と以前の図の差分をレビューし、変更が正しいかどうかを手動で確認します。
+ _過去に図に手動で追加され、まだ関連性のある部分を削除しないように注意してください。_
-5. 図のフッターに、図の生成に使用されたコミットのコミットハッシュを追加します。
+5. 図を生成するために使用されたコミットのコミットハッシュを図のフッターに追加します。
-6. 図をPNGとSVGファイルとしてエクスポートし、`docs/architecture`ディレクトリ内の既存の図を置き換えます。これは(例えば[PlantText](https://www.planttext.com/))で行うことができます。
+6. 図をPNGおよびSVGファイルとしてエクスポートし、`docs/architecture`ディレクトリ内の既存の図を置き換えます。これは(例えば[PlantText](https://www.planttext.com/)で)行うことができます。
-
+
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/architecture/runtime.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/architecture/runtime.md
index b095636b9d93..21782ea29de0 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/architecture/runtime.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/architecture/runtime.md
@@ -1,43 +1,41 @@
-以下に翻訳結果を示します。
+# 📦 Docker ランタイム
-# 📦 Dockerランタイム
+OpenHands Docker ランタイムは、AIエージェントのアクションを安全かつ柔軟に実行できるようにする中核コンポーネントです。
+Dockerを使用してサンドボックス環境を作成し、ホストシステムを危険にさらすことなく任意のコードを安全に実行できます。
-OpenHands Dockerランタイムは、AIエージェントのアクションを安全かつ柔軟に実行できるようにするコアコンポーネントです。
-Dockerを使用してサンドボックス化された環境を作成し、ホストシステムを危険にさらすことなく任意のコードを安全に実行できます。
+## なぜサンドボックス化されたランタイムが必要なのか?
-## サンドボックス化されたランタイムが必要な理由
+OpenHandsが任意のコードを安全で隔離された環境で実行する必要がある理由はいくつかあります:
-OpenHandsでは、いくつかの理由から、信頼できないコードを安全で隔離された環境で実行する必要があります。
+1. セキュリティ:信頼されていないコードの実行はホストシステムに重大なリスクをもたらす可能性があります。サンドボックス環境は悪意のあるコードがホストシステムのリソースにアクセスしたり変更したりすることを防ぎます
+2. 一貫性:サンドボックス環境により、異なるマシンやセットアップ間でのコード実行の一貫性が確保され、「自分のマシンでは動作する」という問題を排除します
+3. リソース制御:サンドボックス化によりリソースの割り当てと使用をより適切に制御でき、暴走プロセスがホストシステムに影響を与えることを防ぎます
+4. 分離:異なるプロジェクトやユーザーが互いにまたはホストシステムに干渉することなく、隔離された環境で作業できます
+5. 再現性:サンドボックス環境は実行環境が一貫していて制御可能なため、バグや問題の再現が容易になります
-1. セキュリティ: 信頼できないコードを実行すると、ホストシステムに重大なリスクを及ぼす可能性があります。サンドボックス化された環境では、悪意のあるコードがホストシステムのリソースにアクセスしたり、変更したりすることを防ぐことができます。
-2. 一貫性: サンドボックス化された環境では、異なるマシンやセットアップ間でコードの実行が一貫していることが保証され、「自分のマシンでは動作する」という問題が解消されます。
-3. リソース制御: サンドボックス化により、リソースの割り当てと使用をより適切に制御でき、暴走プロセスがホストシステムに影響を与えることを防ぐことができます。
-4. 分離: 異なるプロジェクトやユーザーは、ホストシステムや他のプロジェクトに干渉することなく、分離された環境で作業できます。
-5. 再現性: サンドボックス化された環境では、実行環境が一貫しており制御可能であるため、バグや問題を再現しやすくなります。
+## ランタイムはどのように機能するか?
-## ランタイムの仕組み
-
-OpenHandsランタイムシステムは、Dockerコンテナを使用してクライアント-サーバーアーキテクチャを実装しています。以下は、その仕組みの概要です。
+OpenHandsランタイムシステムはDockerコンテナで実装されたクライアント-サーバーアーキテクチャを使用しています。以下はその仕組みの概要です:
```mermaid
graph TD
A[ユーザー提供のカスタムDockerイメージ] --> B[OpenHandsバックエンド]
B -->|ビルド| C[OHランタイムイメージ]
- C -->|起動| D[アクション実行サーバー]
+ C -->|起動| D[アクション実行者]
D -->|初期化| E[ブラウザ]
D -->|初期化| F[Bashシェル]
D -->|初期化| G[プラグイン]
G -->|初期化| L[Jupyterサーバー]
B -->|生成| H[エージェント]
- B -->|生成| I[EventStream]
+ B -->|生成| I[イベントストリーム]
I <--->|REST APIを介して
アクションを実行し
- 観測結果を取得
+ 観測を取得
| D
- H -->|アクション生成| I
- I -->|観測結果取得| H
+ H -->|アクションを生成| I
+ I -->|観測を取得| H
subgraph "Dockerコンテナ"
D
@@ -48,82 +46,82 @@ graph TD
end
```
-1. ユーザー入力: ユーザーがカスタムベースDockerイメージを提供します。
-2. イメージのビルド: OpenHandsは、ユーザー提供のイメージをベースに新しいDockerイメージ(「OHランタイムイメージ」)をビルドします。この新しいイメージには、主に「ランタイムクライアント」であるOpenHands固有のコードが含まれます。
-3. コンテナの起動: OpenHandsが起動すると、OHランタイムイメージを使用してDockerコンテナが起動します。
-4. アクション実行サーバーの初期化: アクション実行サーバーは、コンテナ内で`ActionExecutor`を初期化し、Bashシェルなどの必要なコンポーネントをセットアップし、指定されたプラグインをロードします。
-5. 通信: OpenHandsバックエンド(`openhands/runtime/impl/eventstream/eventstream_runtime.py`)は、RESTful APIを介してアクション実行サーバーと通信し、アクションを送信し、観測結果を受信します。
-6. アクションの実行: ランタイムクライアントはバックエンドからアクションを受信し、サンドボックス化された環境内でそれらを実行し、観測結果を送り返します。
-7. 観測結果の返却: アクション実行サーバーは、実行結果を観測結果としてOpenHandsバックエンドに送り返します。
+1. ユーザー入力:ユーザーがカスタムベースDockerイメージを提供します
+2. イメージビルド:OpenHandsはユーザー提供のイメージに基づいて新しいDockerイメージ(「OHランタイムイメージ」)をビルドします。この新しいイメージにはOpenHands固有のコード、主に「ランタイムクライアント」が含まれます
+3. コンテナ起動:OpenHandsが起動すると、OHランタイムイメージを使用してDockerコンテナを起動します
+4. アクション実行サーバーの初期化:アクション実行サーバーはコンテナ内で`ActionExecutor`を初期化し、Bashシェルなどの必要なコンポーネントをセットアップし、指定されたプラグインをロードします
+5. 通信:OpenHandsバックエンド(`openhands/runtime/impl/eventstream/eventstream_runtime.py`)はRESTful APIを介してアクション実行サーバーと通信し、アクションを送信して観測を受け取ります
+6. アクション実行:ランタイムクライアントはバックエンドからアクションを受け取り、サンドボックス環境で実行し、観測結果を送り返します
+7. 観測結果の返送:アクション実行サーバーは実行結果を観測としてOpenHandsバックエンドに送り返します
-クライアントの役割:
+クライアントの役割:
-- OpenHandsバックエンドとサンドボックス化された環境の間の仲介役を果たします。
-- コンテナ内で様々なタイプのアクション(シェルコマンド、ファイル操作、Pythonコードなど)を安全に実行します。
-- 現在の作業ディレクトリやロードされたプラグインなど、サンドボックス化された環境の状態を管理します。
-- 観測結果をフォーマットしてバックエンドに返し、結果を処理するための一貫したインターフェースを確保します。
+- OpenHandsバックエンドとサンドボックス環境の間の仲介役として機能します
+- さまざまなタイプのアクション(シェルコマンド、ファイル操作、Pythonコードなど)をコンテナ内で安全に実行します
+- 現在の作業ディレクトリやロードされたプラグインなど、サンドボックス環境の状態を管理します
+- 観測結果をバックエンドにフォーマットして返し、結果処理のための一貫したインターフェースを確保します
-## OpenHandsがOHランタイムイメージをビルドおよび管理する方法
+## OpenHandsがOHランタイムイメージをビルドし維持する方法
-OpenHandsのランタイムイメージのビルドと管理に対するアプローチは、本番環境と開発環境の両方でDockerイメージを効率的、一貫性のある、柔軟な方法で作成および維持することを保証します。
+OpenHandsのランタイムイメージの構築と管理へのアプローチは、本番環境と開発環境の両方のDockerイメージを作成・維持する際の効率性、一貫性、柔軟性を確保します。
-詳細に興味がある場合は、[関連コード](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/runtime/utils/runtime_build.py)をチェックしてください。
+詳細に興味がある場合は[関連コード](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/runtime/utils/runtime_build.py)をご確認ください。
-### イメージタグ付けシステム
+### イメージタグシステム
-OpenHandsは、再現性と柔軟性のバランスを取るために、ランタイムイメージに3つのタグシステムを使用しています。
-タグは以下の2つの形式のいずれかになります。
+OpenHandsはランタイムイメージに3つのタグシステムを使用して、再現性と柔軟性のバランスを取っています。
+タグは以下の2つの形式のいずれかになります:
-- **バージョン付きタグ**: `oh_v{openhands_version}_{base_image}` (例: `oh_v0.9.9_nikolaik_s_python-nodejs_t_python3.12-nodejs22`)
-- **ロックタグ**: `oh_v{openhands_version}_{16_digit_lock_hash}` (例: `oh_v0.9.9_1234567890abcdef`)
-- **ソースタグ**: `oh_v{openhands_version}_{16_digit_lock_hash}_{16_digit_source_hash}`
- (例: `oh_v0.9.9_1234567890abcdef_1234567890abcdef`)
+- **バージョンタグ**:`oh_v{openhands_version}_{base_image}`(例:`oh_v0.9.9_nikolaik_s_python-nodejs_t_python3.12-nodejs22`)
+- **ロックタグ**:`oh_v{openhands_version}_{16_digit_lock_hash}`(例:`oh_v0.9.9_1234567890abcdef`)
+- **ソースタグ**:`oh_v{openhands_version}_{16_digit_lock_hash}_{16_digit_source_hash}`
+ (例:`oh_v0.9.9_1234567890abcdef_1234567890abcdef`)
#### ソースタグ - 最も具体的
-これは、ソースディレクトリのディレクトリハッシュのMD5の最初の16桁です。これにより、openhandsソースのみのハッシュが得られます。
+これはソースディレクトリのディレクトリハッシュのMD5の最初の16桁です。これによりOpenhandsのソースコードのみのハッシュが得られます。
#### ロックタグ
-このハッシュは、以下のMD5の最初の16桁から構築されます。
+このハッシュは以下のMD5の最初の16桁から構築されます:
-- イメージがビルドされたベースイメージの名前(例: `nikolaik/python-nodejs:python3.12-nodejs22`)
+- イメージが構築されたベースイメージの名前(例:`nikolaik/python-nodejs:python3.12-nodejs22`)
- イメージに含まれる`pyproject.toml`の内容
- イメージに含まれる`poetry.lock`の内容
-これにより、ソースコードとは無関係に、Openhandsの依存関係のハッシュが効果的に得られます。
+これにより、ソースコードとは独立したOpenhandsの依存関係のハッシュが効果的に得られます。
-#### バージョン付きタグ - 最も一般的
+#### バージョンタグ - 最も一般的
-このタグは、openhandsのバージョンとベースイメージ名(タグ標準に適合するように変換されたもの)を連結したものです。
+このタグはOpenhandsのバージョンとベースイメージ名(タグ標準に合わせて変換)の連結です。
#### ビルドプロセス
イメージを生成する際...
-- **再ビルドなし**: OpenHandsは最初に、同じ**最も具体的なソースタグ**を持つイメージが存在するかどうかをチェックします。そのようなイメージが存在する場合、ビルドは実行されず、既存のイメージが使用されます。
-- **最速の再ビルド**: 次に、OpenHandsは**一般的なロックタグ**を持つイメージが存在するかどうかをチェックします。そのようなイメージが存在する場合、OpenHandsはそれに基づいて新しいイメージをビルドし、現在のソースコードをコピーする最終操作を除くすべてのインストール手順(`poetry install`や`apt-get`など)をバイパスします。新しいイメージには**ソース**タグのみが付けられます。
-- **まあまあの再ビルド**: **ソース**タグも**ロック**タグも存在しない場合、**バージョン付き**タグイメージに基づいてイメージがビルドされます。バージョン付きタグイメージでは、ほとんどの依存関係がすでにインストールされているため、時間を節約できます。
-- **最も遅い再ビルド**: 3つのタグのすべてが存在しない場合、ベースイメージに基づいて新しいイメージがビルドされます(これは遅い操作です)。この新しいイメージには、**ソース**、**ロック**、**バージョン付き**の各タグが付けられます。
+- **再ビルドなし**:OpenHandsはまず同じ**最も具体的なソースタグ**を持つイメージが存在するかどうかを確認します。そのようなイメージが存在する場合、ビルドは実行されず、既存のイメージが使用されます。
+- **最速の再ビルド**:OpenHandsは次に**一般的なロックタグ**を持つイメージが存在するかどうかを確認します。そのようなイメージが存在する場合、OpenHandsはそれに基づいて新しいイメージをビルドし、現在のソースコードをコピーする最終操作を除いて、すべてのインストール手順(`poetry install`や`apt-get`など)をバイパスします。新しいイメージには**ソース**タグのみが付けられます。
+- **まあまあの再ビルド**:**ソース**も**ロック**タグも存在しない場合、**バージョン**タグイメージに基づいてイメージがビルドされます。バージョンタグイメージでは、ほとんどの依存関係がすでにインストールされているため、時間を節約できます。
+- **最も遅い再ビルド**:3つのタグすべてが存在しない場合、ベースイメージに基づいて全く新しいイメージがビルドされます(これはより遅い操作です)。この新しいイメージには**ソース**、**ロック**、**バージョン**のすべてのタグが付けられます。
このタグ付けアプローチにより、OpenHandsは開発環境と本番環境の両方を効率的に管理できます。
-1. 同一のソースコードとDockerfileは、常に同じイメージを生成します(ハッシュベースのタグを介して)。
-2. 小さな変更が発生した場合、システムはイメージを迅速に再ビルドできます(最近の互換性のあるイメージを活用することで)。
-3. **ロック**タグ(例: `runtime:oh_v0.9.3_1234567890abcdef`)は、特定のベースイメージ、依存関係、およびOpenHandsバージョンの組み合わせに対する最新のビルドを常に指します。
+1. 同一のソースコードとDockerfileは常に同じイメージを生成します(ハッシュベースのタグを介して)
+2. 軽微な変更が発生した場合、システムは互換性のある最新のイメージを活用して迅速にイメージを再構築できます
+3. **ロック**タグ(例:`runtime:oh_v0.9.3_1234567890abcdef`)は常に特定のベースイメージ、依存関係、OpenHandsバージョンの組み合わせに対する最新のビルドを指します
## ランタイムプラグインシステム
-OpenHandsランタイムは、機能を拡張し、ランタイム環境をカスタマイズできるプラグインシステムをサポートしています。プラグインは、ランタイムクライアントの起動時に初期化されます。
+OpenHandsランタイムは、機能を拡張しランタイム環境をカスタマイズできるプラグインシステムをサポートしています。プラグインはランタイムクライアントの起動時に初期化されます。
-独自のプラグインを実装したい場合は、[Jupyterプラグインの例](https://github.com/All-Hands-AI/OpenHands/blob/ecf4aed28b0cf7c18d4d8ff554883ba182fc6bdd/openhands/runtime/plugins/jupyter/__init__.py#L21-L55)をチェックしてください。
+独自のプラグインを実装したい場合は、[Jupyterプラグインの例はこちら](https://github.com/All-Hands-AI/OpenHands/blob/ecf4aed28b0cf7c18d4d8ff554883ba182fc6bdd/openhands/runtime/plugins/jupyter/__init__.py#L21-L55)をご確認ください。
-*プラグインシステムの詳細はまだ作成中です - 貢献を歓迎します!*
+*プラグインシステムに関する詳細はまだ構築中です - 貢献を歓迎します!*
-プラグインシステムの主な側面:
+プラグインシステムの主な側面:
-1. プラグインの定義: プラグインは、基本の`Plugin`クラスを継承するPythonクラスとして定義されます。
-2. プラグインの登録: 利用可能なプラグインは、`ALL_PLUGINS`辞書に登録されます。
-3. プラグインの指定: プラグインは、`Agent.sandbox_plugins: list[PluginRequirement]`に関連付けられます。ユーザーは、ランタイムを初期化するときにロードするプラグインを指定できます。
-4. 初期化: プラグインは、ランタイムクライアントの起動時に非同期で初期化されます。
-5. 使用: ランタイムクライアントは、初期化されたプラグインを使用して機能を拡張できます(例: IPythonセルを実行するためのJupyterPlugin)。
+1. プラグイン定義:プラグインは基本の`Plugin`クラスを継承するPythonクラスとして定義されます
+2. プラグイン登録:利用可能なプラグインは`ALL_PLUGINS`辞書に登録されます
+3. プラグイン指定:プラグインは`Agent.sandbox_plugins: list[PluginRequirement]`に関連付けられます。ユーザーはランタイムの初期化時にロードするプラグインを指定できます
+4. 初期化:プラグインはランタイムクライアントの起動時に非同期で初期化されます
+5. 使用法:ランタイムクライアントは初期化されたプラグインを使用して機能を拡張できます(例:IPythonセルを実行するためのJupyterPlugin)
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/cloud/cloud-api.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/cloud/cloud-api.md
new file mode 100644
index 000000000000..7b777a3f442c
--- /dev/null
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/cloud/cloud-api.md
@@ -0,0 +1,177 @@
+# OpenHands Cloud API
+
+OpenHands Cloudは、サービスをプログラムで操作できるREST APIを提供しています。これは、自分のプログラムから柔軟な方法で簡単にジョブを開始したい場合に便利です。
+
+このガイドでは、APIキーの取得方法と、APIを使用して会話を開始する方法について説明します。
+APIの詳細については、[OpenHands APIリファレンス](https://docs.all-hands.dev/swagger-ui/)を参照してください。
+
+## APIキーの取得
+
+OpenHands Cloud APIを使用するには、APIキーを生成する必要があります:
+
+1. [OpenHands Cloud](https://app.all-hands.dev)アカウントにログインします
+2. [設定ページ](https://app.all-hands.dev/settings)に移動します
+3. 「APIキー」セクションを見つけます
+4. 「新しいキーを生成」をクリックします
+5. キーに分かりやすい名前を付けます(例:「開発用」、「本番用」)
+6. 生成されたAPIキーをコピーして安全に保管します - 表示されるのは一度だけです
+
+
+
+## APIの使用方法
+
+### 新しい会話の開始
+
+OpenHandsでタスクを実行する新しい会話を開始するには、会話エンドポイントにPOSTリクエストを送信する必要があります。
+
+#### リクエストパラメータ
+
+| パラメータ | 型 | 必須 | 説明 |
+|-----------|------|----------|-------------|
+| `initial_user_msg` | string | はい | 会話を開始する最初のメッセージ |
+| `repository` | string | いいえ | コンテキストを提供するGitリポジトリ名(`owner/repo`形式)。リポジトリへのアクセス権が必要です。 |
+
+#### 例
+
+
+cURL
+
+```bash
+curl -X POST "https://app.all-hands.dev/api/conversations" \
+ -H "Authorization: Bearer YOUR_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "initial_user_msg": "Check whether there is any incorrect information in the README.md file and send a PR to fix it if so.",
+ "repository": "yourusername/your-repo"
+ }'
+```
+
+
+
+Python (requestsを使用)
+
+```python
+import requests
+
+api_key = "YOUR_API_KEY"
+url = "https://app.all-hands.dev/api/conversations"
+
+headers = {
+ "Authorization": f"Bearer {api_key}",
+ "Content-Type": "application/json"
+}
+
+data = {
+ "initial_user_msg": "Check whether there is any incorrect information in the README.md file and send a PR to fix it if so.",
+ "repository": "yourusername/your-repo"
+}
+
+response = requests.post(url, headers=headers, json=data)
+conversation = response.json()
+
+print(f"Conversation Link: https://app.all-hands.dev/conversations/{conversation['id']}")
+print(f"Status: {conversation['status']}")
+```
+
+
+
+TypeScript/JavaScript (fetchを使用)
+
+```typescript
+const apiKey = "YOUR_API_KEY";
+const url = "https://app.all-hands.dev/api/conversations";
+
+const headers = {
+ "Authorization": `Bearer ${apiKey}`,
+ "Content-Type": "application/json"
+};
+
+const data = {
+ initial_user_msg: "Check whether there is any incorrect information in the README.md file and send a PR to fix it if so.",
+ repository: "yourusername/your-repo"
+};
+
+async function startConversation() {
+ try {
+ const response = await fetch(url, {
+ method: "POST",
+ headers: headers,
+ body: JSON.stringify(data)
+ });
+
+ const conversation = await response.json();
+
+ console.log(`Conversation Link: https://app.all-hands.dev/conversations/${conversation.id}`);
+ console.log(`Status: ${conversation.status}`);
+
+ return conversation;
+ } catch (error) {
+ console.error("Error starting conversation:", error);
+ }
+}
+
+startConversation();
+```
+
+
+
+#### レスポンス
+
+APIは作成された会話の詳細を含むJSONオブジェクトを返します:
+
+```json
+{
+ "status": "ok",
+ "conversation_id": "abc1234",
+}
+```
+
+以下の場合は`AuthenticationError`を受け取ることがあります:
+
+1. 無効なAPIキーを提供した場合
+2. 間違ったリポジトリ名を提供した場合
+3. リポジトリへのアクセス権がない場合
+
+
+### 会話ステータスの取得
+
+会話エンドポイントにGETリクエストを送信することで、会話のステータスを確認できます。
+
+#### エンドポイント
+
+```
+GET https://app.all-hands.dev/api/conversations/{conversation_id}
+```
+
+#### 例
+
+
+cURL
+
+```bash
+curl -X GET "https://app.all-hands.dev/api/conversations/{conversation_id}" \
+ -H "Authorization: Bearer YOUR_API_KEY"
+```
+
+
+#### レスポンス
+
+レスポンスは以下の形式でフォーマットされます:
+
+```json
+{
+ "conversation_id":"abc1234",
+ "title":"Update README.md",
+ "created_at":"2025-04-29T15:13:51.370706Z",
+ "last_updated_at":"2025-04-29T15:13:57.199210Z",
+ "status":"RUNNING",
+ "selected_repository":"yourusername/your-repo",
+ "trigger":"gui"
+}
+```
+
+## レート制限
+
+APIはアカウントごとに10の同時会話の制限があります。ユースケースに応じてより高い制限が必要な場合は、[contact@all-hands.dev](mailto:contact@all-hands.dev)までお問い合わせください。
+
+この制限を超えると、APIは429 Too Many Requestsレスポンスを返します。
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/cloud/cloud-github-resolver.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/cloud/cloud-github-resolver.md
new file mode 100644
index 000000000000..af94bc6d39ac
--- /dev/null
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/cloud/cloud-github-resolver.md
@@ -0,0 +1,31 @@
+# Cloud GitHub Resolver
+
+GitHub Resolverはコードの修正を自動化し、リポジトリに対してインテリジェントな支援を提供します。
+
+## セットアップ
+
+Cloud GitHub Resolverは、[OpenHands Cloudにリポジトリアクセス権を付与する](./openhands-cloud#adding-repository-access)と自動的に利用可能になります。
+
+## 使用方法
+
+OpenHands Cloudにリポジトリアクセス権を付与した後、リポジトリの課題(Issue)とプルリクエストでCloud GitHub Resolverを使用できます。
+
+### 課題(Issues)
+
+リポジトリで課題に`openhands`ラベルを付けると、OpenHandsは以下の操作を行います:
+1. 課題にコメントして、作業中であることを通知します。
+ - OpenHands Cloudで進捗状況を追跡するためのリンクをクリックできます。
+2. 課題が正常に解決されたと判断した場合、プルリクエストを開きます。
+3. 実行されたタスクの概要とプルリクエストへのリンクを含むコメントを課題に投稿します。
+
+
+### プルリクエスト
+
+プルリクエストでOpenHandsを利用するには、トップレベルまたはインラインコメントで`@openhands`を使用して:
+ - 質問する
+ - 更新をリクエストする
+ - コードの説明を取得する
+
+OpenHandsは以下の操作を行います:
+1. PRにコメントして、作業中であることを通知します。
+2. タスクを実行します。
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/cloud/openhands-cloud.mdx b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/cloud/openhands-cloud.mdx
new file mode 100644
index 000000000000..3a6048db2881
--- /dev/null
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/cloud/openhands-cloud.mdx
@@ -0,0 +1,65 @@
+# OpenHands Cloud
+
+OpenHands CloudはAll Hands AIによるOpenHandsのクラウドホスト版です。
+
+## OpenHands Cloudへのアクセス
+
+OpenHands Cloudは https://app.all-hands.dev/ でアクセスできます。
+
+[API](./cloud-api)を使用してプログラム的にOpenHands Cloudと対話することもできます。
+
+## はじめに
+
+OpenHands Cloudにアクセスすると、GitHubまたはGitLabアカウントとの接続を求められます:
+
+1. 利用規約を読んで同意した後、`Log in with GitHub`または`Log in with GitLab`をクリックします。
+2. OpenHandsが要求する権限を確認し、`Authorize OpenHands AI`をクリックします。
+ - OpenHandsはGitHubまたはGitLabアカウントからいくつかの権限を必要とします。これらの権限について詳しく知るには:
+ - GitHub:GitHub認証ページの`Learn more`リンクをクリックできます。
+ - GitLab:GitLab認証ページで各権限リクエストを展開できます。
+
+## リポジトリアクセス
+
+### GitHub
+
+#### リポジトリアクセスの追加
+
+OpenHandsに特定のリポジトリへのアクセス権を付与できます:
+1. ホームページで`Add GitHub repos`をクリックします。
+2. 組織を選択し、OpenHandsにアクセス権を付与する特定のリポジトリを選択します。
+
+ リポジトリアクセスの権限詳細
+
+ Openhandsは短期間のトークン(8時間で期限切れ)を以下の権限で要求します:
+ - Actions:読み取りと書き込み
+ - Administration:読み取り専用
+ - Commit statuses:読み取りと書き込み
+ - Contents:読み取りと書き込み
+ - Issues:読み取りと書き込み
+ - Metadata:読み取り専用
+ - Pull requests:読み取りと書き込み
+ - Webhooks:読み取りと書き込み
+ - Workflows:読み取りと書き込み
+
+ ユーザーのリポジトリアクセスは以下に基づいて付与されます:
+ - リポジトリに対して付与された権限
+ - ユーザーのGitHub権限(オーナー/コラボレーター)
+
+
+3. `Install & Authorize`をクリックします。
+
+#### リポジトリアクセスの変更
+
+GitHubリポジトリアクセスはいつでも以下の方法で変更できます:
+* 同じ`Add GitHub repos`ワークフローを使用する、または
+* 設定ページにアクセスし、`Git Settings`セクションの下にある`Configure GitHub Repositories`を選択する。
+
+### GitLab
+
+GitLabアカウントを使用する場合、OpenHandsは自動的にあなたのリポジトリにアクセスできるようになります。
+
+## 会話の保持
+
+- 会話リスト – 過去10日間に開始された最新10件の会話のみが表示されます。
+- ワークスペース – 会話ワークスペースは14日間保持されます。
+- ランタイム – ランタイムは30分間アクティブ(「ウォーム」)な状態を維持します。この期間後、会話を再開するには1〜2分かかる場合があります。
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/configuration-options.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/configuration-options.md
index 0fad2f83634f..87ab753b088e 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/configuration-options.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/configuration-options.md
@@ -1,381 +1,342 @@
# 設定オプション
-このガイドでは、OpenHandsで利用可能なすべての設定オプションを詳しく説明し、その動作をカスタマイズし、他のサービスと統合するのに役立ちます。
-
:::note
-[GUIモード](https://docs.all-hands.dev/modules/usage/how-to/gui-mode)で実行している場合、設定UIで利用可能な設定が常に優先されます。
+このページでは、OpenHandsで利用可能なすべての設定オプションを説明しています。これにより、動作をカスタマイズし、他のサービスと統合することができます。GUIモードでは、設定UI経由で適用された設定が優先されます。
:::
----
-
-# 目次
-
-1. [基本設定](#core-configuration)
- - [APIキー](#api-keys)
- - [ワークスペース](#workspace)
- - [デバッグとロギング](#debugging-and-logging)
- - [トラジェクトリ](#trajectories)
- - [ファイルストア](#file-store)
- - [タスク管理](#task-management)
- - [サンドボックス設定](#sandbox-configuration)
- - [その他](#miscellaneous)
-2. [LLM設定](#llm-configuration)
- - [AWS認証情報](#aws-credentials)
- - [API設定](#api-configuration)
- - [カスタムLLMプロバイダー](#custom-llm-provider)
- - [埋め込み](#embeddings)
- - [メッセージ処理](#message-handling)
- - [モデル選択](#model-selection)
- - [リトライ](#retrying)
- - [詳細オプション](#advanced-options)
-3. [エージェント設定](#agent-configuration)
- - [メモリ設定](#memory-configuration)
- - [LLM設定](#llm-configuration-1)
- - [アクションスペース設定](#actionspace-configuration)
- - [マイクロエージェントの使用](#microagent-usage)
-4. [サンドボックス設定](#sandbox-configuration-1)
- - [実行](#execution)
- - [コンテナイメージ](#container-image)
- - [ネットワーキング](#networking)
- - [リンティングとプラグイン](#linting-and-plugins)
- - [依存関係と環境](#dependencies-and-environment)
- - [評価](#evaluation)
-5. [セキュリティ設定](#security-configuration)
- - [確認モード](#confirmation-mode)
- - [セキュリティアナライザー](#security-analyzer)
-
----
-
-## 基本設定
-
-基本設定オプションは`config.toml`ファイルの`[core]`セクションで定義されます。
-
-**APIキー**
+## コア設定
+
+コア設定オプションは、`config.toml`ファイルの`[core]`セクションで定義されています。
+
+### APIキー
- `e2b_api_key`
- 型: `str`
- - デフォルト値: `""`
+ - デフォルト: `""`
- 説明: E2BのAPIキー
- `modal_api_token_id`
- 型: `str`
- - デフォルト値: `""`
+ - デフォルト: `""`
- 説明: ModalのAPIトークンID
- `modal_api_token_secret`
- 型: `str`
- - デフォルト値: `""`
+ - デフォルト: `""`
- 説明: ModalのAPIトークンシークレット
-**ワークスペース**
-- `workspace_base`
+### ワークスペース
+- `workspace_base` **(非推奨)**
- 型: `str`
- - デフォルト値: `"./workspace"`
- - 説明: ワークスペースのベースパス
+ - デフォルト: `"./workspace"`
+ - 説明: ワークスペースのベースパス。**非推奨: 代わりに`SANDBOX_VOLUMES`を使用してください。**
- `cache_dir`
- 型: `str`
- - デフォルト値: `"/tmp/cache"`
+ - デフォルト: `"/tmp/cache"`
- 説明: キャッシュディレクトリのパス
-**デバッグとロギング**
+### デバッグとロギング
- `debug`
- 型: `bool`
- - デフォルト値: `false`
+ - デフォルト: `false`
- 説明: デバッグを有効にする
- `disable_color`
- 型: `bool`
- - デフォルト値: `false`
- - 説明: ターミナル出力のカラー表示を無効にする
+ - デフォルト: `false`
+ - 説明: ターミナル出力の色を無効にする
-**トラジェクトリ**
+### トラジェクトリ
- `save_trajectory_path`
- 型: `str`
- - デフォルト値: `"./trajectories"`
- - 説明: トラジェクトリを保存するパス(フォルダまたはファイル)。フォルダの場合、トラジェクトリはセッションIDと.json拡張子を持つファイルとしてそのフォルダに保存されます。
+ - デフォルト: `"./trajectories"`
+ - 説明: トラジェクトリを保存するパス(フォルダまたはファイル)。フォルダの場合、トラジェクトリはセッションID名と.json拡張子を持つファイルにそのフォルダ内に保存されます。
-**ファイルストア**
+- `replay_trajectory_path`
+ - 型: `str`
+ - デフォルト: `""`
+ - 説明: トラジェクトリをロードして再生するためのパス。指定する場合は、JSON形式のトラジェクトリファイルへのパスである必要があります。トラジェクトリファイル内のアクションは、ユーザー指示が実行される前に最初に再生されます。
+
+### ファイルストア
- `file_store_path`
- 型: `str`
- - デフォルト値: `"/tmp/file_store"`
+ - デフォルト: `"/tmp/file_store"`
- 説明: ファイルストアのパス
- `file_store`
- 型: `str`
- - デフォルト値: `"memory"`
+ - デフォルト: `"memory"`
- 説明: ファイルストアのタイプ
- `file_uploads_allowed_extensions`
- 型: `list of str`
- - デフォルト値: `[".*"]`
- - 説明: アップロードを許可するファイル拡張子のリスト
+ - デフォルト: `[".*"]`
+ - 説明: アップロード可能なファイル拡張子のリスト
- `file_uploads_max_file_size_mb`
- 型: `int`
- - デフォルト値: `0`
- - 説明: アップロードの最大ファイルサイズ(メガバイト)
+ - デフォルト: `0`
+ - 説明: アップロードの最大ファイルサイズ(メガバイト単位)
- `file_uploads_restrict_file_types`
- 型: `bool`
- - デフォルト値: `false`
+ - デフォルト: `false`
- 説明: ファイルアップロードのファイルタイプを制限する
-**タスク管理**
+- `file_uploads_allowed_extensions`
+ - 型: `list of str`
+ - デフォルト: `[".*"]`
+ - 説明: アップロード可能なファイル拡張子のリスト
+
+### タスク管理
- `max_budget_per_task`
- 型: `float`
- - デフォルト値: `0.0`
- - 説明: タスクごとの最大予算(0.0は制限なし)
+ - デフォルト: `0.0`
+ - 説明: タスクごとの最大予算(0.0は制限なしを意味します)
- `max_iterations`
- 型: `int`
- - デフォルト値: `100`
- - 説明: 最大イテレーション数
+ - デフォルト: `100`
+ - 説明: 最大反復回数
+
+### サンドボックス設定
+- `volumes`
+ - 型: `str`
+ - デフォルト: `None`
+ - 説明: 'host_path:container_path[:mode]'形式のボリュームマウント。例:'/my/host/dir:/workspace:rw'。複数のマウントはカンマで区切って指定できます。例:'/path1:/workspace/path1,/path2:/workspace/path2:ro'
-**サンドボックス設定**
-- `workspace_mount_path_in_sandbox`
+- `workspace_mount_path_in_sandbox` **(非推奨)**
- 型: `str`
- - デフォルト値: `"/workspace"`
- - 説明: サンドボックス内のワークスペースマウントパス
+ - デフォルト: `"/workspace"`
+ - 説明: サンドボックス内にワークスペースをマウントするパス。**非推奨: 代わりに`SANDBOX_VOLUMES`を使用してください。**
-- `workspace_mount_path`
+- `workspace_mount_path` **(非推奨)**
- 型: `str`
- - デフォルト値: `""`
- - 説明: ワークスペースマウントパス
+ - デフォルト: `""`
+ - 説明: ワークスペースをマウントするパス。**非推奨: 代わりに`SANDBOX_VOLUMES`を使用してください。**
-- `workspace_mount_rewrite`
+- `workspace_mount_rewrite` **(非推奨)**
- 型: `str`
- - デフォルト値: `""`
- - 説明: ワークスペースマウントパスを書き換えるパス。通常は無視できます。別のコンテナ内での実行の特殊なケースを参照します。
+ - デフォルト: `""`
+ - 説明: ワークスペースマウントパスを書き換えるパス。通常は無視できます。別のコンテナ内で実行する特殊なケースを指します。**非推奨: 代わりに`SANDBOX_VOLUMES`を使用してください。**
-**その他**
+### その他
- `run_as_openhands`
- 型: `bool`
- - デフォルト値: `true`
+ - デフォルト: `true`
- 説明: OpenHandsとして実行する
- `runtime`
- 型: `str`
- - デフォルト値: `"docker"`
- - 説明: 実行環境
+ - デフォルト: `"docker"`
+ - 説明: ランタイム環境
- `default_agent`
- 型: `str`
- - デフォルト値: `"CodeActAgent"`
- - 説明: デフォルトのエージェント名
+ - デフォルト: `"CodeActAgent"`
+ - 説明: デフォルトエージェントの名前
- `jwt_secret`
- 型: `str`
- - デフォルト値: `uuid.uuid4().hex`
+ - デフォルト: `uuid.uuid4().hex`
- 説明: 認証用のJWTシークレット。独自の値に設定してください。
## LLM設定
-LLM(大規模言語モデル)設定オプションは`config.toml`ファイルの`[llm]`セクションで定義されます。
+LLM(大規模言語モデル)設定オプションは、`config.toml`ファイルの`[llm]`セクションで定義されています。
-dockerコマンドで使用する場合は、`-e LLM_`として渡します。例:`-e LLM_NUM_RETRIES`
+これらをdockerコマンドで使用するには、`-e LLM_ `を渡します。例:`-e LLM_NUM_RETRIES`。
:::note
-開発設定では、カスタムLLM設定も定義できます。詳細は[カスタムLLM設定](./llms/custom-llm-configs)を参照してください。
+開発セットアップでは、カスタム名前付きLLM設定を定義することもできます。詳細は[カスタムLLM設定](./llms/custom-llm-configs)を参照してください。
:::
**AWS認証情報**
- `aws_access_key_id`
- 型: `str`
- - デフォルト値: `""`
+ - デフォルト: `""`
- 説明: AWSアクセスキーID
- `aws_region_name`
- 型: `str`
- - デフォルト値: `""`
+ - デフォルト: `""`
- 説明: AWSリージョン名
- `aws_secret_access_key`
- 型: `str`
- - デフォルト値: `""`
+ - デフォルト: `""`
- 説明: AWSシークレットアクセスキー
-**API設定**
+### API設定
- `api_key`
- 型: `str`
- - デフォルト値: `None`
+ - デフォルト: `None`
- 説明: 使用するAPIキー
- `base_url`
- 型: `str`
- - デフォルト値: `""`
- - 説明: APIのベースURL
+ - デフォルト: `""`
+ - 説明: APIベースURL
- `api_version`
- 型: `str`
- - デフォルト値: `""`
+ - デフォルト: `""`
- 説明: APIバージョン
- `input_cost_per_token`
- 型: `float`
- - デフォルト値: `0.0`
+ - デフォルト: `0.0`
- 説明: 入力トークンあたりのコスト
- `output_cost_per_token`
- 型: `float`
- - デフォルト値: `0.0`
+ - デフォルト: `0.0`
- 説明: 出力トークンあたりのコスト
-**カスタムLLMプロバイダー**
+### カスタムLLMプロバイダー
- `custom_llm_provider`
- 型: `str`
- - デフォルト値: `""`
+ - デフォルト: `""`
- 説明: カスタムLLMプロバイダー
-**埋め込み**
-- `embedding_base_url`
- - 型: `str`
- - デフォルト値: `""`
- - 説明: 埋め込みAPIのベースURL
-
-- `embedding_deployment_name`
- - 型: `str`
- - デフォルト値: `""`
- - 説明: 埋め込みデプロイメント名
-
-- `embedding_model`
- - 型: `str`
- - デフォルト値: `"local"`
- - 説明: 使用する埋め込みモデル
-
-**メッセージ処理**
+### メッセージ処理
- `max_message_chars`
- 型: `int`
- - デフォルト値: `30000`
- - 説明: LLMプロンプトに含まれるイベントコンテンツの最大文字数(概算)。より大きな観察は切り捨てられます。
+ - デフォルト: `30000`
+ - 説明: LLMへのプロンプトに含まれるイベントのコンテンツの最大文字数(概算)。より大きな観測は切り捨てられます。
- `max_input_tokens`
- 型: `int`
- - デフォルト値: `0`
+ - デフォルト: `0`
- 説明: 最大入力トークン数
- `max_output_tokens`
- 型: `int`
- - デフォルト値: `0`
+ - デフォルト: `0`
- 説明: 最大出力トークン数
-**モデル選択**
+### モデル選択
- `model`
- 型: `str`
- - デフォルト値: `"claude-3-5-sonnet-20241022"`
+ - デフォルト: `"claude-3-5-sonnet-20241022"`
- 説明: 使用するモデル
-**リトライ**
+### リトライ
- `num_retries`
- 型: `int`
- - デフォルト値: `8`
- - 説明: リトライ回数
+ - デフォルト: `8`
+ - 説明: 試行するリトライ回数
- `retry_max_wait`
- 型: `int`
- - デフォルト値: `120`
- - 説明: リトライ間の最大待機時間(秒)
+ - デフォルト: `120`
+ - 説明: リトライ試行間の最大待機時間(秒)
- `retry_min_wait`
- 型: `int`
- - デフォルト値: `15`
- - 説明: リトライ間の最小待機時間(秒)
+ - デフォルト: `15`
+ - 説明: リトライ試行間の最小待機時間(秒)
- `retry_multiplier`
- 型: `float`
- - デフォルト値: `2.0`
+ - デフォルト: `2.0`
- 説明: 指数バックオフ計算の乗数
-**詳細オプション**
+### 高度なオプション
- `drop_params`
- 型: `bool`
- - デフォルト値: `false`
+ - デフォルト: `false`
- 説明: マッピングされていない(サポートされていない)パラメータを例外を発生させずに削除する
- `caching_prompt`
- 型: `bool`
- - デフォルト値: `true`
+ - デフォルト: `true`
- 説明: LLMによって提供され、サポートされている場合、プロンプトキャッシュ機能を使用する
- `ollama_base_url`
- 型: `str`
- - デフォルト値: `""`
+ - デフォルト: `""`
- 説明: OLLAMA APIのベースURL
- `temperature`
- 型: `float`
- - デフォルト値: `0.0`
- - 説明: APIの温度パラメータ
+ - デフォルト: `0.0`
+ - 説明: APIの温度
- `timeout`
- 型: `int`
- - デフォルト値: `0`
+ - デフォルト: `0`
- 説明: APIのタイムアウト
- `top_p`
- 型: `float`
- - デフォルト値: `1.0`
- - 説明: APIのtop_pパラメータ
+ - デフォルト: `1.0`
+ - 説明: APIのtop p
- `disable_vision`
- 型: `bool`
- - デフォルト値: `None`
- - 説明: モデルがビジョン機能を持つ場合、この設定で画像処理を無効にできます(コスト削減に有用)
+ - デフォルト: `None`
+ - 説明: モデルがビジョン対応の場合、このオプションで画像処理を無効にできます(コスト削減に役立ちます)
## エージェント設定
-エージェント設定オプションは`config.toml`ファイルの`[agent]`および`[agent.]`セクションで定義されます。
-
-**メモリ設定**
-- `memory_enabled`
- - 型: `bool`
- - デフォルト値: `false`
- - 説明: 長期メモリ(埋め込み)が有効かどうか
+エージェント設定オプションは、`config.toml`ファイルの`[agent]`および`[agent.]`セクションで定義されています。
-- `memory_max_threads`
- - 型: `int`
- - デフォルト値: `3`
- - 説明: 埋め込みのために同時にインデックスを作成する最大スレッド数
-
-**LLM設定**
+### LLM設定
- `llm_config`
- 型: `str`
- - デフォルト値: `'your-llm-config-group'`
+ - デフォルト: `'your-llm-config-group'`
- 説明: 使用するLLM設定の名前
-**アクションスペース設定**
+### ActionSpace設定
- `function_calling`
- 型: `bool`
- - デフォルト値: `true`
+ - デフォルト: `true`
- 説明: 関数呼び出しが有効かどうか
- `enable_browsing`
- 型: `bool`
- - デフォルト値: `false`
- - 説明: アクションスペースでブラウジングデリゲートが有効かどうか(関数呼び出しでのみ機能)
+ - デフォルト: `false`
+ - 説明: アクションスペースでブラウジングデリゲートが有効かどうか(関数呼び出しでのみ機能します)
- `enable_llm_editor`
- 型: `bool`
- - デフォルト値: `false`
- - 説明: アクションスペースでLLMエディタが有効かどうか(関数呼び出しでのみ機能)
+ - デフォルト: `false`
+ - 説明: アクションスペースでLLMエディタが有効かどうか(関数呼び出しでのみ機能します)
-**マイクロエージェントの使用**
+- `enable_jupyter`
+ - 型: `bool`
+ - デフォルト: `false`
+ - 説明: アクションスペースでJupyterが有効かどうか
+
+- `enable_history_truncation`
+ - 型: `bool`
+ - デフォルト: `true`
+ - 説明: LLMコンテキスト長の制限に達したときにセッションを続行するために履歴を切り詰めるかどうか
+
+### マイクロエージェントの使用
- `enable_prompt_extensions`
- 型: `bool`
- - デフォルト値: `true`
- - 説明: マイクロエージェントの使用が有効かどうか
+ - デフォルト: `true`
+ - 説明: マイクロエージェントを使用するかどうか
- `disabled_microagents`
- 型: `list of str`
- - デフォルト値: `None`
+ - デフォルト: `None`
- 説明: 無効にするマイクロエージェントのリスト
+## サンドボックス設定
+
+サンドボックス設定オプションは、`config.toml`ファイルの`[sandbox]`セクションで定義されています。
+
+これらをdockerコマンドで使用するには、`-e SANDBOX_`を渡します。例:`-e SANDBOX_TIMEOUT`。
+
### 実行
- `timeout`
- 型: `int`
- - デフォルト値: `120`
+ - デフォルト: `120`
- 説明: サンドボックスのタイムアウト(秒)
- `user_id`
- 型: `int`
- - デフォルト値: `1000`
- - 説明: サンドボックスのユーザーID
+ - デフォルト: `1000`
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/customization/repository.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/customization/repository.md
new file mode 100644
index 000000000000..4c8a1c61c95e
--- /dev/null
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/customization/repository.md
@@ -0,0 +1,21 @@
+# リポジトリのカスタマイズ
+
+リポジトリのルートレベルに `.openhands` ディレクトリを作成することで、OpenHandsがあなたのリポジトリとどのように連携するかをカスタマイズできます。
+
+## マイクロエージェント
+
+マイクロエージェントを使用すると、OpenHandsのプロンプトをプロジェクト固有の情報で拡張し、OpenHandsがどのように機能するかを定義できます。詳細については[マイクロエージェントの概要](../prompting/microagents-overview)をご覧ください。
+
+
+## セットアップスクリプト
+`.openhands/setup.sh` ファイルを追加すると、OpenHandsがあなたのリポジトリで作業を開始するたびに実行されます。
+これは依存関係のインストール、環境変数の設定、その他のセットアップタスクを実行するための理想的な場所です。
+
+例えば:
+```bash
+#!/bin/bash
+export MY_ENV_VAR="my value"
+sudo apt-get update
+sudo apt-get install -y lsof
+cd frontend && npm install ; cd ..
+```
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/feedback.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/feedback.md
index d76aa4ec1c07..c6eccea2dfaa 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/feedback.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/feedback.md
@@ -1,10 +1,10 @@
# ✅ フィードバックの提供
-OpenHandsを使用する際、うまくいく場合もあれば、そうでない場合もあります。開発チームにフィードバックを提供し、おそらくより重要なことですが、コーディングエージェントのトレーニング例のオープンなコーパスを作成するために、OpenHandsを使用する際にフィードバックを提供することをお勧めします -- Share-OpenHands!
+OpenHandsを使用する際、うまく機能する場合と機能しない場合があります。OpenHandsを使用する際にフィードバックを提供することで、開発チームにフィードバックを与え、さらに重要なことに、コーディングエージェントのトレーニング例のオープンコーパスを作成することを奨励します - Share-OpenHands!
## 📝 フィードバックの提供方法
-フィードバックの提供は簡単です! OpenHandsを使用している際、インタラクションの任意のポイントで親指を上または下に向けるボタンを押すことができます。メールアドレスの入力を求められます (例: フォローアップの質問をしたい場合に連絡できるように)。また、フィードバックを公開するか非公開にするかを選択できます。
+フィードバックの提供は簡単です!OpenHandsを使用している際、対話中のどの時点でも親指を上げるボタンまたは親指を下げるボタンを押すことができます。メールアドレスの入力を求められます(例:追加の質問がある場合に連絡できるように)、そしてフィードバックを公開するか非公開にするかを選択できます。
VIDEO
@@ -12,29 +12,28 @@ OpenHandsを使用する際、うまくいく場合もあれば、そうでな
### データ共有設定
-データを送信する際、公開または非公開で送信できます。
+データを提出する際、公開または非公開で提出することができます。
-- **公開**データは、OpenHands自体と同様にMITライセンスの下で配布され、コミュニティがモデルのトレーニングとテストに使用できます。明らかに、公開できるフィードバックは、コミュニティ全体にとってより価値があるでしょう。機密情報を扱っていない場合は、このオプションを選択することをお勧めします!
-- **非公開**データは、OpenHandsの改善を目的としてOpenHandsチームが利用できるようになります。ただし、一意のIDを持つリンクが作成され、他の人と公開で共有できます。
+- **公開**データはOpenHands自体と同様にMITライセンスの下で配布され、コミュニティがモデルのトレーニングとテストに使用できます。明らかに、公開できるフィードバックはコミュニティ全体にとってより価値があるため、機密情報を扱っていない場合は、このオプションを選択することをお勧めします!
+- **非公開**データはOpenHandsの改善を目的としてOpenHandsチームが利用できるようになります。ただし、他の人と公開して共有できる一意のIDを持つリンクは引き続き作成されます。
-### データの収集と保存は誰が行うのか?
+### 誰がデータを収集・保存するのか?
-データは、OpenHandsのメンテナーによって設立されたOpenHandsのサポートと改善を目的とする企業である[All Hands AI](https://all-hands.dev)によって収集および保存されます。
+データはOpenHandsのメンテナーによって設立された[All Hands AI](https://all-hands.dev)という会社によって収集・保存されます。この会社はOpenHandsをサポートし改善するために設立されました。
-### 公開データはどのようにリリースされるのか?
+### 公開データはどのようにリリースされますか?
-公開データは、1,000件の公開例、10,000件の公開例などの固定されたマイルストーンに達した時点でリリースされます。
-その際、以下のリリースプロセスに従います:
+公開データは、1,000件の公開例、10,000件の公開例など、固定のマイルストーンに達した時点でリリースされます。
+この時点で、以下のリリースプロセスに従います:
-1. 公開フィードバックを提供したすべての人に、データのリリースについて説明し、オプトアウトする機会を与えるメールが送信されます。
-2. データリリースを担当する人は、データの品質管理を行い、低品質のフィードバックを削除し、
-提出者のメールアドレスを削除し、機密情報を削除するよう試みます。
-3. データは、GitHubやHugging Faceなどの一般的に使用されているサイトを通じて、MITライセンスの下で公開されます。
+1. 公開フィードバックを提供したすべての人にデータリリースについて説明し、オプトアウトの機会を与えるメールが送信されます。
+2. データリリースを担当する人物は、低品質のフィードバックの削除、提出者のメールアドレスの削除、機密情報の削除を試みるなど、データの品質管理を行います。
+3. データはMITライセンスの下でGitHubやHugging Faceなどの一般的に使用されているサイトを通じて公開されます。
-### データを削除したい場合はどうすればよいですか?
+### データの削除を希望する場合はどうすればよいですか?
-All Hands AIのサーバー上のデータについては、リクエストに応じて削除いたします:
+All Hands AIのサーバー上のデータについては、リクエストに応じて喜んで削除します:
-**1つのデータ:** 1つのデータを削除したい場合、データ送信時にインターフェイスに表示されるリンクとパスワードを使用してデータを削除するメカニズムを近日中に追加する予定です。
+**1つのデータ:** 1つのデータの削除を希望する場合、近日中にデータを提出した際にインターフェースに表示されるリンクとパスワードを使用してデータを削除するメカニズムを追加する予定です。
-**すべてのデータ:** すべてのデータを削除したい場合、またはデータ送信時に受け取ったIDとパスワードがない場合は、元のデータ送信時に登録したメールアドレスから`contact@all-hands.dev`までご連絡ください。
+**すべてのデータ:** すべてのデータの削除を希望する場合、またはデータ提出時に受け取ったIDとパスワードをお持ちでない場合は、データを最初に提出した際に登録したメールアドレスから`contact@all-hands.dev`にお問い合わせください。
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/getting-started.mdx b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/getting-started.mdx
index bd5954ef8bfc..bd30df9827c7 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/getting-started.mdx
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/getting-started.mdx
@@ -1,108 +1,93 @@
# OpenHandsを始める
-[OpenHandsをインストール](./installation)し、[LLMを設定](./installation#setup)しました。次は何をしましょうか?
+[OpenHandsを実行](./installation)して、
+[LLMをセットアップ](./installation#setup)しました。次は何をしますか?
-OpenHandsは、さまざまなエンジニアリングタスクを支援できます。しかし、この技術はまだ新しく、
-エージェントが支援なしで広範で複雑なエンジニアリングタスクを処理できるようになるまでには時間がかかります。
-そのため、エージェントが得意とすることと、支援が必要な部分を理解することが重要です。
+OpenHandsはさまざまなエンジニアリングタスクを支援できます。しかし、この技術はまだ新しく、複雑なタスクを独立して処理できるエージェントの実現にはまだ遠い道のりがあります。エージェントが得意とすることと、サポートが必要な部分を理解することが重要です。
## Hello World
-最初に試してみたいのは、シンプルな「hello world」の例かもしれません。
-これは見た目以上に複雑になる可能性があります!
+まずは簡単な「hello world」の例から始めましょう。思ったより難しいかもしれません!
-エージェントに以下のように依頼してみてください:
-> "hello world!"と表示するbashスクリプトhello.shを作成してください
+エージェントに次のようにプロンプトしてみましょう:
+> 「hello world!」と表示するbashスクリプトhello.shを書いてください
-エージェントがスクリプトを作成するだけでなく、適切な権限を設定し、
-スクリプトを実行して出力を確認することに気付くでしょう。
+エージェントはスクリプトを作成し、適切な権限を設定し、実行して出力を確認します。
-エージェントにコードの改良を続けて依頼することもできます。これはエージェントと
-作業する優れた方法です。シンプルに始めて、反復的に改良していきます。
+コードを改良するためにエージェントにさらにプロンプトを続けることができます。これはエージェントと作業する素晴らしい方法です。シンプルに始めて、反復していきましょう。
-> hello.shを修正して、最初の引数として名前を受け取るようにしてください。デフォルトは"world"にしてください
+> hello.shを修正して、最初の引数として名前を受け取るようにしてください。ただし、デフォルトは「world」にしてください
-また、エージェントが環境のセットアップに時間を要する可能性はありますが、
-必要な任意の言語で作業することができます!
+また、必要な言語を使用することもできます。エージェントは環境のセットアップに時間がかかる場合があります。
-> hello.shをRubyスクリプトに変換して実行してください
+> hello.shをRubyスクリプトに変換して、実行してください
## ゼロからの構築
-エージェントは、「グリーンフィールド」タスク(既存のコードベースに関する文脈を必要としないタスク)で
-特に優れた性能を発揮し、ゼロから始めることができます。
+エージェントは「グリーンフィールド」タスク、つまり既存のコードについてのコンテキストが不要で、
+ゼロから始められるタスクに優れています。
+シンプルなタスクから始めて、そこから反復していきましょう。欲しいものと技術スタックについて具体的に指示しましょう。
-シンプルなタスクから始めて、反復的に改良していくのがベストです。また、
-要望する内容、使用する技術スタックなどについて、できるだけ具体的に指定することをお勧めします。
+例えば、TODOアプリを構築するとします:
-例えば、TODOアプリケーションを構築できます:
+> フロントエンドのみのTODOアプリをReactで構築してください。すべての状態はlocalStorageに保存してください。
-> フロントエンドのみのReactベースの基本的なTODOリストアプリケーションを作成してください。
-> すべての状態はlocalStorageに保存してください。
+基本的な構造ができたら、さらに改良を続けます:
-基本的な構造ができたら、アプリケーションの改良を続けることができます:
+> 各タスクにオプションの期限を追加できるようにしてください。
-> 各タスクにオプションの期限を追加できるようにしてください
-
-通常の開発と同様に、頻繁にコミットとプッシュを行うことをお勧めします。
-これにより、エージェントが予期せぬ方向に進んだ場合でも、以前の状態に戻ることができます。
+通常の開発と同様に、コードを頻繁にコミットしてプッシュしましょう。
+これにより、エージェントが道を外れた場合でも、常に古い状態に戻すことができます。
エージェントにコミットとプッシュを依頼することもできます:
-> 変更をコミットして、"feature/due-dates"という新しいブランチにプッシュしてください
+> 変更をコミットして、「feature/due-dates」という新しいブランチにプッシュしてください
## 新しいコードの追加
-OpenHandsは、既存のコードベースに新しいコードを追加する作業も優れています。
+OpenHandsは既存のコードベースに新しいコードを追加するのに優れています。
-例えば、OpenHandsにコードを分析するGitHubアクションをプロジェクトに追加するよう依頼できます。
-OpenHandsはコードベースを確認して使用すべき言語を判断し、新しいファイルを
-`./github/workflows/lint.yml`に作成できます。
+例えば、コードをリントするGitHub actionを追加するようOpenHandsに依頼できます。言語を判断するためにコードベースをチェックし、`./github/workflows/lint.yml`に新しいファイルを作成するかもしれません。
-> このリポジトリのコードを分析するGitHubアクションを追加してください
+> このリポジトリのコードをリントするGitHub actionを追加してください。
-一部のタスクではより多くの文脈が必要かもしれません。OpenHandsは`ls`や`grep`を使用して
-コードベースを検索できますが、事前に文脈を提供することで、より速く、より正確に作業を
-進めることができます。また、トークンの消費も少なくなります!
+一部のタスクにはより多くのコンテキストが必要です。OpenHandsはlsやgrepなどのコマンドを使用して検索できますが、前もってコンテキストを提供することで作業が速くなり、トークンの使用量が減ります。
-> ./backend/api/routes.jsを修正して、すべてのタスクのリストを返す新しいルートを追加してください
+> ./backend/api/routes.jsを修正して、すべてのタスクのリストを返す新しいルートを追加してください。
-> ./frontend/componentsディレクトリにWidgetのリストを表示する新しいReactコンポーネントを追加してください。
+> ./frontend/componentsディレクトリに、Widgetのリストを表示する新しいReactコンポーネントを追加してください。
> 既存のWidgetコンポーネントを使用する必要があります。
## リファクタリング
-OpenHandsは、特に小規模な既存コードのリファクタリングに優れています。
-コードベース全体のアーキテクチャを変更しようとするのは避けた方がよいですが、
-長いファイルや関数の分割、変数名の変更などは非常にうまく機能する傾向があります。
+OpenHandsは小さな単位でのコードリファクタリングに優れています。コードベース全体を再設計するよりも、
+長いファイルや関数を分割したり、変数名を変更したりする方が効果的です。
-> ./app.goの1文字の変数名をすべて変更してください
+> ./app.goの一文字変数をすべて改名してください。
-> widget.phpの`build_and_deploy_widgets`関数を`build_widgets`と`deploy_widgets`の2つの関数に分割してください
+> widget.phpの`build_and_deploy_widgets`関数を`build_widgets`と`deploy_widgets`の2つの関数に分割してください。
-> ./api/routes.jsを各ルートごとの別々のファイルに分割してください
+> ./api/routes.jsを各ルートごとに別々のファイルに分割してください。
## バグ修正
-OpenHandsは、コードのバグの追跡と修正も支援できます。しかし、すべての
-開発者が知っているように、バグ修正は非常に繊細な作業になる可能性があり、多くの場合OpenHandsはより多くの文脈を
-必要とします。バグを診断済みで、OpenHandsにロジックを理解してもらいたい場合に特に役立ちます。
+OpenHandsはバグの追跡と修正を支援できますが、バグ修正は難しく、多くの場合より多くのコンテキストが必要です。
+すでに問題を診断していて、OpenHandsにロジックを処理してもらうだけの場合は役立ちます。
-> 現在、`/subscribe`エンドポイントのemailフィールドが.ioドメインを拒否しています。これを修正してください。
+> `/subscribe`エンドポイントのメールフィールドが.ioドメインを拒否しています。これを修正してください。
-> ./app.pyの`search_widgets`関数が大文字小文字を区別して検索を行っています。大文字小文字を区別しないように修正してください。
+> ./app.pyの`search_widgets`関数が大文字と小文字を区別する検索を行っています。大文字と小文字を区別しないようにしてください。
-エージェントとバグを修正する際は、テスト駆動開発を行うと便利なことが多いです。
-エージェントに新しいテストを書かせ、バグが修正されるまで反復することができます:
+バグ修正には、テスト駆動開発が非常に役立ちます。エージェントに新しいテストを書いてもらい、バグが修正されるまで反復することができます:
-> `hello`関数が空文字列でクラッシュします。このバグを再現するテストを書いて、コードを修正してテストが通るようにしてください。
+> `hello`関数が空の文字列でクラッシュします。このバグを再現するテストを書いて、コードを修正してテストに合格するようにしてください。
## その他
-OpenHandsは、ほぼすべてのコーディングタスクを支援できます。しかし、最大限に
-活用するには練習が必要です。以下の点を忘れないでください:
-* タスクを小さく保つ
-* できるだけ具体的に指定する
-* できるだけ多くの文脈を提供する
-* 頻繁にコミットとプッシュを行う
+OpenHandsはほぼすべてのコーディングタスクを支援できますが、最良の結果を得るには練習が必要です。
+以下のヒントを心に留めておきましょう:
+* タスクを小さく保つ。
+* 具体的に指示する。
+* 十分なコンテキストを提供する。
+* 頻繁にコミットしてプッシュする。
-OpenHandsを最大限に活用する方法についての詳細なアドバイスは、[プロンプトのベストプラクティス](./prompting/prompting-best-practices)をご覧ください。
+OpenHandsを最大限に活用する方法についての詳細は、[プロンプトのベストプラクティス](./prompting/prompting-best-practices)をご覧ください。
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/cli-mode.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/cli-mode.md
index e7db11fe9f49..7ffd09575b1e 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/cli-mode.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/cli-mode.md
@@ -1,45 +1,46 @@
-# CLI モード
+# CLIモード
-OpenHands は対話型の CLI モードで実行できます。これにより、ユーザーはコマンドラインから対話型セッションを開始できます。
+OpenHandsは対話型CLIモードで実行でき、コマンドラインを通じて対話型セッションを開始することができます。
-このモードは、非対話型でスクリプティングに適した [ヘッドレスモード](headless-mode) とは異なります。
+このモードは[ヘッドレスモード](headless-mode)とは異なり、対話型であり、スクリプト実行よりもユーザー操作に適しています。
-## Python を使用する場合
+## Pythonでの実行
-コマンドラインから対話型の OpenHands セッションを開始するには:
+コマンドラインから対話型OpenHandsセッションを開始するには:
-1. [開発セットアップの手順](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md) に従っていることを確認してください。
-2. 以下のコマンドを実行します:
+1. [開発環境セットアップ手順](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)に従っていることを確認してください。
+2. 以下のコマンドを実行します:
```bash
poetry run python -m openhands.core.cli
```
-このコマンドを実行すると、タスクを入力して OpenHands からレスポンスを受け取ることができる対話型セッションが開始されます。
+このコマンドは対話型セッションを開始し、タスクを入力してOpenHandsからの応答を受け取ることができます。
-環境変数 [または `config.toml` ファイル](https://github.com/All-Hands-AI/OpenHands/blob/main/config.template.toml) を使用して、モデル、API キー、その他の設定を確実に設定する必要があります。
+環境変数または[`config.toml`ファイル](https://github.com/All-Hands-AI/OpenHands/blob/main/config.template.toml)を通じて、モデル、APIキー、その他の設定を確実に設定する必要があります。
-## Docker を使用する場合
+## Dockerでの実行
-Docker で OpenHands を CLI モードで実行するには:
+DockerでOpenHandsをCLIモードで実行するには:
-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 \
- -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 \
@@ -48,48 +49,6 @@ docker run -it \
python -m openhands.core.cli
```
-このコマンドを実行すると、Docker 内で対話型セッションが開始され、タスクを入力して OpenHands からレスポンスを受け取ることができます。
+このコマンドはDocker内で対話型セッションを開始し、タスクを入力してOpenHandsからの応答を受け取ることができます。
-## CLI コマンドと期待される出力の例
-
-CLI コマンドとその期待される出力の例を以下に示します:
-
-### 例1: シンプルなタスク
-
-```bash
->> "Hello, World!" と出力する Python スクリプトを書いてください
-```
-
-期待される出力:
-
-```bash
-🤖 はい! "Hello, World!" と出力する Python スクリプトは以下のようになります:
-
-❯ print("Hello, World!")
-```
-
-### 例2: Bash コマンド
-
-```bash
->> "test_dir" という名前のディレクトリを作成してください
-```
-
-期待される出力:
-
-```bash
-🤖 "test_dir" という名前のディレクトリを作成します:
-
-❯ mkdir test_dir
-```
-
-### 例3: エラー処理
-
-```bash
->> 存在しないファイルを削除してください
-```
-
-期待される出力:
-
-```bash
-🤖 エラーが発生しました。もう一度お試しください。
-```
+`-e SANDBOX_USER_ID=$(id -u)`はDockerコマンドに渡され、サンドボックスユーザーがホストユーザーの権限と一致するようにします。これにより、エージェントがマウントされたワークスペースにroot所有のファイルを作成するのを防ぎます。
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/custom-sandbox-guide.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/custom-sandbox-guide.md
index 3aedd712409c..bfb314712e01 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/custom-sandbox-guide.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/custom-sandbox-guide.md
@@ -1,21 +1,29 @@
# カスタムサンドボックス
-サンドボックスは、エージェントがタスクを実行する場所です。コンピュータ上で直接コマンドを実行する(これはリスクがある可能性があります)代わりに、エージェントはDockerコンテナ内でそれらを実行します。
+:::note
+このガイドは、ランタイム用に独自のカスタムDockerイメージを使用したいユーザー向けです。例えば、
+特定のツールやプログラミング言語があらかじめインストールされているものなどです。
+:::
-デフォルトのOpenHandsサンドボックス([nikolaik/python-nodejs](https://hub.docker.com/r/nikolaik/python-nodejs)の`python-nodejs:python3.12-nodejs22`)にはPythonやNode.jsなどのパッケージがインストールされていますが、デフォルトでインストールする必要のある他のソフトウェアがある場合があります。
+サンドボックスはエージェントがタスクを実行する場所です。コマンドをあなたのコンピュータで直接実行する
+(これはリスクがあります)代わりに、エージェントはDockerコンテナ内でコマンドを実行します。
-カスタマイズには2つのオプションがあります:
+デフォルトのOpenHandsサンドボックス([nikolaik/python-nodejs](https://hub.docker.com/r/nikolaik/python-nodejs)から
+`python-nodejs:python3.12-nodejs22`)にはpythonやNode.jsなどのパッケージがインストールされていますが、
+他のソフトウェアをデフォルトでインストールする必要がある場合があります。
-- 必要なソフトウェアがインストールされている既存のイメージを使用する。
+カスタマイズには2つの選択肢があります:
+
+- 必要なソフトウェアがインストールされた既存のイメージを使用する。
- 独自のカスタムDockerイメージを作成する。
-最初のオプションを選択した場合は、`Dockerイメージの作成`セクションをスキップできます。
+最初の選択肢を選ぶ場合は、「Dockerイメージの作成」セクションをスキップできます。
## Dockerイメージの作成
カスタムDockerイメージを作成するには、Debianベースである必要があります。
-たとえば、OpenHandsに`ruby`をインストールしたい場合は、次の内容で`Dockerfile`を作成できます:
+例えば、OpenHandsに`ruby`をインストールしたい場合、以下の内容で`Dockerfile`を作成できます:
```dockerfile
FROM nikolaik/python-nodejs:python3.12-nodejs22
@@ -24,23 +32,23 @@ FROM nikolaik/python-nodejs:python3.12-nodejs22
RUN apt-get update && apt-get install -y ruby
```
-または、Ruby固有のベースイメージを使用することもできます:
+または、Rubyに特化したベースイメージを使用することもできます:
```dockerfile
FROM ruby:latest
```
-このファイルをフォルダに保存します。次に、ターミナルでフォルダに移動し、次のコマンドを実行して、Dockerイメージ(たとえば、custom-imageという名前)をビルドします:
-
+このファイルをフォルダに保存します。次に、ターミナルでそのフォルダに移動し、以下のコマンドを実行してDockerイメージ(例:custom-image)をビルドします:
```bash
docker build -t custom-image .
```
-これにより、`custom-image`という新しいイメージが作成され、Dockerで利用できるようになります。
+これにより、`custom-image`という名前の新しいイメージが作成され、Docker内で利用可能になります。
## Dockerコマンドの使用
-[dockerコマンド](/modules/usage/installation#start-the-app)を使用してOpenHandsを実行する場合は、`-e SANDBOX_RUNTIME_CONTAINER_IMAGE=...`を`-e SANDBOX_BASE_CONTAINER_IMAGE=<カスタムイメージ名>`に置き換えます:
+[dockerコマンド](/modules/usage/installation#start-the-app)を使用してOpenHandsを実行する場合、
+`-e SANDBOX_RUNTIME_CONTAINER_IMAGE=...`を`-e SANDBOX_BASE_CONTAINER_IMAGE=<カスタムイメージ名>`に置き換えます:
```commandline
docker run -it --rm --pull=always \
@@ -52,11 +60,12 @@ docker run -it --rm --pull=always \
### セットアップ
-まず、[Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)の手順に従って、OpenHandsを実行できることを確認してください。
+まず、[Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)の指示に従ってOpenHandsを実行できることを確認してください。
### ベースサンドボックスイメージの指定
-OpenHandsディレクトリ内の`config.toml`ファイルで、`base_container_image`を使用するイメージに設定します。これは、すでにプルしたイメージまたは構築したイメージにすることができます:
+OpenHandsディレクトリ内の`config.toml`ファイルで、`base_container_image`を使用したいイメージに設定します。
+これは既に取得したイメージか、ビルドしたイメージのいずれかです:
```bash
[core]
@@ -65,28 +74,28 @@ OpenHandsディレクトリ内の`config.toml`ファイルで、`base_container_
base_container_image="custom-image"
```
-### その他の設定オプション
+### 追加の設定オプション
-`config.toml`ファイルは、サンドボックスをカスタマイズするためのいくつかの他のオプションをサポートしています:
+`config.toml`ファイルでは、サンドボックスをカスタマイズするための他のオプションもサポートしています:
```toml
[core]
-# ランタイムのビルド時に追加の依存関係をインストールする
-# 有効なシェルコマンドを含めることができる
-# これらのコマンドのいずれかでPythonインタープリターへのパスが必要な場合は、$OH_INTERPRETER_PATH変数を使用できる
+# ランタイムがビルドされるときに追加の依存関係をインストール
+# 有効なシェルコマンドを含めることができます
+# これらのコマンドでPythonインタプリタのパスが必要な場合は、$OH_INTERPRETER_PATH変数を使用できます
runtime_extra_deps = """
pip install numpy pandas
apt-get update && apt-get install -y ffmpeg
"""
-# ランタイムの環境変数を設定する
-# ランタイムで使用可能である必要がある設定に役立つ
+# ランタイム用の環境変数を設定
+# ランタイム時に利用可能にする必要がある設定に役立ちます
runtime_startup_env_vars = { DATABASE_URL = "postgresql://user:pass@localhost/db" }
-# マルチアーキテクチャビルドのプラットフォームを指定する(例: "linux/amd64"または"linux/arm64")
+# マルチアーキテクチャビルド用のプラットフォームを指定(例:「linux/amd64」または「linux/arm64」)
platform = "linux/amd64"
```
### 実行
-トップレベルのディレクトリで```make run```を実行して、OpenHandsを実行します。
+トップレベルディレクトリで```make run```を実行してOpenHandsを起動します。
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/debugging.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/debugging.md
index 18bb61053d3e..e7c13e7c424d 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/debugging.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/debugging.md
@@ -1,8 +1,10 @@
-以下は、OpenHandsのデバッグに関する入門書です。開発目的で使用してください。
+# デバッグ
+
+以下は開発目的のためのOpenHandsのデバッグに関する入門ガイドです。
## サーバー / VSCode
-以下の`launch.json`は、エージェント、コントローラー、サーバー要素のデバッグを可能にしますが、サンドボックス(Dockerの中で動作する)はデバッグできません。`workspace/`ディレクトリ内の変更は無視されます。
+以下の`launch.json`を使用すると、エージェント、コントローラー、サーバー要素のデバッグが可能になりますが、サンドボックス(Dockerの中で実行される)はデバッグできません。これは`workspace/`ディレクトリ内の変更を無視します:
```
{
@@ -34,7 +36,7 @@
}
```
-より具体的なデバッグ設定では、より多くのパラメータを指定できます。
+より多くのパラメータを含む、より具体的なデバッグ設定を指定することもできます:
```
...
@@ -60,10 +62,10 @@
...
```
-上記のスニペットの値は、以下のように更新できます。
+上記のスニペットの値は以下のように更新できます:
* *t*: タスク
* *d*: openhandsワークスペースディレクトリ
* *c*: エージェント
* *l*: LLM設定(config.tomlで事前定義)
- * *n*: セッション名(例:eventstream名)
+ * *n*: セッション名(例:イベントストリーム名)
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/development-overview.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/development-overview.md
new file mode 100644
index 000000000000..4df987948953
--- /dev/null
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/development-overview.md
@@ -0,0 +1,74 @@
+---
+sidebar_position: 9
+---
+
+# 開発概要
+
+このガイドでは、OpenHandsリポジトリで利用可能な主要なドキュメントリソースの概要を提供します。貢献したい、アーキテクチャを理解したい、または特定のコンポーネントに取り組みたいと考えている場合でも、これらのリソースはコードベースを効果的に操作するのに役立ちます。
+
+## コアドキュメント
+
+### プロジェクトの基本
+- **メインプロジェクト概要** (`/README.md`)
+ OpenHandsを理解するための主要なエントリーポイントで、機能と基本的なセットアップ手順が含まれています。
+
+- **開発ガイド** (`/Development.md`)
+ OpenHandsに取り組む開発者向けの包括的なガイドで、セットアップ、要件、開発ワークフローが含まれています。
+
+- **貢献ガイドライン** (`/CONTRIBUTING.md`)
+ 貢献者向けの重要な情報で、コードスタイル、PRプロセス、貢献ワークフローをカバーしています。
+
+### コンポーネントドキュメント
+
+#### フロントエンド
+- **フロントエンドアプリケーション** (`/frontend/README.md`)
+ Reactベースのフロントエンドアプリケーションのセットアップと開発のための完全なガイド。
+
+#### バックエンド
+- **バックエンド実装** (`/openhands/README.md`)
+ Pythonバックエンドの実装とアーキテクチャに関する詳細なドキュメント。
+
+- **サーバードキュメント** (`/openhands/server/README.md`)
+ サーバー実装の詳細、APIドキュメント、サービスアーキテクチャ。
+
+- **ランタイム環境** (`/openhands/runtime/README.md`)
+ ランタイム環境、実行モデル、ランタイム構成をカバーするドキュメント。
+
+#### インフラストラクチャ
+- **コンテナドキュメント** (`/containers/README.md`)
+ Dockerコンテナ、デプロイメント戦略、コンテナ管理に関する包括的な情報。
+
+### テストと評価
+- **ユニットテストガイド** (`/tests/unit/README.md`)
+ ユニットテストの作成、実行、保守に関する指示。
+
+- **評価フレームワーク** (`/evaluation/README.md`)
+ 評価フレームワーク、ベンチマーク、パフォーマンステストに関するドキュメント。
+
+### 高度な機能
+- **マイクロエージェントアーキテクチャ** (`/microagents/README.md`)
+ マイクロエージェントアーキテクチャ、実装、使用法に関する詳細情報。
+
+### ドキュメント標準
+- **ドキュメントスタイルガイド** (`/docs/DOC_STYLE_GUIDE.md`)
+ プロジェクトドキュメントの作成と保守のための標準とガイドライン。
+
+## 開発を始める
+
+OpenHandsでの開発が初めての場合は、次の順序に従うことをお勧めします:
+
+1. プロジェクトの目的と機能を理解するために、メインの`README.md`から始める
+2. 貢献する予定がある場合は、`CONTRIBUTING.md`のガイドラインを確認する
+3. `Development.md`のセットアップ手順に従う
+4. 興味のある分野に基づいて特定のコンポーネントドキュメントに深く入り込む:
+ - フロントエンド開発者は`/frontend/README.md`に焦点を当てるべき
+ - バックエンド開発者は`/openhands/README.md`から始めるべき
+ - インフラストラクチャ作業は`/containers/README.md`から始めるべき
+
+## ドキュメントの更新
+
+コードベースに変更を加える際は、以下を確認してください:
+1. 関連するドキュメントが変更を反映するように更新されている
+2. 新機能が適切なREADMEファイルに文書化されている
+3. APIの変更がサーバードキュメントに反映されている
+4. ドキュメントが`/docs/DOC_STYLE_GUIDE.md`のスタイルガイドに従っている
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/evaluation-harness.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/evaluation-harness.md
index 2880c40700ab..e8c96fc68e12 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/evaluation-harness.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/evaluation-harness.md
@@ -2,16 +2,16 @@
このガイドでは、独自の評価ベンチマークをOpenHandsフレームワークに統合する方法の概要を説明します。
-## 環境のセットアップとLLMの設定
+## 環境のセットアップとLLM設定
-ローカル開発環境のセットアップ方法については、[こちら](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)の手順に従ってください。
-開発モードのOpenHandsは、ほとんどの設定を追跡するために`config.toml`を使用します。
+ローカル開発環境のセットアップについては、[こちら](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)の手順に従ってください。
+開発モードのOpenHandsでは、ほとんどの設定を追跡するために`config.toml`を使用します。
-複数のLLMを定義して使用するために使用できる設定ファイルの例を以下に示します。
+以下は、複数のLLMを定義して使用するための設定ファイルの例です:
```toml
[llm]
-# 重要: ここにAPIキーを追加し、モデルを評価したいものに設定してください
+# 重要: ここにAPIキーを追加し、評価したいモデルを設定してください
model = "claude-3-5-sonnet-20241022"
api_key = "sk-XXX"
@@ -30,7 +30,7 @@ temperature = 0.0
## コマンドラインでOpenHandsを使用する方法
-OpenHandsは、以下の形式でコマンドラインから実行できます。
+OpenHandsは以下の形式でコマンドラインから実行できます:
```bash
poetry run python ./openhands/core/main.py \
@@ -40,7 +40,7 @@ poetry run python ./openhands/core/main.py \
-l
```
-例:
+例えば:
```bash
poetry run python ./openhands/core/main.py \
@@ -50,38 +50,39 @@ poetry run python ./openhands/core/main.py \
-l llm
```
-このコマンドは、以下の設定でOpenHandsを実行します:
+このコマンドは以下の設定でOpenHandsを実行します:
- 最大10回の反復
-- 指定されたタスクの説明
+- 指定されたタスク説明
- CodeActAgentを使用
-- `config.toml`ファイルの`llm`セクションで定義されたLLM設定
+- `config.toml`ファイルの`llm`セクションで定義されたLLM設定を使用
-## OpenHandsの動作原理
+## OpenHandsの仕組み
-OpenHandsのメインエントリーポイントは`openhands/core/main.py`にあります。簡略化された動作の流れは次のとおりです。
+OpenHandsのメインエントリーポイントは`openhands/core/main.py`にあります。以下は動作の簡略化されたフローです:
1. コマンドライン引数を解析し、設定を読み込む
-2. `create_runtime()`を使用して実行時環境を作成する
+2. `create_runtime()`を使用してランタイム環境を作成する
3. 指定されたエージェントを初期化する
-4. `run_controller()`を使用してコントローラーを実行する
- - 実行時環境をエージェントにアタッチする
+4. `run_controller()`を使用してコントローラーを実行する:
+ - ランタイムをエージェントに接続する
- エージェントのタスクを実行する
- 完了時に最終状態を返す
-`run_controller()`関数は、OpenHandsの実行の中核です。エージェント、実行時環境、およびタスク間の相互作用を管理し、ユーザー入力シミュレーションやイベント処理などを処理します。
+`run_controller()`関数はOpenHandsの実行の中核です。エージェント、ランタイム、タスク間の相互作用を管理し、ユーザー入力シミュレーションやイベント処理などを処理します。
-## 最も簡単な開始方法: 既存のベンチマークの探索
+## 最も簡単な始め方:既存のベンチマークを探索する
-リポジトリの[`evaluation/benchmarks/`ディレクトリ](https://github.com/All-Hands-AI/OpenHands/blob/main/evaluation/benchmarks)にある様々な評価ベンチマークを確認することをお勧めします。
+リポジトリの[`evaluation/benchmarks/`ディレクトリ](https://github.com/All-Hands-AI/OpenHands/blob/main/evaluation/benchmarks)で利用可能な様々な評価ベンチマークを確認することをお勧めします。
-独自のベンチマークを統合するには、ニーズに最も近いものから始めることをお勧めします。このアプローチは、既存の構造を基にして特定の要件に適応させることで、統合プロセスを大幅に合理化できます。
+独自のベンチマークを統合するには、あなたのニーズに最も近いものから始めることをお勧めします。このアプローチにより、既存の構造を基に構築し、特定の要件に適応させることができるため、統合プロセスが大幅に効率化されます。
## 評価ワークフローの作成方法
-ベンチマークの評価ワークフローを作成するには、次の手順に従います。
-1. 関連するOpenHandsユーティリティをインポートします:
+ベンチマークの評価ワークフローを作成するには、以下の手順に従ってください:
+
+1. 関連するOpenHandsユーティリティをインポートする:
```python
import openhands.agenthub
from evaluation.utils.shared import (
@@ -106,7 +107,7 @@ OpenHandsのメインエントリーポイントは`openhands/core/main.py`に
from openhands.runtime.runtime import Runtime
```
-2. 設定を作成します:
+2. 設定を作成する:
```python
def get_config(instance: pd.Series, metadata: EvalMetadata) -> AppConfig:
config = AppConfig(
@@ -123,15 +124,15 @@ OpenHandsのメインエントリーポイントは`openhands/core/main.py`に
return config
```
-3. 実行時環境を初期化し、評価環境をセットアップします:
+3. ランタイムを初期化し、評価環境をセットアップする:
```python
def initialize_runtime(runtime: Runtime, instance: pd.Series):
- # ここで評価環境をセットアップします
+ # ここで評価環境をセットアップする
# 例えば、環境変数の設定、ファイルの準備など
pass
```
-4. 各インスタンスを処理する関数を作成します:
+4. 各インスタンスを処理する関数を作成する:
```python
from openhands.utils.async_utils import call_async_from_sync
def process_instance(instance: pd.Series, metadata: EvalMetadata) -> EvalOutput:
@@ -163,7 +164,7 @@ OpenHandsのメインエントリーポイントは`openhands/core/main.py`に
)
```
-5. 評価を実行します:
+5. 評価を実行する:
```python
metadata = make_metadata(llm_config, dataset_name, agent_class, max_iterations, eval_note, eval_output_dir)
output_file = os.path.join(metadata.eval_output_dir, 'output.jsonl')
@@ -178,71 +179,71 @@ OpenHandsのメインエントリーポイントは`openhands/core/main.py`に
)
```
-このワークフローでは、設定をセットアップし、実行時環境を初期化し、エージェントを実行して各インスタンスのアクションを評価し、結果を`EvalOutput`オブジェクトに収集します。`run_evaluation`関数は、並列化と進捗状況の追跡を処理します。
+このワークフローでは、設定をセットアップし、ランタイム環境を初期化し、エージェントを実行してそのアクションを評価することで各インスタンスを処理し、結果を`EvalOutput`オブジェクトに収集します。`run_evaluation`関数は並列化と進捗追跡を処理します。
-`get_instruction`、`your_user_response_function`、および`evaluate_agent_actions`関数は、特定のベンチマークの要件に応じてカスタマイズすることを忘れないでください。
+`get_instruction`、`your_user_response_function`、`evaluate_agent_actions`関数を特定のベンチマーク要件に合わせてカスタマイズすることを忘れないでください。
-この構造に従うことで、OpenHandsフレームワーク内で独自のベンチマークの堅牢な評価ワークフローを作成できます。
+この構造に従うことで、OpenHandsフレームワーク内でベンチマーク用の堅牢な評価ワークフローを作成できます。
## `user_response_fn`の理解
-`user_response_fn`は、OpenHandsの評価ワークフローにおいて重要な役割を果たします。これは、評価プロセス中にエージェントとのユーザー対話をシミュレートし、自動化された応答を可能にします。この関数は、エージェントのクエリやアクションに対して一貫性のある事前定義された応答を提供したい場合に特に役立ちます。
+`user_response_fn`はOpenHandsの評価ワークフローにおける重要なコンポーネントです。エージェントとのユーザー対話をシミュレートし、評価プロセス中に自動応答を可能にします。この関数は、エージェントの問い合わせやアクションに対して一貫した、事前定義された応答を提供したい場合に特に役立ちます。
### ワークフローと相互作用
-アクションと`user_response_fn`を処理するための正しいワークフローは次のとおりです。
+アクションと`user_response_fn`を処理する正しいワークフローは次のとおりです:
1. エージェントがタスクを受け取り、処理を開始する
2. エージェントがアクションを発行する
-3. アクションが実行可能な場合(CmdRunAction、IPythonRunCellActionなど):
- - 実行時環境がアクションを処理する
- - 実行時環境が観測結果を返す
-4. アクションが実行不可能な場合(通常はMessageAction):
+3. アクションが実行可能な場合(例:CmdRunAction、IPythonRunCellAction):
+ - ランタイムがアクションを処理する
+ - ランタイムが観察結果を返す
+4. アクションが実行不可能な場合(通常はMessageAction):
- `user_response_fn`が呼び出される
- シミュレートされたユーザー応答を返す
-5. エージェントは、観測結果またはシミュレートされた応答のいずれかを受け取る
-6. ステップ2〜5が、タスクが完了するか最大反復回数に達するまで繰り返される
+5. エージェントが観察結果またはシミュレートされた応答を受け取る
+6. タスクが完了するか最大反復回数に達するまで、ステップ2〜5を繰り返す
-より正確な視覚的表現は次のとおりです。
+より正確な視覚的表現は次のとおりです:
```
- [Agent]
+ [エージェント]
|
v
- [Emit Action]
+ [アクション発行]
|
v
- [Is Action Executable?]
+ [アクションは実行可能か?]
/ \
- Yes No
+ はい いいえ
| |
v v
- [Runtime] [user_response_fn]
+ [ランタイム] [user_response_fn]
| |
v v
- [Return Observation] [Simulated Response]
+ [観察結果を返す] [シミュレートされた応答]
\ /
\ /
v v
- [Agent receives feedback]
+ [エージェントがフィードバックを受け取る]
|
v
- [Continue or Complete Task]
+ [タスクを継続または完了]
```
-このワークフローでは:
+このワークフローでは:
-- 実行可能なアクション(コマンドの実行やコードの実行など)は、実行時環境によって直接処理される
-- 実行不可能なアクション(通常、エージェントがコミュニケーションを取ったり、明確化を求めたりする場合)は、`user_response_fn`によって処理される
-- エージェントは、実行時環境からの観測結果または`user_response_fn`からのシミュレートされた応答のいずれかのフィードバックを処理する
+- 実行可能なアクション(コマンドの実行やコードの実行など)はランタイムによって直接処理される
+- 実行不可能なアクション(通常、エージェントが通信や説明を求める場合)は`user_response_fn`によって処理される
+- エージェントは、ランタイムからの観察結果か`user_response_fn`からのシミュレートされた応答かにかかわらず、フィードバックを処理する
-このアプローチにより、具体的なアクションとシミュレートされたユーザー対話の両方を自動的に処理できるため、人的介入を最小限に抑えてエージェントのタスク完了能力をテストしたい評価シナリオに適しています。
+このアプローチにより、具体的なアクションとシミュレートされたユーザー対話の両方を自動的に処理できるため、最小限の人間の介入でタスクを完了するエージェントの能力をテストしたい評価シナリオに適しています。
### 実装例
-SWE-Benchの評価で使用される`user_response_fn`の例を以下に示します。
+以下はSWE-Bench評価で使用される`user_response_fn`の例です:
```python
def codeact_user_response(state: State | None) -> str:
@@ -268,10 +269,10 @@ def codeact_user_response(state: State | None) -> str:
return msg
```
-この関数は次のことを行います。
+この関数は以下を行います:
1. エージェントに作業を続けるよう促す標準メッセージを提供する
-2. エージェントがユーザーとのコミュニケーションを試みた回数をチェックする
-3. エージェントが複数回試行した場合、諦めるオプションを提供する
+2. エージェントがユーザーとコミュニケーションを取ろうとした回数を確認する
+3. エージェントが複数回試みた場合、諦めるオプションを提供する
-この関数を使用することで、複数の評価実行全体で一貫した動作を確保し、エージェントが人間の入力を待って停止するのを防ぐことができます。
+この関数を使用することで、複数の評価実行にわたって一貫した動作を確保し、エージェントが人間の入力を待って立ち往生することを防ぐことができます。
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/github-action.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/github-action.md
index 4d35a2e22504..11c48fb72388 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/github-action.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/github-action.md
@@ -1,50 +1,51 @@
# OpenHands GitHub Actionの使用方法
-このガイドでは、OpenHands自体のリポジトリ内および独自のプロジェクトの両方で、OpenHands GitHub Actionを使用する方法について説明します。
+このガイドでは、自分のプロジェクトでOpenHands GitHub Actionを使用する方法について説明します。
-## OpenHands リポジトリ内でのActionの使用
+## OpenHandsリポジトリでのActionの使用
-リポジトリ内でOpenHands GitHub Actionを使用するには、以下の手順を実行します。
+OpenHands GitHub Actionをリポジトリで使用するには、以下の手順に従います:
-1. リポジトリ内にissueを作成します。
-2. issueに`fix-me`ラベルを追加するか、`@openhands-agent`で始まるコメントをissueに残します。
+1. リポジトリでイシューを作成します。
+2. イシューに`fix-me`ラベルを追加するか、`@openhands-agent`で始まるコメントをイシューに残します。
-アクションは自動的にトリガーされ、issueの解決を試みます。
+アクションは自動的にトリガーされ、イシューの解決を試みます。
-## 新しいリポジトリへのActionのインストール
+## 新しいリポジトリにActionをインストールする
-独自のリポジトリにOpenHands GitHub Actionをインストールするには、[OpenHands Resolverの README](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/resolver/README.md)に従ってください。
+自分のリポジトリにOpenHands GitHub Actionをインストールするには、
+[OpenHands Resolverのリードミー](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/resolver/README.md)に従ってください。
-## 使用のヒント
+## 使用上のヒント
### 反復的な解決
-1. リポジトリ内にissueを作成します。
-2. issueに`fix-me`ラベルを追加するか、`@openhands-agent`で始まるコメントを残します。
-3. プルリクエストを確認して、issueを解決する試みをレビューします。
-4. 一般的なコメント、レビューコメント、またはインラインスレッドコメントを通じてフィードバックをフォローアップします。
-5. プルリクエストに`fix-me`ラベルを追加するか、`@openhands-agent`で始まる特定のコメントに対処します。
+1. リポジトリでイシューを作成します。
+2. イシューに`fix-me`ラベルを追加するか、`@openhands-agent`で始まるコメントを残します。
+3. プルリクエストを確認して、イシュー解決の試みをレビューします。
+4. 一般的なコメント、レビューコメント、またはインラインスレッドコメントを通じてフィードバックを行います。
+5. プルリクエストに`fix-me`ラベルを追加するか、`@openhands-agent`で始めて特定のコメントに対応します。
-### ラベルとマクロ
+### ラベルとマクロの違い
-- ラベル(`fix-me`):OpenHandsに**全体の** issueまたはプルリクエストへの対処を要求します。
-- マクロ(`@openhands-agent`):OpenHandsにissue/プルリクエストの説明と**特定のコメント**のみを考慮するように要求します。
+- ラベル(`fix-me`):OpenHandsにイシューまたはプルリクエスト**全体**に対応するよう要求します。
+- マクロ(`@openhands-agent`):OpenHandsにイシュー/プルリクエストの説明と**特定のコメント**のみを考慮するよう要求します。
## 高度な設定
### カスタムリポジトリ設定の追加
-[resolverのREADME](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/resolver/README.md#providing-custom-instructions)に従って、OpenHandsにカスタムの指示を提供できます。
+[リゾルバーのリードミー](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/resolver/README.md#providing-custom-instructions)に従って、OpenHandsにカスタム指示を提供できます。
### カスタム構成
-GitHub resolverは、自動的に有効な[リポジトリシークレット](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions?tool=webui#creating-secrets-for-a-repository)または[リポジトリ変数](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/store-information-in-variables#creating-configuration-variables-for-a-repository)をチェックして、その動作をカスタマイズします。
-設定可能なカスタマイズオプションは次のとおりです。
+GitHub resolverは、動作をカスタマイズするために有効な[リポジトリシークレット](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions?tool=webui#creating-secrets-for-a-repository)または[リポジトリ変数](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/store-information-in-variables#creating-configuration-variables-for-a-repository)を自動的にチェックします。
+設定できるカスタマイズオプションは以下の通りです:
-| **属性名** | **タイプ** | **目的** | **例** |
-| -------------------------------- | -------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
-| `LLM_MODEL` | Variable | OpenHandsで使用するLLMを設定 | `LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"` |
-| `OPENHANDS_MAX_ITER` | Variable | エージェントの反復の最大制限を設定 | `OPENHANDS_MAX_ITER=10` |
-| `OPENHANDS_MACRO` | Variable | リゾルバを呼び出すためのデフォルトマクロをカスタマイズ | `OPENHANDS_MACRO=@resolveit` |
-| `OPENHANDS_BASE_CONTAINER_IMAGE` | Variable | カスタムSandbox([詳細](https://docs.all-hands.dev/modules/usage/how-to/custom-sandbox-guide)) | `OPENHANDS_BASE_CONTAINER_IMAGE="custom_image"` |
-| `TARGET_BRANCH` | Variable | `main`以外のブランチにマージ | `TARGET_BRANCH="dev"` |
+| **属性名** | **タイプ** | **目的** | **例** |
+| -------------------------------- | ---------- | ------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
+| `LLM_MODEL` | 変数 | OpenHandsで使用するLLMを設定 | `LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"` |
+| `OPENHANDS_MAX_ITER` | 変数 | エージェントの反復回数の最大制限を設定 | `OPENHANDS_MAX_ITER=10` |
+| `OPENHANDS_MACRO` | 変数 | リゾルバーを呼び出すためのデフォルトマクロをカスタマイズ | `OPENHANDS_MACRO=@resolveit` |
+| `OPENHANDS_BASE_CONTAINER_IMAGE` | 変数 | カスタムサンドボックス([詳細](https://docs.all-hands.dev/modules/usage/how-to/custom-sandbox-guide)) | `OPENHANDS_BASE_CONTAINER_IMAGE="custom_image"` |
+| `TARGET_BRANCH` | 変数 | `main`以外のブランチにマージ | `TARGET_BRANCH="dev"` |
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/gui-mode.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/gui-mode.md
index 83b113e8a81f..101ce0b3bd02 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/gui-mode.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/gui-mode.md
@@ -1,20 +1,22 @@
# GUIモード
-OpenHandsは、AI アシスタントとやり取りするためのグラフィカルユーザーインターフェース(GUI)モードを提供しています。
+OpenHandsは、AIアシスタントとの対話のためのグラフィカルユーザーインターフェース(GUI)モードを提供しています。
## インストールとセットアップ
-1. インストール手順に従って、OpenHandsをインストールします。
+1. インストール手順に従ってOpenHandsをインストールします。
2. コマンドを実行した後、[http://localhost:3000](http://localhost:3000)でOpenHandsにアクセスします。
-## GUIでのやり取り
+## GUIでの対話
### 初期設定
-1. 初回起動時に、設定ページが表示されます。
-2. ドロップダウンメニューから`LLM Provider`と`LLM Model`を選択します。必要なモデルがリストにない場合は、`Advanced`オプションを切り替えて、正しいプレフィックスを付けて`Custom Model`テキストボックスに入力します。
-3. 選択したプロバイダーに対応する`API Key`を入力します。
-4. `Save Changes`をクリックして設定を適用します。
+1. 初回起動時に設定ポップアップが表示されます。
+2. ドロップダウンメニューから`LLMプロバイダー`と`LLMモデル`を選択します。必要なモデルがリストに存在しない場合は、
+ `詳細設定を表示`を選択してください。次に`詳細設定`をトグルして、
+ `カスタムモデル`テキストボックスに正しいプレフィックスを付けて入力します。
+3. 選択したプロバイダーに対応する`APIキー`を入力します。
+4. `変更を保存`をクリックして設定を適用します。
### バージョン管理トークン
@@ -22,139 +24,118 @@ OpenHandsは複数のバージョン管理プロバイダーをサポートし
#### GitHubトークンの設定
-OpenHandsは、利用可能な場合、自動的に`GITHUB_TOKEN`をシェル環境にエクスポートします。これは2つの方法で行われます。
+OpenHandsは提供された場合、自動的に`GITHUB_TOKEN`をシェル環境にエクスポートします:
-**ローカルインストール**: ユーザーが直接GitHubトークンを入力します。
- GitHubトークンの設定
+ GitHubトークンの設定方法
- 1. **Personal Access Token(PAT)の生成**:
- - GitHubで、Settings > Developer Settings > Personal Access Tokens > Tokens (classic)に移動します。
- - **New token (classic)**
- - 必要なスコープ:
+ 1. **個人アクセストークン(PAT)の生成**:
+ - GitHubで、設定 > 開発者設定 > 個人アクセストークン > トークン(クラシック)に移動します。
+ - **新しいトークン(クラシック)**
+ - 必要なスコープ:
- `repo`(プライベートリポジトリの完全な制御)
- - **Fine-Grained Tokens**
- - All Repositories(特定のリポジトリを選択できますが、これはリポジトリ検索の結果に影響します)
- - Minimal Permissions(検索用に**Meta Data = Read-only**を選択し、ブランチ作成用に**Pull Requests = Read and Write**、**Content = Read and Write**を選択します)
- 2. **OpenHandsにトークンを入力**:
+ - **細かい権限を持つトークン**
+ - すべてのリポジトリ(特定のリポジトリを選択することもできますが、リポジトリ検索の結果に影響します)
+ - 最小限の権限(検索用に`メタデータ = 読み取り専用`、ブランチ作成用に`プルリクエスト = 読み取りと書き込み`および`コンテンツ = 読み取りと書き込み`を選択)
+ 2. **OpenHandsにトークンを入力**:
- 設定ボタン(歯車アイコン)をクリックします。
- - `Git Provider Settings`セクションに移動します。
- - `GitHub Token`フィールドにトークンを貼り付けます。
- - `Save Changes`をクリックして変更を適用します。
+ - `GitHubトークン`フィールドにトークンを貼り付けます。
+ - `保存`をクリックして変更を適用します。
組織のトークンポリシー
- 組織のリポジトリを使用する場合は、追加の設定が必要になる場合があります。
+ 組織のリポジトリを扱う場合、追加の設定が必要な場合があります:
- 1. **組織の要件を確認**:
- - 組織の管理者は、特定のトークンポリシーを適用することがあります。
- - 一部の組織では、SSOを有効にしてトークンを作成する必要があります。
+ 1. **組織の要件を確認**:
+ - 組織の管理者は特定のトークンポリシーを強制する場合があります。
+ - 一部の組織では、SSOが有効になっているトークンの作成が必要です。
- 組織の[トークンポリシー設定](https://docs.github.com/en/organizations/managing-programmatic-access-to-your-organization/setting-a-personal-access-token-policy-for-your-organization)を確認してください。
- 2. **組織へのアクセスを確認**:
+ 2. **組織へのアクセスを確認**:
- GitHubのトークン設定に移動します。
- - `Organization access`の下で組織を探します。
- - 必要に応じて、組織の横にある`Enable SSO`をクリックします。
- - SSOの認証プロセスを完了します。
+ - `組織アクセス`の下で組織を探します。
+ - 必要に応じて、組織の横にある`SSOを有効にする`をクリックします。
+ - SSO認証プロセスを完了します。
トラブルシューティング
- 一般的な問題と解決策:
+ 一般的な問題と解決策:
- - **トークンが認識されない**:
+ - **トークンが認識されない**:
- トークンが設定に正しく保存されていることを確認します。
- - トークンの有効期限が切れていないことを確認します。
+ - トークンが期限切れになっていないか確認します。
- トークンに必要なスコープがあることを確認します。
- トークンを再生成してみてください。
- - **組織へのアクセスが拒否された**:
- - SSOが必要だが有効になっていないかどうかを確認します。
+ - **組織アクセスが拒否された**:
+ - SSOが必要だが有効になっていないか確認します。
- 組織のメンバーシップを確認します。
- トークンポリシーがアクセスをブロックしている場合は、組織の管理者に連絡してください。
- - **トークンが機能することを確認**:
- - トークンが有効な場合、アプリにグリーンのチェックマークが表示されます。
- - リポジトリにアクセスして、権限を確認してみてください。
+ - **トークンが機能するか確認**:
+ - トークンが有効な場合、アプリは緑色のチェックマークを表示します。
+ - リポジトリにアクセスして権限を確認してみてください。
- ブラウザのコンソールでエラーメッセージを確認してください。
-**OpenHands Cloud**: トークンはGitHub OAuth認証を通じて取得されます。
-
-
- OAuth認証
-
- OpenHands Cloudを使用する場合、GitHub OAuthフローは以下の権限を要求します:
- - リポジトリアクセス(読み取り/書き込み)
- - ワークフロー管理
- - 組織の読み取りアクセス
-
- OpenHandsを認証するには:
- - プロンプトが表示されたら、`Sign in with GitHub`をクリックします。
- - 要求された権限を確認します。
- - OpenHandsがGitHubアカウントにアクセスすることを承認します。
- - 組織を使用している場合は、プロンプトが表示されたら組織へのアクセスを承認します。
-
-
#### GitLabトークンの設定
-OpenHandsは、利用可能な場合、ローカルインストールのみ、自動的に`GITLAB_TOKEN`をシェル環境にエクスポートします。
+OpenHandsは提供された場合、自動的に`GITLAB_TOKEN`をシェル環境にエクスポートします:
- GitLabトークンの設定
+ GitLabトークンの設定方法
- 1. **Personal Access Token(PAT)の生成**:
- - GitLabで、User Settings > Access Tokensに移動します。
- - 以下のスコープを持つ新しいトークンを作成します:
+ 1. **個人アクセストークン(PAT)の生成**:
+ - GitLabで、ユーザー設定 > アクセストークンに移動します。
+ - 以下のスコープを持つ新しいトークンを作成します:
- `api`(APIアクセス)
- `read_user`(ユーザー情報の読み取り)
- - `read_repository`(リポジトリ読み取り)
- - `write_repository`(リポジトリ書き込み)
- - 有効期限を設定するか、無期限トークンの場合は空白のままにします。
- 2. **OpenHandsにトークンを入力**:
+ - `read_repository`(リポジトリの読み取り)
+ - `write_repository`(リポジトリの書き込み)
+ - 有効期限を設定するか、期限なしトークンの場合は空白のままにします。
+ 2. **OpenHandsにトークンを入力**:
- 設定ボタン(歯車アイコン)をクリックします。
- - `Git Provider Settings`セクションに移動します。
- - `GitLab Token`フィールドにトークンを貼り付けます。
+ - `GitLabトークン`フィールドにトークンを貼り付けます。
- セルフホスト型GitLabを使用している場合は、GitLabインスタンスのURLを入力します。
- - `Save Changes`をクリックして変更を適用します。
+ - `保存`をクリックして変更を適用します。
トラブルシューティング
- 一般的な問題と解決策:
+ 一般的な問題と解決策:
- - **トークンが認識されない**:
+ - **トークンが認識されない**:
- トークンが設定に正しく保存されていることを確認します。
- - トークンの有効期限が切れていないことを確認します。
+ - トークンが期限切れになっていないか確認します。
- トークンに必要なスコープがあることを確認します。
- - セルフホスト型インスタンスの場合は、正しいインスタンスURLを確認します。
+ - セルフホスト型インスタンスの場合、正しいインスタンスURLを確認します。
- - **アクセスが拒否された**:
+ - **アクセスが拒否された**:
- プロジェクトのアクセス権限を確認します。
- - トークンに必要なスコープがあるかどうかを確認します。
- - グループ/組織のリポジトリの場合は、適切なアクセス権があることを確認します。
+ - トークンに必要なスコープがあるか確認します。
+ - グループ/組織のリポジトリの場合、適切なアクセス権があることを確認します。
-### 高度な設定
+### 詳細設定
-1. 設定ページ内で、`Advanced`オプションを切り替えて追加の設定にアクセスします。
-2. `Custom Model`テキストボックスを使用して、リストにないモデルを手動で入力します。
-3. LLMプロバイダーで必要な場合は、`Base URL`を指定します。
+1. 設定ページ内で、`詳細設定`をトグルして追加設定にアクセスします。
+2. リストにないモデルを手動で入力するには、`カスタムモデル`テキストボックスを使用します。
+3. LLMプロバイダーが必要とする場合は、`ベースURL`を指定します。
-### AIとのやり取り
+### AIとの対話
1. 入力ボックスにプロンプトを入力します。
2. 送信ボタンをクリックするか、Enterキーを押してメッセージを送信します。
-3. AIは入力を処理し、チャットウィンドウに応答を提供します。
-4. フォローアップの質問をしたり、追加情報を提供したりして、会話を続けることができます。
+3. AIはあなたの入力を処理し、チャットウィンドウに応答を提供します。
+4. フォローアップの質問や追加情報を提供することで会話を続けることができます。
## 効果的な使用のためのヒント
-- [プロンプトのベストプラクティス](../prompting/prompting-best-practices)で説明されているように、要求を具体的にすることで、最も正確で役立つ応答を得ることができます。
-- ワークスペースパネルを使用して、プロジェクト構造を探索します。
-- [LLMsセクション](usage/llms/llms.md)で説明されているように、推奨モデルの1つを使用します。
+- [プロンプティングのベストプラクティス](../prompting/prompting-best-practices)で説明されているように、最も正確で役立つ回答を得るために、リクエストを具体的にしてください。
+- [LLMセクション](usage/llms/llms.md)で説明されているように、推奨モデルのいずれかを使用してください。
-OpenHandsのGUIモードは、AIアシスタントとのやり取りをできるだけスムーズで直感的にすることを目的としています。生産性を最大限に高めるために、ぜひその機能を探ってみてください。
+OpenHandsのGUIモードは、AIアシスタントとの対話をできるだけスムーズで直感的にするように設計されています。生産性を最大化するために、その機能を遠慮なく探索してください。
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/headless-mode.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/headless-mode.md
index a6130347e21c..aa4184fa3779 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/headless-mode.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/how-to/headless-mode.md
@@ -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`
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/installation.mdx b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/installation.mdx
index 9c1fb46a063c..8743ad7a731c 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/installation.mdx
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/installation.mdx
@@ -2,54 +2,119 @@
## システム要件
-* Docker バージョン26.0.0+またはDocker Desktop 4.31.0+
-* LinuxまたはMac OSを使用する必要があります
- * Windowsを使用している場合は、[WSL](https://learn.microsoft.com/en-us/windows/wsl/install)を使用する必要があります
+- [Docker Desktopをサポート](https://docs.docker.com/desktop/setup/install/mac-install/#system-requirements)するMacOS
+- Linux
+- [WSL](https://learn.microsoft.com/en-us/windows/wsl/install)と[Docker Desktopをサポート](https://docs.docker.com/desktop/setup/install/windows-install/#system-requirements)するWindows
-## アプリケーションの起動
+OpenHandsを実行するには、最新のプロセッサと最低**4GB RAM**を搭載したシステムが推奨されます。
-OpenHandsを実行する最も簡単な方法は、Dockerを使用することです。
+## 前提条件
+
+
+ MacOS
+
+ **Docker Desktop**
+
+ 1. [MacにDocker Desktopをインストール](https://docs.docker.com/desktop/setup/install/mac-install)します。
+ 2. Docker Desktopを開き、`設定 > 詳細設定`に移動して、`デフォルトのDockerソケットの使用を許可する`が有効になっていることを確認します。
+
+
+
+ Linux
+
+ :::note
+ Ubuntu 22.04でテスト済み。
+ :::
+
+ **Docker Desktop**
+
+ 1. [LinuxにDocker Desktopをインストール](https://docs.docker.com/desktop/setup/install/linux/)します。
+
+
+
+
+ Windows
+
+ **WSL**
+
+ 1. [WSLをインストール](https://learn.microsoft.com/en-us/windows/wsl/install)します。
+ 2. PowerShellで`wsl --version`を実行し、`Default Version: 2`であることを確認します。
+
+ **Docker Desktop**
+
+ 1. [WindowsにDocker Desktopをインストール](https://docs.docker.com/desktop/setup/install/windows-install)します。
+ 2. Docker Desktopを開き、`設定`で以下を確認します:
+ - 一般:`WSL 2ベースのエンジンを使用する`が有効になっている。
+ - リソース > WSL統合:`デフォルトのWSLディストリビューションとの統合を有効にする`が有効になっている。
+
+ :::note
+ アプリを起動するための以下のdockerコマンドは、WSLターミナル内で実行する必要があります。
+ :::
+
+
+
+## アプリの起動
+
+OpenHandsを実行する最も簡単な方法はDockerを使用することです。
```bash
-docker pull docker.all-hands.dev/all-hands-ai/runtime:0.29-nikolaik
+docker pull docker.all-hands.dev/all-hands-ai/runtime:0.36-nikolaik
docker run -it --rm --pull=always \
- -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.29-nikolaik \
+ -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.36-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
+ -v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
- docker.all-hands.dev/all-hands-ai/openhands:0.29
+ docker.all-hands.dev/all-hands-ai/openhands:0.36
```
-また、[ヘッドレススクリプトモード](https://docs.all-hands.dev/modules/usage/how-to/headless-mode)、[対話型CLI](https://docs.all-hands.dev/modules/usage/how-to/cli-mode)、または[OpenHands GitHub Action](https://docs.all-hands.dev/modules/usage/how-to/github-action)としても実行できます。
+OpenHandsは http://localhost:3000 で実行されています!
-## 設定
+また、[OpenHandsをローカルファイルシステムに接続](https://docs.all-hands.dev/modules/usage/runtimes/docker#connecting-to-your-filesystem)したり、
+OpenHandsを[ヘッドレスモード](https://docs.all-hands.dev/modules/usage/how-to/headless-mode)でスクリプト実行したり、
+[使いやすいCLI](https://docs.all-hands.dev/modules/usage/how-to/cli-mode)を介して操作したり、
+[GitHubアクション](https://docs.all-hands.dev/modules/usage/how-to/github-action)でタグ付けされた課題に対して実行したりすることもできます。
-上記のコマンドを実行すると、OpenHandsは[http://localhost:3000](http://localhost:3000)で動作します。
+## セットアップ
-OpenHandsを起動すると、設定モーダルウィンドウが表示されます。`LLMプロバイダー`と`LLMモデル`を選択し、対応する`APIキー`を入力する**必要があります**。
-これらの設定は、UIの`設定`ボタン(歯車アイコン)を選択することでいつでも変更できます。
+OpenHandsを起動した後、`LLMプロバイダー`と`LLMモデル`を選択し、対応する`APIキー`を入力する**必要があります**。
+これは、初期設定ポップアップ時に行うか、UIの`設定`ボタン(歯車アイコン)を選択して行うことができます。
-必要な`LLMモデル`がリストに存在しない場合は、`詳細オプション`を有効にして、
-`カスタムモデル`テキストボックスに適切なプレフィックスを付けて手動で入力できます。
-`詳細オプション`では、必要に応じて`ベースURL`も指定できます。
+必要なモデルがリストに存在しない場合は、`詳細設定`をトグルして、正しいプレフィックスを付けて
+`カスタムモデル`テキストボックスに手動で入力することができます。
+`詳細設定`では、必要に応じて`ベースURL`を指定することもできます。
-
-
-
-
+### APIキーの取得
-## バージョン
+OpenHandsはほとんどの言語モデルにアクセスするためにAPIキーが必要です。推奨プロバイダーからAPIキーを取得する方法は次のとおりです:
+
+#### Anthropic (Claude)
-上記のコマンドは、OpenHandsの最新の安定版を取得します。他のオプションもあります:
-- 特定のバージョンを使用する場合は、`docker.all-hands.dev/all-hands-ai/openhands:$VERSION`を使用し、$VERSIONをバージョン番号に置き換えてください。
-- semverを使用しており、メジャー、マイナー、パッチバージョンのタグを公開しています。したがって、`0.9`は最新の`0.9.x`バージョンを、`0`は最新の`0.x.x`バージョンを指します。
-- 最新の開発バージョンを使用する場合は、`docker.all-hands.dev/all-hands-ai/openhands:main`を使用できます。このバージョンは不安定で、テストまたは開発目的でのみ推奨されます。
+1. [Anthropicアカウントを作成](https://console.anthropic.com/)します。
+2. [APIキーを生成](https://console.anthropic.com/settings/keys)します。
+3. [課金を設定](https://console.anthropic.com/settings/billing)します。
+
+コストを管理するために使用制限を設定することを検討してください。
+
+#### OpenAI
+
+1. [OpenAIアカウントを作成](https://platform.openai.com/)します。
+2. [APIキーを生成](https://platform.openai.com/api-keys)します。
+3. [課金を設定](https://platform.openai.com/account/billing/overview)します。
+
+これで[OpenHandsを使い始める](./getting-started)準備ができました。
+
+## バージョン
-安定性要件と必要な機能に応じて、最適なタグを選択できます。
+[上記のdockerコマンド](./installation#start-the-app)は、OpenHandsの最新の安定版リリースを取得します。他のオプションもあります:
+- 特定のリリースの場合、`openhands:$VERSION`と`runtime:$VERSION`の$VERSIONをバージョン番号に置き換えます。
+SemVerを使用しているため、`0.9`は自動的に最新の`0.9.x`リリースを指し、`0`は最新の`0.x.x`リリースを指します。
+- 最新の開発バージョンの場合、`openhands:$VERSION`と`runtime:$VERSION`の$VERSIONを`main`に置き換えます。
+このバージョンは不安定であり、テストまたは開発目的でのみ推奨されます。
開発ワークフローについては、[Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)を参照してください。
-問題がありますか?[トラブルシューティングガイド](https://docs.all-hands.dev/modules/usage/troubleshooting)をご確認ください。
+問題がありますか?[トラブルシューティングガイド](https://docs.all-hands.dev/modules/usage/troubleshooting)をご確認ください。
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/key-features.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/key-features.md
index 913c15f8fc23..994c138b3132 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/key-features.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/key-features.md
@@ -1,72 +1,29 @@
-# 主な機能
+# OpenHands 機能概要
-
+
-## 1. ワークスペース
+### チャットパネル
+- ユーザーとOpenHandsの会話を表示します。
+- OpenHandsはこのパネルで自身の行動を説明します。
-ワークスペース機能は、以下の主要な機能を備えた包括的な開発環境を提供します:
+### 変更点
+- OpenHandsによって実行されたファイルの変更を表示します。
-* ファイルエクスプローラー:プロジェクトのファイルとディレクトリの閲覧、表示、管理
-* プロジェクト管理:異なるプロジェクトのインポート、作成、ナビゲーション
-* 統合開発ツール:様々な開発ワークフローとのシームレスな統合
-* ファイル操作:
- * ファイル内容の表示
- * 新規ファイルとフォルダの作成
- * ファイルのアップロードとダウンロード
- * 基本的なファイル操作
+### VS Code
+- ファイルの閲覧や修正のための組み込みVS Code。
+- ファイルのアップロードやダウンロードにも使用できます。
-## 2. Jupyterノートブック
+### ターミナル
+- OpenHandsとユーザーがターミナルコマンドを実行するためのスペース。
-Jupyterノートブック機能は、インタラクティブなコーディングとデータ分析環境を提供します:
+### Jupyter
+- OpenHandsによって実行されたすべてのPythonコマンドを表示します。
+- OpenHandsを使用してデータ可視化タスクを実行する際に特に便利です。
-* インタラクティブなコードセル:セルベースのインターフェースでPythonコードを実行
-* 入出力の追跡:コード入力とその出力の履歴を保持
-* 永続的なセッション:セル間でコード実行コンテキストを保持
-* 様々なPython操作とデータ分析タスクをサポート
-* リアルタイムのコード実行と結果の可視化
+### アプリ
+- OpenHandsがアプリケーションを実行する際にウェブサーバーを表示します。
+- ユーザーは実行中のアプリケーションと対話できます。
-## 3. ブラウザ(ベータ)
-
-ブラウザ機能は、Web操作機能を提供します:
-
-* Webページナビゲーション:アプリケーション内でウェブサイトを開いて閲覧
-* スクリーンショット取得:Webページのスクリーンショットを自動生成
-* インタラクション機能:
- * 要素のクリック
- * フォームの入力
- * ページのスクロール
- * Web内容のナビゲーション
-* 15種類のブラウザ操作機能をサポート
-
-## 4. ターミナル
-
-ターミナル機能は、アプリケーション内でコマンドラインインターフェースを提供します:
-
-* シェルコマンドの実行:bashとシステムコマンドを実行
-* コマンド履歴:過去のコマンドを追跡して呼び出し
-* 環境との対話:システムのコマンドラインと直接対話
-* 様々なプログラミングとシステム管理タスクをサポート
-
-## 5. チャット / AI会話
-
-チャットインターフェースは、AIを活用した会話体験を提供します:
-
-* インタラクティブなAIアシスタント:自然言語での会話に参加
-* コンテキストを理解した応答:開発関連の質問を理解して応答
-* アクション提案:タスクに対する実行可能な推奨事項を提供
-* 会話管理:異なる会話スレッドの作成、削除、管理
-
-## 6. アプリケーション(ベータ)
-
-メインアプリケーションインターフェースは、これらすべての機能を統合します:
-
-* 統合ワークスペース:ワークスペース、ブラウザ、ターミナル、AIチャットのシームレスな統合
-* カスタマイズ可能なレイアウト:異なる機能パネルの配置をカスタマイズ
-* 状態管理:異なる機能間でコンテキストと状態を維持
-* セキュリティとプライバシー制御:アプリケーションの設定と権限を管理
-
-### 追加情報
-
-* アプリケーションは現在ベータ版で、継続的な改善と機能追加が行われています
-* 様々な開発ワークフローとAIアシストコーディングをサポート
-* 統合ツールとAIアシスタンスを通じて開発者の生産性を向上するように設計
+### ブラウザ
+- OpenHandsがウェブサイトを閲覧するために使用します。
+- このブラウザは非対話型です。
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/azure-llms.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/azure-llms.md
index 2794e81b42ec..d23b36c7e2fd 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/azure-llms.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/azure-llms.md
@@ -1,38 +1,38 @@
# Azure
-OpenHands は LiteLLM を使用して Azure のチャットモデルを呼び出します。Azure をプロバイダとして使用する方法については、[こちら](https://docs.litellm.ai/docs/providers/azure)のドキュメントをご覧ください。
+OpenHandsはLiteLLMを使用してAzureのチャットモデルを呼び出します。Azureをプロバイダーとして使用する方法に関するドキュメントは[こちら](https://docs.litellm.ai/docs/providers/azure)で確認できます。
-## Azure OpenAI 設定
+## Azure OpenAI設定
-OpenHands を実行する際には、以下の環境変数を [docker run コマンド](../installation#running-openhands) で `-e` を使用して設定する必要があります。
+OpenHandsを実行する際、[docker runコマンド](../installation#running-openhands)で`-e`を使用して以下の環境変数を設定する必要があります:
```
LLM_API_VERSION="" # 例: "2023-05-15"
```
-例:
+例:
```bash
docker run -it --pull=always \
-e LLM_API_VERSION="2023-05-15"
...
```
-その後、OpenHands UI の設定で以下を行います。
+その後、OpenHands UIの設定で:
:::note
-Azure の deployments ページで ChatGPT のデプロイメント名を確認する必要があります。以下では <deployment-name> と表記しています。
+Azureのデプロイメントページで確認できるChatGPTデプロイメント名が必要です。これは以下の<deployment-name>として参照されます。
:::
-1. `Advanced` オプションを有効にします。
-2. 以下を設定します:
- - `Custom Model` を azure/<deployment-name> に設定
- - `Base URL` を Azure API の Base URL に設定 (例: `https://example-endpoint.openai.azure.com`)
- - `API Key` を Azure API キーに設定
+1. `Advanced`オプションを有効にします。
+2. 以下を設定します:
+ - `Custom Model`を azure/<deployment-name> に設定
+ - `Base URL`を Azure API ベースURL(例:`https://example-endpoint.openai.azure.com`)に設定
+ - `API Key`を Azure APIキーに設定
-### Azure OpenAI 設定
+### Azure OpenAI設定
-OpenHands を実行する際には、以下の環境変数を [docker run コマンド](../installation#running-openhands) で `-e` を使用して設定します。
+OpenHandsを実行する際、[docker runコマンド](../installation#running-openhands)で`-e`を使用して以下の環境変数を設定します:
```
LLM_API_VERSION="" # 例: "2024-02-15-preview"
-```
+```
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/custom-llm-configs.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/custom-llm-configs.md
index c0f77241ca97..9f4cc419c90c 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/custom-llm-configs.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/custom-llm-configs.md
@@ -1,35 +1,35 @@
# カスタムLLM設定
-OpenHandsでは、`config.toml`ファイルで複数の名前付きLLM設定を定義できます。この機能により、高品質な応答が不要なタスクには低コストのモデルを使用したり、特定のエージェントに対して異なるパラメータを持つ異なるモデルを使用したりするなど、異なる用途に応じて異なるLLM設定を使用できます。
+OpenHandsでは、`config.toml`ファイルに複数の名前付きLLM設定を定義することができます。この機能により、異なる目的に応じて異なるLLM設定を使用することができます。例えば、高品質な応答を必要としないタスクには安価なモデルを使用したり、特定のエージェントに対して異なるパラメータを持つ異なるモデルを使用したりすることができます。
## 仕組み
-名前付きLLM設定は、`config.toml`ファイルで`llm.`で始まるセクションを使用して定義されます。例:
+名前付きLLM設定は、`config.toml`ファイルで`llm.`で始まるセクションを使用して定義されます。例えば:
```toml
-# デフォルトのLLM設定
+# デフォルトLLM設定
[llm]
model = "gpt-4"
-api_key = "あなたのAPIキー"
+api_key = "your-api-key"
temperature = 0.0
-# 低コストモデル用のカスタムLLM設定
+# 安価なモデル用のカスタムLLM設定
[llm.gpt3]
model = "gpt-3.5-turbo"
-api_key = "あなたのAPIキー"
+api_key = "your-api-key"
temperature = 0.2
# 異なるパラメータを持つ別のカスタム設定
[llm.high-creativity]
model = "gpt-4"
-api_key = "あなたのAPIキー"
+api_key = "your-api-key"
temperature = 0.8
top_p = 0.9
```
-各名前付き設定は、デフォルトの`[llm]`セクションからすべてのパラメータを継承し、これらのパラメータを上書きできます。必要な数のカスタム設定を定義できます。
+各名前付き設定は、デフォルトの`[llm]`セクションからすべての設定を継承し、それらの設定を上書きすることができます。必要な数だけカスタム設定を定義できます。
-## カスタム設定の使用
+## カスタム設定の使用方法
### エージェントでの使用
@@ -37,48 +37,48 @@ top_p = 0.9
```toml
[agent.RepoExplorerAgent]
-# このエージェントには低コストのGPT-3設定を使用
+# このエージェントには安価なGPT-3設定を使用
llm_config = 'gpt3'
[agent.CodeWriterAgent]
-# このエージェントには高創造性の設定を使用
+# このエージェントには高創造性設定を使用
llm_config = 'high-creativity'
```
### 設定オプション
-各名前付きLLM設定は、デフォルトのLLM設定と同じすべてのオプションをサポートしています。これらには以下が含まれます:
+各名前付きLLM設定は、デフォルトのLLM設定と同じオプションをすべてサポートしています。これらには以下が含まれます:
-- モデルの選択(`model`)
+- モデル選択(`model`)
- API設定(`api_key`、`base_url`など)
- モデルパラメータ(`temperature`、`top_p`など)
-- リトライパラメータ(`num_retries`、`retry_multiplier`など)
+- リトライ設定(`num_retries`、`retry_multiplier`など)
- トークン制限(`max_input_tokens`、`max_output_tokens`)
- その他すべてのLLM設定オプション
-利用可能なオプションの完全なリストについては、[設定オプション](../configuration-options)のドキュメントのLLM設定セクションを参照してください。
+利用可能なオプションの完全なリストについては、[設定オプション](../configuration-options)ドキュメントのLLM設定セクションを参照してください。
## ユースケース
-カスタムLLM設定は、以下のようなシナリオで特に有用です:
+カスタムLLM設定は、特に以下のシナリオで役立ちます:
-- **コスト最適化**:リポジトリの探索やシンプルなファイル操作など、高品質な応答が不要なタスクには低コストのモデルを使用
-- **タスク固有の調整**:異なるレベルの創造性や決定論的な応答が必要なタスクに対して、異なるtemperatureやtop_p値を設定
-- **異なるプロバイダー**:異なるタスクに対して異なるLLMプロバイダーやAPIエンドポイントを使用
-- **テストと開発**:開発とテスト中に異なるモデル設定を簡単に切り替え
+- **コスト最適化**:リポジトリの探索や単純なファイル操作など、高品質な応答を必要としないタスクには安価なモデルを使用します。
+- **タスク固有の調整**:異なるレベルの創造性や決定論を必要とするタスクに対して、異なる温度やtop_p値を設定します。
+- **異なるプロバイダー**:異なるタスクに対して異なるLLMプロバイダーやAPIエンドポイントを使用します。
+- **テストと開発**:開発とテスト中に異なるモデル設定を簡単に切り替えることができます。
## 例:コスト最適化
-コスト最適化のためのカスタムLLM設定の実践的な例:
+カスタムLLM設定を使用してコストを最適化する実用的な例:
```toml
-# 高品質な応答用のGPT-4を使用するデフォルト設定
+# 高品質な応答のためのGPT-4を使用するデフォルト設定
[llm]
model = "gpt-4"
-api_key = "あなたのAPIキー"
+api_key = "your-api-key"
temperature = 0.0
-# リポジトリ探索用の低コスト設定
+# リポジトリ探索用の安価な設定
[llm.repo-explorer]
model = "gpt-3.5-turbo"
temperature = 0.2
@@ -97,10 +97,40 @@ llm_config = 'code-gen'
```
この例では:
-- リポジトリ探索は主にコードの理解とナビゲーションなので、低コストモデルを使用
-- コード生成は、より大きなコードブロックを生成するためにGPT-4とより高いトークン制限を使用
-- デフォルト設定は他のタスクで引き続き利用可能
+- リポジトリ探索は主にコードの理解とナビゲーションを含むため、安価なモデルを使用します
+- コード生成は、より大きなコードブロックを生成するためにGPT-4とより高いトークン制限を使用します
+- デフォルト設定は他のタスクで引き続き利用可能です
+
+# 予約名を持つカスタム設定
+
+OpenHandsは、特定のユースケースのために予約名を持つカスタムLLM設定を使用することができます。予約名の下でモデルやその他の設定を指定すると、OpenHandsはそれらを特定の目的のために読み込んで使用します。現在、そのような設定の一つが実装されています:ドラフトエディター。
+
+## ドラフトエディター設定
+
+`draft_editor`設定は、コードの編集や改良を含むタスクのために、コード編集の予備的な草案作成に使用するモデルを指定するための設定グループです。これを`[llm.draft_editor]`セクションの下に提供する必要があります。
+
+例えば、`config.toml`で次のようなドラフトエディターを定義できます:
+
+```toml
+[llm.draft_editor]
+model = "gpt-4"
+temperature = 0.2
+top_p = 0.95
+presence_penalty = 0.0
+frequency_penalty = 0.0
+```
+
+この設定:
+- 高品質な編集と提案のためにGPT-4を使用します
+- 一貫性を維持しながらも柔軟性を許容するために低い温度(0.2)を設定します
+- 幅広いトークンオプションを考慮するために高いtop_p値(0.95)を使用します
+- 必要な特定の編集に焦点を当てるためにpresenceとfrequencyのペナルティを無効にします
+
+この設定は、編集を行う前にLLMに編集の草案を作成させたい場合に使用します。一般的に、以下の場合に役立ちます:
+- コードの改善を確認して提案する
+- コアの意味を維持しながら既存のコンテンツを改良する
+- コードやテキストに正確で焦点を絞った変更を加える
:::note
カスタムLLM設定は、`main.py`または`cli.py`を介して開発モードでOpenHandsを使用する場合にのみ利用可能です。`docker run`を介して実行する場合は、標準の設定オプションを使用してください。
-:::
+:::
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/google-llms.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/google-llms.md
index 21492a40a143..c06ce06c694e 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/google-llms.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/google-llms.md
@@ -1,31 +1,29 @@
-以下は、指定されたコンテンツの日本語訳です。
-
# Google Gemini/Vertex
-OpenHandsはLiteLLMを使用して、Googleのチャットモデルを呼び出します。Googleをプロバイダとして使用する方法については、以下のドキュメントを参照してください。
+OpenHandsはLiteLLMを使用してGoogleのチャットモデルを呼び出します。Googleをプロバイダーとして使用する方法については、以下のドキュメントを参照してください:
- [Gemini - Google AI Studio](https://docs.litellm.ai/docs/providers/gemini)
- [VertexAI - Google Cloud Platform](https://docs.litellm.ai/docs/providers/vertex)
-## Gemini - Google AI Studio の設定
+## Gemini - Google AI Studioの設定
-OpenHandsを実行する際、設定画面で以下を設定する必要があります。
-- `LLM Provider` を `Gemini` に設定
-- `LLM Model` を使用するモデルに設定
-モデルがリストにない場合は、`Advanced` オプションを切り替えて、`Custom Model` に入力します(例: `gemini/gemini-2.0-flash` のように gemini/<model-name>)。
-- `API Key` を Gemini API キーに設定
+OpenHandsを実行する際、設定画面で以下を設定する必要があります:
+- `LLM Provider`を`Gemini`に設定
+- `LLM Model`を使用するモデルに設定
+モデルがリストにない場合は、`Advanced`オプションを切り替えて、`Custom Model`に入力してください(例:gemini/<model-name>、`gemini/gemini-2.0-flash`など)。
+- `API Key`にGemini APIキーを設定
-## VertexAI - Google Cloud Platform の設定
+## VertexAI - Google Cloud Platformの設定
-Google Cloud Platform 経由で Vertex AI を使用して OpenHands を実行するには、[docker run コマンド](../installation#running-openhands)で `-e` を使用して以下の環境変数を設定する必要があります。
+Google Cloud PlatformのVertex AIを使用してOpenHandsを実行する場合、[docker runコマンド](../installation#running-openhands)で`-e`を使用して以下の環境変数を設定する必要があります:
```
-GOOGLE_APPLICATION_CREDENTIALS=""
-VERTEXAI_PROJECT=""
-VERTEXAI_LOCATION=""
+GOOGLE_APPLICATION_CREDENTIALS=""
+VERTEXAI_PROJECT="<あなたのgcpプロジェクトid>"
+VERTEXAI_LOCATION="<あなたのgcpロケーション>"
```
-その後、設定画面で以下を設定します。
-- `LLM Provider` を `VertexAI` に設定
-- `LLM Model` を使用するモデルに設定
-モデルがリストにない場合は、`Advanced` オプションを切り替えて、`Custom Model` に入力します(例: vertex_ai/<model-name>)。
+その後、OpenHandsのUI設定で以下を設定します:
+- `LLM Provider`を`VertexAI`に設定
+- `LLM Model`を使用するモデルに設定
+モデルがリストにない場合は、`Advanced`オプションを切り替えて、`Custom Model`に入力してください(例:vertex_ai/<model-name>)。
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/groq.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/groq.md
index ffb6a85e1d52..8feb42dc058f 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/groq.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/groq.md
@@ -1,20 +1,19 @@
# Groq
-OpenHandsは、GroqのチャットモデルへのAPIコールにLiteLLMを使用します。Groqをプロバイダーとして使用する方法については、[こちら](https://docs.litellm.ai/docs/providers/groq)のドキュメントを参照してください。
+OpenHandsはLiteLLMを使用してGroqのチャットモデルを呼び出します。Groqをプロバイダーとして使用する方法に関するドキュメントは[こちら](https://docs.litellm.ai/docs/providers/groq)で確認できます。
## 設定
-OpenHandsを実行する際、OpenHandsのUIで設定メニューから以下の項目を設定する必要があります:
+OpenHandsを実行する際、設定画面で以下の項目を設定する必要があります:
+- `LLM Provider`を`Groq`に設定
+- `LLM Model`を使用するモデルに設定。[Groqがホストしているモデルのリストはこちらで確認できます](https://console.groq.com/docs/models)。モデルがリストにない場合は、`Advanced`オプションを有効にして、`Custom Model`に入力してください(例:groq/<model-name>のように`groq/llama3-70b-8192`)。
+- `API key`にGroq APIキーを設定。Groq APIキーの確認または作成については、[こちらを参照してください](https://console.groq.com/keys)。
-* `LLMプロバイダー`を`Groq`に設定
-* `LLMモデル`を使用するモデルに設定。[Groqがホストするモデルのリストはこちら](https://console.groq.com/docs/models)を参照してください。モデルがリストにない場合は、`詳細設定`を有効にし、`カスタムモデル`に入力してください(例:groq/<model-name>として`groq/llama3-70b-8192`)。
-* `APIキー`をGroq APIキーに設定。Groq APIキーの確認または作成については、[こちら](https://console.groq.com/keys)を参照してください。
+## GroqをOpenAI互換エンドポイントとして使用する
-## OpenAI互換エンドポイントとしてのGroqの使用
-
-Groqのチャット補完エンドポイントは[主にOpenAI互換](https://console.groq.com/docs/openai)です。そのため、他のOpenAI互換エンドポイントと同様の方法でGroqのモデルにアクセスできます。OpenHandsのUIで設定メニューから以下の項目を設定します:
-
-* `詳細設定`を有効にする
-* `カスタムモデル`にプレフィックス`openai/`と使用するモデルを設定(例:`openai/llama3-70b-8192`)
-* `ベースURL`を`https://api.groq.com/openai/v1`に設定
-* `APIキー`をGroq APIキーに設定
+Groqのチャット完了エンドポイントは[ほぼOpenAI互換](https://console.groq.com/docs/openai)です。そのため、OpenAI互換エンドポイントと同様にGroqモデルにアクセスできます。OpenHandsのUI設定画面で:
+1. `Advanced`オプションを有効にする
+2. 以下を設定する:
+ - `Custom Model`に接頭辞`openai/`と使用するモデル名を組み合わせて設定(例:`openai/llama3-70b-8192`)
+ - `Base URL`を`https://api.groq.com/openai/v1`に設定
+ - `API Key`にGroq APIキーを設定
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/litellm-proxy.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/litellm-proxy.md
index ce1cdfcdf3e5..5d6e066512e1 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/litellm-proxy.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/litellm-proxy.md
@@ -1,20 +1,20 @@
# LiteLLM プロキシ
-OpenHandsは、様々なLLMプロバイダーにアクセスするために[LiteLLMプロキシ](https://docs.litellm.ai/docs/proxy/quick_start)の使用をサポートしています。
+OpenHandsは[LiteLLMプロキシ](https://docs.litellm.ai/docs/proxy/quick_start)を使用して、様々なLLMプロバイダーにアクセスすることをサポートしています。
## 設定
OpenHandsでLiteLLMプロキシを使用するには、以下の手順が必要です:
-1. LiteLLMプロキシサーバーを設定する([LiteLLMのドキュメント](https://docs.litellm.ai/docs/proxy/quick_start)を参照)
-2. OpenHandsを実行する際、OpenHandsのUIで設定メニューから以下の項目を設定する必要があります:
- * `詳細設定`を有効にする
- * `カスタムモデル`にプレフィックス`litellm_proxy/`と使用するモデルを設定(例:`litellm_proxy/anthropic.claude-3-5-sonnet-20241022-v2:0`)
- * `ベースURL`をLiteLLMプロキシのURL(例:`https://your-litellm-proxy.com`)に設定
- * `APIキー`をLiteLLMプロキシのAPIキーに設定
+1. LiteLLMプロキシサーバーをセットアップする([LiteLLMドキュメント](https://docs.litellm.ai/docs/proxy/quick_start)を参照)
+2. OpenHandsを実行する際、設定画面から以下の項目を設定する必要があります:
+ * `Advanced`(詳細設定)オプションを有効にする
+ * `Custom Model`(カスタムモデル)に接頭辞 `litellm_proxy/` + 使用するモデル名を設定する(例:`litellm_proxy/anthropic.claude-3-5-sonnet-20241022-v2:0`)
+ * `Base URL`(ベースURL)にLiteLLMプロキシのURLを設定する(例:`https://your-litellm-proxy.com`)
+ * `API Key`(APIキー)にLiteLLMプロキシのAPIキーを設定する
## サポートされているモデル
-サポートされているモデルは、LiteLLMプロキシの設定に依存します。OpenHandsは、LiteLLMプロキシが処理するように設定されているすべてのモデルをサポートします。
+サポートされているモデルはLiteLLMプロキシの設定によって異なります。OpenHandsはLiteLLMプロキシが対応するように設定されているあらゆるモデルをサポートします。
-利用可能なモデルとその名前のリストについては、LiteLLMプロキシの設定を参照してください。
+利用可能なモデルとその名前のリストについては、LiteLLMプロキシの設定を参照してください。
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/llms.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/llms.md
index c19140498374..633ca5709051 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/llms.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/llms.md
@@ -1,48 +1,55 @@
# 🤖 LLMバックエンド
-OpenHandsは、LiteLLMがサポートするすべてのLLMに接続できます。ただし、機能するには強力なモデルが必要です。
-
-## モデルの推奨事項
+:::note
+このセクションは、OpenHandsを異なるLLMに接続したいユーザー向けです。
+:::
-コーディングタスクに対する言語モデルの評価(SWE-benchデータセットを使用)に基づいて、モデル選択に関するいくつかの推奨事項を提供できます。分析の一部は、[LLMを比較したこのブログ記事](https://www.all-hands.dev/blog/evaluation-of-llms-as-coding-agents-on-swe-bench-at-30x-speed)と[より最近の結果を含むこのブログ記事](https://www.all-hands.dev/blog/openhands-codeact-21-an-open-state-of-the-art-software-development-agent)で確認できます。
+OpenHandsはLiteLLMでサポートされているあらゆるLLMに接続できます。ただし、動作するには強力なモデルが必要です。
-モデルを選択する際は、出力の品質とコストの両方を考慮してください。結果の要約は以下の通りです:
+## モデルの推奨
-- Claude 3.5 Sonnetが圧倒的に優れており、OpenHandsのデフォルトエージェントでSWE-Bench Verifiedの53%の解決率を達成しています。
-- GPT-4oは遅れを取っており、o1-miniは実際にGPT-4oよりもわずかに低いパフォーマンスを示しました。結果を少し分析したところ、o1は時々「考えすぎ」て、タスクを完了できるのに追加の環境設定タスクを実行していたようです。
-- 最後に、最も強力なオープンモデルはLlama 3.1 405 BとDeepseek-v2.5で、合理的なパフォーマンスを示し、一部のクローズドモデルを上回りました。
+コーディングタスク向けの言語モデル評価(SWE-benchデータセットを使用)に基づいて、モデル選択についていくつかの
+推奨事項を提供できます。最新のベンチマーク結果は[このスプレッドシート](https://docs.google.com/spreadsheets/d/1wOUdFCMyY6Nt0AIqF705KN4JKOWgeI4wUGUP60krXXs/edit?gid=0)で確認できます。
-詳細については、[完全な記事](https://www.all-hands.dev/blog/evaluation-of-llms-as-coding-agents-on-swe-bench-at-30x-speed)を参照してください。
+これらの調査結果とコミュニティからのフィードバックに基づき、以下のモデルはOpenHandsでうまく動作することが確認されています:
-これらの結果とコミュニティからのフィードバックに基づいて、以下のモデルがOpenHandsで合理的に機能することが確認されています:
+- [anthropic/claude-3-7-sonnet-20250219](https://www.anthropic.com/api) (推奨)
+- [gemini/gemini-2.5-pro](https://blog.google/technology/google-deepmind/gemini-model-thinking-updates-march-2025/)
+- [deepseek/deepseek-chat](https://api-docs.deepseek.com/)
+- [openai/o3-mini](https://openai.com/index/openai-o3-mini/)
+- [openai/o3](https://openai.com/index/introducing-o3-and-o4-mini/)
+- [openai/o4-mini](https://openai.com/index/introducing-o3-and-o4-mini/)
+- [all-hands/openhands-lm-32b-v0.1](https://www.all-hands.dev/blog/introducing-openhands-lm-32b----a-strong-open-coding-agent-model) -- [OpenRouter](https://openrouter.ai/all-hands/openhands-lm-32b-v0.1)を通じて利用可能
-- claude-3-5-sonnet(推奨)
-- gpt-4 / gpt-4o
-- llama-3.1-405b
-- deepseek-v2.5
:::warning
-OpenHandsは、設定したLLMに多くのプロンプトを送信します。これらのLLMのほとんどは有料なので、支出制限を設定し、使用状況を監視してください。
+OpenHandsは設定したLLMに多くのプロンプトを送信します。これらのLLMのほとんどは有料なので、支出制限を設定し、
+使用状況を監視してください。
:::
-リストにない特定のLLMでOpenHandsの実行に成功した場合は、検証済みリストに追加してください。また、同じプロバイダーとLLMを使用する他のユーザーを支援するため、設定プロセスを共有するPRを開くことをお勧めします!
+リストにないLLMでOpenHandsを正常に実行できた場合は、検証済みリストに追加してください。
+また、同じプロバイダーとLLMを使用している他のユーザーを支援するために、セットアッププロセスを共有するPRを開くことをお勧めします!
-利用可能なプロバイダーとモデルの完全なリストについては、[litellmのドキュメント](https://docs.litellm.ai/docs/providers)を参照してください。
+利用可能なプロバイダーとモデルの完全なリストについては、
+[litellmのドキュメント](https://docs.litellm.ai/docs/providers)を参照してください。
:::note
-現在のほとんどのローカルおよびオープンソースモデルは、それほど強力ではありません。このようなモデルを使用する場合、メッセージ間の長い待機時間、品質の低い応答、または不正なJSONに関するエラーが発生する可能性があります。OpenHandsは、それを駆動するモデルと同じくらい強力にしかなりません。ただし、機能するモデルを見つけた場合は、上記の検証済みリストに追加してください。
+現在のほとんどのローカルおよびオープンソースモデルはそれほど強力ではありません。そのようなモデルを使用すると、
+メッセージ間の長い待ち時間、質の低い応答、または不正なJSON形式に関するエラーが発生する可能性があります。OpenHandsは
+それを駆動するモデルと同じくらい強力にしかなりません。ただし、うまく動作するモデルを見つけた場合は、上記の検証済みリストに追加してください。
:::
## LLM設定
-以下の項目は、OpenHandsのUIで設定メニューから設定できます:
+以下の設定は、OpenHandsのUI内の設定から行うことができます:
- `LLMプロバイダー`
- `LLMモデル`
- `APIキー`
- `ベースURL`(`詳細設定`から)
-一部のLLM/プロバイダーで必要となる可能性があるが、UIでは設定できないパラメータがあります。これらは代わりに、[docker runコマンド](/modules/usage/installation#start-the-app)に`-e`を使用して環境変数として渡すことができます:
+一部のLLM/プロバイダーでは、UI経由で設定できない設定が必要な場合があります。これらは
+アプリを起動する際にdocker runコマンドに`-e`を使って環境変数として渡すことができます:
- `LLM_API_VERSION`
- `LLM_EMBEDDING_MODEL`
@@ -56,27 +63,30 @@ OpenHandsは、設定したLLMに多くのプロンプトを送信します。
- [Azure](llms/azure-llms)
- [Google](llms/google-llms)
- [Groq](llms/groq)
+- [SGLangまたはvLLMを使用したローカルLLM](llms/../local-llms.md)
- [LiteLLM Proxy](llms/litellm-proxy)
- [OpenAI](llms/openai-llms)
- [OpenRouter](llms/openrouter)
### APIリトライとレート制限
-LLMプロバイダーは通常、レート制限を持っており、時には非常に低い制限で、リトライが必要になる場合があります。OpenHandsは、レート制限エラー(エラーコード429)、API接続エラー、またはその他の一時的なエラーを受信した場合、自動的にリクエストを再試行します。
+LLMプロバイダーには通常レート制限があり、場合によっては非常に低く設定されていて、リトライが必要になることがあります。OpenHandsは
+レート制限エラー(429エラーコード)を受け取った場合、自動的にリクエストを再試行します。
-使用しているプロバイダーのニーズに応じて、これらのオプションをカスタマイズできます。プロバイダーのドキュメントを確認し、以下の環境変数を設定してリトライ回数とリトライ間の待機時間を制御してください:
+使用しているプロバイダーに合わせてこれらのオプションをカスタマイズできます。プロバイダーのドキュメントを確認し、
+リトライ回数とリトライ間の時間を制御するために以下の環境変数を設定してください:
-- `LLM_NUM_RETRIES`(デフォルト8)
-- `LLM_RETRY_MIN_WAIT`(デフォルト15秒)
-- `LLM_RETRY_MAX_WAIT`(デフォルト120秒)
-- `LLM_RETRY_MULTIPLIER`(デフォルト2)
+- `LLM_NUM_RETRIES`(デフォルトは4回)
+- `LLM_RETRY_MIN_WAIT`(デフォルトは5秒)
+- `LLM_RETRY_MAX_WAIT`(デフォルトは30秒)
+- `LLM_RETRY_MULTIPLIER`(デフォルトは2)
-OpenHandsを開発モードで実行している場合、これらのオプションを`config.toml`ファイルで設定することもできます:
+開発モードでOpenHandsを実行している場合は、`config.toml`ファイルでこれらのオプションを設定することもできます:
```toml
[llm]
-num_retries = 8
-retry_min_wait = 15
-retry_max_wait = 120
+num_retries = 4
+retry_min_wait = 5
+retry_max_wait = 30
retry_multiplier = 2
-```
+```
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/local-llms.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/local-llms.md
index 1020aca03ef4..5f2b2433f2bb 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/local-llms.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/local-llms.md
@@ -1,190 +1,83 @@
-# ローカルLLMとOllama
+# ローカルLLM(SGLangまたはvLLM)の使用
:::warning
ローカルLLMを使用する場合、OpenHandsの機能が制限される可能性があります。
+最適な体験を得るためには、GPUを使用してローカルモデルを提供することを強く推奨します。
:::
-Ollamaサーバーが起動し、実行中であることを確認してください。
-詳細な起動手順については、[こちら](https://github.com/ollama/ollama)を参照してください。
+## ニュース
-このガイドでは、`ollama serve`でollamaを起動したことを前提としています。ollamaを別の方法で実行している場合(例:dockerの中で)、手順を変更する必要があるかもしれません。WSLを実行している場合、デフォルトのollama設定ではdockerコンテナからのリクエストがブロックされることに注意してください。[こちら](#configuring-ollama-service-wsl-ja)を参照してください。
+- 2025/03/31: SWE-Bench Verifiedで37.1%を達成するオープンモデルOpenHands LM v0.1 32Bをリリースしました
+([ブログ](https://www.all-hands.dev/blog/introducing-openhands-lm-32b----a-strong-open-coding-agent-model)、[モデル](https://huggingface.co/all-hands/openhands-lm-32b-v0.1))。
-## モデルのプル
+## Huggingfaceからモデルをダウンロード
-Ollamaモデル名は[こちら](https://ollama.com/library)で確認できます。小さな例として、`codellama:7b`モデルを使用できます。一般的に、より大きなモデルの方が性能が良くなります。
+例えば、[OpenHands LM 32B v0.1](https://huggingface.co/all-hands/openhands-lm-32b-v0.1)をダウンロードするには:
```bash
-ollama pull codellama:7b
+huggingface-cli download all-hands/openhands-lm-32b-v0.1 --local-dir all-hands/openhands-lm-32b-v0.1
```
-ダウンロードしたモデルは以下のように確認できます:
+## モデル提供フレームワークでOpenAI互換エンドポイントを作成
-```bash
-~$ ollama list
-NAME ID SIZE MODIFIED
-codellama:7b 8fdf8f752f6e 3.8 GB 6 weeks ago
-mistral:7b-instruct-v0.2-q4_K_M eb14864c7427 4.4 GB 2 weeks ago
-starcoder2:latest f67ae0f64584 1.7 GB 19 hours ago
-```
+### SGLangでの提供
-## DockerでOpenHandsを実行
-
-### OpenHandsの起動
-[こちら](../getting-started)の手順を使用して、DockerでOpenHandsを起動します。
-ただし、`docker run`を実行する際に、いくつかの引数を追加する必要があります:
+- [公式ドキュメント](https://docs.sglang.ai/start/install.html)に従ってSGLangをインストールします。
+- OpenHands LM 32B用の起動コマンド例(少なくとも2つのGPUが必要):
```bash
-docker run # ...
- --add-host host.docker.internal:host-gateway \
- -e LLM_OLLAMA_BASE_URL="http://host.docker.internal:11434" \
- # ...
-```
-
-LLM_OLLAMA_BASE_URLはオプションです。設定すると、UIでインストール済みの利用可能なモデルを表示するために使用されます。
-
-
-### Webアプリケーションの設定
-
-`openhands`を実行する際、OpenHands UIの設定で以下を設定する必要があります:
-- モデルを"ollama/<model-name>"に
-- ベースURLを`http://host.docker.internal:11434`に
-- APIキーはオプションで、`ollama`などの任意の文字列を使用できます。
-
-
-## 開発モードでOpenHandsを実行
-
-### ソースからビルド
-
-[Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)の手順を使用して、OpenHandsをビルドします。
-`make setup-config`を実行して`config.toml`が存在することを確認してください。これにより、設定ファイルが作成されます。`config.toml`に以下を入力します:
-
-```
-[core]
-workspace_base="./workspace"
-
-[llm]
-embedding_model="local"
-ollama_base_url="http://localhost:11434"
-
+SGLANG_ALLOW_OVERWRITE_LONGER_CONTEXT_LEN=1 python3 -m sglang.launch_server \
+ --model all-hands/openhands-lm-32b-v0.1 \
+ --served-model-name openhands-lm-32b-v0.1 \
+ --port 8000 \
+ --tp 2 --dp 1 \
+ --host 0.0.0.0 \
+ --api-key mykey --context-length 131072
```
-これで完了です!`make run`でOpenHandsを起動できるようになりました。`http://localhost:3000/`に接続できるはずです。
-
-### Webアプリケーションの設定
-
-OpenHands UIで、左下の設定ホイールをクリックします。
-次に、`Model`入力に`ollama/codellama:7b`、または先ほどプルしたモデルの名前を入力します。
-ドロップダウンに表示されない場合は、`Advanced Settings`を有効にして入力してください。注意:`ollama list`で表示されるモデル名に、接頭辞`ollama/`を付ける必要があります。
-
-APIキーフィールドには、特定のキーが不要なので、`ollama`または任意の値を入力します。
-
-ベースURLフィールドには、`http://localhost:11434`を入力します。
-
-これで準備完了です!
+### vLLMでの提供
-## ollamaサービスの設定(WSL) {#configuring-ollama-service-wsl-ja}
-
-WSLのollamaのデフォルト設定では、localhostのみにサービスを提供します。つまり、dockerコンテナからアクセスできません。例えば、OpenHandsでは動作しません。まず、ollamaが正しく実行されていることをテストしましょう。
+- [公式ドキュメント](https://docs.vllm.ai/en/latest/getting_started/installation.html)に従ってvLLMをインストールします。
+- OpenHands LM 32B用の起動コマンド例(少なくとも2つのGPUが必要):
```bash
-ollama list # インストール済みモデルのリストを取得
-curl http://localhost:11434/api/generate -d '{"model":"[NAME]","prompt":"hi"}'
-#例 curl http://localhost:11434/api/generate -d '{"model":"codellama:7b","prompt":"hi"}'
-#例 curl http://localhost:11434/api/generate -d '{"model":"codellama","prompt":"hi"}' #タグは1つしかない場合はオプション
+vllm serve all-hands/openhands-lm-32b-v0.1 \
+ --host 0.0.0.0 --port 8000 \
+ --api-key mykey \
+ --tensor-parallel-size 2 \
+ --served-model-name openhands-lm-32b-v0.1
+ --enable-prefix-caching
```
-完了したら、dockerコンテナ内からの「外部」リクエストを許可するかテストします。
+## OpenHandsの実行と設定
-```bash
-docker ps # 実行中のdockerコンテナのリストを取得。最も正確なテストのためにOpenHandsサンドボックスコンテナを選択。
-docker exec [CONTAINER ID] curl http://host.docker.internal:11434/api/generate -d '{"model":"[NAME]","prompt":"hi"}'
-#例 docker exec cd9cc82f7a11 curl http://host.docker.internal:11434/api/generate -d '{"model":"codellama","prompt":"hi"}'
-```
+### OpenHandsの実行
-## 修正方法
+#### Dockerを使用
-それでは、動作するようにしましょう。sudo権限で/etc/systemd/system/ollama.serviceを編集します。(パスはLinuxの種類によって異なる場合があります)
+[公式のdocker実行コマンド](../installation#start-the-app)を使用してOpenHandsを実行します。
-```bash
-sudo vi /etc/systemd/system/ollama.service
-```
+#### 開発モードを使用
-または
-
-```bash
-sudo nano /etc/systemd/system/ollama.service
-```
-
-[Service]ブラケットにこれらの行を追加します
-
-```
-Environment="OLLAMA_HOST=0.0.0.0:11434"
-Environment="OLLAMA_ORIGINS=*"
-```
-
-そして保存し、設定をリロードしてサービスを再起動します。
-
-```bash
-sudo systemctl daemon-reload
-sudo systemctl restart ollama
-```
-
-最後に、コンテナ内からollamaにアクセスできることをテストします
-
-```bash
-ollama list # インストール済みモデルのリストを取得
-docker ps # 実行中のdockerコンテナのリストを取得。最も正確なテストのためにOpenHandsサンドボックスコンテナを選択。
-docker exec [CONTAINER ID] curl http://host.docker.internal:11434/api/generate -d '{"model":"[NAME]","prompt":"hi"}'
-```
-
-
-# ローカルLLMとLM Studio
-
-LM Studioのセットアップ手順:
-1. LM Studioを開きます
-2. ローカルサーバータブに移動します。
-3. 「サーバーを起動」ボタンをクリックします。
-4. ドロップダウンから使用するモデルを選択します。
-
-
-以下の設定を行います:
-```bash
-LLM_MODEL="openai/lmstudio"
-LLM_BASE_URL="http://localhost:1234/v1"
-CUSTOM_LLM_PROVIDER="openai"
-```
-
-### Docker
-
-```bash
-docker run # ...
- -e LLM_MODEL="openai/lmstudio" \
- -e LLM_BASE_URL="http://host.docker.internal:1234/v1" \
- -e CUSTOM_LLM_PROVIDER="openai" \
- # ...
-```
-
-これで、`http://localhost:3000/`に接続できるはずです。
-
-開発環境では、`config.toml`ファイルに以下の設定を行うことができます:
+[Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)の指示に従ってOpenHandsをビルドします。
+`make setup-config`を実行して`config.toml`が存在することを確認します。これにより設定ファイルが作成されます。`config.toml`に以下を入力します:
```
[core]
-workspace_base="./workspace"
+workspace_base="/path/to/your/workspace"
[llm]
-model="openai/lmstudio"
-base_url="http://localhost:1234/v1"
-custom_llm_provider="openai"
+model="openhands-lm-32b-v0.1"
+ollama_base_url="http://localhost:8000"
```
-完了です!これで、Dockerなしで`make run`を実行してOpenHandsを起動できます。`http://localhost:3000/`に接続できるはずです。
+`make run`を使用してOpenHandsを起動します。
-# 注意
+### OpenHandsの設定
-WSLの場合、cmdで以下のコマンドを実行して、ネットワークモードをミラーに設定します:
-
-```
-python -c "print('[wsl2]\nnetworkingMode=mirrored',file=open(r'%UserProfile%\.wslconfig','w'))"
-wsl --shutdown
-```
+OpenHandsが実行されたら、設定を通じてOpenHands UIで以下を設定する必要があります:
+1. `Advanced`オプションを有効にします。
+2. 以下を設定します:
+- `Custom Model`を`openai/`(例:`openai/openhands-lm-32b-v0.1`)に設定
+- `Base URL`を`http://host.docker.internal:8000`に設定
+- `API key`をモデル提供時に設定したのと同じ文字列(例:`mykey`)に設定
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/openai-llms.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/openai-llms.md
index 442096efaaec..0ab2a5f4da31 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/openai-llms.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/openai-llms.md
@@ -1,26 +1,25 @@
# OpenAI
-OpenHandsは、OpenAIのチャットモデルへのAPIコールにLiteLLMを使用します。OpenAIをプロバイダーとして使用する方法については、[こちら](https://docs.litellm.ai/docs/providers/openai)のドキュメントを参照してください。
+OpenHandsはLiteLLMを使用してOpenAIのチャットモデルを呼び出します。OpenAIをプロバイダーとして使用する方法に関するドキュメントは[こちら](https://docs.litellm.ai/docs/providers/openai)で確認できます。
## 設定
-OpenHandsを実行する際、OpenHandsのUIで設定メニューから以下の項目を設定する必要があります:
-
-* `LLMプロバイダー`を`OpenAI`に設定
-* `LLMモデル`を使用するモデルに設定。
-[LiteLLMがサポートするOpenAIモデルの完全なリストはこちら](https://docs.litellm.ai/docs/providers/openai#openai-chat-completion-models)を参照してください。
-モデルがリストにない場合は、`詳細設定`を有効にし、`カスタムモデル`に入力してください(例:openai/<model-name>として`openai/gpt-4o`)。
-* `APIキー`をOpenAI APIキーに設定。OpenAIプロジェクトのAPIキーの確認または作成については、[こちら](https://platform.openai.com/api-keys)を参照してください。
+OpenHandsを実行する際、設定画面で以下の項目を設定する必要があります:
+* `LLM Provider`を`OpenAI`に設定
+* `LLM Model`を使用するモデルに設定
+[LiteLLMがサポートするOpenAIモデルの完全なリストはこちらをご覧ください。](https://docs.litellm.ai/docs/providers/openai#openai-chat-completion-models)
+モデルがリストにない場合は、`Advanced`オプションを切り替えて、`Custom Model`に入力してください(例:openai/<model-name>、`openai/gpt-4o`など)。
+* `API Key`にOpenAI APIキーを設定。OpenAI Project APIキーの確認または作成については、[こちら](https://platform.openai.com/api-keys)をご覧ください。
## OpenAI互換エンドポイントの使用
-OpenAIのチャット補完と同様に、OpenAI互換エンドポイントにもLiteLLMを使用します。この件に関する完全なドキュメントは[こちら](https://docs.litellm.ai/docs/providers/openai_compatible)を参照してください。
+OpenAIチャット補完と同様に、OpenAI互換エンドポイントにもLiteLLMを使用します。この話題に関する完全なドキュメントは[こちら](https://docs.litellm.ai/docs/providers/openai_compatible)で確認できます。
## OpenAIプロキシの使用
-OpenAIプロキシを使用する場合、OpenHandsのUIで設定メニューから以下の項目を設定する必要があります:
-
-* `詳細設定`を有効にする
-* `カスタムモデル`をopenai/<model-name>に設定(例:`openai/gpt-4o`またはopenai/<proxy-prefix>/<model-name>)
-* `ベースURL`をOpenAIプロキシのURLに設定
-* `APIキー`をOpenAI APIキーに設定
+OpenAIプロキシを使用している場合、OpenHandsのUI設定で:
+1. `Advanced`オプションを有効にする
+2. 以下を設定する:
+ - `Custom Model`をopenai/<model-name>に設定(例:`openai/gpt-4o`またはopenai/<proxy-prefix>/<model-name>)
+ - `Base URL`をOpenAIプロキシのURLに設定
+ - `API Key`をOpenAI APIキーに設定
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/openrouter.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/openrouter.md
index a16f8e63d130..581ecc0e787a 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/openrouter.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/llms/openrouter.md
@@ -1,13 +1,12 @@
# OpenRouter
-OpenHandsは、OpenRouterのチャットモデルへのAPIコールにLiteLLMを使用します。OpenRouterをプロバイダーとして使用する方法については、[こちら](https://docs.litellm.ai/docs/providers/openrouter)のドキュメントを参照してください。
+OpenHandsはLiteLLMを使用してOpenRouter上のチャットモデルを呼び出します。OpenRouterをプロバイダーとして使用する方法に関するドキュメントは[こちら](https://docs.litellm.ai/docs/providers/openrouter)で確認できます。
## 設定
-OpenHandsを実行する際、OpenHandsのUIで設定メニューから以下の項目を設定する必要があります:
-
-* `LLMプロバイダー`を`OpenRouter`に設定
-* `LLMモデル`を使用するモデルに設定。
-[OpenRouterのモデルの完全なリストはこちら](https://openrouter.ai/models)を参照してください。
-モデルがリストにない場合は、`詳細設定`を有効にし、`カスタムモデル`に入力してください(例:openrouter/<model-name>として`openrouter/anthropic/claude-3.5-sonnet`)。
-* `APIキー`をOpenRouter APIキーに設定。
+OpenHandsを実行する際、設定画面から以下の項目を設定する必要があります:
+* `LLM Provider`を`OpenRouter`に設定
+* `LLM Model`を使用するモデルに設定
+[OpenRouterモデルの完全なリストはこちらで確認できます](https://openrouter.ai/models)。
+モデルがリストにない場合は、`Advanced`オプションを切り替えて、`Custom Model`に入力してください(例:openrouter/<model-name> のように `openrouter/anthropic/claude-3.5-sonnet`)。
+* `API Key`にOpenRouterのAPIキーを設定
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/mcp.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/mcp.md
new file mode 100644
index 000000000000..0d60edb41b31
--- /dev/null
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/mcp.md
@@ -0,0 +1,96 @@
+# モデルコンテキストプロトコル(MCP)
+
+:::note
+このページでは、OpenHandsでモデルコンテキストプロトコル(MCP)を設定して使用する方法を説明します。これにより、エージェントの機能をカスタムツールで拡張できます。
+:::
+
+## 概要
+
+モデルコンテキストプロトコル(MCP)は、OpenHandsが外部ツールサーバーと通信するためのメカニズムです。これらのサーバーは、特殊なデータ処理、外部APIアクセス、またはカスタムツールなど、エージェントに追加機能を提供できます。MCPは[modelcontextprotocol.io](https://modelcontextprotocol.io)で定義されているオープンスタンダードに基づいています。
+
+## 設定
+
+MCP設定は`config.toml`ファイルの`[mcp]`セクションで定義されます。
+
+### 設定例
+
+```toml
+[mcp]
+# SSEサーバー - Server-Sent Eventsを介して通信する外部サーバー
+sse_servers = [
+ # 基本的なSSEサーバー(URLのみ)
+ "http://example.com:8080/mcp",
+
+ # APIキー認証を使用するSSEサーバー
+ {url="https://secure-example.com/mcp", api_key="your-api-key"}
+]
+
+# Stdioサーバー - 標準入出力を介して通信するローカルプロセス
+stdio_servers = [
+ # 基本的なstdioサーバー
+ {name="fetch", command="uvx", args=["mcp-server-fetch"]},
+
+ # 環境変数を持つstdioサーバー
+ {
+ name="data-processor",
+ command="python",
+ args=["-m", "my_mcp_server"],
+ env={
+ "DEBUG": "true",
+ "PORT": "8080"
+ }
+ }
+]
+```
+
+## 設定オプション
+
+### SSEサーバー
+
+SSEサーバーは、文字列URLまたは以下のプロパティを持つオブジェクトを使用して設定されます:
+
+- `url`(必須)
+ - 型: `str`
+ - 説明: SSEサーバーのURL
+
+- `api_key`(オプション)
+ - 型: `str`
+ - デフォルト: `None`
+ - 説明: SSEサーバーとの認証用APIキー
+
+### Stdioサーバー
+
+Stdioサーバーは、以下のプロパティを持つオブジェクトを使用して設定されます:
+
+- `name`(必須)
+ - 型: `str`
+ - 説明: サーバーの一意の名前
+
+- `command`(必須)
+ - 型: `str`
+ - 説明: サーバーを実行するコマンド
+
+- `args`(オプション)
+ - 型: `list of str`
+ - デフォルト: `[]`
+ - 説明: サーバーに渡すコマンドライン引数
+
+- `env`(オプション)
+ - 型: `dict of str to str`
+ - デフォルト: `{}`
+ - 説明: サーバープロセスに設定する環境変数
+
+## MCPの仕組み
+
+OpenHandsが起動すると、次のことが行われます:
+
+1. `config.toml`からMCP設定を読み込む
+2. 設定されたSSEサーバーに接続する
+3. 設定されたstdioサーバーを起動する
+4. これらのサーバーが提供するツールをエージェントに登録する
+
+エージェントは、これらのツールを組み込みツールと同じように使用できます。エージェントがMCPツールを呼び出すと:
+
+1. OpenHandsは呼び出しを適切なMCPサーバーにルーティングする
+2. サーバーはリクエストを処理し、レスポンスを返す
+3. OpenHandsはレスポンスを観察結果に変換し、エージェントに提示する
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/prompting/microagents-keyword.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/prompting/microagents-keyword.md
new file mode 100644
index 000000000000..d99ebc9cb661
--- /dev/null
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/prompting/microagents-keyword.md
@@ -0,0 +1,36 @@
+# キーワードトリガー型マイクロエージェント
+
+## 目的
+
+キーワードトリガー型マイクロエージェントは、プロンプト内に特定のキーワードが現れたときに有効化される特定の指示をOpenHandsに提供します。これは特定のツール、言語、またはフレームワークに基づいて動作をカスタマイズするのに役立ちます。
+
+## 使用方法
+
+これらのマイクロエージェントは、プロンプトにトリガーワードの1つが含まれている場合にのみ読み込まれます。
+
+## フロントマターの構文
+
+フロントマターはキーワードトリガー型マイクロエージェントには必須です。ファイルの先頭、ガイドラインの上に配置する必要があります。
+
+フロントマターを三重のダッシュ(---)で囲み、以下のフィールドを含めます:
+
+| フィールド | 説明 | 必須 | デフォルト |
+|------------|------------------------------------------------|----------|------------------|
+| `triggers` | マイクロエージェントを有効化するキーワードのリスト | はい | なし |
+| `agent` | このマイクロエージェントが適用されるエージェント | いいえ | 'CodeActAgent' |
+
+
+## 例
+
+`.openhands/microagents/yummy.md`に配置されたキーワードトリガー型マイクロエージェントファイルの例:
+```
+---
+triggers:
+- yummyhappy
+- happyyummy
+---
+
+ユーザーが魔法の言葉を言いました。「それはおいしかった!」と応答してください。
+```
+
+[公式OpenHandsリポジトリでキーワードによってトリガーされるマイクロエージェントの例を見る](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents)
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/prompting/microagents-overview.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/prompting/microagents-overview.md
index 3179593f2e11..f57d69a3639d 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/prompting/microagents-overview.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/prompting/microagents-overview.md
@@ -1,33 +1,39 @@
-# Microagentsの概要
+# マイクロエージェント概要
-Microagentsは、ドメイン固有の知識、リポジトリ固有のコンテキスト、タスク固有のワークフローでOpenHandsを強化する特殊なプロンプトです。専門家のガイダンスを提供し、一般的なタスクを自動化し、プロジェクト全体で一貫したプラクティスを確保するのに役立ちます。
+マイクロエージェントは、OpenHandsにドメイン固有の知識を強化する特殊なプロンプトです。
+専門的なガイダンスを提供し、一般的なタスクを自動化し、プロジェクト全体で一貫した実践を確保します。
-## Microagentの種類
+## マイクロエージェントの種類
-現在、OpenHandsは以下の種類のmicroagentsをサポートしています:
+現在、OpenHandsは以下の種類のマイクロエージェントをサポートしています:
-* [リポジトリMicroagents](./microagents-repo): OpenHands用のリポジトリ固有のコンテキストとガイドライン。
-* [パブリックMicroagents](./microagents-public): すべてのOpenHandsユーザーのためにキーワードによってトリガーされる一般的なガイドライン。
+- [一般リポジトリマイクロエージェント](./microagents-repo):リポジトリに関するOpenHandsの一般的なガイドライン。
+- [キーワードトリガーマイクロエージェント](./microagents-keyword):プロンプト内の特定のキーワードによって起動されるガイドライン。
-OpenHandsがリポジトリで動作する際:
+OpenHandsの動作をカスタマイズするには、リポジトリのルートに`.openhands/microagents/`ディレクトリを作成し、
+その中に`.md`ファイルを追加します。
-1. リポジトリに`.openhands/microagents/`が存在する場合、そこからリポジトリ固有の指示を読み込みます。
-2. 会話のキーワードによってトリガーされる一般的なガイドラインを読み込みます。
-現在の[パブリックMicroagents](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents)を参照してください。
+:::note
+ロードされたマイクロエージェントはコンテキストウィンドウ内のスペースを占めます。
+これらのマイクロエージェントは、ユーザーメッセージと共に、タスクと環境についてOpenHandsに情報を提供します。
+:::
-## Microagentのフォーマット
+リポジトリ構造の例:
-すべてのmicroagentsは、YAMLのfrontmatterを持つmarkdownファイルを使用します。これには、OpenHandsがタスクを達成するための特別な指示が含まれています:
```
----
-name:
-type:
-version:
-agent: <エージェントのタイプ (通常はCodeActAgent)>
-triggers:
-- <オプション: microagentをトリガーするキーワード。トリガーを削除すると、常に含まれるようになります>
----
-
-
+some-repository/
+└── .openhands/
+ └── microagents/
+ └── repo.md # 一般的なリポジトリガイドライン
+ └── trigger_this.md # 特定のキーワードでトリガーされるマイクロエージェント
+ └── trigger_that.md # 特定のキーワードでトリガーされるマイクロエージェント
```
+
+## マイクロエージェントのフロントマター要件
+
+各マイクロエージェントファイルには、追加情報を提供するフロントマターが含まれる場合があります。場合によっては、このフロントマターが必要です:
+
+| マイクロエージェントの種類 | 必須 |
+|--------------------------|------|
+| `一般リポジトリマイクロエージェント` | いいえ |
+| `キーワードトリガーマイクロエージェント` | はい |
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/prompting/microagents-public.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/prompting/microagents-public.md
index cfd0968d6fb7..1a0b1b702b73 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/prompting/microagents-public.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/prompting/microagents-public.md
@@ -1,91 +1,50 @@
-# パブリックマイクロエージェント
+# グローバルマイクロエージェント
## 概要
-パブリックマイクロエージェントは、OpenHandsのすべてのユーザーが利用できる一般的なガイドラインを提供します。これらは、特定のキーワードによってトリガーされ、特定のドメインやタスクに関する専門知識を提供します。
+グローバルマイクロエージェントは、すべてのOpenHandsユーザーに適用される[キーワード起動型マイクロエージェント](./microagents-keyword)です。現在のグローバルマイクロエージェントのリストは[OpenHandsリポジトリ](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents)で確認できます。
-## 現在のパブリックマイクロエージェント
+## グローバルマイクロエージェントの貢献
-### GitHubエージェント
+公式リポジトリにプルリクエストを開くことで、グローバルマイクロエージェントを作成してコミュニティと共有することができます。
-GitHubエージェントは、GitHubリポジトリとの対話を支援します。主な機能:
+OpenHandsへの貢献方法の具体的な手順については、[CONTRIBUTING.md](https://github.com/All-Hands-AI/OpenHands/blob/main/CONTRIBUTING.md)を参照してください。
-* リポジトリのクローン
-* ブランチの作成と切り替え
-* コミットとプッシュ
-* プルリクエストの作成
+### グローバルマイクロエージェントのベストプラクティス
-### NPMエージェント
+- **明確な範囲**: マイクロエージェントを特定のドメインやタスクに焦点を当てる。
+- **明示的な指示**: 明確で曖昧さのないガイドラインを提供する。
+- **有用な例**: 一般的なユースケースの実用的な例を含める。
+- **安全性優先**: 必要な警告と制約を含める。
+- **統合の認識**: マイクロエージェントが他のコンポーネントとどのように相互作用するかを考慮する。
-NPMエージェントは、Node.jsプロジェクトの管理を支援します:
+### グローバルマイクロエージェントを貢献するステップ
-* パッケージのインストールと更新
-* 依存関係の管理
-* スクリプトの実行
-* バージョン管理
+#### 1. グローバルマイクロエージェントの計画
-## パブリックマイクロエージェントの貢献
+グローバルマイクロエージェントを作成する前に、以下を考慮してください:
-### パブリックマイクロエージェントのベストプラクティス
+- どのような特定の問題やユースケースに対応するか?
+- どのようなユニークな能力や知識を持つべきか?
+- どのようなトリガーワードが活性化に適しているか?
+- どのような制約やガイドラインに従うべきか?
-1. **明確なトリガー**:エージェントをトリガーするキーワードを明確に定義します
-2. **集中的な範囲**:1つのドメインまたはタスクに焦点を当てます
-3. **明確なガイドライン**:エージェントの責任と制限を明確に説明します
-4. **実用的な例**:一般的なユースケースの例を含めます
+#### 2. ファイルの作成
-### パブリックマイクロエージェントを貢献するステップ
+適切なディレクトリに説明的な名前を持つ新しいMarkdownファイルを作成します:
+[`microagents/`](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents)
-1. [マイクロエージェントのフォーマット](./microagents-overview#microagent-format)を確認します
-2. 新しいマイクロエージェントファイルを作成します
-3. ガイドラインとベストプラクティスに従っていることを確認します
-4. プルリクエストを作成します
+#### 3. グローバルマイクロエージェントのテスト
-### パブリックマイクロエージェントの実装例
+- さまざまなプロンプトでエージェントをテストする。
+- トリガーワードが正しくエージェントを活性化することを確認する。
+- 指示が明確で包括的であることを確認する。
+- 既存のエージェントとの潜在的な競合や重複をチェックする。
-```
----
-name: Dockerエージェント
-type: public
-version: 1.0
-agent: CodeActAgent
-triggers:
-- docker
-- container
----
+#### 4. 提出プロセス
-あなたはDockerコンテナの管理とDockerfileの作成を担当します。
+以下を含むプルリクエストを提出します:
-主な責任:
-1. Dockerfileの作成と修正
-2. コンテナのライフサイクル管理
-3. Docker Compose設定の処理
-
-ガイドライン:
-- 可能な限り公式ベースイメージを使用
-- 必要なセキュリティ考慮事項を含める
-- レイヤー最適化のためのDockerベストプラクティスに従う
-
-例:
-1. Dockerfileの作成:
- FROM node:18-alpine
- WORKDIR /app
- COPY package*.json ./
- RUN npm install
- COPY . .
- CMD ["npm", "start"]
-
-2. Docker Composeの使用:
- version: '3'
- services:
- web:
- build: .
- ports:
- - "3000:3000"
-
-忘れないこと:
-- Dockerfileの構文を検証
-- セキュリティ脆弱性をチェック
-- ビルド時間とイメージサイズを最適化
-```
-
-より多くの例については、[現在のパブリックマイクロエージェント](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents)をご覧ください。
+- 新しいマイクロエージェントファイル。
+- 必要に応じて更新されたドキュメント。
+- エージェントの目的と機能の説明。
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/prompting/microagents-repo.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/prompting/microagents-repo.md
index c4c370b5113b..8e635ece7f34 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/prompting/microagents-repo.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/prompting/microagents-repo.md
@@ -1,67 +1,31 @@
-# リポジトリマイクロエージェント
+# 一般リポジトリマイクロエージェント
-## 概要
+## 目的
-OpenHandsは、リポジトリ固有のコンテキストとガイドラインを提供することで、特定のリポジトリでより効果的に動作するようにカスタマイズできます。このセクションでは、OpenHandsをプロジェクトに最適化する方法を説明します。
+リポジトリをより効果的に扱うためのOpenHandsの一般的なガイドライン。
-## リポジトリマイクロエージェントの作成
+## 使用方法
-リポジトリのルートに`.openhands/microagents/`ディレクトリを作成することで、リポジトリに対するOpenHandsの動作をカスタマイズできます。
-最低限、このリポジトリで作業する際にエージェントに与えられる指示を含む
-`.openhands/microagents/repo.md`ファイルが必要です。
+これらのマイクロエージェントは常にコンテキストの一部として読み込まれます。
-### リポジトリマイクロエージェントのベストプラクティス
+## フロントマター構文
-* **指示を最新に保つ**:プロジェクトの進化に合わせて`.openhands/microagents/`ディレクトリを定期的に更新します。
-* **具体的に**:プロジェクト固有のパス、パターン、要件を含めます。
-* **依存関係を文書化**:開発に必要なすべてのツールと依存関係をリストアップします。
-* **例を含める**:プロジェクトの良いコードパターンの例を提供します。
-* **規約を指定**:命名規則、ファイル構成、コードスタイルの設定を文書化します。
+このタイプのマイクロエージェントのフロントマターはオプションです。
-### リポジトリマイクロエージェントを作成するステップ
+フロントマターは三重のダッシュ(---)で囲み、以下のフィールドを含めることができます:
-#### 1. リポジトリマイクロエージェントの計画
+| フィールド | 説明 | 必須 | デフォルト値 |
+|-----------|-----------------------------------------|----------|----------------|
+| `agent` | このマイクロエージェントが適用されるエージェント | いいえ | 'CodeActAgent' |
-リポジトリ固有のマイクロエージェントを作成する際は、以下の情報を含めることを推奨します:
-
-* **リポジトリの概要**:プロジェクトの目的とアーキテクチャの簡単な説明。
-* **ディレクトリ構造**:主要なディレクトリとその目的。
-* **開発ガイドライン**:プロジェクト固有のコーディング標準とプラクティス。
-* **テスト要件**:テストの実行方法と必要なテストの種類。
-* **セットアップ手順**:プロジェクトのビルドと実行に必要な手順。
-
-#### 2. ファイルの作成
-
-リポジトリの`.openhands/microagents/`ディレクトリにファイルを作成します(例:`.openhands/microagents/repo.md`)
-
-[必要なフォーマット](./microagents-overview#microagent-format)に従って必要なフロントマターと、リポジトリに必要な特殊なガイドラインでファイルを更新します。
-
-### リポジトリマイクロエージェントの例
+## 例
+`.openhands/microagents/repo.md`に配置された一般リポジトリマイクロエージェントファイルの例:
```
----
-name: repo
-type: repo
-agent: CodeActAgent
----
+このプロジェクトはユーザーがTODOアイテムを追跡できるTODOアプリケーションです。
-リポジトリ:MyProject
-説明:タスク管理のためのWebアプリケーション
-
-ディレクトリ構造:
-- src/:メインアプリケーションコード
-- tests/:テストファイル
-- docs/:ドキュメント
-
-セットアップ:
-- `npm install`で依存関係をインストール
-- 開発には`npm run dev`を使用
-- テストには`npm test`を実行
-
-ガイドライン:
-- ESLint設定に従う
-- すべての新機能にテストを書く
-- 新しいコードにはTypeScriptを使用
-
-src/componentsに新しいコンポーネントを追加する場合は、必ずtests/components/に適切なユニットテストを追加してください。
+セットアップするには、`npm run build`を実行できます。
+変更をコミットする前に、常にテストが合格していることを確認してください。`npm run test`を実行してテストを実行できます。
```
+
+[一般リポジトリマイクロエージェントの詳細な例はこちらをご覧ください。](https://github.com/All-Hands-AI/OpenHands/tree/main/.openhands/microagents)
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/prompting/prompting-best-practices.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/prompting/prompting-best-practices.md
index c4fdf28beca3..13255cfd1c5c 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/prompting/prompting-best-practices.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/prompting/prompting-best-practices.md
@@ -1,37 +1,37 @@
# プロンプトのベストプラクティス
-OpenHands AIソフトウェア開発者と連携する際、明確で効果的なプロンプトを提供することが重要です。このガイドでは、最も正確で有用な応答を引き出すためのプロンプト作成のベストプラクティスについて説明します。
+OpenHands AIソフトウェア開発者と連携する際、明確で効果的なプロンプトを提供することが、正確で有用な回答を得るための鍵となります。このガイドでは、効果的なプロンプトを作成するためのベストプラクティスを概説します。
## 良いプロンプトの特徴
-良いプロンプトは以下のような特徴があります:
+良いプロンプトは以下の特徴を持ちます:
-- **具体的**:どのような機能を追加すべきか、またはどのようなエラーを修正する必要があるかを正確に説明します。
-- **場所を特定**:可能であれば、コードベース内のどの場所を修正すべきかを説明します。
-- **適切な範囲**:1つの機能の大きさであるべきで、通常は100行のコードを超えないようにします。
+- **具体的**:追加すべき機能や修正すべきエラーを明確に説明する。
+- **場所を特定**:可能であれば、修正すべきコードベース内の場所を指定する。
+- **適切な範囲**:単一の機能に焦点を当て、通常は100行以内のコードに収める。
## 例
### 良いプロンプトの例
-- "`utils/math_operations.py`に、数値のリストを入力として受け取り、その平均を返す関数`calculate_average`を追加してください。"
-- "`frontend/src/components/UserProfile.tsx`の42行目で発生しているTypeErrorを修正してください。このエラーは、undefinedのプロパティにアクセスしようとしていることを示唆しています。"
-- "登録フォームのメールフィールドに入力検証を実装してください。`frontend/src/components/RegistrationForm.tsx`を更新し、送信前にメールが有効な形式であるかどうかを確認するようにしてください。"
+- `utils/math_operations.py`に、数値のリストを入力として受け取り、その平均を返す`calculate_average`関数を追加してください。
+- `frontend/src/components/UserProfile.tsx`の42行目で発生しているTypeErrorを修正してください。エラーは、undefinedのプロパティにアクセスしようとしていることを示唆しています。
+- 登録フォームのメールフィールドに入力検証を実装してください。`frontend/src/components/RegistrationForm.tsx`を更新して、送信前にメールが有効な形式かどうかを確認するようにしてください。
### 悪いプロンプトの例
-- "コードをもっと良くしてください。"(曖昧すぎる、具体性に欠ける)
-- "バックエンド全体を別のフレームワークを使用するように書き換えてください。"(適切な範囲ではない)
-- "ユーザー認証のどこかにバグがあります。見つけて修正できますか?"(具体性とロケーション情報に欠ける)
+- コードを改善してください。(あまりにも曖昧で、具体性がない)
+- バックエンド全体を別のフレームワークを使用して書き直してください。(範囲が適切でない)
+- ユーザー認証のどこかにバグがあります。見つけて修正できますか?(具体性と場所の情報が不足)
## 効果的なプロンプトのためのヒント
-- 望ましい結果や解決すべき問題について、できるだけ具体的に説明してください。
-- 関連するファイルパスや行番号など、コンテキストを提供してください。
-- 大きなタスクは、より小さく管理しやすいプロンプトに分割してください。
-- 関連するエラーメッセージやログを含めてください。
-- コンテキストから明らかでない場合は、プログラミング言語やフレームワークを指定してください。
+- 望ましい結果や解決すべき問題について、できるだけ具体的に説明する。
+- 関連するファイルパスや行番号など、可能であればコンテキストを提供する。
+- 大きなタスクを小さく管理しやすいプロンプトに分割する。
+- 関連するエラーメッセージやログを含める。
+- プログラミング言語やフレームワークが明らかでない場合は、それを指定する。
-プロンプトが正確で情報量が多いほど、AIはOpenHandsソフトウェアの開発や修正においてより良いサポートができることを覚えておいてください。
+プロンプトが正確で情報量が多いほど、OpenHandsはより良くサポートできます。
-役立つプロンプトの他の例については、[OpenHands入門](../getting-started)を参照してください。
+役立つプロンプトの例については、[OpenHandsの使い方](../getting-started)をご覧ください。
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes-index.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes-index.md
index 3c69a12b1144..26b5313125f3 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes-index.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes-index.md
@@ -1,22 +1,25 @@
# ランタイム設定
-ランタイムとは、OpenHands エージェントがファイルを編集したりコマンドを実行したりできる環境のことです。
+:::note
+このセクションは、OpenHandsでDockerとは異なるランタイムを使用したいユーザー向けです。
+:::
-デフォルトでは、OpenHands はローカルコンピュータ上で動作する Docker ベースのランタイムを使用します。
-つまり、使用している LLM の料金のみを支払えばよく、コードが LLM に送信されるだけです。
+ランタイムとは、OpenHandsエージェントがファイルを編集しコマンドを実行できる環境のことです。
-また、通常はサードパーティが管理する「リモート」ランタイムもサポートしています。
-特に多数の OpenHands 会話を並行して実行する場合(例えば評価を行う場合など)、セットアップがより簡単でスケーラブルになります。
+デフォルトでは、OpenHandsはローカルコンピュータ上で動作する[Dockerベースのランタイム](./runtimes/docker)を使用します。
+これにより、使用するLLMの費用のみを支払えば良く、コードはLLMにのみ送信されます。
-さらに、Docker を使用せずに直接マシン上で実行される「ローカル」ランタイムも提供しており、
-CI パイプラインのような制御された環境で役立ちます。
+また、通常はサードパーティによって管理される他のランタイムもサポートしています。
+
+さらに、Dockerを使わずにマシン上で直接実行する[ローカルランタイム](./runtimes/local)も提供しており、
+CIパイプラインのような制御された環境で役立ちます。
## 利用可能なランタイム
-OpenHands は以下のようなさまざまなランタイム環境をサポートしています。
+OpenHandsはいくつかの異なるランタイム環境をサポートしています:
-- [Docker ランタイム](./runtimes/docker.md) - 分離のために Docker コンテナを使用するデフォルトのランタイム(ほとんどのユーザーにお勧め)
-- [OpenHands リモートランタイム](./runtimes/remote.md) - 並列実行用のクラウドベースのランタイム(ベータ版)
-- [Modal ランタイム](./runtimes/modal.md) - パートナーである Modal 社が提供するランタイム
-- [Daytona ランタイム](./runtimes/daytona.md) - Daytona 社が提供するランタイム
-- [ローカルランタイム](./runtimes/local.md) - Docker を使用せずにローカルマシン上で直接実行
+- [Dockerランタイム](./runtimes/docker.md) - 分離のためにDockerコンテナを使用するデフォルトのランタイム(ほとんどのユーザーに推奨)。
+- [OpenHandsリモートランタイム](./runtimes/remote.md) - 並列実行のためのクラウドベースのランタイム(ベータ版)。
+- [Modalランタイム](./runtimes/modal.md) - パートナーであるModalが提供するランタイム。
+- [Daytonaランタイム](./runtimes/daytona.md) - Daytonaが提供するランタイム。
+- [ローカルランタイム](./runtimes/local.md) - Dockerを使わずにローカルマシン上で直接実行。
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes.md
index 96475341105c..13d5ba09abb5 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes.md
@@ -3,8 +3,6 @@ slug: /usage/runtimes
title: Runtime Configuration
---
-Here is the translation in Japanese, preserving the code block and not translating the code:
-
import { Redirect } from '@docusaurus/router';
-
+
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes/daytona.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes/daytona.md
index c768c576e2a9..73d58c2209ce 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes/daytona.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes/daytona.md
@@ -9,24 +9,24 @@
4. キーが生成されたら、それをコピーします。
## ステップ 2: API キーを環境変数として設定する
-ターミナルで以下のコマンドを実行し、`` をコピーした実際のキーに置き換えます:
+ターミナルで以下のコマンドを実行し、`` をコピーした実際のキーに置き換えてください:
```bash
export DAYTONA_API_KEY=""
```
-このステップにより、OpenHands が実行されるときに Daytona プラットフォームで認証できるようになります。
+このステップにより、OpenHandsが実行時にDaytonaプラットフォームで認証できるようになります。
-## ステップ 3: Docker を使用してローカルで OpenHands を実行する
-マシン上で最新バージョンの OpenHands を起動するには、ターミナルで次のコマンドを実行します:
+## ステップ 3: Dockerを使用してOpenHandsをローカルで実行する
+マシン上で最新バージョンのOpenHandsを起動するには、ターミナルで次のコマンドを実行します:
```bash
bash -i <(curl -sL https://get.daytona.io/openhands)
```
### このコマンドの動作:
-- 最新の OpenHands リリーススクリプトをダウンロードします。
-- インタラクティブな Bash セッションでスクリプトを実行します。
-- Docker を使用して OpenHands コンテナを自動的にプルして実行します。
+- 最新のOpenHandsリリーススクリプトをダウンロードします。
+- インタラクティブなBashセッションでスクリプトを実行します。
+- Dockerを使用してOpenHandsコンテナを自動的に取得して実行します。
-実行すると、OpenHands がローカルで実行され、使用準備が整います。
+実行すると、OpenHandsがローカルで実行され、使用準備が整います。
-詳細と手動初期化については、[README.md](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/runtime/impl/daytona/README.md) 全体を参照してください。
+詳細と手動初期化については、完全な[README.md](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/runtime/impl/daytona/README.md)をご覧ください。
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes/docker.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes/docker.md
index ee1737506239..d45a253c1587 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes/docker.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes/docker.md
@@ -1,56 +1,96 @@
-# Docker ランタイム
+# Dockerランタイム
-これは、OpenHands を起動するときに使用されるデフォルトのランタイムです。
+これは、OpenHandsを起動する際にデフォルトで使用されるランタイムです。
## イメージ
-nikolaik の `SANDBOX_RUNTIME_CONTAINER_IMAGE` は、ランタイムサーバーと Python および NodeJS の基本的なユーティリティを含む事前ビルドされたランタイムイメージです。
+nikolaikからの`SANDBOX_RUNTIME_CONTAINER_IMAGE`は、ランタイムサーバーと、PythonとNodeJSの基本的なユーティリティを含む事前ビルドされたランタイムイメージです。
[独自のランタイムイメージを構築する](../how-to/custom-sandbox-guide)こともできます。
## ファイルシステムへの接続
-ここでの便利な機能の1つは、ローカルファイルシステムに接続する機能です。ファイルシステムをランタイムにマウントするには:
-1. `WORKSPACE_BASE` を設定します:
+便利な機能の一つは、ローカルファイルシステムに接続する機能です。ランタイムにファイルシステムをマウントするには:
+
+### SANDBOX_VOLUMESの使用
+
+ローカルファイルシステムをマウントする最も簡単な方法は、`SANDBOX_VOLUMES`環境変数を使用することです:
+
+```bash
+docker run # ...
+ -e SANDBOX_USER_ID=$(id -u) \
+ -e SANDBOX_VOLUMES=/path/to/your/code:/workspace:rw \
+ # ...
+```
+
+`SANDBOX_VOLUMES`のフォーマットは:`host_path:container_path[:mode]`
+
+- `host_path`:マウントしたいホストマシン上のパス
+- `container_path`:ホストパスがマウントされるコンテナ内のパス
+ - エージェントに変更させたいファイルには`/workspace`を使用します。エージェントはデフォルトで`/workspace`で作業します。
+ - 読み取り専用の参照資料や大きなデータセットには、別のパス(例:`/data`)を使用します。
+- `mode`:オプションのマウントモード、`rw`(読み書き、デフォルト)または`ro`(読み取り専用)
+
+カンマ(`,`)で区切ることで、複数のマウントを指定することもできます:
+
+```bash
+export SANDBOX_VOLUMES=/path1:/workspace/path1,/path2:/workspace/path2:ro
+```
+
+例:
+
+```bash
+# LinuxとMacの例 - 書き込み可能なワークスペース
+export SANDBOX_VOLUMES=$HOME/OpenHands:/workspace:rw
+
+# Windows上のWSLの例 - 書き込み可能なワークスペース
+export SANDBOX_VOLUMES=/mnt/c/dev/OpenHands:/workspace:rw
+
+# 読み取り専用の参照コードの例
+export SANDBOX_VOLUMES=/path/to/reference/code:/data:ro
+
+# 複数マウントの例 - 書き込み可能なワークスペースと読み取り専用の参照データ
+export SANDBOX_VOLUMES=$HOME/projects:/workspace:rw,/path/to/large/dataset:/data:ro
+```
+
+> **注意:** 複数のマウントを使用する場合、最初のマウントが主要なワークスペースと見なされ、単一のワークスペースを想定するツールとの後方互換性のために使用されます。
+
+> **重要:** エージェントはデフォルトで`/workspace`で作業します。エージェントにローカルディレクトリ内のファイルを変更させたい場合は、そのディレクトリを`/workspace`にマウントする必要があります。エージェントにアクセスさせたいが変更させたくない読み取り専用データがある場合は、別のパス(`/data`など)にマウントし、エージェントにそこを見るよう明示的に指示してください。
+
+### WORKSPACE_*変数の使用(非推奨)
+
+> **注意:** この方法は非推奨であり、将来のバージョンで削除される予定です。代わりに`SANDBOX_VOLUMES`を使用してください。
+
+1. `WORKSPACE_BASE`を設定します:
```bash
export WORKSPACE_BASE=/path/to/your/code
-
- # Linux と Mac の例
- # export WORKSPACE_BASE=$HOME/OpenHands
- # $WORKSPACE_BASE を /home//OpenHands に設定します
- #
- # Windows の WSL の例
- # export WORKSPACE_BASE=/mnt/c/dev/OpenHands
- # $WORKSPACE_BASE を C:\dev\OpenHands に設定します
```
-2. 以下のオプションを `docker run` コマンドに追加します:
+
+2. `docker run`コマンドに以下のオプションを追加します:
```bash
docker run # ...
- -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 \
-v $WORKSPACE_BASE:/opt/workspace_base \
# ...
```
-注意してください!OpenHands エージェントがワークスペースにマウントされたファイルを削除または変更することを妨げるものはありません。
+注意してください!OpenHandsエージェントがワークスペースにマウントされたファイルを削除または変更することを防ぐものは何もありません。
-このセットアップはファイルのアクセス権に関する問題を引き起こす可能性がありますが(そのため `SANDBOX_USER_ID` 変数があります)、ほとんどのシステムでうまく機能します。
+`-e SANDBOX_USER_ID=$(id -u)`はDockerコマンドに渡され、サンドボックスユーザーがホストユーザーの権限と一致するようにします。これにより、エージェントがマウントされたワークスペースにroot所有のファイルを作成することを防ぎます。
-## 強化された Docker インストール
+## 強化されたDockerインストール
-セキュリティが優先される環境に OpenHands をデプロイする場合は、強化された Docker 構成の実装を検討する必要があります。このセクションでは、デフォルト構成を超えて OpenHands Docker デプロイメントを保護するための推奨事項を提供します。
+セキュリティが優先される環境でOpenHandsをデプロイする場合、強化されたDockerの設定を検討すべきです。このセクションでは、デフォルト設定を超えてOpenHandsのDockerデプロイメントを保護するための推奨事項を提供します。
-### セキュリティに関する考慮事項
+### セキュリティの考慮事項
-README のデフォルトの Docker 構成は、ローカル開発マシンでの使いやすさを考慮して設計されています。公共ネットワーク(例:空港の WiFi)で実行している場合は、追加のセキュリティ対策を実装する必要があります。
+READMEのデフォルトのDocker設定は、ローカル開発マシンでの使いやすさを考慮して設計されています。公共ネットワーク(例:空港のWiFi)で実行している場合は、追加のセキュリティ対策を実施する必要があります。
### ネットワークバインディングのセキュリティ
-デフォルトでは、OpenHands はすべてのネットワークインターフェース(`0.0.0.0`)にバインドされ、ホストが接続しているすべてのネットワークにインスタンスが公開される可能性があります。より安全なセットアップのために:
+デフォルトでは、OpenHandsはすべてのネットワークインターフェース(`0.0.0.0`)にバインドし、ホストが接続しているすべてのネットワークにインスタンスを公開する可能性があります。より安全な設定のために:
-1. **ネットワークバインディングの制限**:
-
- `runtime_binding_address` 構成を使用して、OpenHands がリッスンするネットワークインターフェースを制限します:
+1. **ネットワークバインディングの制限**:`runtime_binding_address`設定を使用して、OpenHandsがリッスンするネットワークインターフェースを制限します:
```bash
docker run # ...
@@ -58,29 +98,26 @@ README のデフォルトの Docker 構成は、ローカル開発マシンで
# ...
```
- この構成により、OpenHands はループバックインターフェース(`127.0.0.1`)でのみリッスンし、ローカルマシンからのみアクセス可能になります。
-
-2. **ポートバインディングの保護**:
+ この設定により、OpenHandsはループバックインターフェース(`127.0.0.1`)のみでリッスンし、ローカルマシンからのみアクセス可能になります。
- `-p` フラグを変更して、すべてのインターフェースではなくローカルホストにのみバインドします:
+2. **ポートバインディングの保護**:`-p`フラグを変更して、すべてのインターフェースではなくlocalhostにのみバインドします:
```bash
docker run # ... \
-p 127.0.0.1:3000:3000 \
```
- これにより、OpenHands ウェブインターフェースはローカルマシンからのみアクセス可能になり、ネットワーク上の他のマシンからはアクセスできなくなります。
+ これにより、OpenHandsのWebインターフェースはローカルマシンからのみアクセス可能になり、ネットワーク上の他のマシンからはアクセスできなくなります。
### ネットワーク分離
-Docker のネットワーク機能を使用して OpenHands を分離します:
+Dockerのネットワーク機能を使用してOpenHandsを分離します:
```bash
# 分離されたネットワークを作成
docker network create openhands-network
-# 分離されたネットワークで OpenHands を実行
+# 分離されたネットワークでOpenHandsを実行
docker run # ... \
--network openhands-network \
- docker.all-hands.dev/all-hands-ai/openhands:0.36
-```
+```
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes/local.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes/local.md
index a1146bab068e..62952807fa2c 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes/local.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes/local.md
@@ -1,62 +1,72 @@
# ローカルランタイム
-ローカルランタイムを使用すると、OpenHands エージェントは Docker を使用せずに直接ローカルマシン上でアクションを実行できます。このランタイムは主に、Docker が利用できない CI パイプラインやテストシナリオなどの制御された環境向けです。
+ローカルランタイムを使用すると、OpenHandsエージェントはDockerを使用せずに直接ローカルマシン上でアクションを実行できます。
+このランタイムは主に、Dockerが利用できないCI(継続的インテグレーション)パイプラインやテストシナリオなどの制御された環境向けに設計されています。
:::caution
-**セキュリティ警告**: ローカルランタイムはサンドボックス分離なしで実行されます。エージェントはマシン上のファイルに直接アクセスして変更できます。制御された環境でのみ、またはセキュリティへの影響を十分に理解している場合にのみ、このランタイムを使用してください。
+**セキュリティ警告**: ローカルランタイムはサンドボックス分離なしで実行されます。エージェントはマシン上のファイルに直接アクセスして変更することができます。このランタイムは、制御された環境または安全性の影響を十分に理解している場合にのみ使用してください。
:::
## 前提条件
ローカルランタイムを使用する前に、以下を確認してください:
-1. [開発セットアップ手順](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)に従っていること。
-2. tmux がシステムで利用可能であること。
+1. [開発ワークフロー](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)を使用してOpenHandsを実行できること。
+2. システム上でtmuxが利用可能であること。
## 設定
-ローカルランタイムを使用するには、モデル、API キーなどの必要な設定に加えて、OpenHands を起動するときに環境変数または[config.toml ファイル](https://github.com/All-Hands-AI/OpenHands/blob/main/config.template.toml)を介して以下のオプションを設定する必要があります:
+ローカルランタイムを使用するには、LLMプロバイダー、モデル、APIキーなどの必要な設定に加えて、OpenHandsを起動する際に環境変数または[config.tomlファイル](https://github.com/All-Hands-AI/OpenHands/blob/main/config.template.toml)を通じて以下のオプションを設定する必要があります:
-- 環境変数を介して:
+環境変数を使用する場合:
```bash
# 必須
export RUNTIME=local
# オプションですが推奨
-export WORKSPACE_BASE=/path/to/your/workspace
+# エージェントはデフォルトで/workspaceで作業するため、プロジェクトディレクトリをそこにマウントします
+export SANDBOX_VOLUMES=/path/to/your/workspace:/workspace:rw
+# 読み取り専用データの場合は、異なるマウントパスを使用します
+# export SANDBOX_VOLUMES=/path/to/your/workspace:/workspace:rw,/path/to/large/dataset:/data:ro
```
-- `config.toml` を介して:
+`config.toml`を使用する場合:
```toml
[core]
runtime = "local"
-workspace_base = "/path/to/your/workspace"
+
+[sandbox]
+# エージェントはデフォルトで/workspaceで作業するため、プロジェクトディレクトリをそこにマウントします
+volumes = "/path/to/your/workspace:/workspace:rw"
+# 読み取り専用データの場合は、異なるマウントパスを使用します
+# volumes = "/path/to/your/workspace:/workspace:rw,/path/to/large/dataset:/data:ro"
```
-`WORKSPACE_BASE` が設定されていない場合、ランタイムはエージェントが作業するための一時ディレクトリを作成します。
+`SANDBOX_VOLUMES`が設定されていない場合、ランタイムはエージェントが作業するための一時ディレクトリを作成します。
## 使用例
-以下は、ヘッドレスモードでローカルランタイムを使用して OpenHands を起動する例です:
+以下は、ヘッドレスモードでローカルランタイムを使用してOpenHandsを起動する例です:
```bash
-# ランタイムタイプをローカルに設定
+# ランタイムタイプをlocalに設定
export RUNTIME=local
-# オプションでワークスペースディレクトリを設定
-export WORKSPACE_BASE=/path/to/your/project
+# ワークスペースディレクトリを設定(エージェントはデフォルトで/workspaceで作業します)
+export SANDBOX_VOLUMES=/path/to/your/project:/workspace:rw
+# エージェントに変更させたくない読み取り専用データの場合は、異なるパスを使用します
+# export SANDBOX_VOLUMES=/path/to/your/project:/workspace:rw,/path/to/reference/data:/data:ro
-# OpenHands を起動
-poetry run python -m openhands.core.main -t "hi と出力する bash スクリプトを書いてください"
+# OpenHandsを起動
+poetry run python -m openhands.core.main -t "write a bash script that prints hi"
```
## ユースケース
ローカルランタイムは特に以下の場合に役立ちます:
-- Docker が利用できない CI/CD パイプライン。
-- OpenHands 自体のテストと開発。
-- コンテナの使用が制限されている環境。
-- ファイルシステムへの直接アクセスが必要なシナリオ。
+- Dockerが利用できないCI/CDパイプライン。
+- OpenHands自体のテストと開発。
+- コンテナの使用が制限されている環境。
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes/modal.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes/modal.md
index b7079601fcba..d71825913e26 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes/modal.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes/modal.md
@@ -1,13 +1,13 @@
# Modal ランタイム
-[Modal](https://modal.com/) のパートナーが OpenHands 用のランタイムを提供しています。
+[Modal](https://modal.com/)のパートナーがOpenHands用のランタイムを提供しています。
-Modal ランタイムを使用するには、アカウントを作成し、[API キーを作成](https://modal.com/settings)してください。
+Modal ランタイムを使用するには、アカウントを作成し、[APIキーを作成してください。](https://modal.com/settings)
-その後、OpenHands を起動するときに以下の環境変数を設定する必要があります:
+その後、OpenHandsを起動する際に以下の環境変数を設定する必要があります:
```bash
docker run # ...
-e RUNTIME=modal \
-e MODAL_API_TOKEN_ID="your-id" \
- -e MODAL_API_TOKEN_SECRET="your-secret" \
-```
+ -e MODAL_API_TOKEN_SECRET="modal-api-key" \
+```
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes/remote.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes/remote.md
index 22b90db88525..44530558aab9 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes/remote.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/runtimes/remote.md
@@ -1,6 +1,7 @@
# OpenHands リモートランタイム
-OpenHands リモートランタイムは現在ベータ版です(詳細は[こちら](https://runtime.all-hands.dev/)を参照)。クラウド内で並列にランタイムを起動することができます。
-試してみたい場合は、[このフォーム](https://docs.google.com/forms/d/e/1FAIpQLSckVz_JFwg2_mOxNZjCtr7aoBFI2Mwdan3f75J_TrdMS1JV2g/viewform)に記入して申し込んでください!
+:::note
+このランタイムは、[OpenHands 評価ハーネス](https://github.com/All-Hands-AI/OpenHands/tree/main/evaluation)を通じたエージェント評価目的のみのために特別に設計されています。OpenHands アプリケーションの本番環境での起動には使用しないでください。
+:::
-注意:このランタイムは、[OpenHands 評価ハーネス](https://github.com/All-Hands-AI/OpenHands/tree/main/evaluation)を通じてのエージェント評価目的のみのために特別に設計されています。本番環境の OpenHands アプリケーションの起動には使用しないでください。
+OpenHands リモートランタイムは現在ベータ版です(詳細は[こちら](https://runtime.all-hands.dev/)を参照)。これにより、クラウド上で並行してランタイムを起動することができます。試してみたい場合は、[このフォーム](https://docs.google.com/forms/d/e/1FAIpQLSckVz_JFwg2_mOxNZjCtr7aoBFI2Mwdan3f75J_TrdMS1JV2g/viewform)に記入して申し込んでください!
\ No newline at end of file
diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/troubleshooting/troubleshooting.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/troubleshooting/troubleshooting.md
index 4999a990ee1d..86a0ec691654 100644
--- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/troubleshooting/troubleshooting.md
+++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/usage/troubleshooting/troubleshooting.md
@@ -1,43 +1,68 @@
# 🚧 トラブルシューティング
:::tip
-OpenHandsはWSL経由でのみWindowsをサポートしています。必ずWSLターミナル内でコマンドを実行してください。
+OpenHandsはWindowsではWSL経由でのみサポートされています。すべてのコマンドはWSLターミナル内で実行してください。
:::
+### ローカルIPを介してVS Codeタブにアクセスできない
+
+**説明**
+
+OpenHandsをlocalhostではないURL(LANのIPアドレスなど)を通じてアクセスすると、VS Codeタブに「Forbidden」エラーが表示されますが、UIの他の部分は正常に動作します。
+
+**解決策**
+
+これは、VS Codeがランダムな高ポートで実行され、他のマシンからアクセスできないか公開されていない可能性があるために発生します。修正するには:
+
+1. `SANDBOX_VSCODE_PORT`環境変数を使用して、VS Code用の特定のポートを設定します:
+ ```bash
+ docker run -it --rm \
+ -e SANDBOX_VSCODE_PORT=41234 \
+ -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:latest \
+ -v /var/run/docker.sock:/var/run/docker.sock \
+ -v ~/.openhands-state:/.openhands-state \
+ -p 3000:3000 \
+ -p 41234:41234 \
+ --add-host host.docker.internal:host-gateway \
+ --name openhands-app \
+ docker.all-hands.dev/all-hands-ai/openhands:latest
+ ```
+
+2. Dockerコマンドで同じポートを`-p 41234:41234`で公開していることを確認してください。
+
+3. または、`config.toml`ファイルで設定することもできます:
+ ```toml
+ [sandbox]
+ vscode_port = 41234
+ ```
+
### Dockerクライアントの起動に失敗
**説明**
-OpenHandsを実行する際に、以下のようなエラーが表示される:
+OpenHandsを実行すると、次のエラーが表示されます:
```
Launch docker client failed. Please make sure you have installed docker and started docker desktop/daemon.
```
**解決策**
-以下の順番で試してみてください:
-* システム上で`docker`が実行されていることを確認します。ターミナルで`docker ps`が正常に実行できるはずです。
-* Docker Desktopを使用している場合は、`Settings > Advanced > Allow the default Docker socket to be used`が有効になっていることを確認してください。
-* 設定によっては、Docker Desktopで`Settings > Resources > Network > Enable host networking`を有効にする必要があるかもしれません。
-* Docker Desktopを再インストールしてみてください。
----
+以下を順番に試してください:
+* システム上で`docker`が実行されていることを確認します。ターミナルで`docker ps`を正常に実行できるはずです。
+* Docker Desktopを使用している場合は、`設定 > 詳細 > デフォルトのDockerソケットの使用を許可する`が有効になっていることを確認してください。
+* 構成によっては、Docker Desktopの`設定 > リソース > ネットワーク > ホストネットワーキングを有効にする`を有効にする必要がある場合があります。
+* Docker Desktopを再インストールしてください。
-# 開発ワークフロー固有の問題
-### runtimeのDockerイメージのビルドエラー
+### 権限エラー
**説明**
-新しいセッションの開始に失敗し、ログに以下のようなエラーが表示される:
-```
-debian-security bookworm-security
-InRelease At least one invalid signature was encountered.
-```
+最初のプロンプトで、`Permission Denied`または`PermissionError`というエラーが表示されます。
-これは、既存の外部ライブラリのハッシュが変更され、ローカルのDockerインスタンスが以前のバージョンをキャッシュしている場合に発生するようです。これを回避するには、以下を試してみてください:
+**解決策**
-* 名前が`openhands-runtime-`で始まるコンテナを停止します:
- `docker ps --filter name=openhands-runtime- --filter status=running -aq | xargs docker stop`
-* 名前が`openhands-runtime-`で始まるコンテナを削除します:
- `docker rmi $(docker images --filter name=openhands-runtime- -q --no-trunc)`
-* 名前が`openhands-runtime-`で始まるコンテナ/イメージを停止して削除します
-* コンテナ/イメージをプルーンします: `docker container prune -f && docker image prune -f`
+* `~/.openhands-state`が`root`によって所有されているかどうかを確認してください。もしそうなら:
+ * ディレクトリの所有権を変更します:`sudo chown : ~/.openhands-state`
+ * またはディレクトリの権限を更新します:`sudo chmod 777 ~/.openhands-state`
+ * または以前のデータが必要ない場合は削除します。OpenHandsは再作成します。LLM設定を再入力する必要があります。
+* ローカルディレクトリをマウントしている場合は、`WORKSPACE_BASE`にOpenHandsを実行しているユーザーに必要な権限があることを確認してください。
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/about.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/about.md
index 2d74d5afb6a1..1005bb0e09ef 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/about.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/about.md
@@ -2,24 +2,24 @@
## Estratégia de Pesquisa
-Alcançar a replicação completa de aplicações de nível de produção com LLMs é um esforço complexo. Nossa estratégia envolve:
+Alcançar a replicação completa de aplicações de nível de produção com LLMs é um empreendimento complexo. Nossa estratégia envolve:
-- **Pesquisa Técnica Central:** Foco em pesquisa fundamental para entender e aprimorar os aspectos técnicos da geração e manipulação de código.
-- **Planejamento de Tarefas:** Desenvolvimento de capacidades para detecção de bugs, gerenciamento de codebase e otimização.
+- **Pesquisa Técnica Fundamental:** Foco em pesquisa fundamental para entender e melhorar os aspectos técnicos de geração e manipulação de código.
+- **Planejamento de Tarefas:** Desenvolvimento de capacidades para detecção de bugs, gerenciamento de base de código e otimização.
- **Avaliação:** Estabelecimento de métricas de avaliação abrangentes para melhor entender e aprimorar nossos agentes.
## Agente Padrão
-Nosso Agente padrão atualmente é o [CodeActAgent](agents), que é capaz de gerar código e lidar com arquivos.
+Nosso Agente padrão é atualmente o [CodeActAgent](agents), que é capaz de gerar código e manipular arquivos.
## Construído Com
-O OpenHands é construído usando uma combinação de poderosos frameworks e bibliotecas, fornecendo uma base robusta para seu desenvolvimento. Aqui estão as principais tecnologias usadas no projeto:
+O OpenHands é construído usando uma combinação de frameworks e bibliotecas poderosas, fornecendo uma base robusta para seu desenvolvimento. Aqui estão as principais tecnologias utilizadas no projeto:
       
-Por favor, note que a seleção dessas tecnologias está em andamento, e tecnologias adicionais podem ser adicionadas ou as existentes podem ser removidas à medida que o projeto evolui. Nós nos esforçamos para adotar as ferramentas mais adequadas e eficientes para aprimorar as capacidades do OpenHands.
+Por favor, note que a seleção dessas tecnologias está em andamento, e tecnologias adicionais podem ser adicionadas ou as existentes podem ser removidas conforme o projeto evolui. Nós nos esforçamos para adotar as ferramentas mais adequadas e eficientes para aprimorar as capacidades do OpenHands.
## Licença
-Distribuído sob a [Licença](https://github.com/All-Hands-AI/OpenHands/blob/main/LICENSE) MIT.
+Distribuído sob a [Licença](https://github.com/All-Hands-AI/OpenHands/blob/main/LICENSE) MIT.
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/agents.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/agents.md
index 28aa9073e896..8f08ff2ef5b0 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/agents.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/agents.md
@@ -4,14 +4,15 @@
### Descrição
-Este agente implementa a ideia do CodeAct ([artigo](https://arxiv.org/abs/2402.01030), [tweet](https://twitter.com/xingyaow_/status/1754556835703751087)) que consolida as **ações** dos agentes LLM em um espaço de ação de **código** unificado para _simplicidade_ e _desempenho_.
+Este agente implementa a ideia CodeAct ([artigo](https://arxiv.org/abs/2402.01030), [tweet](https://twitter.com/xingyaow_/status/1754556835703751087)) que consolida as **aç**ões dos agentes LLM em um
+espaço de ação de **código** unificado para obter tanto _simplicidade_ quanto _desempenho_.
A ideia conceitual é ilustrada abaixo. A cada turno, o agente pode:
-1. **Conversar**: Comunicar-se com humanos em linguagem natural para pedir esclarecimentos, confirmações, etc.
-2. **CodeAct**: Optar por executar a tarefa executando código
+1. **Conversar**: Comunicar-se com humanos em linguagem natural para pedir esclarecimentos, confirmação, etc.
+2. **CodeAct**: Escolher realizar a tarefa executando código
-- Executar qualquer comando Linux `bash` válido
+- Executar qualquer comando `bash` válido do Linux
- Executar qualquer código `Python` válido com [um interpretador Python interativo](https://ipython.org/). Isso é simulado através do comando `bash`, veja o sistema de plugins abaixo para mais detalhes.

@@ -20,4 +21,4 @@ A ideia conceitual é ilustrada abaixo. A cada turno, o agente pode:
https://github.com/All-Hands-AI/OpenHands/assets/38853559/f592a192-e86c-4f48-ad31-d69282d5f6ac
-_Exemplo do CodeActAgent com `gpt-4-turbo-2024-04-09` realizando uma tarefa de ciência de dados (regressão linear)_.
+_Exemplo do CodeActAgent com `gpt-4-turbo-2024-04-09` realizando uma tarefa de ciência de dados (regressão linear)_.
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/architecture/backend.mdx b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/architecture/backend.mdx
index f9c4a2bc63af..46187bd2bf44 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/architecture/backend.mdx
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/architecture/backend.mdx
@@ -1,16 +1,11 @@
# 🏛️ Arquitetura do Sistema
-
-
- Diagrama da Arquitetura do Sistema OpenHands (4 de julho de 2024)
-
+
+
Diagrama de Arquitetura do OpenHands (4 de julho de 2024)
-Esta é uma visão geral de alto nível da arquitetura do sistema. O sistema é dividido em dois componentes principais: o frontend e o backend. O frontend é responsável por lidar com as interações do usuário e exibir os resultados. O backend é responsável por lidar com a lógica de negócios e executar os agentes.
+Esta é uma visão geral de alto nível da arquitetura do sistema. O sistema está dividido em dois componentes principais: o frontend e o backend. O frontend é responsável por lidar com as interações do usuário e exibir os resultados. O backend é responsável por gerenciar a lógica de negócios e executar os agentes.
# Arquitetura do Frontend {#frontend-architecture-en}
@@ -27,32 +22,33 @@ _**Aviso**: A arquitetura do backend é um trabalho em andamento e está sujeita
Atualizando este Diagrama
- A geração do diagrama da arquitetura do backend é parcialmente automatizada.
- O diagrama é gerado a partir das type hints no código usando a ferramenta py2puml.
- O diagrama é então revisado manualmente, ajustado e exportado para PNG e SVG.
+ A geração do diagrama de arquitetura do backend é parcialmente automatizada.
+ O diagrama é gerado a partir das dicas de tipo no código usando a
+ ferramenta py2puml. O diagrama é então revisado manualmente, ajustado e exportado para PNG
+ e SVG.
## Pré-requisitos
- - Ambiente python em execução no qual o openhands é executável
+ - Ambiente Python em execução no qual o openhands é executável
(de acordo com as instruções no arquivo README.md na raiz do repositório)
- [py2puml](https://github.com/lucsorel/py2puml) instalado
## Passos
-1. Gere automaticamente o diagrama executando o seguinte comando na raiz do repositório:
+1. Gere automaticamente o diagrama executando o seguinte comando a partir da raiz do repositório:
`py2puml openhands openhands > docs/architecture/backend_architecture.puml`
2. Abra o arquivo gerado em um editor PlantUML, por exemplo, Visual Studio Code com a extensão PlantUML ou [PlantText](https://www.planttext.com/)
-3. Revise o PUML gerado e faça todos os ajustes necessários no diagrama (adicione partes ausentes, corrija erros, melhore o posicionamento).
- _py2puml cria o diagrama com base nas type hints no código, portanto, type hints ausentes ou incorretas podem resultar em um diagrama incompleto ou incorreto._
+3. Revise o PUML gerado e faça todos os ajustes necessários ao diagrama (adicione partes ausentes, corrija erros, melhore o posicionamento).
+ _py2puml cria o diagrama com base nas dicas de tipo no código, portanto, dicas de tipo ausentes ou incorretas podem resultar em um diagrama incompleto ou incorreto._
4. Revise a diferença entre o novo diagrama e o anterior e verifique manualmente se as alterações estão corretas.
_Certifique-se de não remover partes que foram adicionadas manualmente ao diagrama no passado e ainda são relevantes._
-5. Adicione o hash do commit que foi usado para gerar o diagrama no rodapé do diagrama.
+5. Adicione o hash do commit que foi usado para gerar o diagrama ao rodapé do diagrama.
6. Exporte o diagrama como arquivos PNG e SVG e substitua os diagramas existentes no diretório `docs/architecture`. Isso pode ser feito com (por exemplo, [PlantText](https://www.planttext.com/))
-
+
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/architecture/runtime.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/architecture/runtime.md
index f1c77e9471ba..18fc003d8aa7 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/architecture/runtime.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/architecture/runtime.md
@@ -1,34 +1,34 @@
# 📦 Docker Runtime
-O OpenHands Docker Runtime é o componente principal que permite a execução segura e flexível das ações do agente de IA.
-Ele cria um ambiente isolado usando o Docker, onde código arbitrário pode ser executado com segurança sem arriscar o sistema host.
+O Docker Runtime do OpenHands é o componente central que permite a execução segura e flexível das ações do agente de IA.
+Ele cria um ambiente isolado (sandbox) usando Docker, onde código arbitrário pode ser executado com segurança sem colocar em risco o sistema host.
-## Por que precisamos de um runtime isolado?
+## Por que precisamos de um runtime em sandbox?
O OpenHands precisa executar código arbitrário em um ambiente seguro e isolado por várias razões:
-1. Segurança: Executar código não confiável pode representar riscos significativos para o sistema host. Um ambiente isolado impede que código malicioso acesse ou modifique os recursos do sistema host
-2. Consistência: Um ambiente isolado garante que a execução do código seja consistente em diferentes máquinas e configurações, eliminando problemas do tipo "funciona na minha máquina"
-3. Controle de Recursos: O isolamento permite um melhor controle sobre a alocação e uso de recursos, evitando que processos descontrolados afetem o sistema host
+1. Segurança: A execução de código não confiável pode representar riscos significativos para o sistema host. Um ambiente em sandbox impede que código malicioso acesse ou modifique os recursos do sistema host
+2. Consistência: Um ambiente em sandbox garante que a execução do código seja consistente em diferentes máquinas e configurações, eliminando problemas do tipo "funciona na minha máquina"
+3. Controle de Recursos: O sandbox permite um melhor controle sobre a alocação e uso de recursos, evitando que processos descontrolados afetem o sistema host
4. Isolamento: Diferentes projetos ou usuários podem trabalhar em ambientes isolados sem interferir uns com os outros ou com o sistema host
-5. Reprodutibilidade: Ambientes isolados facilitam a reprodução de bugs e problemas, já que o ambiente de execução é consistente e controlável
+5. Reprodutibilidade: Ambientes em sandbox facilitam a reprodução de bugs e problemas, já que o ambiente de execução é consistente e controlável
-## Como o Runtime funciona?
+## Como funciona o Runtime?
-O sistema OpenHands Runtime usa uma arquitetura cliente-servidor implementada com contêineres Docker. Aqui está uma visão geral de como ele funciona:
+O sistema Runtime do OpenHands usa uma arquitetura cliente-servidor implementada com contêineres Docker. Veja uma visão geral de como funciona:
```mermaid
graph TD
- A[Imagem Docker Personalizada Fornecida pelo Usuário] --> B[Backend do OpenHands]
- B -->|Constrói| C[Imagem do OH Runtime]
- C -->|Inicia| D[Executor de Ação]
+ A[Imagem Docker Personalizada do Usuário] --> B[Backend OpenHands]
+ B -->|Constrói| C[Imagem OH Runtime]
+ C -->|Lança| D[Executor de Ações]
D -->|Inicializa| E[Navegador]
D -->|Inicializa| F[Shell Bash]
D -->|Inicializa| G[Plugins]
G -->|Inicializa| L[Servidor Jupyter]
- B -->|Gera| H[Agente]
- B -->|Gera| I[EventStream]
+ B -->|Cria| H[Agente]
+ B -->|Cria| I[EventStream]
I <--->|Executa Ação para
Obter Observação
via API REST
@@ -47,40 +47,40 @@ graph TD
```
1. Entrada do Usuário: O usuário fornece uma imagem Docker base personalizada
-2. Construção da Imagem: O OpenHands constrói uma nova imagem Docker (a "imagem do OH runtime") com base na imagem fornecida pelo usuário. Essa nova imagem inclui código específico do OpenHands, principalmente o "cliente de runtime"
-3. Inicialização do Contêiner: Quando o OpenHands inicia, ele lança um contêiner Docker usando a imagem do OH runtime
-4. Inicialização do Servidor de Execução de Ação: O servidor de execução de ação inicializa um `ActionExecutor` dentro do contêiner, configurando os componentes necessários, como um shell bash e carregando quaisquer plugins especificados
-5. Comunicação: O backend do OpenHands (`openhands/runtime/impl/eventstream/eventstream_runtime.py`) se comunica com o servidor de execução de ação por meio de uma API RESTful, enviando ações e recebendo observações
-6. Execução da Ação: O cliente de runtime recebe ações do backend, as executa no ambiente isolado e envia de volta as observações
-7. Retorno da Observação: O servidor de execução de ação envia os resultados da execução de volta para o backend do OpenHands como observações
+2. Construção da Imagem: O OpenHands constrói uma nova imagem Docker (a "imagem OH runtime") baseada na imagem fornecida pelo usuário. Esta nova imagem inclui código específico do OpenHands, principalmente o "cliente runtime"
+3. Lançamento do Contêiner: Quando o OpenHands inicia, ele lança um contêiner Docker usando a imagem OH runtime
+4. Inicialização do Servidor de Execução de Ações: O servidor de execução de ações inicializa um `ActionExecutor` dentro do contêiner, configurando componentes necessários como um shell bash e carregando quaisquer plugins especificados
+5. Comunicação: O backend do OpenHands (`openhands/runtime/impl/eventstream/eventstream_runtime.py`) se comunica com o servidor de execução de ações através de API RESTful, enviando ações e recebendo observações
+6. Execução de Ações: O cliente runtime recebe ações do backend, executa-as no ambiente sandbox e envia de volta as observações
+7. Retorno de Observação: O servidor de execução de ações envia os resultados da execução de volta ao backend do OpenHands como observações
O papel do cliente:
-- Ele atua como um intermediário entre o backend do OpenHands e o ambiente isolado
-- Ele executa vários tipos de ações (comandos shell, operações de arquivo, código Python, etc.) com segurança dentro do contêiner
-- Ele gerencia o estado do ambiente isolado, incluindo o diretório de trabalho atual e os plugins carregados
-- Ele formata e retorna observações para o backend, garantindo uma interface consistente para processar os resultados
+- Atua como intermediário entre o backend do OpenHands e o ambiente sandbox
+- Executa vários tipos de ações (comandos shell, operações de arquivo, código Python, etc.) com segurança dentro do contêiner
+- Gerencia o estado do ambiente sandbox, incluindo o diretório de trabalho atual e plugins carregados
+- Formata e retorna observações para o backend, garantindo uma interface consistente para processamento de resultados
-## Como o OpenHands constrói e mantém imagens do OH Runtime
+## Como o OpenHands constrói e mantém imagens OH Runtime
-A abordagem do OpenHands para construir e gerenciar imagens de runtime garante eficiência, consistência e flexibilidade na criação e manutenção de imagens Docker para ambientes de produção e desenvolvimento.
+A abordagem do OpenHands para construir e gerenciar imagens runtime garante eficiência, consistência e flexibilidade na criação e manutenção de imagens Docker para ambientes de produção e desenvolvimento.
Confira o [código relevante](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/runtime/utils/runtime_build.py) se você estiver interessado em mais detalhes.
-### Sistema de Tags de Imagem
+### Sistema de Marcação de Imagens
-O OpenHands usa um sistema de três tags para suas imagens de runtime para equilibrar reprodutibilidade com flexibilidade.
+O OpenHands usa um sistema de três tags para suas imagens runtime para equilibrar reprodutibilidade com flexibilidade.
As tags podem estar em um dos 2 formatos:
- **Tag Versionada**: `oh_v{openhands_version}_{base_image}` (ex.: `oh_v0.9.9_nikolaik_s_python-nodejs_t_python3.12-nodejs22`)
- **Tag de Bloqueio**: `oh_v{openhands_version}_{16_digit_lock_hash}` (ex.: `oh_v0.9.9_1234567890abcdef`)
-- **Tag de Origem**: `oh_v{openhands_version}_{16_digit_lock_hash}_{16_digit_source_hash}`
+- **Tag de Fonte**: `oh_v{openhands_version}_{16_digit_lock_hash}_{16_digit_source_hash}`
(ex.: `oh_v0.9.9_1234567890abcdef_1234567890abcdef`)
-#### Tag de Origem - Mais Específica
+#### Tag de Fonte - Mais Específica
-Estes são os primeiros 16 dígitos do MD5 do hash do diretório para o diretório de origem. Isso fornece um hash
-apenas para o código-fonte do openhands
+Esta é os primeiros 16 dígitos do MD5 do hash do diretório para o diretório fonte. Isso fornece um hash
+apenas para o código fonte do openhands
#### Tag de Bloqueio
@@ -90,7 +90,7 @@ Este hash é construído a partir dos primeiros 16 dígitos do MD5 de:
- O conteúdo do `pyproject.toml` incluído na imagem.
- O conteúdo do `poetry.lock` incluído na imagem.
-Isso efetivamente fornece um hash para as dependências do Openhands independente do código-fonte.
+Isso efetivamente fornece um hash para as dependências do Openhands independente do código fonte.
#### Tag Versionada - Mais Genérica
@@ -100,35 +100,35 @@ Esta tag é uma concatenação da versão do openhands e do nome da imagem base
Ao gerar uma imagem...
-- **Sem reconstrução**: O OpenHands primeiro verifica se existe uma imagem com a mesma **tag de origem mais específica**. Se houver tal imagem,
+- **Sem reconstrução**: O OpenHands primeiro verifica se existe uma imagem com a mesma **tag de fonte mais específica**. Se existir tal imagem,
nenhuma construção é realizada - a imagem existente é usada.
-- **Reconstrução mais rápida**: O OpenHands verifica em seguida se existe uma imagem com a **tag de bloqueio genérica**. Se houver tal imagem,
- o OpenHands constrói uma nova imagem com base nela, ignorando todas as etapas de instalação (como `poetry install` e
- `apt-get`), exceto uma operação final para copiar o código-fonte atual. A nova imagem é marcada apenas com uma
- tag de **origem**.
-- **Reconstrução razoável**: Se não existir uma tag de **origem** nem de **bloqueio**, uma imagem será construída com base na imagem com tag **versionada**.
- Na imagem com tag versionada, a maioria das dependências já deve estar instalada, economizando tempo.
-- **Reconstrução mais lenta**: Se todas as três tags não existirem, uma nova imagem é construída com base na imagem
- base (o que é uma operação mais lenta). Esta nova imagem é marcada com todas as tags de **origem**, **bloqueio** e **versionada**.
+- **Reconstrução mais rápida**: O OpenHands verifica em seguida se existe uma imagem com a **tag de bloqueio genérica**. Se existir tal imagem,
+ o OpenHands constrói uma nova imagem baseada nela, ignorando todas as etapas de instalação (como `poetry install` e
+ `apt-get`) exceto uma operação final para copiar o código fonte atual. A nova imagem é marcada apenas com uma
+ tag de **fonte**.
+- **Reconstrução razoável**: Se nem uma tag de **fonte** nem de **bloqueio** existir, uma imagem será construída com base na imagem de tag **versionada**.
+ Na imagem de tag versionada, a maioria das dependências já deve estar instalada, economizando tempo.
+- **Reconstrução mais lenta**: Se todas as três tags não existirem, uma imagem totalmente nova é construída com base na imagem
+ base (o que é uma operação mais lenta). Esta nova imagem é marcada com todas as tags de **fonte**, **bloqueio** e **versionada**.
-Essa abordagem de tags permite que o OpenHands gerencie com eficiência ambientes de desenvolvimento e produção.
+Esta abordagem de marcação permite que o OpenHands gerencie eficientemente ambientes de desenvolvimento e produção.
-1. Código-fonte e Dockerfile idênticos sempre produzem a mesma imagem (via tags baseadas em hash)
-2. O sistema pode reconstruir rapidamente imagens quando ocorrem pequenas alterações (aproveitando imagens compatíveis recentes)
-3. A tag de **bloqueio** (ex.: `runtime:oh_v0.9.3_1234567890abcdef`) sempre aponta para a construção mais recente para uma combinação específica de imagem base, dependência e versão do OpenHands
+1. Código fonte idêntico e Dockerfile sempre produzem a mesma imagem (via tags baseadas em hash)
+2. O sistema pode reconstruir rapidamente imagens quando ocorrem mudanças menores (aproveitando imagens compatíveis recentes)
+3. A tag de **bloqueio** (ex., `runtime:oh_v0.9.3_1234567890abcdef`) sempre aponta para a construção mais recente para uma combinação específica de imagem base, dependência e versão do OpenHands
## Sistema de Plugins do Runtime
-O OpenHands Runtime suporta um sistema de plugins que permite estender a funcionalidade e personalizar o ambiente de runtime. Os plugins são inicializados quando o cliente de runtime é iniciado.
+O Runtime do OpenHands suporta um sistema de plugins que permite estender a funcionalidade e personalizar o ambiente de runtime. Os plugins são inicializados quando o cliente runtime é iniciado.
-Confira [um exemplo do plugin Jupyter aqui](https://github.com/All-Hands-AI/OpenHands/blob/ecf4aed28b0cf7c18d4d8ff554883ba182fc6bdd/openhands/runtime/plugins/jupyter/__init__.py#L21-L55) se você quiser implementar seu próprio plugin.
+Confira [um exemplo de plugin Jupyter aqui](https://github.com/All-Hands-AI/OpenHands/blob/ecf4aed28b0cf7c18d4d8ff554883ba182fc6bdd/openhands/runtime/plugins/jupyter/__init__.py#L21-L55) se você quiser implementar seu próprio plugin.
-_Mais detalhes sobre o sistema de Plugins ainda estão em construção - contribuições são bem-vindas!_
+*Mais detalhes sobre o sistema de Plugins ainda estão em construção - contribuições são bem-vindas!*
Aspectos-chave do sistema de plugins:
1. Definição de Plugin: Os plugins são definidos como classes Python que herdam de uma classe base `Plugin`
2. Registro de Plugin: Os plugins disponíveis são registrados em um dicionário `ALL_PLUGINS`
-3. Especificação de Plugin: Os plugins são associados a `Agent.sandbox_plugins: list[PluginRequirement]`. Os usuários podem especificar quais plugins carregar ao inicializar o runtime
-4. Inicialização: Os plugins são inicializados de forma assíncrona quando o cliente de runtime é iniciado
-5. Uso: O cliente de runtime pode usar plugins inicializados para estender suas capacidades (por exemplo, o JupyterPlugin para executar células IPython)
+3. Especificação de Plugin: Os plugins são associados com `Agent.sandbox_plugins: list[PluginRequirement]`. Os usuários podem especificar quais plugins carregar ao inicializar o runtime
+4. Inicialização: Os plugins são inicializados de forma assíncrona quando o cliente runtime inicia
+5. Uso: O cliente runtime pode usar plugins inicializados para estender suas capacidades (ex., o JupyterPlugin para executar células IPython)
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/cloud/cloud-api.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/cloud/cloud-api.md
new file mode 100644
index 000000000000..332c5d59a79c
--- /dev/null
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/cloud/cloud-api.md
@@ -0,0 +1,177 @@
+# API da OpenHands Cloud
+
+A OpenHands Cloud fornece uma API REST que permite interagir programaticamente com o serviço. Isso é útil se você deseja iniciar facilmente seus próprios trabalhos a partir de seus programas de maneira flexível.
+
+Este guia explica como obter uma chave de API e usar a API para iniciar conversas.
+Para informações mais detalhadas sobre a API, consulte a [Referência da API OpenHands](https://docs.all-hands.dev/swagger-ui/).
+
+## Obtendo uma Chave de API
+
+Para usar a API da OpenHands Cloud, você precisará gerar uma chave de API:
+
+1. Faça login na sua conta [OpenHands Cloud](https://app.all-hands.dev)
+2. Navegue até a [página de Configurações](https://app.all-hands.dev/settings)
+3. Localize a seção "API Keys"
+4. Clique em "Generate New Key"
+5. Dê à sua chave um nome descritivo (ex: "Desenvolvimento", "Produção")
+6. Copie a chave de API gerada e armazene-a com segurança - ela será mostrada apenas uma vez
+
+
+
+## Uso da API
+
+### Iniciando uma Nova Conversa
+
+Para iniciar uma nova conversa com a OpenHands realizando uma tarefa, você precisará fazer uma requisição POST para o endpoint de conversas.
+
+#### Parâmetros da Requisição
+
+| Parâmetro | Tipo | Obrigatório | Descrição |
+|-----------|------|-------------|-----------|
+| `initial_user_msg` | string | Sim | A mensagem inicial para começar a conversa |
+| `repository` | string | Não | Nome do repositório Git para fornecer contexto no formato `proprietário/repo`. Você deve ter acesso ao repositório. |
+
+#### Exemplos
+
+
+cURL
+
+```bash
+curl -X POST "https://app.all-hands.dev/api/conversations" \
+ -H "Authorization: Bearer YOUR_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "initial_user_msg": "Check whether there is any incorrect information in the README.md file and send a PR to fix it if so.",
+ "repository": "yourusername/your-repo"
+ }'
+```
+
+
+
+Python (com requests)
+
+```python
+import requests
+
+api_key = "YOUR_API_KEY"
+url = "https://app.all-hands.dev/api/conversations"
+
+headers = {
+ "Authorization": f"Bearer {api_key}",
+ "Content-Type": "application/json"
+}
+
+data = {
+ "initial_user_msg": "Check whether there is any incorrect information in the README.md file and send a PR to fix it if so.",
+ "repository": "yourusername/your-repo"
+}
+
+response = requests.post(url, headers=headers, json=data)
+conversation = response.json()
+
+print(f"Conversation Link: https://app.all-hands.dev/conversations/{conversation['id']}")
+print(f"Status: {conversation['status']}")
+```
+
+
+
+TypeScript/JavaScript (com fetch)
+
+```typescript
+const apiKey = "YOUR_API_KEY";
+const url = "https://app.all-hands.dev/api/conversations";
+
+const headers = {
+ "Authorization": `Bearer ${apiKey}`,
+ "Content-Type": "application/json"
+};
+
+const data = {
+ initial_user_msg: "Check whether there is any incorrect information in the README.md file and send a PR to fix it if so.",
+ repository: "yourusername/your-repo"
+};
+
+async function startConversation() {
+ try {
+ const response = await fetch(url, {
+ method: "POST",
+ headers: headers,
+ body: JSON.stringify(data)
+ });
+
+ const conversation = await response.json();
+
+ console.log(`Conversation Link: https://app.all-hands.dev/conversations/${conversation.id}`);
+ console.log(`Status: ${conversation.status}`);
+
+ return conversation;
+ } catch (error) {
+ console.error("Error starting conversation:", error);
+ }
+}
+
+startConversation();
+```
+
+
+
+#### Resposta
+
+A API retornará um objeto JSON com detalhes sobre a conversa criada:
+
+```json
+{
+ "status": "ok",
+ "conversation_id": "abc1234",
+}
+```
+
+Você também pode receber um `AuthenticationError` se:
+
+1. Você forneceu uma chave de API inválida
+2. Você forneceu o nome do repositório errado
+3. Você não tem acesso ao repositório
+
+
+### Recuperando o Status da Conversa
+
+Você pode verificar o status de uma conversa fazendo uma requisição GET para o endpoint de conversas.
+
+#### Endpoint
+
+```
+GET https://app.all-hands.dev/api/conversations/{conversation_id}
+```
+
+#### Exemplo
+
+
+cURL
+
+```bash
+curl -X GET "https://app.all-hands.dev/api/conversations/{conversation_id}" \
+ -H "Authorization: Bearer YOUR_API_KEY"
+```
+
+
+#### Resposta
+
+A resposta é formatada da seguinte forma:
+
+```json
+{
+ "conversation_id":"abc1234",
+ "title":"Update README.md",
+ "created_at":"2025-04-29T15:13:51.370706Z",
+ "last_updated_at":"2025-04-29T15:13:57.199210Z",
+ "status":"RUNNING",
+ "selected_repository":"yourusername/your-repo",
+ "trigger":"gui"
+}
+```
+
+## Limites de Taxa
+
+A API tem um limite de 10 conversas simultâneas por conta. Se você precisar de um limite maior para seu caso de uso, entre em contato conosco em [contact@all-hands.dev](mailto:contact@all-hands.dev).
+
+Se você exceder esse limite, a API retornará uma resposta 429 Too Many Requests.
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/cloud/cloud-github-resolver.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/cloud/cloud-github-resolver.md
index d9eb901623e5..0748e3cd9a8a 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/cloud/cloud-github-resolver.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/cloud/cloud-github-resolver.md
@@ -1,33 +1,33 @@
-Here is the translation to Brazilian Portuguese:
+# Resolvedor GitHub na Nuvem
-# GitHub Cloud Resolver
-
-O GitHub Cloud Resolver automatiza correções de código e fornece assistência inteligente para seus repositórios.
+O Resolvedor GitHub automatiza correções de código e fornece assistência inteligente para seus repositórios.
## Configuração
-O Resolvedor do GitHub na Nuvem está disponível automaticamente quando você
-[concede acesso ao repositório do OpenHands Cloud](./openhands-cloud#adding-repository-access).
+O Resolvedor GitHub na Nuvem está disponível automaticamente quando você
+[concede acesso de repositório ao OpenHands Cloud](./openhands-cloud#adding-repository-access).
## Uso
-Após conceder acesso ao repositório do OpenHands Cloud, você pode usar o Resolvedor do GitHub na Nuvem nos problemas e pull requests
+Após conceder acesso de repositório ao OpenHands Cloud, você pode usar o Resolvedor GitHub na Nuvem nos problemas e pull requests
do repositório.
-### Issues
+### Problemas (Issues)
-No seu repositório, rotule um issue com `openhands`. O OpenHands irá:
+No seu repositório, rotule um problema com `openhands`. O OpenHands irá:
+1. Comentar no problema para informar que está trabalhando nele.
+ - Você pode clicar no link para acompanhar o progresso no OpenHands Cloud.
+2. Abrir um pull request se determinar que o problema foi resolvido com sucesso.
+3. Comentar no problema com um resumo das tarefas realizadas e um link para o pull request.
-1. Comentar no issue para informar que está trabalhando nele.
- - Você pode clicar no link para acompanhar o progresso no OpenHands Cloud.
-2. Abrir um pull request se determinar que o issue foi resolvido com sucesso.
-3. Comentar no issue com um resumo das tarefas realizadas e um link para o pull request.
### Pull Requests
-Para fazer o OpenHands trabalhar em pull requests, use `@openhands` em comentários de nível superior ou inline para: - Fazer perguntas - Solicitar atualizações - Obter explicações de código
+Para fazer o OpenHands trabalhar em pull requests, use `@openhands` em comentários de nível superior ou em linha para:
+ - Fazer perguntas
+ - Solicitar atualizações
+ - Obter explicações de código
O OpenHands irá:
-
1. Comentar no PR para informar que está trabalhando nele.
-2. Realizar a tarefa.
+2. Realizar a tarefa.
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/cloud/openhands-cloud.mdx b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/cloud/openhands-cloud.mdx
new file mode 100644
index 000000000000..4cad610d140b
--- /dev/null
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/cloud/openhands-cloud.mdx
@@ -0,0 +1,65 @@
+# Openhands Cloud
+
+OpenHands Cloud é a versão hospedada na nuvem do OpenHands pela All Hands AI.
+
+## Acessando o OpenHands Cloud
+
+O OpenHands Cloud pode ser acessado em https://app.all-hands.dev/.
+
+Você também pode interagir com o OpenHands Cloud programaticamente usando a [API](./cloud-api).
+
+## Primeiros Passos
+
+Ao visitar o OpenHands Cloud, você será solicitado a conectar-se com sua conta GitHub ou GitLab:
+
+1. Após ler e aceitar os termos de serviço, clique em `Log in with GitHub` ou `Log in with GitLab`.
+2. Revise as permissões solicitadas pelo OpenHands e então clique em `Authorize OpenHands AI`.
+ - O OpenHands precisará de algumas permissões da sua conta GitHub ou GitLab. Para ler mais sobre essas permissões:
+ - GitHub: Você pode clicar no link `Learn more` na página de autorização do GitHub.
+ - GitLab: Você pode expandir cada solicitação de permissão na página de autorização do GitLab.
+
+## Acesso ao Repositório
+
+### GitHub
+
+#### Adicionando Acesso ao Repositório
+
+Você pode conceder ao OpenHands acesso específico ao repositório:
+1. Clique em `Add GitHub repos` na página inicial.
+2. Selecione a organização e, em seguida, escolha os repositórios específicos para conceder acesso ao OpenHands.
+
+ Detalhes de Permissão para Acesso ao Repositório
+
+ O Openhands solicita tokens de curta duração (expiração de 8 horas) com estas permissões:
+ - Actions: Leitura e escrita
+ - Administration: Somente leitura
+ - Commit statuses: Leitura e escrita
+ - Contents: Leitura e escrita
+ - Issues: Leitura e escrita
+ - Metadata: Somente leitura
+ - Pull requests: Leitura e escrita
+ - Webhooks: Leitura e escrita
+ - Workflows: Leitura e escrita
+
+ O acesso ao repositório para um usuário é concedido com base em:
+ - Permissão concedida para o repositório.
+ - Permissões do GitHub do usuário (proprietário/colaborador).
+
+
+3. Clique em `Install & Authorize`.
+
+#### Modificando o Acesso ao Repositório
+
+Você pode modificar o acesso ao repositório do GitHub a qualquer momento:
+* Usando o mesmo fluxo de trabalho `Add GitHub repos`, ou
+* Visitando a página de Configurações e selecionando `Configure GitHub Repositories` na seção `Git Settings`.
+
+### GitLab
+
+Ao usar sua conta GitLab, o OpenHands terá automaticamente acesso aos seus repositórios.
+
+## Persistência de Conversas
+
+- Lista de Conversas – Exibe apenas as 10 conversas mais recentes iniciadas nos últimos 10 dias.
+- Workspaces – Os workspaces de conversas são mantidos por 14 dias.
+- Runtimes – Os runtimes permanecem ativos ("aquecidos") por 30 minutos. Após esse período, retomar uma conversa pode levar de 1 a 2 minutos.
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/configuration-options.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/configuration-options.md
index ff9711402814..4b0a0d4144a9 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/configuration-options.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/configuration-options.md
@@ -1,14 +1,13 @@
# Opções de Configuração
-Este guia detalha todas as opções de configuração disponíveis para o OpenHands, ajudando você a personalizar seu comportamento e integrá-lo com outros serviços.
-
:::note
-Se você estiver executando no [Modo GUI](https://docs.all-hands.dev/modules/usage/how-to/gui-mode), as configurações disponíveis na UI de Configurações sempre terão precedência.
+Esta página descreve todas as opções de configuração disponíveis para o OpenHands, permitindo que você personalize seu comportamento e
+o integre com outros serviços. No Modo GUI, quaisquer configurações aplicadas através da interface de Configurações terão precedência.
:::
## Configuração Principal
-As opções de configuração principais são definidas na seção `[core]` do arquivo `config.toml`.
+As opções de configuração principal são definidas na seção `[core]` do arquivo `config.toml`.
### Chaves de API
- `e2b_api_key`
@@ -26,38 +25,38 @@ As opções de configuração principais são definidas na seção `[core]` do a
- Padrão: `""`
- Descrição: Segredo do token de API para Modal
-### Workspace
-- `workspace_base`
+### Espaço de Trabalho
+- `workspace_base` **(Obsoleto)**
- Tipo: `str`
- Padrão: `"./workspace"`
- - Descrição: Caminho base para o workspace
+ - Descrição: Caminho base para o espaço de trabalho. **Obsoleto: Use `SANDBOX_VOLUMES` em vez disso.**
- `cache_dir`
- Tipo: `str`
- Padrão: `"/tmp/cache"`
- Descrição: Caminho do diretório de cache
-### Depuração e Log
+### Depuração e Registro
- `debug`
- Tipo: `bool`
- Padrão: `false`
- - Descrição: Habilitar depuração
+ - Descrição: Ativar depuração
- `disable_color`
- Tipo: `bool`
- Padrão: `false`
- - Descrição: Desabilitar cor na saída do terminal
+ - Descrição: Desativar cores na saída do terminal
### Trajetórias
- `save_trajectory_path`
- Tipo: `str`
- Padrão: `"./trajectories"`
- - Descrição: Caminho para armazenar trajetórias (pode ser uma pasta ou um arquivo). Se for uma pasta, as trajetórias serão salvas em um arquivo nomeado com o nome do id da sessão e extensão .json, nessa pasta.
+ - Descrição: Caminho para armazenar trajetórias (pode ser uma pasta ou um arquivo). Se for uma pasta, as trajetórias serão salvas em um arquivo nomeado com o ID da sessão e extensão .json, nessa pasta.
- `replay_trajectory_path`
- Tipo: `str`
- Padrão: `""`
- - Descrição: Caminho para carregar uma trajetória e reproduzir. Se fornecido, deve ser um caminho para o arquivo de trajetória no formato JSON. As ações no arquivo de trajetória seriam reproduzidas primeiro antes de qualquer instrução do usuário ser executada.
+ - Descrição: Caminho para carregar uma trajetória e reproduzir. Se fornecido, deve ser um caminho para o arquivo de trajetória em formato JSON. As ações no arquivo de trajetória serão reproduzidas primeiro antes que qualquer instrução do usuário seja executada.
### Armazenamento de Arquivos
- `file_store_path`
@@ -71,7 +70,7 @@ As opções de configuração principais são definidas na seção `[core]` do a
- Descrição: Tipo de armazenamento de arquivos
- `file_uploads_allowed_extensions`
- - Tipo: `list of str`
+ - Tipo: `lista de str`
- Padrão: `[".*"]`
- Descrição: Lista de extensões de arquivo permitidas para uploads
@@ -86,7 +85,7 @@ As opções de configuração principais são definidas na seção `[core]` do a
- Descrição: Restringir tipos de arquivo para uploads de arquivos
- `file_uploads_allowed_extensions`
- - Tipo: `list of str`
+ - Tipo: `lista de str`
- Padrão: `[".*"]`
- Descrição: Lista de extensões de arquivo permitidas para uploads
@@ -101,21 +100,26 @@ As opções de configuração principais são definidas na seção `[core]` do a
- Padrão: `100`
- Descrição: Número máximo de iterações
-### Configuração do Sandbox
-- `workspace_mount_path_in_sandbox`
+### Configuração da Sandbox
+- `volumes`
+ - Tipo: `str`
+ - Padrão: `None`
+ - Descrição: Montagens de volume no formato 'caminho_host:caminho_container[:modo]', ex. '/meu/dir/host:/workspace:rw'. Múltiplas montagens podem ser especificadas usando vírgulas, ex. '/caminho1:/workspace/caminho1,/caminho2:/workspace/caminho2:ro'
+
+- `workspace_mount_path_in_sandbox` **(Obsoleto)**
- Tipo: `str`
- Padrão: `"/workspace"`
- - Descrição: Caminho para montar o workspace no sandbox
+ - Descrição: Caminho para montar o espaço de trabalho na sandbox. **Obsoleto: Use `SANDBOX_VOLUMES` em vez disso.**
-- `workspace_mount_path`
+- `workspace_mount_path` **(Obsoleto)**
- Tipo: `str`
- Padrão: `""`
- - Descrição: Caminho para montar o workspace
+ - Descrição: Caminho para montar o espaço de trabalho. **Obsoleto: Use `SANDBOX_VOLUMES` em vez disso.**
-- `workspace_mount_rewrite`
+- `workspace_mount_rewrite` **(Obsoleto)**
- Tipo: `str`
- Padrão: `""`
- - Descrição: Caminho para reescrever o caminho de montagem do workspace. Você geralmente pode ignorar isso, refere-se a casos especiais de execução dentro de outro contêiner.
+ - Descrição: Caminho para reescrever o caminho de montagem do espaço de trabalho. Você geralmente pode ignorar isso, refere-se a casos especiais de execução dentro de outro contêiner. **Obsoleto: Use `SANDBOX_VOLUMES` em vez disso.**
### Diversos
- `run_as_openhands`
@@ -142,10 +146,10 @@ As opções de configuração principais são definidas na seção `[core]` do a
As opções de configuração do LLM (Large Language Model) são definidas na seção `[llm]` do arquivo `config.toml`.
-Para usá-las com o comando docker, passe `-e LLM_`. Exemplo: `-e LLM_NUM_RETRIES`.
+Para usar estas com o comando docker, passe `-e LLM_`. Exemplo: `-e LLM_NUM_RETRIES`.
:::note
-Para configurações de desenvolvimento, você também pode definir configurações de LLM personalizadas nomeadas. Veja [Configurações Personalizadas de LLM](./llms/custom-llm-configs) para detalhes.
+Para configurações de desenvolvimento, você também pode definir configurações de LLM personalizadas com nomes. Veja [Configurações Personalizadas de LLM](./llms/custom-llm-configs) para detalhes.
:::
**Credenciais AWS**
@@ -162,7 +166,7 @@ Para configurações de desenvolvimento, você também pode definir configuraç
- `aws_secret_access_key`
- Tipo: `str`
- Padrão: `""`
- - Descrição: Chave secreta de acesso AWS
+ - Descrição: Chave de acesso secreta AWS
### Configuração da API
- `api_key`
@@ -190,14 +194,13 @@ Para configurações de desenvolvimento, você também pode definir configuraç
- Padrão: `0.0`
- Descrição: Custo por token de saída
-### Provedor LLM Personalizado
+### Provedor de LLM Personalizado
- `custom_llm_provider`
- Tipo: `str`
- Padrão: `""`
- - Descrição: Provedor LLM personalizado
-
+ - Descrição: Provedor de LLM personalizado
-### Tratamento de Mensagens
+### Manipulação de Mensagens
- `max_message_chars`
- Tipo: `int`
- Padrão: `30000`
@@ -219,7 +222,7 @@ Para configurações de desenvolvimento, você também pode definir configuraç
- Padrão: `"claude-3-5-sonnet-20241022"`
- Descrição: Modelo a ser usado
-### Tentativas
+### Repetição de Tentativas
- `num_retries`
- Tipo: `int`
- Padrão: `8`
@@ -238,7 +241,7 @@ Para configurações de desenvolvimento, você também pode definir configuraç
- `retry_multiplier`
- Tipo: `float`
- Padrão: `2.0`
- - Descrição: Multiplicador para cálculo de backoff exponencial
+ - Descrição: Multiplicador para cálculo de recuo exponencial
### Opções Avançadas
- `drop_params`
@@ -264,7 +267,7 @@ Para configurações de desenvolvimento, você também pode definir configuraç
- `timeout`
- Tipo: `int`
- Padrão: `0`
- - Descrição: Timeout para a API
+ - Descrição: Tempo limite para a API
- `top_p`
- Tipo: `float`
@@ -274,19 +277,19 @@ Para configurações de desenvolvimento, você também pode definir configuraç
- `disable_vision`
- Tipo: `bool`
- Padrão: `None`
- - Descrição: Se o modelo é capaz de visão, esta opção permite desabilitar o processamento de imagem (útil para redução de custo)
+ - Descrição: Se o modelo for capaz de visão, esta opção permite desativar o processamento de imagens (útil para redução de custos)
## Configuração do Agente
-As opções de configuração do agente são definidas nas seções `[agent]` e `[agent.]` do arquivo `config.toml`.
+As opções de configuração do agente são definidas nas seções `[agent]` e `[agent.]` do arquivo `config.toml`.
### Configuração do LLM
- `llm_config`
- Tipo: `str`
- Padrão: `'your-llm-config-group'`
- - Descrição: O nome da configuração LLM a ser usada
+ - Descrição: O nome da configuração de LLM a ser usada
-### Configuração do Espaço de Ação
+### Configuração do Espaço de Ações
- `function_calling`
- Tipo: `bool`
- Padrão: `true`
@@ -295,22 +298,22 @@ As opções de configuração do agente são definidas nas seções `[agent]` e
- `enable_browsing`
- Tipo: `bool`
- Padrão: `false`
- - Descrição: Se o delegado de navegação está habilitado no espaço de ação (funciona apenas com chamada de função)
+ - Descrição: Se o delegado de navegação está habilitado no espaço de ações (funciona apenas com chamada de função)
- `enable_llm_editor`
- Tipo: `bool`
- Padrão: `false`
- - Descrição: Se o editor LLM está habilitado no espaço de ação (funciona apenas com chamada de função)
+ - Descrição: Se o editor LLM está habilitado no espaço de ações (funciona apenas com chamada de função)
- `enable_jupyter`
- Tipo: `bool`
- Padrão: `false`
- - Descrição: Se o Jupyter está habilitado no espaço de ação
+ - Descrição: Se o Jupyter está habilitado no espaço de ações
- `enable_history_truncation`
- Tipo: `bool`
- Padrão: `true`
- - Descrição: Se o histórico deve ser truncado para continuar a sessão ao atingir o limite de comprimento de contexto do LLM
+ - Descrição: Se o histórico deve ser truncado para continuar a sessão quando atingir o limite de comprimento de contexto do LLM
### Uso de Microagentes
- `enable_prompt_extensions`
@@ -319,49 +322,49 @@ As opções de configuração do agente são definidas nas seções `[agent]` e
- Descrição: Se deve usar microagentes
- `disabled_microagents`
- - Tipo: `list of str`
+ - Tipo: `lista de str`
- Padrão: `None`
- - Descrição: Uma lista de microagentes a serem desabilitados
+ - Descrição: Uma lista de microagentes para desativar
-## Configuração do Sandbox
+## Configuração da Sandbox
-As opções de configuração do sandbox são definidas na seção `[sandbox]` do arquivo `config.toml`.
+As opções de configuração da sandbox são definidas na seção `[sandbox]` do arquivo `config.toml`.
-Para usá-las com o comando docker, passe `-e SANDBOX_`. Exemplo: `-e SANDBOX_TIMEOUT`.
+Para usar estas com o comando docker, passe `-e SANDBOX_`. Exemplo: `-e SANDBOX_TIMEOUT`.
### Execução
- `timeout`
- Tipo: `int`
- Padrão: `120`
- - Descrição: Timeout do sandbox em segundos
+ - Descrição: Tempo limite da sandbox em segundos
- `user_id`
- Tipo: `int`
- Padrão: `1000`
- - Descrição: ID do usuário do sandbox
+ - Descrição: ID de usuário da sandbox
### Imagem do Contêiner
- `base_container_image`
- Tipo: `str`
- Padrão: `"nikolaik/python-nodejs:python3.12-nodejs22"`
- - Descrição: Imagem do contêiner a ser usada para o sandbox
+ - Descrição: Imagem do contêiner a ser usada para a sandbox
### Rede
- `use_host_network`
- Tipo: `bool`
- Padrão: `false`
- - Descrição: Usar a rede do host
+ - Descrição: Usar rede do host
- `runtime_binding_address`
- Tipo: `str`
- Padrão: `0.0.0.0`
- - Descrição: O endereço de ligação para as portas de tempo de execução. Especifica em qual interface de rede na máquina host o Docker deve ligar as portas de tempo de execução.
+ - Descrição: O endereço de vinculação para as portas de runtime. Especifica qual interface de rede na máquina host o Docker deve vincular as portas de runtime.
### Linting e Plugins
- `enable_auto_lint`
- Tipo: `bool`
- Padrão: `false`
- - Descrição: Habilitar linting automático após a edição
+ - Descrição: Habilitar linting automático após edição
- `initialize_plugins`
- Tipo: `bool`
@@ -372,25 +375,8 @@ Para usá-las com o comando docker, passe `-e SANDBOX_`. Exemplo: `-e S
- `runtime_extra_deps`
- Tipo: `str`
- Padrão: `""`
- - Descrição: Dependências extras a serem instaladas na imagem de tempo de execução
+ - Descrição: Dependências extras para instalar na imagem de runtime
- `runtime_startup_env_vars`
- Tipo: `dict`
- - Padrão: `{}`
- - Descrição: Variáveis de ambiente a serem definidas no lançamento do tempo de execução
-
-### Avaliação
-- `browsergym_eval_env`
- - Tipo: `str`
- - Padrão: `""`
- - Descrição: Ambiente BrowserGym a ser usado para avaliação
-
-## Configuração de Segurança
-
-As opções de configuração de segurança são definidas na seção `[security]` do arquivo `config.toml`.
-
-Para usá-las com o comando docker, passe `-e SECURITY_`. Exemplo: `-e SECURITY_CONFIRMATION_MODE`.
-
-### Modo de Confirmação
-- `confirmation_mode`
- - Tipo
+ - Padr
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/customization/repository.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/customization/repository.md
new file mode 100644
index 000000000000..4464106392aa
--- /dev/null
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/customization/repository.md
@@ -0,0 +1,23 @@
+# Personalização do Repositório
+
+Você pode personalizar como o OpenHands interage com seu repositório criando um
+diretório `.openhands` no nível raiz.
+
+## Microagentes
+
+Os microagentes permitem que você estenda os prompts do OpenHands com informações específicas do seu projeto e defina como o OpenHands
+deve funcionar. Veja [Visão Geral dos Microagentes](../prompting/microagents-overview) para mais informações.
+
+
+## Script de Configuração
+Você pode adicionar um arquivo `.openhands/setup.sh`, que será executado toda vez que o OpenHands começar a trabalhar com seu repositório.
+Este é um local ideal para instalar dependências, definir variáveis de ambiente e realizar outras tarefas de configuração.
+
+Por exemplo:
+```bash
+#!/bin/bash
+export MY_ENV_VAR="my value"
+sudo apt-get update
+sudo apt-get install -y lsof
+cd frontend && npm install ; cd ..
+```
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/feedback.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/feedback.md
index e8285f4f477a..5f59d8d74c1d 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/feedback.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/feedback.md
@@ -1,10 +1,14 @@
# ✅ Fornecendo Feedback
-Ao usar o OpenHands, você encontrará casos em que as coisas funcionam bem e outros em que não funcionam. Nós encorajamos você a fornecer feedback quando usar o OpenHands para ajudar a dar feedback para a equipe de desenvolvimento e, talvez mais importante, criar um corpus aberto de exemplos de treinamento de agentes de codificação -- Share-OpenHands!
+Ao usar o OpenHands, você encontrará casos em que as coisas funcionam bem e outros em que não funcionam. Incentivamos você a
+fornecer feedback quando usar o OpenHands para ajudar a dar retorno à equipe de desenvolvimento e, talvez mais importante,
+criar um corpus aberto de exemplos de treinamento para agentes de codificação -- Share-OpenHands!
## 📝 Como Fornecer Feedback
-Fornecer feedback é fácil! Quando você estiver usando o OpenHands, você pode pressionar o botão de polegar para cima ou polegar para baixo a qualquer momento durante sua interação. Você será solicitado a fornecer seu endereço de e-mail (por exemplo, para que possamos entrar em contato com você se quisermos fazer alguma pergunta de acompanhamento), e você pode escolher se deseja fornecer feedback publicamente ou privadamente.
+Fornecer feedback é fácil! Quando estiver usando o OpenHands, você pode pressionar o botão de polegar para cima ou polegar para baixo a qualquer momento
+durante sua interação. Você será solicitado a fornecer seu endereço de e-mail
+(por exemplo, para que possamos contatá-lo se quisermos fazer perguntas de acompanhamento), e você pode escolher se deseja fornecer feedback publicamente ou de forma privada.
VIDEO
@@ -12,27 +16,35 @@ Fornecer feedback é fácil! Quando você estiver usando o OpenHands, você pode
### Configurações de compartilhamento de dados
-Quando você envia dados, você pode enviá-los publicamente ou privadamente.
+Ao enviar dados, você pode enviá-los publicamente ou de forma privada.
-- Dados **públicos** serão distribuídos sob a Licença MIT, como o próprio OpenHands, e podem ser usados pela comunidade para treinar e testar modelos. Obviamente, o feedback que você pode tornar público será mais valioso para a comunidade como um todo, então quando você não estiver lidando com informações confidenciais, nós encorajamos você a escolher esta opção!
-- Dados **privados** serão disponibilizados para a equipe do OpenHands com o propósito de melhorar o OpenHands. No entanto, um link com um ID único ainda será criado para que você possa compartilhar publicamente com outras pessoas.
+- Os dados **públicos** serão distribuídos sob a Licença MIT, como o próprio OpenHands, e podem ser usados pela comunidade para
+treinar e testar modelos. Obviamente, o feedback que você pode tornar público será mais valioso para a comunidade como um todo,
+então quando você não estiver lidando com informações sensíveis, incentivamos você a escolher esta opção!
+- Os dados **privados** serão disponibilizados para a equipe do OpenHands com o propósito de melhorar o OpenHands.
+No entanto, ainda será criado um link com um ID único que você pode compartilhar publicamente com outras pessoas.
### Quem coleta e armazena os dados?
Os dados são coletados e armazenados pela [All Hands AI](https://all-hands.dev), uma empresa fundada pelos mantenedores do OpenHands para apoiar e melhorar o OpenHands.
-### Como os dados públicos serão divulgados?
+### Como os dados públicos serão lançados?
-Os dados públicos serão divulgados quando atingirmos marcos fixos, como 1.000 exemplos públicos, 10.000 exemplos públicos, etc. Neste momento, seguiremos o seguinte processo de divulgação:
+Os dados públicos serão lançados quando atingirmos marcos fixos, como 1.000 exemplos públicos, 10.000 exemplos públicos, etc.
+Nesse momento, seguiremos o seguinte processo de lançamento:
-1. Todas as pessoas que contribuíram com feedback público receberão um e-mail descrevendo a divulgação dos dados e terão a oportunidade de optar por não participar.
-2. A pessoa ou pessoas responsáveis pela divulgação dos dados realizarão o controle de qualidade dos dados, removendo feedback de baixa qualidade, removendo endereços de e-mail dos remetentes e tentando remover quaisquer informações confidenciais.
-3. Os dados serão divulgados publicamente sob a licença MIT por meio de sites comumente usados, como GitHub ou Hugging Face.
+1. Todas as pessoas que contribuíram com feedback público receberão um e-mail descrevendo o lançamento dos dados e terão a oportunidade de optar por não participar.
+2. A pessoa ou pessoas responsáveis pelo lançamento dos dados realizarão o controle de qualidade dos dados, removendo feedback de baixa qualidade,
+removendo endereços de e-mail dos remetentes e tentando remover qualquer informação sensível.
+3. Os dados serão lançados publicamente sob a licença MIT através de sites comumente usados como GitHub ou Hugging Face.
### E se eu quiser que meus dados sejam excluídos?
-Para dados nos servidores da All Hands AI, teremos prazer em excluí-los mediante solicitação:
+Para dados nos servidores da All Hands AI, estamos felizes em excluí-los mediante solicitação:
-**Uma Parte dos Dados:** Se você deseja que uma parte dos dados seja excluída, em breve adicionaremos um mecanismo para excluir partes dos dados usando o link e a senha exibidos na interface quando você envia os dados.
+**Um Único Dado:** Se você quiser que um único dado seja excluído, em breve adicionaremos um mecanismo para excluir partes de
+dados usando o link e a senha que são exibidos na interface quando você envia dados.
-**Todos os Dados:** Se você deseja que todas as partes de seus dados sejam excluídas, ou se você não possui o ID e a senha que recebeu ao enviar os dados, entre em contato com `contact@all-hands.dev` a partir do endereço de e-mail que você registrou quando enviou os dados originalmente.
+**Todos os Dados:** Se você deseja que todos os seus dados sejam excluídos, ou não possui o ID e a senha que
+recebeu ao enviar os dados, entre em contato com `contact@all-hands.dev` a partir do endereço de e-mail que você registrou
+quando originalmente enviou os dados.
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/getting-started.mdx b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/getting-started.mdx
index 43b6335b14a7..76dd27edefd6 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/getting-started.mdx
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/getting-started.mdx
@@ -1,111 +1,99 @@
-# Começando com o OpenHands
+# Começando com OpenHands
-Então você [executou o OpenHands](./installation) e
+Então você já [executou o OpenHands](./installation) e
[configurou seu LLM](./installation#setup). E agora?
-O OpenHands pode ajudá-lo a lidar com uma ampla variedade de tarefas de engenharia. Mas a tecnologia
-ainda é nova, e estamos longe de ter agentes que possam assumir tarefas de engenharia grandes e complicadas
-sem qualquer orientação. Portanto, é importante ter uma noção do que o agente
-faz bem e onde ele pode precisar de alguma ajuda.
+O OpenHands pode ajudar com uma variedade de tarefas de engenharia. No entanto, a tecnologia ainda é nova, e estamos longe de ter
+agentes que possam lidar com tarefas complexas de forma independente. É importante entender o que o agente faz bem e onde ele
+precisa de suporte.
-## Olá Mundo
+## Hello World
-A primeira coisa que você pode querer tentar é um exemplo simples de "olá mundo".
-Isso pode ser mais complicado do que parece!
+Comece com um exemplo simples de "hello world". Pode ser mais complicado do que parece!
-Tente solicitar ao agente:
-> Por favor, escreva um script bash hello.sh que imprima "hello world!"
+Solicite ao agente com:
+> Escreva um script bash hello.sh que imprima "hello world!"
-Você deve ver que o agente não apenas escreve o script, mas também define as permissões
-corretas e executa o script para verificar a saída.
+O agente escreverá o script, definirá as permissões corretas e o executará para verificar a saída.
Você pode continuar solicitando ao agente para refinar seu código. Esta é uma ótima maneira de
-trabalhar com agentes. Comece de forma simples e itere.
+trabalhar com agentes. Comece de forma simples e vá iterando.
-> Por favor, modifique hello.sh para que ele aceite um nome como o primeiro argumento, mas use "world" como padrão
+> Modifique hello.sh para que aceite um nome como primeiro argumento, mas use "world" como padrão
-Você também pode trabalhar em qualquer linguagem que precisar, embora o agente possa precisar de algum
-tempo para configurar seu ambiente!
+Você também pode usar qualquer linguagem que precisar. O agente pode precisar de tempo para configurar o ambiente.
> Por favor, converta hello.sh para um script Ruby e execute-o
## Construindo do Zero
-Os agentes se saem excepcionalmente bem em tarefas "greenfield" (tarefas em que eles não precisam
-de nenhum contexto sobre uma base de código existente) e podem simplesmente começar do zero.
+Os agentes se destacam em tarefas "greenfield", onde não precisam de contexto sobre código existente e
+podem começar do zero.
+Comece com uma tarefa simples e itere a partir daí. Seja específico sobre o que você quer e a stack tecnológica.
-É melhor começar com uma tarefa simples e, em seguida, iterar sobre ela. Também é melhor ser
-o mais específico possível sobre o que você deseja, qual deve ser a pilha de tecnologia, etc.
+Por exemplo, podemos construir um aplicativo de tarefas:
-Por exemplo, podemos construir um aplicativo de lista de tarefas:
+> Construa um aplicativo de tarefas apenas com frontend em React. Todo o estado deve ser armazenado no localStorage.
-> Por favor, construa um aplicativo básico de lista de tarefas em React. Ele deve ser apenas frontend e todo o estado
-> deve ser mantido no localStorage.
+Uma vez que a estrutura básica esteja pronta, continue refinando:
-Podemos continuar iterando no aplicativo assim que o esqueleto estiver lá:
+> Permita adicionar uma data de vencimento opcional a cada tarefa.
-> Por favor, permita adicionar uma data de vencimento opcional para cada tarefa.
-
-Assim como no desenvolvimento normal, é bom fazer commit e push do seu código com frequência.
-Dessa forma, você sempre pode reverter para um estado antigo se o agente sair do caminho.
+Assim como no desenvolvimento normal, faça commit e push do seu código com frequência.
+Dessa forma, você sempre pode reverter para um estado anterior se o agente se desviar.
Você pode pedir ao agente para fazer commit e push para você:
-> Por favor, faça commit das alterações e envie-as para uma nova branch chamada "feature/due-dates"
-
+> Faça commit das alterações e envie-as para uma nova branch chamada "feature/due-dates"
## Adicionando Novo Código
-O OpenHands também pode fazer um ótimo trabalho adicionando novo código a uma base de código existente.
+O OpenHands é ótimo para adicionar novo código a uma base de código existente.
-Por exemplo, você pode pedir ao OpenHands para adicionar uma nova ação do GitHub ao seu projeto
-que faça lint do seu código. O OpenHands pode dar uma olhada na sua base de código para ver qual linguagem
-ele deve usar e, em seguida, soltar um novo arquivo em `./github/workflows/lint.yml`.
+Por exemplo, você pode pedir ao OpenHands para adicionar uma ação do GitHub que faça lint do seu código. Ele pode verificar sua base de código para
+determinar a linguagem e, em seguida, criar um novo arquivo em `./github/workflows/lint.yml`.
-> Por favor, adicione uma ação do GitHub que faça lint do código neste repositório.
+> Adicione uma ação do GitHub que faça lint do código neste repositório.
-Algumas tarefas podem exigir um pouco mais de contexto. Embora o OpenHands possa usar `ls` e `grep`
-para pesquisar em sua base de código, fornecer contexto antecipadamente permite que ele se mova mais rápido
-e com mais precisão. E isso custará menos tokens para você!
+Algumas tarefas precisam de mais contexto. Embora o OpenHands possa usar comandos como ls e grep para pesquisar, fornecer contexto antecipadamente
+acelera as coisas e reduz o uso de tokens.
-> Por favor, modifique ./backend/api/routes.js para adicionar uma nova rota que retorne uma lista de todas as tarefas.
+> Modifique ./backend/api/routes.js para adicionar uma nova rota que retorne uma lista de todas as tarefas.
-> Por favor, adicione um novo componente React que exiba uma lista de Widgets no diretório ./frontend/components.
+> Adicione um novo componente React ao diretório ./frontend/components para exibir uma lista de Widgets.
> Ele deve usar o componente Widget existente.
## Refatoração
-O OpenHands é ótimo em refatorar código existente, especialmente em pequenos pedaços.
-Você provavelmente não vai querer tentar rearquitetar toda a sua base de código, mas dividir
-arquivos e funções longas, renomear variáveis, etc. tendem a funcionar muito bem.
+O OpenHands é ótimo para refatorar código em pequenos pedaços. Em vez de reconfigurar toda a base de código,
+é mais eficaz dividir arquivos e funções longas ou renomear variáveis.
-> Por favor, renomeie todas as variáveis de uma letra em ./app.go.
+> Renomeie todas as variáveis de letra única em ./app.go.
-> Por favor, divida a função `build_and_deploy_widgets` em duas funções, `build_widgets` e `deploy_widgets` em widget.php.
+> Divida a função `build_and_deploy_widgets` em duas funções, `build_widgets` e `deploy_widgets` em widget.php.
-> Por favor, divida ./api/routes.js em arquivos separados para cada rota.
+> Divida ./api/routes.js em arquivos separados para cada rota.
-## Correções de Bugs
+## Correção de Bugs
-O OpenHands também pode ajudá-lo a rastrear e corrigir bugs em seu código. Mas como qualquer
-desenvolvedor sabe, a correção de bugs pode ser extremamente complicada e, muitas vezes, o OpenHands precisará de mais contexto.
-Ajuda se você diagnosticou o bug, mas quer que o OpenHands descubra a lógica.
+O OpenHands pode ajudar a rastrear e corrigir bugs, mas a correção de bugs pode ser complicada e geralmente requer mais contexto.
+É útil se você já diagnosticou o problema e só precisa que o OpenHands lide com a lógica.
-> Atualmente, o campo de e-mail no endpoint `/subscribe` está rejeitando domínios .io. Por favor, corrija isso.
+> O campo de email no endpoint `/subscribe` está rejeitando domínios .io. Corrija isso.
-> A função `search_widgets` em ./app.py está fazendo uma pesquisa sensível a maiúsculas e minúsculas. Por favor, torne-a insensível a maiúsculas e minúsculas.
+> A função `search_widgets` em ./app.py está fazendo uma busca sensível a maiúsculas e minúsculas. Torne-a insensível a maiúsculas e minúsculas.
-Muitas vezes, ajuda fazer o desenvolvimento orientado a testes ao corrigir bugs com um agente.
-Você pode pedir ao agente para escrever um novo teste e, em seguida, iterar até que ele corrija o bug:
+Para correção de bugs, o desenvolvimento orientado a testes pode ser muito útil. Você pode pedir ao agente para escrever um novo teste e iterar
+até que o bug seja corrigido:
-> A função `hello` trava na string vazia. Por favor, escreva um teste que reproduza esse bug e, em seguida, corrija o código para que ele passe.
+> A função `hello` falha com uma string vazia. Escreva um teste que reproduza esse bug e, em seguida, corrija o código para que ele passe.
## Mais
-O OpenHands é capaz de ajudar em praticamente qualquer tarefa de codificação, mas é necessária alguma prática
-para tirar o máximo proveito dele. Lembre-se de:
-* Manter suas tarefas pequenas.
-* Ser o mais específico possível.
-* Fornecer o máximo de contexto possível.
-* Fazer commit e push com frequência.
+O OpenHands pode ajudar com quase qualquer tarefa de codificação, mas é preciso alguma prática para obter os melhores resultados.
+Tenha em mente estas dicas:
+* Mantenha suas tarefas pequenas.
+* Seja específico.
+* Forneça bastante contexto.
+* Faça commit e push com frequência.
-Veja [Melhores Práticas de Prompt](./prompting/prompting-best-practices) para mais dicas sobre como obter o máximo do OpenHands.
+Veja [Melhores Práticas de Prompt](./prompting/prompting-best-practices) para mais dicas sobre como obter o máximo do OpenHands.
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/cli-mode.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/cli-mode.md
index 2dadd124b04f..63ce9fe4a09a 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/cli-mode.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/cli-mode.md
@@ -2,7 +2,7 @@
O OpenHands pode ser executado em um modo CLI interativo, que permite aos usuários iniciar uma sessão interativa via linha de comando.
-Esse modo é diferente do [modo headless](headless-mode), que é não interativo e melhor para scripting.
+Este modo é diferente do [modo headless](headless-mode), que é não interativo e melhor para scripts.
## Com Python
@@ -15,18 +15,20 @@ Para iniciar uma sessão interativa do OpenHands via linha de comando:
poetry run python -m openhands.core.cli
```
-Esse comando iniciará uma sessão interativa onde você pode inserir tarefas e receber respostas do OpenHands.
+Este comando iniciará uma sessão interativa onde você pode inserir tarefas e receber respostas do OpenHands.
-Você precisará definir seu modelo, chave de API e outras configurações via variáveis de ambiente
-[ou o arquivo `config.toml`](https://github.com/All-Hands-AI/OpenHands/blob/main/config.template.toml).
+Você precisará definir seu modelo, chave de API e outras configurações através de variáveis de ambiente
+[ou do arquivo `config.toml`](https://github.com/All-Hands-AI/OpenHands/blob/main/config.template.toml).
## Com Docker
Para executar o OpenHands no modo CLI com Docker:
-1. Defina as seguintes variáveis de ambiente no seu terminal:
+1. Defina as seguintes variáveis de ambiente em seu terminal:
-- `WORKSPACE_BASE` para o diretório que você deseja que o OpenHands edite (Ex: `export WORKSPACE_BASE=$(pwd)/workspace`).
+- `SANDBOX_VOLUMES` para especificar o diretório que você quer que o OpenHands acesse (Ex: `export SANDBOX_VOLUMES=$(pwd)/workspace:/workspace:rw`).
+ - O agente trabalha em `/workspace` por padrão, então monte seu diretório de projeto lá se quiser que o agente modifique arquivos.
+ - Para dados somente leitura, use um caminho de montagem diferente (Ex: `export SANDBOX_VOLUMES=$(pwd)/workspace:/workspace:rw,/path/to/large/dataset:/data:ro`).
- `LLM_MODEL` para o modelo a ser usado (Ex: `export LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"`).
- `LLM_API_KEY` para a chave de API (Ex: `export LLM_API_KEY="sk_test_12345"`).
@@ -37,10 +39,9 @@ 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 \
- -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 \
@@ -49,48 +50,7 @@ docker run -it \
python -m openhands.core.cli
```
-Esse comando iniciará uma sessão interativa no Docker onde você pode inserir tarefas e receber respostas do OpenHands.
+Este comando iniciará uma sessão interativa no Docker onde você pode inserir tarefas e receber respostas do OpenHands.
-## Exemplos de Comandos CLI e Saídas Esperadas
-
-Aqui estão alguns exemplos de comandos CLI e suas saídas esperadas:
-
-### Exemplo 1: Tarefa Simples
-
-```bash
->> Escreva um script Python que imprima "Hello, World!"
-```
-
-Saída Esperada:
-
-```bash
-🤖 Claro! Aqui está um script Python que imprime "Hello, World!":
-
-❯ print("Hello, World!")
-```
-
-### Exemplo 2: Comando Bash
-
-```bash
->> Crie um diretório chamado "test_dir"
-```
-
-Saída Esperada:
-
-```bash
-🤖 Criando um diretório chamado "test_dir":
-
-❯ mkdir test_dir
-```
-
-### Exemplo 3: Tratamento de Erro
-
-```bash
->> Exclua um arquivo inexistente
-```
-
-Saída Esperada:
-
-```bash
-🤖 Ocorreu um erro. Por favor, tente novamente.
-```
+O `-e SANDBOX_USER_ID=$(id -u)` é passado para o comando Docker para garantir que o usuário da sandbox corresponda às
+permissões do usuário do host. Isso impede que o agente crie arquivos pertencentes ao root no workspace montado.
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/custom-sandbox-guide.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/custom-sandbox-guide.md
index 71daaf0c8bc8..81b796af9958 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/custom-sandbox-guide.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/custom-sandbox-guide.md
@@ -1,33 +1,38 @@
# Sandbox Personalizado
+:::note
+Este guia é para usuários que gostariam de usar sua própria imagem Docker personalizada para o runtime. Por exemplo,
+com certas ferramentas ou linguagens de programação pré-instaladas.
+:::
+
O sandbox é onde o agente realiza suas tarefas. Em vez de executar comandos diretamente no seu computador
(o que poderia ser arriscado), o agente os executa dentro de um contêiner Docker.
O sandbox padrão do OpenHands (`python-nodejs:python3.12-nodejs22`
-do [nikolaik/python-nodejs](https://hub.docker.com/r/nikolaik/python-nodejs)) vem com alguns pacotes instalados, como
+do [nikolaik/python-nodejs](https://hub.docker.com/r/nikolaik/python-nodejs)) vem com alguns pacotes instalados como
python e Node.js, mas pode precisar de outros softwares instalados por padrão.
Você tem duas opções para personalização:
- Usar uma imagem existente com o software necessário.
-- Criar sua própria imagem personalizada do Docker.
+- Criar sua própria imagem Docker personalizada.
-Se você escolher a primeira opção, pode pular a seção `Crie Sua Imagem Docker`.
+Se você escolher a primeira opção, pode pular a seção `Criar Sua Imagem Docker`.
-## Crie Sua Imagem Docker
+## Criar Sua Imagem Docker
-Para criar uma imagem personalizada do Docker, ela deve ser baseada no Debian.
+Para criar uma imagem Docker personalizada, ela deve ser baseada em Debian.
-Por exemplo, se você quiser que o OpenHands tenha o `ruby` instalado, você pode criar um `Dockerfile` com o seguinte conteúdo:
+Por exemplo, se você quiser que o OpenHands tenha `ruby` instalado, você poderia criar um `Dockerfile` com o seguinte conteúdo:
```dockerfile
FROM nikolaik/python-nodejs:python3.12-nodejs22
-# Instalar pacotes necessários
+# Install required packages
RUN apt-get update && apt-get install -y ruby
```
-Ou você pode usar uma imagem base específica do Ruby:
+Ou você poderia usar uma imagem base específica para Ruby:
```dockerfile
FROM ruby:latest
@@ -56,12 +61,12 @@ docker run -it --rm --pull=always \
### Configuração
-Primeiro, certifique-se de que você pode executar o OpenHands seguindo as instruções em [Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md).
+Primeiro, certifique-se de que pode executar o OpenHands seguindo as instruções em [Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md).
-### Especifique a Imagem Base do Sandbox
+### Especificar a Imagem Base do Sandbox
-No arquivo `config.toml` dentro do diretório OpenHands, defina `base_container_image` como a imagem que você deseja usar.
-Isso pode ser uma imagem que você já baixou ou uma que você construiu:
+No arquivo `config.toml` dentro do diretório OpenHands, defina o `base_container_image` para a imagem que você deseja usar.
+Pode ser uma imagem que você já baixou ou uma que você construiu:
```bash
[core]
@@ -76,22 +81,22 @@ O arquivo `config.toml` suporta várias outras opções para personalizar seu sa
```toml
[core]
-# Instalar dependências adicionais quando o runtime for construído
-# Pode conter quaisquer comandos shell válidos
-# Se você precisar do caminho para o interpretador Python em qualquer um desses comandos, pode usar a variável $OH_INTERPRETER_PATH
+# 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
"""
-# Definir variáveis de ambiente para o runtime
-# Útil para configuração que precisa estar disponível em tempo de execução
+# 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" }
-# Especificar a plataforma para builds de várias arquiteturas (por exemplo, "linux/amd64" ou "linux/arm64")
+# Specify platform for multi-architecture builds (e.g., "linux/amd64" or "linux/arm64")
platform = "linux/amd64"
```
### Executar
-Execute o OpenHands executando ```make run``` no diretório de nível superior.
+Execute o OpenHands rodando ```make run``` no diretório de nível superior.
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/debugging.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/debugging.md
index d7933376b763..a118b40a5cdf 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/debugging.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/debugging.md
@@ -1,10 +1,10 @@
-# Debugging
+# Depuração
-The following is intended as a primer on debugging OpenHands for Development purposes.
+O seguinte é destinado como uma introdução à depuração do OpenHands para fins de Desenvolvimento.
-## Server / VSCode
+## Servidor / VSCode
-The following `launch.json` will allow debugging the agent, controller and server elements, but not the sandbox (Which runs inside docker). It will ignore any changes inside the `workspace/` directory:
+O seguinte `launch.json` permitirá a depuração dos elementos do agente, controlador e servidor, mas não do sandbox (que é executado dentro do docker). Ele ignorará quaisquer alterações dentro do diretório `workspace/`:
```
{
@@ -36,7 +36,7 @@ The following `launch.json` will allow debugging the agent, controller and serve
}
```
-More specific debugging configurations which include more parameters may be specified:
+Configurações de depuração mais específicas que incluem mais parâmetros podem ser especificadas:
```
...
@@ -62,10 +62,10 @@ More specific debugging configurations which include more parameters may be spec
...
```
-Values in the snippet above can be updated such that:
+Os valores no trecho acima podem ser atualizados de modo que:
- * *t*: the task
- * *d*: the openhands workspace directory
- * *c*: the agent
- * *l*: the LLM config (pre-defined in config.toml)
- * *n*: session name (e.g. eventstream name)
+ * *t*: a tarefa
+ * *d*: o diretório de workspace do openhands
+ * *c*: o agente
+ * *l*: a configuração do LLM (pré-definida em config.toml)
+ * *n*: nome da sessão (por exemplo, nome do eventstream)
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/development-overview.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/development-overview.md
index 7ac99e6cc7d1..038d1dd6bf90 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/development-overview.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/development-overview.md
@@ -4,19 +4,19 @@ sidebar_position: 9
# Visão Geral do Desenvolvimento
-Este guia fornece uma visão geral dos principais recursos de documentação disponíveis no repositório OpenHands. Se você está procurando contribuir, entender a arquitetura ou trabalhar em componentes específicos, esses recursos irão ajudá-lo a navegar pelo codebase de forma eficaz.
+Este guia fornece uma visão geral dos principais recursos de documentação disponíveis no repositório OpenHands. Seja você um colaborador, alguém que busca entender a arquitetura ou trabalhar em componentes específicos, esses recursos o ajudarão a navegar pelo código de forma eficaz.
## Documentação Principal
### Fundamentos do Projeto
-- **Visão Geral do Projeto Principal** (`/README.md`)
+- **Visão Geral do Projeto** (`/README.md`)
O ponto de entrada principal para entender o OpenHands, incluindo recursos e instruções básicas de configuração.
- **Guia de Desenvolvimento** (`/Development.md`)
Guia abrangente para desenvolvedores que trabalham no OpenHands, incluindo configuração, requisitos e fluxos de trabalho de desenvolvimento.
- **Diretrizes de Contribuição** (`/CONTRIBUTING.md`)
- Informações essenciais para contribuidores, abrangendo estilo de código, processo de PR e fluxos de trabalho de contribuição.
+ Informações essenciais para colaboradores, abordando estilo de código, processo de PR e fluxos de trabalho de contribuição.
### Documentação de Componentes
@@ -32,7 +32,7 @@ Este guia fornece uma visão geral dos principais recursos de documentação dis
Detalhes de implementação do servidor, documentação da API e arquitetura de serviços.
- **Ambiente de Execução** (`/openhands/runtime/README.md`)
- Documentação abrangendo o ambiente de execução, modelo de execução e configurações de tempo de execução.
+ Documentação cobrindo o ambiente de execução, modelo de execução e configurações de runtime.
#### Infraestrutura
- **Documentação de Contêineres** (`/containers/README.md`)
@@ -47,7 +47,7 @@ Este guia fornece uma visão geral dos principais recursos de documentação dis
### Recursos Avançados
- **Arquitetura de Microagentes** (`/microagents/README.md`)
- Informações detalhadas sobre a arquitetura, implementação e uso de microagentes.
+ Informações detalhadas sobre a arquitetura de microagentes, implementação e uso.
### Padrões de Documentação
- **Guia de Estilo de Documentação** (`/docs/DOC_STYLE_GUIDE.md`)
@@ -58,17 +58,17 @@ Este guia fornece uma visão geral dos principais recursos de documentação dis
Se você é novo no desenvolvimento com OpenHands, recomendamos seguir esta sequência:
1. Comece com o `README.md` principal para entender o propósito e os recursos do projeto
-2. Revise as diretrizes em `CONTRIBUTING.md` se você planeja contribuir
+2. Revise as diretrizes em `CONTRIBUTING.md` se planeja contribuir
3. Siga as instruções de configuração em `Development.md`
-4. Mergulhe na documentação de componentes específicos com base na sua área de interesse:
- - Desenvolvedores frontend devem se concentrar em `/frontend/README.md`
+4. Mergulhe na documentação específica de componentes com base em sua área de interesse:
+ - Desenvolvedores frontend devem focar em `/frontend/README.md`
- Desenvolvedores backend devem começar com `/openhands/README.md`
- - O trabalho de infraestrutura deve começar com `/containers/README.md`
+ - Trabalho de infraestrutura deve começar com `/containers/README.md`
-## Atualizações da Documentação
+## Atualizações de Documentação
-Ao fazer alterações no codebase, certifique-se de que:
+Ao fazer alterações no código, certifique-se de que:
1. A documentação relevante seja atualizada para refletir suas alterações
2. Novos recursos sejam documentados nos arquivos README apropriados
3. Quaisquer alterações na API sejam refletidas na documentação do servidor
-4. A documentação siga o guia de estilo em `/docs/DOC_STYLE_GUIDE.md`
+4. A documentação siga o guia de estilo em `/docs/DOC_STYLE_GUIDE.md`
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/evaluation-harness.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/evaluation-harness.md
index 3dc87b3d091a..07da3b1076fe 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/evaluation-harness.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/evaluation-harness.md
@@ -1,17 +1,17 @@
# Avaliação
-Este guia fornece uma visão geral de como integrar seu próprio benchmark de avaliação ao framework OpenHands.
+Este guia fornece uma visão geral de como integrar seu próprio benchmark de avaliação no framework OpenHands.
-## Configurar Ambiente e Configuração do LLM
+## Configuração do Ambiente e Configuração do LLM
Por favor, siga as instruções [aqui](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md) para configurar seu ambiente de desenvolvimento local.
-O OpenHands no modo de desenvolvimento usa `config.toml` para manter o controle da maioria das configurações.
+O OpenHands em modo de desenvolvimento usa `config.toml` para acompanhar a maioria das configurações.
Aqui está um exemplo de arquivo de configuração que você pode usar para definir e usar múltiplos LLMs:
```toml
[llm]
-# IMPORTANTE: adicione sua chave de API aqui e defina o modelo para o que você deseja avaliar
+# IMPORTANTE: adicione sua chave de API aqui e defina o modelo que você deseja avaliar
model = "claude-3-5-sonnet-20241022"
api_key = "sk-XXX"
@@ -54,7 +54,7 @@ Este comando executa o OpenHands com:
- Um máximo de 10 iterações
- A descrição da tarefa especificada
- Usando o CodeActAgent
-- Com a configuração do LLM definida na seção `llm` do seu arquivo `config.toml`
+- Com a configuração LLM definida na seção `llm` do seu arquivo `config.toml`
## Como o OpenHands funciona
@@ -64,23 +64,23 @@ O ponto de entrada principal para o OpenHands está em `openhands/core/main.py`.
2. Cria um ambiente de execução usando `create_runtime()`
3. Inicializa o agente especificado
4. Executa o controlador usando `run_controller()`, que:
- - Anexa o ambiente de execução ao agente
+ - Anexa o runtime ao agente
- Executa a tarefa do agente
- - Retorna um estado final quando concluído
+ - Retorna um estado final quando completo
-A função `run_controller()` é o núcleo da execução do OpenHands. Ela gerencia a interação entre o agente, o ambiente de execução e a tarefa, lidando com coisas como simulação de entrada do usuário e processamento de eventos.
+A função `run_controller()` é o núcleo da execução do OpenHands. Ela gerencia a interação entre o agente, o runtime e a tarefa, lidando com coisas como simulação de entrada do usuário e processamento de eventos.
## Maneira mais fácil de começar: Explorando Benchmarks Existentes
Encorajamos você a revisar os vários benchmarks de avaliação disponíveis no [diretório `evaluation/benchmarks/`](https://github.com/All-Hands-AI/OpenHands/blob/main/evaluation/benchmarks) do nosso repositório.
-Para integrar seu próprio benchmark, sugerimos começar com aquele que mais se assemelha às suas necessidades. Essa abordagem pode simplificar significativamente seu processo de integração, permitindo que você construa sobre estruturas existentes e as adapte aos seus requisitos específicos.
+Para integrar seu próprio benchmark, sugerimos começar com aquele que mais se assemelha às suas necessidades. Esta abordagem pode simplificar significativamente seu processo de integração, permitindo que você construa sobre estruturas existentes e as adapte aos seus requisitos específicos.
## Como criar um fluxo de trabalho de avaliação
-Para criar um fluxo de trabalho de avaliação para o seu benchmark, siga estas etapas:
+Para criar um fluxo de trabalho de avaliação para seu benchmark, siga estas etapas:
1. Importe as utilidades relevantes do OpenHands:
```python
@@ -124,7 +124,7 @@ Para criar um fluxo de trabalho de avaliação para o seu benchmark, siga estas
return config
```
-3. Inicialize o ambiente de execução e configure o ambiente de avaliação:
+3. Inicialize o runtime e configure o ambiente de avaliação:
```python
def initialize_runtime(runtime: Runtime, instance: pd.Series):
# Configure seu ambiente de avaliação aqui
@@ -179,32 +179,32 @@ Para criar um fluxo de trabalho de avaliação para o seu benchmark, siga estas
)
```
-Este fluxo de trabalho configura a configuração, inicializa o ambiente de execução, processa cada instância executando o agente e avaliando suas ações e, em seguida, coleta os resultados em um objeto `EvalOutput`. A função `run_evaluation` lida com a paralelização e o rastreamento do progresso.
+Este fluxo de trabalho configura a configuração, inicializa o ambiente de execução, processa cada instância executando o agente e avaliando suas ações, e então coleta os resultados em um objeto `EvalOutput`. A função `run_evaluation` lida com paralelização e acompanhamento do progresso.
Lembre-se de personalizar as funções `get_instruction`, `your_user_response_function` e `evaluate_agent_actions` de acordo com os requisitos específicos do seu benchmark.
-Ao seguir essa estrutura, você pode criar um fluxo de trabalho de avaliação robusto para o seu benchmark dentro do framework OpenHands.
+Seguindo esta estrutura, você pode criar um fluxo de trabalho de avaliação robusto para seu benchmark dentro do framework OpenHands.
-## Entendendo a `user_response_fn`
+## Entendendo a função `user_response_fn`
-A `user_response_fn` é um componente crucial no fluxo de trabalho de avaliação do OpenHands. Ela simula a interação do usuário com o agente, permitindo respostas automatizadas durante o processo de avaliação. Essa função é particularmente útil quando você deseja fornecer respostas consistentes e predefinidas às consultas ou ações do agente.
+A função `user_response_fn` é um componente crucial no fluxo de trabalho de avaliação do OpenHands. Ela simula a interação do usuário com o agente, permitindo respostas automatizadas durante o processo de avaliação. Esta função é particularmente útil quando você deseja fornecer respostas consistentes e predefinidas às consultas ou ações do agente.
### Fluxo de Trabalho e Interação
-O fluxo de trabalho correto para lidar com ações e a `user_response_fn` é o seguinte:
+O fluxo de trabalho correto para lidar com ações e a função `user_response_fn` é o seguinte:
-1. O agente recebe uma tarefa e começa a processar
+1. O agente recebe uma tarefa e começa a processá-la
2. O agente emite uma Ação
3. Se a Ação for executável (por exemplo, CmdRunAction, IPythonRunCellAction):
- O Runtime processa a Ação
- O Runtime retorna uma Observação
-4. Se a Ação não for executável (normalmente uma MessageAction):
- - A `user_response_fn` é chamada
+4. Se a Ação não for executável (tipicamente uma MessageAction):
+ - A função `user_response_fn` é chamada
- Ela retorna uma resposta simulada do usuário
5. O agente recebe a Observação ou a resposta simulada
-6. As etapas 2-5 se repetem até que a tarefa seja concluída ou o número máximo de iterações seja atingido
+6. Os passos 2-5 se repetem até que a tarefa seja concluída ou o número máximo de iterações seja atingido
Aqui está uma representação visual mais precisa:
@@ -212,7 +212,7 @@ Aqui está uma representação visual mais precisa:
[Agente]
|
v
- [Emitir Ação]
+ [Emite Ação]
|
v
[A Ação é Executável?]
@@ -223,27 +223,27 @@ Aqui está uma representação visual mais precisa:
[Runtime] [user_response_fn]
| |
v v
- [Retornar Observação] [Resposta Simulada]
+ [Retorna Observação] [Resposta Simulada]
\ /
\ /
v v
[Agente recebe feedback]
|
v
- [Continuar ou Concluir Tarefa]
+ [Continua ou Completa a Tarefa]
```
Neste fluxo de trabalho:
- Ações executáveis (como executar comandos ou código) são tratadas diretamente pelo Runtime
-- Ações não executáveis (normalmente quando o agente deseja se comunicar ou pedir esclarecimentos) são tratadas pela `user_response_fn`
-- O agente então processa o feedback, seja uma Observação do Runtime ou uma resposta simulada da `user_response_fn`
+- Ações não executáveis (tipicamente quando o agente quer se comunicar ou pedir esclarecimentos) são tratadas pela função `user_response_fn`
+- O agente então processa o feedback, seja uma Observação do Runtime ou uma resposta simulada da função `user_response_fn`
-Essa abordagem permite o tratamento automatizado de ações concretas e interações simuladas do usuário, tornando-a adequada para cenários de avaliação em que você deseja testar a capacidade do agente de concluir tarefas com intervenção humana mínima.
+Esta abordagem permite o tratamento automatizado tanto de ações concretas quanto de interações simuladas com o usuário, tornando-a adequada para cenários de avaliação onde você deseja testar a capacidade do agente de completar tarefas com intervenção humana mínima.
### Exemplo de Implementação
-Aqui está um exemplo de uma `user_response_fn` usada na avaliação SWE-Bench:
+Aqui está um exemplo de uma função `user_response_fn` usada na avaliação SWE-Bench:
```python
def codeact_user_response(state: State | None) -> str:
@@ -275,4 +275,4 @@ Esta função faz o seguinte:
2. Verifica quantas vezes o agente tentou se comunicar com o usuário
3. Se o agente fez várias tentativas, fornece uma opção para desistir
-Ao usar essa função, você pode garantir um comportamento consistente em várias execuções de avaliação e evitar que o agente fique preso esperando a entrada do usuário.
+Ao usar esta função, você pode garantir um comportamento consistente em várias execuções de avaliação e impedir que o agente fique preso esperando por entrada humana.
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/github-action.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/github-action.md
index 83aa883af882..cda8e5770b9c 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/github-action.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/github-action.md
@@ -1,6 +1,6 @@
# Usando a Ação do GitHub OpenHands
-Este guia explica como usar a Ação do GitHub OpenHands, tanto dentro do repositório OpenHands quanto em seus próprios projetos.
+Este guia explica como usar a Ação do GitHub OpenHands em seus próprios projetos.
## Usando a Ação no Repositório OpenHands
@@ -13,17 +13,18 @@ A ação será acionada automaticamente e tentará resolver a issue.
## Instalando a Ação em um Novo Repositório
-Para instalar a Ação do GitHub OpenHands em seu próprio repositório, siga o [README para o OpenHands Resolver](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/resolver/README.md).
+Para instalar a Ação do GitHub OpenHands em seu próprio repositório, siga
+o [README do OpenHands Resolver](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/resolver/README.md).
## Dicas de Uso
-### Resolução Iterativa
+### Resolução iterativa
1. Crie uma issue no repositório.
-2. Adicione a etiqueta `fix-me` à issue ou deixe um comentário começando com `@openhands-agent`.
+2. Adicione a etiqueta `fix-me` à issue, ou deixe um comentário começando com `@openhands-agent`.
3. Revise a tentativa de resolver a issue verificando o pull request.
-4. Faça um acompanhamento com feedback por meio de comentários gerais, comentários de revisão ou comentários de thread inline.
-5. Adicione a etiqueta `fix-me` ao pull request ou aborde um comentário específico começando com `@openhands-agent`.
+4. Forneça feedback através de comentários gerais, comentários de revisão ou comentários em linha.
+5. Adicione a etiqueta `fix-me` ao pull request, ou direcione um comentário específico começando com `@openhands-agent`.
### Etiqueta versus Macro
@@ -32,19 +33,19 @@ Para instalar a Ação do GitHub OpenHands em seu próprio repositório, siga o
## Configurações Avançadas
-### Adicionar configurações personalizadas do repositório
+### Adicionar configurações personalizadas ao repositório
-Você pode fornecer instruções personalizadas para o OpenHands seguindo o [README para o resolver](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/resolver/README.md#providing-custom-instructions).
+Você pode fornecer instruções personalizadas para o OpenHands seguindo o [README do resolver](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/resolver/README.md#providing-custom-instructions).
### Configurações personalizadas
-O GitHub resolver verificará automaticamente se há [segredos do repositório](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions?tool=webui#creating-secrets-for-a-repository) ou [variáveis do repositório](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/store-information-in-variables#creating-configuration-variables-for-a-repository) válidos para personalizar seu comportamento.
+O resolver do GitHub verificará automaticamente [segredos do repositório](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions?tool=webui#creating-secrets-for-a-repository) válidos ou [variáveis do repositório](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/store-information-in-variables#creating-configuration-variables-for-a-repository) para personalizar seu comportamento.
As opções de personalização que você pode definir são:
-| **Nome do atributo** | **Tipo** | **Finalidade** | **Exemplo** |
-| -------------------------------- | -------- | --------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
-| `LLM_MODEL` | Variável | Definir o LLM a ser usado com o OpenHands | `LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"` |
-| `OPENHANDS_MAX_ITER` | Variável | Definir o limite máximo de iterações do agente | `OPENHANDS_MAX_ITER=10` |
-| `OPENHANDS_MACRO` | Variável | Personalizar a macro padrão para invocar o resolver | `OPENHANDS_MACRO=@resolveit` |
-| `OPENHANDS_BASE_CONTAINER_IMAGE` | Variável | Sandbox personalizado ([saiba mais](https://docs.all-hands.dev/modules/usage/how-to/custom-sandbox-guide)) | `OPENHANDS_BASE_CONTAINER_IMAGE="custom_image"` |
-| `TARGET_BRANCH` | Variável | Mesclar em um branch diferente de `main` | `TARGET_BRANCH="dev"` |
+| **Nome do atributo** | **Tipo** | **Finalidade** | **Exemplo** |
+| -------------------------------- | --------- | --------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
+| `LLM_MODEL` | Variável | Define o LLM a ser usado com OpenHands | `LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"` |
+| `OPENHANDS_MAX_ITER` | Variável | Define o limite máximo para iterações do agente | `OPENHANDS_MAX_ITER=10` |
+| `OPENHANDS_MACRO` | Variável | Personaliza a macro padrão para invocar o resolver | `OPENHANDS_MACRO=@resolveit` |
+| `OPENHANDS_BASE_CONTAINER_IMAGE` | Variável | Sandbox personalizado ([saiba mais](https://docs.all-hands.dev/modules/usage/how-to/custom-sandbox-guide)) | `OPENHANDS_BASE_CONTAINER_IMAGE="custom_image"` |
+| `TARGET_BRANCH` | Variável | Mesclar para uma branch diferente de `main` | `TARGET_BRANCH="dev"` |
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/gui-mode.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/gui-mode.md
index 45e64d0463ab..7fa994777ecb 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/gui-mode.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/gui-mode.md
@@ -1,6 +1,6 @@
# Modo GUI
-O OpenHands fornece um modo de Interface Gráfica do Usuário (GUI) para interagir com o assistente de IA.
+O OpenHands oferece um modo de Interface Gráfica do Usuário (GUI) para interagir com o assistente de IA.
## Instalação e Configuração
@@ -11,37 +11,36 @@ O OpenHands fornece um modo de Interface Gráfica do Usuário (GUI) para interag
### Configuração Inicial
-1. No primeiro lançamento, você verá uma página de configurações.
-2. Selecione um `Provedor de LLM` e um `Modelo de LLM` nos menus suspensos. Se o modelo necessário não existir na lista,
- ative as opções `Avançadas` e insira-o com o prefixo correto na caixa de texto `Modelo Personalizado`.
-3. Insira a `Chave de API` correspondente para o provedor escolhido.
+1. No primeiro lançamento, você verá um popup de configurações.
+2. Selecione um `Provedor LLM` e `Modelo LLM` nos menus suspensos. Se o modelo necessário não existir na lista,
+ selecione `ver configurações avançadas`. Em seguida, ative as opções `Avançadas` e insira-o com o prefixo correto na
+ caixa de texto `Modelo Personalizado`.
+3. Insira a `Chave API` correspondente para o provedor escolhido.
4. Clique em `Salvar Alterações` para aplicar as configurações.
### Tokens de Controle de Versão
-O OpenHands suporta múltiplos provedores de controle de versão. Você pode configurar tokens para vários provedores simultaneamente.
+O OpenHands suporta vários provedores de controle de versão. Você pode configurar tokens para vários provedores simultaneamente.
#### Configuração do Token do GitHub
-O OpenHands exporta automaticamente um `GITHUB_TOKEN` para o ambiente shell se ele estiver disponível. Isso pode acontecer de duas maneiras:
+O OpenHands exporta automaticamente um `GITHUB_TOKEN` para o ambiente shell se fornecido:
-**Instalação Local**: O usuário insere diretamente seu token do GitHub.
Configurando um Token do GitHub
- 1. **Gere um Personal Access Token (PAT)**:
- - No GitHub, vá para Settings > Developer Settings > Personal Access Tokens > Tokens (classic).
- - **New token (classic)**
+ 1. **Gerar um Token de Acesso Pessoal (PAT)**:
+ - No GitHub, vá para Configurações > Configurações de Desenvolvedor > Tokens de Acesso Pessoal > Tokens (clássico).
+ - **Novo token (clássico)**
- Escopos necessários:
- `repo` (Controle total de repositórios privados)
- - **Fine-Grained Tokens**
- - All Repositories (Você pode selecionar repositórios específicos, mas isso afetará o que retorna na pesquisa de repositórios)
- - Minimal Permissions (Selecione **Meta Data = Read-only** para pesquisa, **Pull Requests = Read and Write**, **Content = Read and Write** para criação de branches)
- 2. **Insira o Token no OpenHands**:
- - Clique no botão Settings (ícone de engrenagem).
- - Navegue até a seção `Git Provider Settings`.
- - Cole seu token no campo `GitHub Token`.
- - Clique em `Save Changes` para aplicar as alterações.
+ - **Tokens de Granularidade Fina**
+ - Todos os Repositórios (Você pode selecionar repositórios específicos, mas isso afetará o que retorna na pesquisa de repositórios)
+ - Permissões Mínimas (Selecione `Meta Dados = Somente leitura` para pesquisa, `Pull Requests = Leitura e Escrita` e `Conteúdo = Leitura e Escrita` para criação de branches)
+ 2. **Inserir Token no OpenHands**:
+ - Clique no botão Configurações (ícone de engrenagem).
+ - Cole seu token no campo `Token do GitHub`.
+ - Clique em `Salvar` para aplicar as alterações.
@@ -49,15 +48,15 @@ O OpenHands exporta automaticamente um `GITHUB_TOKEN` para o ambiente shell se e
Se você estiver trabalhando com repositórios organizacionais, configurações adicionais podem ser necessárias:
- 1. **Verifique os Requisitos da Organização**:
- - Os administradores da organização podem impor políticas específicas de token.
- - Algumas organizações exigem que os tokens sejam criados com SSO habilitado.
+ 1. **Verificar Requisitos da Organização**:
+ - Administradores da organização podem impor políticas específicas de token.
+ - Algumas organizações exigem que tokens sejam criados com SSO habilitado.
- Revise as [configurações de política de token](https://docs.github.com/en/organizations/managing-programmatic-access-to-your-organization/setting-a-personal-access-token-policy-for-your-organization) da sua organização.
- 2. **Verifique o Acesso à Organização**:
+ 2. **Verificar Acesso à Organização**:
- Vá para as configurações do seu token no GitHub.
- - Procure a organização em `Organization access`.
- - Se necessário, clique em `Enable SSO` ao lado da sua organização.
- - Conclua o processo de autorização SSO.
+ - Procure pela organização em `Acesso à Organização`.
+ - Se necessário, clique em `Habilitar SSO` ao lado da sua organização.
+ - Complete o processo de autorização SSO.
@@ -66,60 +65,42 @@ O OpenHands exporta automaticamente um `GITHUB_TOKEN` para o ambiente shell se e
Problemas comuns e soluções:
- **Token Não Reconhecido**:
- - Certifique-se de que o token esteja salvo corretamente nas configurações.
+ - Certifique-se de que o token está devidamente salvo nas configurações.
- Verifique se o token não expirou.
- - Verifique se o token possui os escopos necessários.
+ - Confirme se o token tem os escopos necessários.
- Tente regenerar o token.
- **Acesso à Organização Negado**:
- Verifique se o SSO é necessário, mas não está habilitado.
- - Verifique a associação à organização.
- - Entre em contato com o administrador da organização se as políticas de token estiverem bloqueando o acesso.
+ - Confirme a associação à organização.
+ - Contate o administrador da organização se as políticas de token estiverem bloqueando o acesso.
- **Verificando se o Token Funciona**:
- - O aplicativo mostrará uma marca de seleção verde se o token for válido.
+ - O aplicativo mostrará uma marca de verificação verde se o token for válido.
- Tente acessar um repositório para confirmar as permissões.
- - Verifique o console do navegador em busca de mensagens de erro.
-
-
-**OpenHands Cloud**: O token é obtido por meio da autenticação OAuth do GitHub.
-
-
- Autenticação OAuth
-
- Ao usar o OpenHands Cloud, o fluxo OAuth do GitHub solicita as seguintes permissões:
- - Acesso ao repositório (leitura/escrita)
- - Gerenciamento de fluxo de trabalho
- - Acesso de leitura à organização
-
- Para autenticar o OpenHands:
- - Clique em `Sign in with GitHub` quando solicitado.
- - Revise as permissões solicitadas.
- - Autorize o OpenHands a acessar sua conta do GitHub.
- - Se estiver usando uma organização, autorize o acesso à organização se solicitado.
+ - Verifique o console do navegador para mensagens de erro.
#### Configuração do Token do GitLab
-O OpenHands exporta automaticamente um `GITLAB_TOKEN` para o ambiente shell, apenas para instalações locais, se ele estiver disponível.
+O OpenHands exporta automaticamente um `GITLAB_TOKEN` para o ambiente shell se fornecido:
Configurando um Token do GitLab
- 1. **Gere um Personal Access Token (PAT)**:
- - No GitLab, vá para User Settings > Access Tokens.
+ 1. **Gerar um Token de Acesso Pessoal (PAT)**:
+ - No GitLab, vá para Configurações do Usuário > Tokens de Acesso.
- Crie um novo token com os seguintes escopos:
- `api` (Acesso à API)
- - `read_user` (Leitura de informações do usuário)
- - `read_repository` (Leitura do repositório)
- - `write_repository` (Escrita no repositório)
+ - `read_user` (Ler informações do usuário)
+ - `read_repository` (Ler repositório)
+ - `write_repository` (Escrever no repositório)
- Defina uma data de expiração ou deixe em branco para um token sem expiração.
- 2. **Insira o Token no OpenHands**:
- - Clique no botão Settings (ícone de engrenagem).
- - Navegue até a seção `Git Provider Settings`.
- - Cole seu token no campo `GitLab Token`.
- - Se estiver usando GitLab auto-hospedado, insira a URL da sua instância GitLab.
- - Clique em `Save Changes` para aplicar as alterações.
+ 2. **Inserir Token no OpenHands**:
+ - Clique no botão Configurações (ícone de engrenagem).
+ - Cole seu token no campo `Token do GitLab`.
+ - Insira a URL da sua instância GitLab se estiver usando GitLab auto-hospedado.
+ - Clique em `Salvar` para aplicar as alterações.
@@ -128,35 +109,34 @@ O OpenHands exporta automaticamente um `GITLAB_TOKEN` para o ambiente shell, ape
Problemas comuns e soluções:
- **Token Não Reconhecido**:
- - Certifique-se de que o token esteja salvo corretamente nas configurações.
+ - Certifique-se de que o token está devidamente salvo nas configurações.
- Verifique se o token não expirou.
- - Verifique se o token possui os escopos necessários.
- - Para instâncias auto-hospedadas, verifique a URL correta da instância.
+ - Confirme se o token tem os escopos necessários.
+ - Para instâncias auto-hospedadas, verifique se a URL da instância está correta.
- **Acesso Negado**:
- Verifique as permissões de acesso ao projeto.
- - Verifique se o token possui os escopos necessários.
+ - Confirme se o token tem os escopos necessários.
- Para repositórios de grupo/organização, certifique-se de ter o acesso adequado.
### Configurações Avançadas
-1. Dentro da página Settings, ative as opções `Advanced` para acessar configurações adicionais.
-2. Use a caixa de texto `Custom Model` para inserir manualmente um modelo se ele não estiver na lista.
-3. Especifique uma `Base URL` se necessário para o seu provedor de LLM.
+1. Na página de Configurações, ative as opções `Avançadas` para acessar configurações adicionais.
+2. Use a caixa de texto `Modelo Personalizado` para inserir manualmente um modelo se ele não estiver na lista.
+3. Especifique uma `URL Base` se necessário pelo seu provedor LLM.
### Interagindo com a IA
1. Digite seu prompt na caixa de entrada.
-2. Clique no botão de envio ou pressione Enter para enviar sua mensagem.
+2. Clique no botão de enviar ou pressione Enter para enviar sua mensagem.
3. A IA processará sua entrada e fornecerá uma resposta na janela de chat.
4. Você pode continuar a conversa fazendo perguntas de acompanhamento ou fornecendo informações adicionais.
## Dicas para Uso Eficaz
-- Seja específico em suas solicitações para obter as respostas mais precisas e úteis, conforme descrito nas [melhores práticas de prompting](../prompting/prompting-best-practices).
-- Use o painel de workspace para explorar a estrutura do seu projeto.
-- Use um dos modelos recomendados, conforme descrito na seção [LLMs](usage/llms/llms.md).
+- Seja específico em suas solicitações para obter respostas mais precisas e úteis, conforme descrito nas [melhores práticas de prompt](../prompting/prompting-best-practices).
+- Use um dos modelos recomendados, conforme descrito na [seção LLMs](usage/llms/llms.md).
-Lembre-se, o modo GUI do OpenHands é projetado para tornar sua interação com o assistente de IA o mais suave e intuitiva
-possível. Não hesite em explorar seus recursos para maximizar sua produtividade.
+Lembre-se, o modo GUI do OpenHands foi projetado para tornar sua interação com o assistente de IA o mais suave e intuitiva
+possível. Não hesite em explorar seus recursos para maximizar sua produtividade.
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/headless-mode.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/headless-mode.md
index 2c139aeec529..7e8a9b33b346 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/headless-mode.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/how-to/headless-mode.md
@@ -7,23 +7,25 @@ Isso é diferente do [Modo CLI](cli-mode), que é interativo e melhor para desen
## Com Python
-Para executar o OpenHands no modo headless com Python:
+Para executar o OpenHands em modo headless com Python:
1. Certifique-se de ter seguido as [instruções de configuração de desenvolvimento](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md).
2. Execute o seguinte comando:
```bash
-poetry run python -m openhands.core.main -t "escreva um script bash que imprima oi"
+poetry run python -m openhands.core.main -t "write a bash script that prints hi"
```
-Você precisará definir seu modelo, chave de API e outras configurações por meio de variáveis de ambiente
+Você precisará definir seu modelo, chave de API e outras configurações através de variáveis de ambiente
[ou do arquivo `config.toml`](https://github.com/All-Hands-AI/OpenHands/blob/main/config.template.toml).
## Com Docker
-Para executar o OpenHands no modo Headless com Docker:
+Para executar o OpenHands em modo Headless com Docker:
-1. Defina as seguintes variáveis de ambiente no seu terminal:
+1. Defina as seguintes variáveis de ambiente em seu terminal:
-- `WORKSPACE_BASE` para o diretório que você deseja que o OpenHands edite (Ex: `export WORKSPACE_BASE=$(pwd)/workspace`).
+- `SANDBOX_VOLUMES` para especificar o diretório que você quer que o OpenHands acesse (Ex: `export SANDBOX_VOLUMES=$(pwd)/workspace:/workspace:rw`).
+ - O agente trabalha em `/workspace` por padrão, então monte seu diretório de projeto lá se quiser que o agente modifique arquivos.
+ - Para dados somente leitura, use um caminho de montagem diferente (Ex: `export SANDBOX_VOLUMES=$(pwd)/workspace:/workspace:rw,/path/to/large/dataset:/data:ro`).
- `LLM_MODEL` para o modelo a ser usado (Ex: `export LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"`).
- `LLM_API_KEY` para a chave de API (Ex: `export LLM_API_KEY="sk_test_12345"`).
@@ -34,23 +36,25 @@ 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 \
--name openhands-app-$(date +%Y%m%d%H%M%S) \
docker.all-hands.dev/all-hands-ai/openhands:0.36 \
- python -m openhands.core.main -t "escreva um script bash que imprima oi"
+ python -m openhands.core.main -t "write a bash script that prints hi"
```
-## Configurações Avançadas do Headless
+O `-e SANDBOX_USER_ID=$(id -u)` é passado para o comando Docker para garantir que o usuário da sandbox corresponda às
+permissões do usuário do host. Isso impede que o agente crie arquivos pertencentes ao root no workspace montado.
-Para visualizar todas as opções de configuração disponíveis para o modo headless, execute o comando Python com a flag `--help`.
+## Configurações Avançadas do Modo Headless
+
+Para ver todas as opções de configuração disponíveis para o modo headless, execute o comando Python com a flag `--help`.
### Logs Adicionais
-Para que o modo headless registre todas as ações do agente, execute no terminal: `export LOG_ALL_EVENTS=true`
+Para que o modo headless registre todas as ações do agente, execute no terminal: `export LOG_ALL_EVENTS=true`
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/installation.mdx b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/installation.mdx
index f9d4fb3b5df6..3aa78115c5b8 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/installation.mdx
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/installation.mdx
@@ -1,4 +1,4 @@
-# Executando OpenHands
+# Executando o OpenHands
## Requisitos do Sistema
@@ -6,7 +6,7 @@
- Linux
- Windows com [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) e [suporte ao Docker Desktop](https://docs.docker.com/desktop/setup/install/windows-install/#system-requirements)
-É recomendado um sistema com um processador moderno e um mínimo de **4GB de RAM** para executar o OpenHands.
+É recomendado um sistema com processador moderno e no mínimo **4GB de RAM** para executar o OpenHands.
## Pré-requisitos
@@ -16,7 +16,7 @@
**Docker Desktop**
1. [Instale o Docker Desktop no Mac](https://docs.docker.com/desktop/setup/install/mac-install).
- 2. Abra o Docker Desktop, vá em `Settings > Advanced` e certifique-se de que `Allow the default Docker socket to be used` esteja habilitado.
+ 2. Abra o Docker Desktop, vá para `Settings > Advanced` e certifique-se de que `Allow the default Docker socket to be used` esteja habilitado.
@@ -43,7 +43,7 @@
**Docker Desktop**
1. [Instale o Docker Desktop no Windows](https://docs.docker.com/desktop/setup/install/windows-install).
- 2. Abra o Docker Desktop, vá em `Settings` e confirme o seguinte:
+ 2. Abra o Docker Desktop, vá para `Settings` e confirme o seguinte:
- General: `Use the WSL 2 based engine` está habilitado.
- Resources > WSL Integration: `Enable integration with my default WSL distro` está habilitado.
@@ -53,7 +53,7 @@
-## Inicie o Aplicativo
+## Iniciar o Aplicativo
A maneira mais fácil de executar o OpenHands é no Docker.
@@ -71,34 +71,51 @@ docker run -it --rm --pull=always \
docker.all-hands.dev/all-hands-ai/openhands:0.36
```
-Você encontrará o OpenHands em execução em http://localhost:3000!
+Você encontrará o OpenHands rodando em http://localhost:3000!
-Você também pode [conectar o OpenHands ao seu sistema de arquivos local](https://docs.all-hands.dev/modules/usage/runtimes#connecting-to-your-filesystem),
-executar o OpenHands em um [modo headless programável](https://docs.all-hands.dev/modules/usage/how-to/headless-mode),
+Você também pode [conectar o OpenHands ao seu sistema de arquivos local](https://docs.all-hands.dev/modules/usage/runtimes/docker#connecting-to-your-filesystem),
+executar o OpenHands em um [modo headless](https://docs.all-hands.dev/modules/usage/how-to/headless-mode) programável,
interagir com ele através de uma [CLI amigável](https://docs.all-hands.dev/modules/usage/how-to/cli-mode),
ou executá-lo em issues marcadas com [uma ação do GitHub](https://docs.all-hands.dev/modules/usage/how-to/github-action).
## Configuração
-Ao iniciar o OpenHands, você verá uma página de Configurações. Você **deve** selecionar um `LLM Provider` e `LLM Model` e inserir uma `API Key` correspondente.
-Estes podem ser alterados a qualquer momento selecionando o botão `Settings` (ícone de engrenagem) na interface do usuário.
+Após iniciar o OpenHands, você **deve** selecionar um `LLM Provider` e um `LLM Model` e inserir uma `API Key` correspondente.
+Isso pode ser feito durante o popup de configurações iniciais ou selecionando o botão `Settings`
+(ícone de engrenagem) na interface.
-Se o modelo necessário não existir na lista, você pode ativar as opções `Advanced` e inseri-lo manualmente com o prefixo correto
+Se o modelo necessário não existir na lista, você pode ativar as opções `Advanced` e inserir manualmente com o prefixo correto
na caixa de texto `Custom Model`.
-As opções `Advanced` também permitem que você especifique uma `Base URL`, se necessário.
+As opções `Advanced` também permitem especificar uma `Base URL` se necessário.
-Agora você está pronto para [começar com o OpenHands](./getting-started).
+### Obtendo uma API Key
+
+O OpenHands requer uma chave de API para acessar a maioria dos modelos de linguagem. Veja como obter uma chave de API dos provedores recomendados:
+
+#### Anthropic (Claude)
+
+1. [Crie uma conta Anthropic](https://console.anthropic.com/).
+2. [Gere uma chave de API](https://console.anthropic.com/settings/keys).
+3. [Configure o faturamento](https://console.anthropic.com/settings/billing).
+
+Considere definir limites de uso para controlar os custos.
+
+#### OpenAI
+
+1. [Crie uma conta OpenAI](https://platform.openai.com/).
+2. [Gere uma chave de API](https://platform.openai.com/api-keys).
+3. [Configure o faturamento](https://platform.openai.com/account/billing/overview).
+
+Agora você está pronto para [começar a usar o OpenHands](./getting-started).
## Versões
O [comando docker acima](./installation#start-the-app) baixa a versão estável mais recente do OpenHands. Você também tem outras opções:
-- Para uma versão específica, substitua $VERSION em `openhands:$VERSION` e `runtime:$VERSION`, com o número da versão.
+- Para uma versão específica, substitua $VERSION em `openhands:$VERSION` e `runtime:$VERSION` pelo número da versão.
Usamos SemVer, então `0.9` apontará automaticamente para a versão mais recente `0.9.x`, e `0` apontará para a versão mais recente `0.x.x`.
-- Para a versão de desenvolvimento mais atualizada, substitua $VERSION em `openhands:$VERSION` e `runtime:$VERSION`, por `main`.
+- Para a versão de desenvolvimento mais atualizada, substitua $VERSION em `openhands:$VERSION` e `runtime:$VERSION` por `main`.
Esta versão é instável e é recomendada apenas para fins de teste ou desenvolvimento.
-Você pode escolher a tag que melhor se adapta às suas necessidades com base nos requisitos de estabilidade e recursos desejados.
-
Para o fluxo de trabalho de desenvolvimento, consulte [Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md).
-Está tendo problemas? Confira nosso [Guia de Solução de Problemas](https://docs.all-hands.dev/modules/usage/troubleshooting).
+Está tendo problemas? Confira nosso [Guia de Solução de Problemas](https://docs.all-hands.dev/modules/usage/troubleshooting).
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/key-features.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/key-features.md
new file mode 100644
index 000000000000..33b5904079dc
--- /dev/null
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/key-features.md
@@ -0,0 +1,29 @@
+# Visão Geral dos Recursos do OpenHands
+
+
+
+### Painel de Chat
+- Exibe a conversa entre o usuário e o OpenHands.
+- O OpenHands explica suas ações neste painel.
+
+### Mudanças
+- Mostra as alterações de arquivos realizadas pelo OpenHands.
+
+### VS Code
+- VS Code incorporado para navegar e modificar arquivos.
+- Também pode ser usado para fazer upload e download de arquivos.
+
+### Terminal
+- Um espaço para o OpenHands e os usuários executarem comandos de terminal.
+
+### Jupyter
+- Mostra todos os comandos Python que foram executados pelo OpenHands.
+- Particularmente útil ao usar o OpenHands para realizar tarefas de visualização de dados.
+
+### App
+- Exibe o servidor web quando o OpenHands executa uma aplicação.
+- Os usuários podem interagir com a aplicação em execução.
+
+### Navegador
+- Usado pelo OpenHands para navegar em sites.
+- O navegador não é interativo.
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/azure-llms.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/azure-llms.md
index ebd9bd65ac76..bc58db582368 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/azure-llms.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/azure-llms.md
@@ -1,14 +1,14 @@
# Azure
-O OpenHands usa o LiteLLM para fazer chamadas para os modelos de chat do Azure. Você pode encontrar a documentação sobre como usar o Azure como provedor [aqui](https://docs.litellm.ai/docs/providers/azure).
+OpenHands usa o LiteLLM para fazer chamadas aos modelos de chat do Azure. Você pode encontrar a documentação sobre como usar o Azure como provedor [aqui](https://docs.litellm.ai/docs/providers/azure).
## Configuração do Azure OpenAI
-Ao executar o OpenHands, você precisará definir a seguinte variável de ambiente usando `-e` no
+Ao executar o OpenHands, você precisará definir a seguinte variável de ambiente usando `-e` no
[comando docker run](../installation#running-openhands):
```
-LLM_API_VERSION="" # por exemplo, "2023-05-15"
+LLM_API_VERSION="" # ex: "2023-05-15"
```
Exemplo:
@@ -18,18 +18,18 @@ docker run -it --pull=always \
...
```
-Então, nas configurações da interface do usuário do OpenHands:
+Em seguida, nas Configurações da interface do OpenHands:
:::note
-Você precisará do nome da sua implantação do ChatGPT, que pode ser encontrado na página de implantações no Azure. Isso é referenciado como
+Você precisará do nome da implantação do ChatGPT, que pode ser encontrado na página de implantações no Azure. Este é referenciado como
<deployment-name> abaixo.
:::
-1. Habilite as opções `Advanced`
-2. Defina o seguinte:
+1. Habilite as opções `Advanced`.
+2. Configure o seguinte:
- `Custom Model` para azure/<deployment-name>
- - `Base URL` para a URL base da sua API do Azure (por exemplo, `https://example-endpoint.openai.azure.com`)
- - `API Key` para a sua chave de API do Azure
+ - `Base URL` para a URL base da API do Azure (ex: `https://example-endpoint.openai.azure.com`)
+ - `API Key` para sua chave de API do Azure
### Configuração do Azure OpenAI
@@ -37,5 +37,5 @@ Ao executar o OpenHands, defina a seguinte variável de ambiente usando `-e` no
[comando docker run](../installation#running-openhands):
```
-LLM_API_VERSION="" # por exemplo, "2024-02-15-preview"
-```
+LLM_API_VERSION="" # ex: "2024-02-15-preview"
+```
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/custom-llm-configs.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/custom-llm-configs.md
index 452fbc6acf5d..eb889e6084aa 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/custom-llm-configs.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/custom-llm-configs.md
@@ -4,30 +4,30 @@ O OpenHands suporta a definição de múltiplas configurações nomeadas de LLM
## Como Funciona
-As configurações nomeadas de LLM são definidas no arquivo `config.toml` usando seções que começam com `llm.`. Por exemplo:
+Configurações nomeadas de LLM são definidas no arquivo `config.toml` usando seções que começam com `llm.`. Por exemplo:
```toml
# Configuração padrão de LLM
[llm]
model = "gpt-4"
-api_key = "your-api-key"
+api_key = "sua-chave-api"
temperature = 0.0
# Configuração personalizada de LLM para um modelo mais barato
[llm.gpt3]
model = "gpt-3.5-turbo"
-api_key = "your-api-key"
+api_key = "sua-chave-api"
temperature = 0.2
# Outra configuração personalizada com parâmetros diferentes
-[llm.high-creativity]
+[llm.alta-criatividade]
model = "gpt-4"
-api_key = "your-api-key"
+api_key = "sua-chave-api"
temperature = 0.8
top_p = 0.9
```
-Cada configuração nomeada herda todas as configurações da seção padrão `[llm]` e pode sobrescrever qualquer uma dessas configurações. Você pode definir quantas configurações personalizadas forem necessárias.
+Cada configuração nomeada herda todas as configurações da seção padrão `[llm]` e pode substituir qualquer uma dessas configurações. Você pode definir quantas configurações personalizadas forem necessárias.
## Usando Configurações Personalizadas
@@ -37,22 +37,22 @@ Você pode especificar qual configuração de LLM um agente deve usar definindo
```toml
[agent.RepoExplorerAgent]
-# Usa a configuração mais barata do GPT-3 para este agente
+# Use a configuração mais barata do GPT-3 para este agente
llm_config = 'gpt3'
[agent.CodeWriterAgent]
-# Usa a configuração de alta criatividade para este agente
-llm_config = 'high-creativity'
+# Use a configuração de alta criatividade para este agente
+llm_config = 'alta-criatividade'
```
### Opções de Configuração
-Cada configuração nomeada de LLM suporta todas as mesmas opções que a configuração padrão de LLM. Isso inclui:
+Cada configuração nomeada de LLM suporta todas as mesmas opções que a configuração padrão de LLM. Estas incluem:
- Seleção de modelo (`model`)
-- Configuração da API (`api_key`, `base_url`, etc.)
+- Configuração de API (`api_key`, `base_url`, etc.)
- Parâmetros do modelo (`temperature`, `top_p`, etc.)
-- Configurações de repetição (`num_retries`, `retry_multiplier`, etc.)
+- Configurações de tentativas (`num_retries`, `retry_multiplier`, etc.)
- Limites de tokens (`max_input_tokens`, `max_output_tokens`)
- E todas as outras opções de configuração de LLM
@@ -60,10 +60,10 @@ Para uma lista completa das opções disponíveis, consulte a seção Configura
## Casos de Uso
-As configurações personalizadas de LLM são particularmente úteis em vários cenários:
+Configurações personalizadas de LLM são particularmente úteis em vários cenários:
-- **Otimização de Custos**: Use modelos mais baratos para tarefas que não exigem respostas de alta qualidade, como exploração de repositório ou operações simples de arquivos.
-- **Ajuste Específico de Tarefas**: Configure diferentes valores de temperature e top_p para tarefas que exigem diferentes níveis de criatividade ou determinismo.
+- **Otimização de Custos**: Use modelos mais baratos para tarefas que não exigem respostas de alta qualidade, como exploração de repositório ou operações simples de arquivo.
+- **Ajuste Específico para Tarefas**: Configure diferentes valores de temperatura e top_p para tarefas que exigem diferentes níveis de criatividade ou determinismo.
- **Diferentes Provedores**: Use diferentes provedores de LLM ou endpoints de API para diferentes tarefas.
- **Testes e Desenvolvimento**: Alterne facilmente entre diferentes configurações de modelo durante o desenvolvimento e testes.
@@ -75,7 +75,7 @@ Um exemplo prático de uso de configurações personalizadas de LLM para otimiza
# Configuração padrão usando GPT-4 para respostas de alta qualidade
[llm]
model = "gpt-4"
-api_key = "your-api-key"
+api_key = "sua-chave-api"
temperature = 0.0
# Configuração mais barata para exploração de repositório
@@ -97,19 +97,19 @@ llm_config = 'code-gen'
```
Neste exemplo:
-- A exploração de repositório usa um modelo mais barato, pois envolve principalmente entender e navegar pelo código
-- A geração de código usa GPT-4 com um limite maior de tokens para gerar blocos de código maiores
+- A exploração do repositório usa um modelo mais barato, já que envolve principalmente entender e navegar pelo código
+- A geração de código usa GPT-4 com um limite de token mais alto para gerar blocos de código maiores
- A configuração padrão permanece disponível para outras tarefas
# Configurações Personalizadas com Nomes Reservados
-O OpenHands pode usar configurações personalizadas de LLM nomeadas com nomes reservados, para casos de uso específicos. Se você especificar o modelo e outras configurações sob os nomes reservados, então o OpenHands irá carregá-los e usá-los para um propósito específico. Até agora, uma dessas configurações está implementada: editor de rascunho.
+O OpenHands pode usar configurações personalizadas de LLM nomeadas com nomes reservados, para casos de uso específicos. Se você especificar o modelo e outras configurações sob os nomes reservados, o OpenHands irá carregá-los e usá-los para um propósito específico. Até o momento, uma dessas configurações está implementada: editor de rascunho.
## Configuração do Editor de Rascunho
-A configuração `draft_editor` é um grupo de configurações que você pode fornecer, para especificar o modelo a ser usado para a elaboração preliminar de edições de código, para quaisquer tarefas que envolvam edição e refinamento de código. Você precisa fornecê-la na seção `[llm.draft_editor]`.
+A configuração `draft_editor` é um grupo de configurações que você pode fornecer para especificar o modelo a ser usado para rascunhos preliminares de edições de código, para quaisquer tarefas que envolvam edição e refinamento de código. Você precisa fornecê-la na seção `[llm.draft_editor]`.
-Por exemplo, você pode definir em `config.toml` um editor de rascunho assim:
+Por exemplo, você pode definir no `config.toml` um editor de rascunho assim:
```toml
[llm.draft_editor]
@@ -122,15 +122,15 @@ frequency_penalty = 0.0
Esta configuração:
- Usa GPT-4 para edições e sugestões de alta qualidade
-- Define uma temperatura baixa (0,2) para manter a consistência, permitindo alguma flexibilidade
-- Usa um valor alto de top_p (0,95) para considerar uma ampla gama de opções de tokens
+- Define uma temperatura baixa (0.2) para manter a consistência enquanto permite alguma flexibilidade
+- Usa um valor alto de top_p (0.95) para considerar uma ampla gama de opções de tokens
- Desativa as penalidades de presença e frequência para manter o foco nas edições específicas necessárias
-Use esta configuração quando quiser que um LLM faça um rascunho das edições antes de realizá-las. Em geral, pode ser útil para:
+Use esta configuração quando quiser permitir que um LLM faça rascunhos de edições antes de realizá-las. Em geral, pode ser útil para:
- Revisar e sugerir melhorias de código
-- Refinar o conteúdo existente, mantendo seu significado principal
-- Fazer alterações precisas e focadas no código ou texto
+- Refinar conteúdo existente mantendo seu significado central
+- Fazer alterações precisas e focadas em código ou texto
:::note
-As configurações personalizadas de LLM estão disponíveis apenas quando se usa o OpenHands no modo de desenvolvimento, via `main.py` ou `cli.py`. Ao executar via `docker run`, por favor, use as opções de configuração padrão.
-:::
+Configurações personalizadas de LLM estão disponíveis apenas ao usar o OpenHands no modo de desenvolvimento, via `main.py` ou `cli.py`. Ao executar via `docker run`, use as opções de configuração padrão.
+:::
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/google-llms.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/google-llms.md
index 3d70efb049c0..73b5e0ad0f1c 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/google-llms.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/google-llms.md
@@ -7,10 +7,10 @@ O OpenHands usa o LiteLLM para fazer chamadas aos modelos de chat do Google. Voc
## Configurações do Gemini - Google AI Studio
-Ao executar o OpenHands, você precisará definir o seguinte na interface do usuário do OpenHands através das Configurações:
+Ao executar o OpenHands, você precisará definir o seguinte na interface do OpenHands através das Configurações:
- `LLM Provider` para `Gemini`
- `LLM Model` para o modelo que você usará.
-Se o modelo não estiver na lista, ative as opções `Advanced` e insira-o em `Custom Model` (por exemplo, gemini/<model-name> como `gemini/gemini-1.5-pro`).
+Se o modelo não estiver na lista, ative as opções `Advanced` e insira-o em `Custom Model` (por exemplo, gemini/<nome-do-modelo> como `gemini/gemini-2.0-flash`).
- `API Key` para sua chave de API do Gemini
## Configurações do VertexAI - Google Cloud Platform
@@ -18,12 +18,12 @@ Se o modelo não estiver na lista, ative as opções `Advanced` e insira-o em `C
Para usar o Vertex AI através do Google Cloud Platform ao executar o OpenHands, você precisará definir as seguintes variáveis de ambiente usando `-e` no [comando docker run](../installation#running-openhands):
```
-GOOGLE_APPLICATION_CREDENTIALS=""
-VERTEXAI_PROJECT=""
-VERTEXAI_LOCATION=""
+GOOGLE_APPLICATION_CREDENTIALS=""
+VERTEXAI_PROJECT=""
+VERTEXAI_LOCATION=""
```
-Em seguida, defina o seguinte na interface do usuário do OpenHands através das Configurações:
+Em seguida, defina o seguinte na interface do OpenHands através das Configurações:
- `LLM Provider` para `VertexAI`
- `LLM Model` para o modelo que você usará.
-Se o modelo não estiver na lista, ative as opções `Advanced` e insira-o em `Custom Model` (por exemplo, vertex_ai/<model-name>).
+Se o modelo não estiver na lista, ative as opções `Advanced` e insira-o em `Custom Model` (por exemplo, vertex_ai/<nome-do-modelo>).
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/groq.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/groq.md
index b3e13f102e03..f2a963ae7151 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/groq.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/groq.md
@@ -1,21 +1,24 @@
# Groq
-O OpenHands usa o LiteLLM para fazer chamadas para modelos de chat no Groq. Você pode encontrar a documentação deles sobre como usar o Groq como provedor [aqui](https://docs.litellm.ai/docs/providers/groq).
+OpenHands usa LiteLLM para fazer chamadas a modelos de chat no Groq. Você pode encontrar a documentação sobre como usar o Groq como provedor [aqui](https://docs.litellm.ai/docs/providers/groq).
## Configuração
-Ao executar o OpenHands, você precisará definir o seguinte na interface do usuário do OpenHands através das Configurações:
+Ao executar o OpenHands, você precisará definir o seguinte na interface do OpenHands através das Configurações:
- `LLM Provider` para `Groq`
-- `LLM Model` para o modelo que você usará. [Visite aqui para ver a lista de modelos que o Groq hospeda](https://console.groq.com/docs/models). Se o modelo não estiver na lista, ative as opções `Advanced` e insira-o em `Custom Model` (por exemplo, groq/<model-name> como `groq/llama3-70b-8192`).
+- `LLM Model` para o modelo que você usará. [Visite aqui para ver a lista de
+modelos que o Groq hospeda](https://console.groq.com/docs/models). Se o modelo não estiver na lista, ative
+as opções `Advanced` e insira-o em `Custom Model` (por exemplo, groq/<nome-do-modelo> como `groq/llama3-70b-8192`).
- `API key` para sua chave de API do Groq. Para encontrar ou criar sua chave de API do Groq, [veja aqui](https://console.groq.com/keys).
## Usando o Groq como um Endpoint Compatível com OpenAI
-O endpoint do Groq para conclusão de chat é [em grande parte compatível com OpenAI](https://console.groq.com/docs/openai). Portanto, você pode acessar os modelos do Groq como acessaria qualquer endpoint compatível com OpenAI. Na interface do usuário do OpenHands, através das Configurações:
-1. Habilite as opções `Advanced`
-2. Defina o seguinte:
- - `Custom Model` para o prefixo `openai/` + o modelo que você usará (por exemplo, `openai/llama3-70b-8192`)
+O endpoint do Groq para chat completion é [majoritariamente compatível com OpenAI](https://console.groq.com/docs/openai). Portanto, você pode acessar os modelos do Groq como
+acessaria qualquer endpoint compatível com OpenAI. Na interface do OpenHands através das Configurações:
+1. Ative as opções `Advanced`
+2. Configure o seguinte:
+ - `Custom Model` com o prefixo `openai/` + o modelo que você usará (por exemplo, `openai/llama3-70b-8192`)
- `Base URL` para `https://api.groq.com/openai/v1`
- - `API Key` para sua chave de API do Groq
+ - `API Key` para sua chave de API do Groq
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/litellm-proxy.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/litellm-proxy.md
index b21d7194a310..b10cd02a0f7e 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/litellm-proxy.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/litellm-proxy.md
@@ -1,22 +1,20 @@
-Here is the translation to Brazilian Portuguese:
-
# Proxy LiteLLM
-O OpenHands suporta o uso do [proxy LiteLLM](https://docs.litellm.ai/docs/proxy/quick_start) para acessar vários provedores de LLM.
+O OpenHands oferece suporte ao uso do [proxy LiteLLM](https://docs.litellm.ai/docs/proxy/quick_start) para acessar vários provedores de LLM.
## Configuração
Para usar o proxy LiteLLM com o OpenHands, você precisa:
1. Configurar um servidor proxy LiteLLM (veja a [documentação do LiteLLM](https://docs.litellm.ai/docs/proxy/quick_start))
-2. Ao executar o OpenHands, você precisará definir o seguinte na interface do usuário do OpenHands através das Configurações:
- * Habilitar opções `Avançadas`
- * `Modelo Personalizado` para o prefixo `litellm_proxy/` + o modelo que você usará (por exemplo, `litellm_proxy/anthropic.claude-3-5-sonnet-20241022-v2:0`)
- * `URL Base` para a URL do seu proxy LiteLLM (por exemplo, `https://your-litellm-proxy.com`)
- * `Chave de API` para a chave de API do seu proxy LiteLLM
+2. Ao executar o OpenHands, você precisará definir o seguinte na interface do OpenHands através das Configurações:
+ * Ativar opções `Avançadas`
+ * `Modelo Personalizado` com o prefixo `litellm_proxy/` + o modelo que você usará (ex: `litellm_proxy/anthropic.claude-3-5-sonnet-20241022-v2:0`)
+ * `URL Base` para a URL do seu proxy LiteLLM (ex: `https://your-litellm-proxy.com`)
+ * `Chave API` para a chave API do seu proxy LiteLLM
## Modelos Suportados
-Os modelos suportados dependem da configuração do seu proxy LiteLLM. O OpenHands suporta qualquer modelo que o seu proxy LiteLLM esteja configurado para lidar.
+Os modelos suportados dependem da configuração do seu proxy LiteLLM. O OpenHands suporta qualquer modelo que seu proxy LiteLLM esteja configurado para gerenciar.
-Consulte a configuração do seu proxy LiteLLM para obter a lista de modelos disponíveis e seus nomes.
+Consulte a configuração do seu proxy LiteLLM para obter a lista de modelos disponíveis e seus nomes.
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/llms.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/llms.md
index 741d130b21d8..0d8d4add22f0 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/llms.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/llms.md
@@ -1,38 +1,54 @@
# 🤖 Backends de LLM
-O OpenHands pode se conectar a qualquer LLM suportado pelo LiteLLM. No entanto, ele requer um modelo poderoso para funcionar.
+:::note
+Esta seção é para usuários que desejam conectar o OpenHands a diferentes LLMs.
+:::
+
+O OpenHands pode se conectar a qualquer LLM suportado pelo LiteLLM. No entanto, requer um modelo poderoso para funcionar.
-## Recomendações de Modelo
+## Recomendações de Modelos
-Com base em nossas avaliações de modelos de linguagem para tarefas de codificação (usando o conjunto de dados SWE-bench), podemos fornecer algumas recomendações para a seleção de modelos. Nossos resultados mais recentes de benchmarking podem ser encontrados nesta [planilha](https://docs.google.com/spreadsheets/d/1wOUdFCMyY6Nt0AIqF705KN4JKOWgeI4wUGUP60krXXs/edit?gid=0).
+Com base em nossas avaliações de modelos de linguagem para tarefas de codificação (usando o conjunto de dados SWE-bench), podemos fornecer algumas
+recomendações para seleção de modelos. Nossos resultados de benchmarking mais recentes podem ser encontrados nesta [planilha](https://docs.google.com/spreadsheets/d/1wOUdFCMyY6Nt0AIqF705KN4JKOWgeI4wUGUP60krXXs/edit?gid=0).
-Com base nessas descobertas e no feedback da comunidade, os seguintes modelos foram verificados como funcionando razoavelmente bem com o OpenHands:
+Com base nessas descobertas e feedback da comunidade, os seguintes modelos foram verificados e funcionam razoavelmente bem com o OpenHands:
+
+- [anthropic/claude-3-7-sonnet-20250219](https://www.anthropic.com/api) (recomendado)
+- [gemini/gemini-2.5-pro](https://blog.google/technology/google-deepmind/gemini-model-thinking-updates-march-2025/)
+- [deepseek/deepseek-chat](https://api-docs.deepseek.com/)
+- [openai/o3-mini](https://openai.com/index/openai-o3-mini/)
+- [openai/o3](https://openai.com/index/introducing-o3-and-o4-mini/)
+- [openai/o4-mini](https://openai.com/index/introducing-o3-and-o4-mini/)
+- [all-hands/openhands-lm-32b-v0.1](https://www.all-hands.dev/blog/introducing-openhands-lm-32b----a-strong-open-coding-agent-model) -- disponível através do [OpenRouter](https://openrouter.ai/all-hands/openhands-lm-32b-v0.1)
-- anthropic/claude-3-5-sonnet-20241022 (recomendado)
-- anthropic/claude-3-5-haiku-20241022
-- deepseek/deepseek-chat
-- gpt-4o
:::warning
-O OpenHands enviará muitos prompts para o LLM que você configurar. A maioria desses LLMs custa dinheiro, então certifique-se de definir limites de gastos e monitorar o uso.
+O OpenHands enviará muitos prompts ao LLM que você configurar. A maioria desses LLMs custa dinheiro, então certifique-se de definir limites de gastos e monitorar o uso.
:::
-Para obter uma lista completa dos provedores e modelos disponíveis, consulte a [documentação do litellm](https://docs.litellm.ai/docs/providers).
+Se você executou com sucesso o OpenHands com LLMs específicos que não estão na lista, adicione-os à lista verificada. Também incentivamos que você abra um PR para compartilhar seu processo de configuração e ajudar outros que usam o mesmo provedor e LLM!
+
+Para uma lista completa dos provedores e modelos disponíveis, consulte a
+[documentação do litellm](https://docs.litellm.ai/docs/providers).
:::note
-A maioria dos modelos locais e de código aberto atuais não são tão poderosos. Ao usar esses modelos, você pode ver longos tempos de espera entre as mensagens, respostas ruins ou erros sobre JSON malformado. O OpenHands só pode ser tão poderoso quanto os modelos que o impulsionam. No entanto, se você encontrar alguns que funcionem, adicione-os à lista verificada acima.
+A maioria dos modelos locais e de código aberto atuais não são tão poderosos. Ao usar esses modelos, você pode observar longos
+tempos de espera entre mensagens, respostas ruins ou erros sobre JSON malformado. O OpenHands só pode ser tão poderoso quanto os
+modelos que o impulsionam. No entanto, se você encontrar modelos que funcionem, adicione-os à lista verificada acima.
:::
-## Configuração do LLM
+## Configuração de LLM
-O seguinte pode ser definido na interface do usuário do OpenHands por meio das Configurações:
+O seguinte pode ser configurado na interface do OpenHands através das Configurações:
- `Provedor LLM`
- `Modelo LLM`
- `Chave API`
- `URL Base` (através das configurações `Avançadas`)
-Existem algumas configurações que podem ser necessárias para alguns LLMs/provedores que não podem ser definidas através da interface do usuário. Em vez disso, elas podem ser definidas por meio de variáveis de ambiente passadas para o comando docker run ao iniciar o aplicativo usando `-e`:
+Existem algumas configurações que podem ser necessárias para alguns LLMs/provedores que não podem ser definidas através da interface. Em vez disso, estas
+podem ser definidas através de variáveis de ambiente passadas para o comando docker run ao iniciar o aplicativo
+usando `-e`:
- `LLM_API_VERSION`
- `LLM_EMBEDDING_MODEL`
@@ -41,27 +57,30 @@ Existem algumas configurações que podem ser necessárias para alguns LLMs/prov
- `LLM_DISABLE_VISION`
- `LLM_CACHING_PROMPT`
-Temos alguns guias para executar o OpenHands com provedores de modelo específicos:
+Temos alguns guias para executar o OpenHands com provedores de modelos específicos:
- [Azure](llms/azure-llms)
- [Google](llms/google-llms)
- [Groq](llms/groq)
+- [LLMs Locais com SGLang ou vLLM](llms/../local-llms.md)
- [LiteLLM Proxy](llms/litellm-proxy)
- [OpenAI](llms/openai-llms)
- [OpenRouter](llms/openrouter)
### Novas tentativas de API e limites de taxa
-Os provedores de LLM normalmente têm limites de taxa, às vezes muito baixos, e podem exigir novas tentativas. O OpenHands tentará automaticamente as solicitações novamente se receber um Erro de Limite de Taxa (código de erro 429).
+Provedores de LLM geralmente têm limites de taxa, às vezes muito baixos, e podem exigir novas tentativas. O OpenHands automaticamente
+tentará novamente as solicitações se receber um Erro de Limite de Taxa (código de erro 429).
-Você pode personalizar essas opções conforme necessário para o provedor que está usando. Verifique a documentação deles e defina as seguintes variáveis de ambiente para controlar o número de novas tentativas e o tempo entre as novas tentativas:
+Você pode personalizar essas opções conforme necessário para o provedor que está usando. Verifique a documentação deles e defina as
+seguintes variáveis de ambiente para controlar o número de tentativas e o tempo entre elas:
- `LLM_NUM_RETRIES` (Padrão de 4 vezes)
- `LLM_RETRY_MIN_WAIT` (Padrão de 5 segundos)
- `LLM_RETRY_MAX_WAIT` (Padrão de 30 segundos)
- `LLM_RETRY_MULTIPLIER` (Padrão de 2)
-Se você estiver executando o OpenHands no modo de desenvolvimento, também poderá definir essas opções no arquivo `config.toml`:
+Se você estiver executando o OpenHands no modo de desenvolvimento, também pode definir essas opções no arquivo `config.toml`:
```toml
[llm]
@@ -69,4 +88,4 @@ num_retries = 4
retry_min_wait = 5
retry_max_wait = 30
retry_multiplier = 2
-```
+```
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/local-llms.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/local-llms.md
index af5d8d110987..63a6100a6daa 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/local-llms.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/local-llms.md
@@ -1,192 +1,83 @@
-# Local LLM with Ollama
+# LLM Local com SGLang ou vLLM
:::warning
-When using a Local LLM, OpenHands may have limited functionality.
+Ao usar um LLM Local, o OpenHands pode ter funcionalidades limitadas.
+É altamente recomendável que você use GPUs para servir modelos locais para uma experiência ideal.
:::
-Ensure that you have the Ollama server up and running.
-For detailed startup instructions, refer to [here](https://github.com/ollama/ollama).
+## Notícias
-This guide assumes you've started ollama with `ollama serve`. If you're running ollama differently (e.g. inside docker), the instructions might need to be modified. Please note that if you're running WSL the default ollama configuration blocks requests from docker containers. See [here](#configuring-ollama-service-wsl-en).
+- 2025/03/31: Lançamos um modelo aberto OpenHands LM v0.1 32B que alcança 37,1% no SWE-Bench Verified
+([blog](https://www.all-hands.dev/blog/introducing-openhands-lm-32b----a-strong-open-coding-agent-model), [modelo](https://huggingface.co/all-hands/openhands-lm-32b-v0.1)).
-## Pull Models
+## Baixar o Modelo do Huggingface
-Ollama model names can be found [here](https://ollama.com/library). For a small example, you can use
-the `codellama:7b` model. Bigger models will generally perform better.
+Por exemplo, para baixar o [OpenHands LM 32B v0.1](https://huggingface.co/all-hands/openhands-lm-32b-v0.1):
```bash
-ollama pull codellama:7b
+huggingface-cli download all-hands/openhands-lm-32b-v0.1 --local-dir all-hands/openhands-lm-32b-v0.1
```
-you can check which models you have downloaded like this:
+## Criar um Endpoint Compatível com OpenAI Usando um Framework de Serviço de Modelo
-```bash
-~$ ollama list
-NAME ID SIZE MODIFIED
-codellama:7b 8fdf8f752f6e 3.8 GB 6 weeks ago
-mistral:7b-instruct-v0.2-q4_K_M eb14864c7427 4.4 GB 2 weeks ago
-starcoder2:latest f67ae0f64584 1.7 GB 19 hours ago
-```
+### Servindo com SGLang
-## Run OpenHands with Docker
-
-### Start OpenHands
-Use the instructions [here](../getting-started) to start OpenHands using Docker.
-But when running `docker run`, you'll need to add a few more arguments:
+- Instale o SGLang seguindo [a documentação oficial](https://docs.sglang.ai/start/install.html).
+- Exemplo de comando de lançamento para OpenHands LM 32B (com pelo menos 2 GPUs):
```bash
-docker run # ...
- --add-host host.docker.internal:host-gateway \
- -e LLM_OLLAMA_BASE_URL="http://host.docker.internal:11434" \
- # ...
-```
-
-LLM_OLLAMA_BASE_URL is optional. If you set it, it will be used to show
-the available installed models in the UI.
-
-
-### Configure the Web Application
-
-When running `openhands`, you'll need to set the following in the OpenHands UI through the Settings:
-- the model to "ollama/<model-name>"
-- the base url to `http://host.docker.internal:11434`
-- the API key is optional, you can use any string, such as `ollama`.
-
-
-## Run OpenHands in Development Mode
-
-### Build from Source
-
-Use the instructions in [Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md) to build OpenHands.
-Make sure `config.toml` is there by running `make setup-config` which will create one for you. In `config.toml`, enter the followings:
-
-```
-[core]
-workspace_base="./workspace"
-
-[llm]
-embedding_model="local"
-ollama_base_url="http://localhost:11434"
-
+SGLANG_ALLOW_OVERWRITE_LONGER_CONTEXT_LEN=1 python3 -m sglang.launch_server \
+ --model all-hands/openhands-lm-32b-v0.1 \
+ --served-model-name openhands-lm-32b-v0.1 \
+ --port 8000 \
+ --tp 2 --dp 1 \
+ --host 0.0.0.0 \
+ --api-key mykey --context-length 131072
```
-Done! Now you can start OpenHands by: `make run`. You now should be able to connect to `http://localhost:3000/`
-
-### Configure the Web Application
-
-In the OpenHands UI, click on the Settings wheel in the bottom-left corner.
-Then in the `Model` input, enter `ollama/codellama:7b`, or the name of the model you pulled earlier.
-If it doesn’t show up in the dropdown, enable `Advanced Settings` and type it in. Please note: you need the model name as listed by `ollama list`, with the prefix `ollama/`.
-
-In the API Key field, enter `ollama` or any value, since you don't need a particular key.
-
-In the Base URL field, enter `http://localhost:11434`.
-
-And now you're ready to go!
+### Servindo com vLLM
-## Configuring the ollama service (WSL) {#configuring-ollama-service-wsl-en}
-
-The default configuration for ollama in WSL only serves localhost. This means you can't reach it from a docker container. eg. it wont work with OpenHands. First let's test that ollama is running correctly.
+- Instale o vLLM seguindo [a documentação oficial](https://docs.vllm.ai/en/latest/getting_started/installation.html).
+- Exemplo de comando de lançamento para OpenHands LM 32B (com pelo menos 2 GPUs):
```bash
-ollama list # get list of installed models
-curl http://localhost:11434/api/generate -d '{"model":"[NAME]","prompt":"hi"}'
-#ex. curl http://localhost:11434/api/generate -d '{"model":"codellama:7b","prompt":"hi"}'
-#ex. curl http://localhost:11434/api/generate -d '{"model":"codellama","prompt":"hi"}' #the tag is optional if there is only one
+vllm serve all-hands/openhands-lm-32b-v0.1 \
+ --host 0.0.0.0 --port 8000 \
+ --api-key mykey \
+ --tensor-parallel-size 2 \
+ --served-model-name openhands-lm-32b-v0.1
+ --enable-prefix-caching
```
-Once that is done, test that it allows "outside" requests, like those from inside a docker container.
+## Executar e Configurar o OpenHands
-```bash
-docker ps # get list of running docker containers, for most accurate test choose the OpenHands sandbox container.
-docker exec [CONTAINER ID] curl http://host.docker.internal:11434/api/generate -d '{"model":"[NAME]","prompt":"hi"}'
-#ex. docker exec cd9cc82f7a11 curl http://host.docker.internal:11434/api/generate -d '{"model":"codellama","prompt":"hi"}'
-```
+### Executar o OpenHands
-## Fixing it
+#### Usando Docker
-Now let's make it work. Edit /etc/systemd/system/ollama.service with sudo privileges. (Path may vary depending on linux flavor)
+Execute o OpenHands usando [o comando oficial do docker run](../installation#start-the-app).
-```bash
-sudo vi /etc/systemd/system/ollama.service
-```
+#### Usando o Modo de Desenvolvimento
-or
-
-```bash
-sudo nano /etc/systemd/system/ollama.service
-```
-
-In the [Service] bracket add these lines
-
-```
-Environment="OLLAMA_HOST=0.0.0.0:11434"
-Environment="OLLAMA_ORIGINS=*"
-```
-
-Then save, reload the configuration and restart the service.
-
-```bash
-sudo systemctl daemon-reload
-sudo systemctl restart ollama
-```
-
-Finally test that ollama is accessible from within the container
-
-```bash
-ollama list # get list of installed models
-docker ps # get list of running docker containers, for most accurate test choose the OpenHands sandbox container.
-docker exec [CONTAINER ID] curl http://host.docker.internal:11434/api/generate -d '{"model":"[NAME]","prompt":"hi"}'
-```
-
-
-# Local LLM with LM Studio
-
-Steps to set up LM Studio:
-1. Open LM Studio
-2. Go to the Local Server tab.
-3. Click the "Start Server" button.
-4. Select the model you want to use from the dropdown.
-
-
-Set the following configs:
-```bash
-LLM_MODEL="openai/lmstudio"
-LLM_BASE_URL="http://localhost:1234/v1"
-CUSTOM_LLM_PROVIDER="openai"
-```
-
-### Docker
-
-```bash
-docker run # ...
- -e LLM_MODEL="openai/lmstudio" \
- -e LLM_BASE_URL="http://host.docker.internal:1234/v1" \
- -e CUSTOM_LLM_PROVIDER="openai" \
- # ...
-```
-
-You should now be able to connect to `http://localhost:3000/`
-
-In the development environment, you can set the following configs in the `config.toml` file:
+Use as instruções em [Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md) para construir o OpenHands.
+Certifique-se de que o `config.toml` existe executando `make setup-config`, que criará um para você. No `config.toml`, insira o seguinte:
```
[core]
-workspace_base="./workspace"
+workspace_base="/caminho/para/seu/workspace"
[llm]
-model="openai/lmstudio"
-base_url="http://localhost:1234/v1"
-custom_llm_provider="openai"
+model="openhands-lm-32b-v0.1"
+ollama_base_url="http://localhost:8000"
```
-Done! Now you can start OpenHands by: `make run` without Docker. You now should be able to connect to `http://localhost:3000/`
+Inicie o OpenHands usando `make run`.
-# Note
+### Configurar o OpenHands
-For WSL, run the following commands in cmd to set up the networking mode to mirrored:
-
-```
-python -c "print('[wsl2]\nnetworkingMode=mirrored',file=open(r'%UserProfile%\.wslconfig','w'))"
-wsl --shutdown
-```
+Depois que o OpenHands estiver em execução, você precisará definir o seguinte na interface do OpenHands através das Configurações:
+1. Habilite as opções `Avançadas`.
+2. Configure o seguinte:
+- `Modelo Personalizado` para `openai/` (ex: `openai/openhands-lm-32b-v0.1`)
+- `URL Base` para `http://host.docker.internal:8000`
+- `Chave de API` para a mesma string que você definiu ao servir o modelo (ex: `mykey`)
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/openai-llms.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/openai-llms.md
index a3171281de7e..735a5c429189 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/openai-llms.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/openai-llms.md
@@ -1,25 +1,25 @@
# OpenAI
-O OpenHands usa o LiteLLM para fazer chamadas para os modelos de chat da OpenAI. Você pode encontrar a documentação deles sobre como usar a OpenAI como provedor [aqui](https://docs.litellm.ai/docs/providers/openai).
+OpenHands usa o LiteLLM para fazer chamadas aos modelos de chat da OpenAI. Você pode encontrar a documentação sobre como usar a OpenAI como provedor [aqui](https://docs.litellm.ai/docs/providers/openai).
## Configuração
-Ao executar o OpenHands, você precisará definir o seguinte na interface do usuário do OpenHands através das Configurações:
+Ao executar o OpenHands, você precisará definir o seguinte na interface do OpenHands através das Configurações:
* `LLM Provider` para `OpenAI`
* `LLM Model` para o modelo que você usará.
-[Visite aqui para ver uma lista completa dos modelos da OpenAI que o LiteLLM suporta.](https://docs.litellm.ai/docs/providers/openai#openai-chat-completion-models)
-Se o modelo não estiver na lista, ative as opções `Advanced` e insira-o em `Custom Model` (por exemplo, openai/<model-name> como `openai/gpt-4o`).
-* `API Key` para a sua chave de API da OpenAI. Para encontrar ou criar sua chave de API do projeto OpenAI, [veja aqui](https://platform.openai.com/api-keys).
+[Visite aqui para ver uma lista completa dos modelos OpenAI que o LiteLLM suporta.](https://docs.litellm.ai/docs/providers/openai#openai-chat-completion-models)
+Se o modelo não estiver na lista, ative as opções `Advanced` e insira-o em `Custom Model` (por exemplo, openai/<nome-do-modelo> como `openai/gpt-4o`).
+* `API Key` para sua chave de API da OpenAI. Para encontrar ou criar sua Chave de API de Projeto OpenAI, [veja aqui](https://platform.openai.com/api-keys).
## Usando Endpoints Compatíveis com OpenAI
-Assim como para as conclusões de chat da OpenAI, usamos o LiteLLM para endpoints compatíveis com OpenAI. Você pode encontrar a documentação completa deles sobre este tópico [aqui](https://docs.litellm.ai/docs/providers/openai_compatible).
+Assim como para as completions de chat da OpenAI, usamos o LiteLLM para endpoints compatíveis com OpenAI. Você pode encontrar a documentação completa sobre este tópico [aqui](https://docs.litellm.ai/docs/providers/openai_compatible).
## Usando um Proxy OpenAI
-Se você estiver usando um proxy OpenAI, na interface do usuário do OpenHands através das Configurações:
+Se você estiver usando um proxy OpenAI, na interface do OpenHands através das Configurações:
1. Ative as opções `Advanced`
2. Defina o seguinte:
- - `Custom Model` para openai/<model-name> (por exemplo, `openai/gpt-4o` ou openai/<proxy-prefix>/<model-name>)
+ - `Custom Model` para openai/<nome-do-modelo> (por exemplo, `openai/gpt-4o` ou openai/<prefixo-do-proxy>/<nome-do-modelo>)
- `Base URL` para a URL do seu proxy OpenAI
- - `API Key` para a sua chave de API da OpenAI
+ - `API Key` para sua chave de API da OpenAI
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/openrouter.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/openrouter.md
index 63e46ef2ce9e..a44bdaad2365 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/openrouter.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/llms/openrouter.md
@@ -1,14 +1,12 @@
-Here is the translated content in Brazilian Portuguese:
-
# OpenRouter
-O OpenHands usa o LiteLLM para fazer chamadas para modelos de chat no OpenRouter. Você pode encontrar a documentação deles sobre como usar o OpenRouter como provedor [aqui](https://docs.litellm.ai/docs/providers/openrouter).
+OpenHands usa o LiteLLM para fazer chamadas a modelos de chat no OpenRouter. Você pode encontrar a documentação sobre como usar o OpenRouter como provedor [aqui](https://docs.litellm.ai/docs/providers/openrouter).
## Configuração
-Ao executar o OpenHands, você precisará definir o seguinte na interface do usuário do OpenHands através das Configurações:
+Ao executar o OpenHands, você precisará definir o seguinte na interface do OpenHands através das Configurações:
* `LLM Provider` para `OpenRouter`
* `LLM Model` para o modelo que você usará.
[Visite aqui para ver uma lista completa de modelos do OpenRouter](https://openrouter.ai/models).
-Se o modelo não estiver na lista, ative as opções `Advanced` e insira-o em `Custom Model` (por exemplo, openrouter/<model-name> como `openrouter/anthropic/claude-3.5-sonnet`).
-* `API Key` para a sua chave de API do OpenRouter.
+Se o modelo não estiver na lista, ative as opções `Advanced` e insira-o em `Custom Model` (por exemplo, openrouter/<nome-do-modelo> como `openrouter/anthropic/claude-3.5-sonnet`).
+* `API Key` para sua chave de API do OpenRouter.
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/mcp.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/mcp.md
new file mode 100644
index 000000000000..220c223e4559
--- /dev/null
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/mcp.md
@@ -0,0 +1,96 @@
+# Protocolo de Contexto de Modelo (MCP)
+
+:::note
+Esta página descreve como configurar e usar o Protocolo de Contexto de Modelo (MCP) no OpenHands, permitindo que você estenda as capacidades do agente com ferramentas personalizadas.
+:::
+
+## Visão Geral
+
+O Protocolo de Contexto de Modelo (MCP) é um mecanismo que permite ao OpenHands se comunicar com servidores de ferramentas externos. Esses servidores podem fornecer funcionalidades adicionais ao agente, como processamento especializado de dados, acesso a APIs externas ou ferramentas personalizadas. O MCP é baseado no padrão aberto definido em [modelcontextprotocol.io](https://modelcontextprotocol.io).
+
+## Configuração
+
+A configuração do MCP é definida na seção `[mcp]` do seu arquivo `config.toml`.
+
+### Exemplo de Configuração
+
+```toml
+[mcp]
+# Servidores SSE - Servidores externos que se comunicam via Server-Sent Events
+sse_servers = [
+ # Servidor SSE básico apenas com URL
+ "http://example.com:8080/mcp",
+
+ # Servidor SSE com autenticação por chave API
+ {url="https://secure-example.com/mcp", api_key="your-api-key"}
+]
+
+# Servidores Stdio - Processos locais que se comunicam via entrada/saída padrão
+stdio_servers = [
+ # Servidor stdio básico
+ {name="fetch", command="uvx", args=["mcp-server-fetch"]},
+
+ # Servidor stdio com variáveis de ambiente
+ {
+ name="data-processor",
+ command="python",
+ args=["-m", "my_mcp_server"],
+ env={
+ "DEBUG": "true",
+ "PORT": "8080"
+ }
+ }
+]
+```
+
+## Opções de Configuração
+
+### Servidores SSE
+
+Os servidores SSE são configurados usando uma URL em string ou um objeto com as seguintes propriedades:
+
+- `url` (obrigatório)
+ - Tipo: `str`
+ - Descrição: A URL do servidor SSE
+
+- `api_key` (opcional)
+ - Tipo: `str`
+ - Padrão: `None`
+ - Descrição: Chave API para autenticação com o servidor SSE
+
+### Servidores Stdio
+
+Os servidores Stdio são configurados usando um objeto com as seguintes propriedades:
+
+- `name` (obrigatório)
+ - Tipo: `str`
+ - Descrição: Um nome único para o servidor
+
+- `command` (obrigatório)
+ - Tipo: `str`
+ - Descrição: O comando para executar o servidor
+
+- `args` (opcional)
+ - Tipo: `lista de str`
+ - Padrão: `[]`
+ - Descrição: Argumentos de linha de comando para passar ao servidor
+
+- `env` (opcional)
+ - Tipo: `dicionário de str para str`
+ - Padrão: `{}`
+ - Descrição: Variáveis de ambiente para definir para o processo do servidor
+
+## Como o MCP Funciona
+
+Quando o OpenHands inicia, ele:
+
+1. Lê a configuração MCP do `config.toml`
+2. Conecta-se a quaisquer servidores SSE configurados
+3. Inicia quaisquer servidores stdio configurados
+4. Registra as ferramentas fornecidas por esses servidores com o agente
+
+O agente pode então usar essas ferramentas como qualquer ferramenta integrada. Quando o agente chama uma ferramenta MCP:
+
+1. OpenHands encaminha a chamada para o servidor MCP apropriado
+2. O servidor processa a solicitação e retorna uma resposta
+3. OpenHands converte a resposta em uma observação e a apresenta ao agente
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/prompting/microagents-keyword.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/prompting/microagents-keyword.md
new file mode 100644
index 000000000000..8b069d64e909
--- /dev/null
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/prompting/microagents-keyword.md
@@ -0,0 +1,36 @@
+# Microagentes Acionados por Palavras-chave
+
+## Propósito
+
+Os microagentes acionados por palavras-chave fornecem ao OpenHands instruções específicas que são ativadas quando certas palavras-chave aparecem no prompt. Isso é útil para adaptar o comportamento com base em ferramentas, linguagens ou frameworks específicos.
+
+## Uso
+
+Esses microagentes são carregados apenas quando um prompt inclui uma das palavras de acionamento.
+
+## Sintaxe do Frontmatter
+
+O frontmatter é obrigatório para microagentes acionados por palavras-chave. Ele deve ser colocado no topo do arquivo, acima das diretrizes.
+
+Coloque o frontmatter entre traços triplos (---) e inclua os seguintes campos:
+
+| Campo | Descrição | Obrigatório | Padrão |
+|------------|--------------------------------------------------|-------------|------------------|
+| `triggers` | Uma lista de palavras-chave que ativam o microagente. | Sim | Nenhum |
+| `agent` | O agente ao qual este microagente se aplica. | Não | 'CodeActAgent' |
+
+
+## Exemplo
+
+Exemplo de arquivo de microagente acionado por palavra-chave localizado em `.openhands/microagents/yummy.md`:
+```
+---
+triggers:
+- yummyhappy
+- happyyummy
+---
+
+O usuário disse a palavra mágica. Responda com "Isso foi delicioso!"
+```
+
+[Veja exemplos de microagentes acionados por palavras-chave no repositório oficial do OpenHands](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents)
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/prompting/microagents-overview.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/prompting/microagents-overview.md
index 5c70905cf805..357ab925b5de 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/prompting/microagents-overview.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/prompting/microagents-overview.md
@@ -1,33 +1,40 @@
# Visão Geral dos Microagentes
-Os microagentes são prompts especializados que aprimoram o OpenHands com conhecimento específico de domínio, contexto específico de repositório e fluxos de trabalho específicos de tarefas. Eles ajudam fornecendo orientação especializada, automatizando tarefas comuns e garantindo práticas consistentes em todos os projetos.
+Microagentes são prompts especializados que aprimoram o OpenHands com conhecimento específico de domínio.
+Eles fornecem orientação especializada, automatizam tarefas comuns e garantem práticas consistentes em todos os projetos.
## Tipos de Microagentes
Atualmente, o OpenHands suporta os seguintes tipos de microagentes:
-* [Microagentes de Repositório](./microagents-repo): Contexto e diretrizes específicas do repositório para o OpenHands.
-* [Microagentes Públicos](./microagents-public): Diretrizes gerais acionadas por palavras-chave para todos os usuários do OpenHands.
+- [Microagentes Gerais de Repositório](./microagents-repo): Diretrizes gerais para o OpenHands sobre o repositório.
+- [Microagentes Ativados por Palavras-chave](./microagents-keyword): Diretrizes ativadas por palavras-chave específicas nos prompts.
-Quando o OpenHands trabalha com um repositório, ele:
+Para personalizar o comportamento do OpenHands, crie um diretório .openhands/microagents/ na raiz do seu repositório e
+adicione arquivos `.md` dentro dele.
-1. Carrega instruções específicas do repositório de `.openhands/microagents/`, se presentes no repositório.
-2. Carrega diretrizes gerais acionadas por palavras-chave nas conversas.
-Veja os [Microagentes Públicos](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents) atuais.
+:::note
+Os microagentes carregados ocupam espaço na janela de contexto.
+Esses microagentes, juntamente com as mensagens do usuário, informam o OpenHands sobre a tarefa e o ambiente.
+:::
-## Formato do Microagente
+Exemplo de estrutura de repositório:
-Todos os microagentes usam arquivos markdown com frontmatter YAML que possuem instruções especiais para ajudar o OpenHands a realizar tarefas:
```
----
-name:
-type:
-version:
-agent:
-triggers:
--
----
-
-
+some-repository/
+└── .openhands/
+ └── microagents/
+ └── repo.md # Diretrizes gerais do repositório
+ └── trigger_this.md # Microagente ativado por palavras-chave específicas
+ └── trigger_that.md # Microagente ativado por palavras-chave específicas
```
+
+## Requisitos de Frontmatter para Microagentes
+
+Cada arquivo de microagente pode incluir frontmatter que fornece informações adicionais. Em alguns casos, este frontmatter
+é obrigatório:
+
+| Tipo de Microagente | Obrigatório |
+|---------------------------------------|-------------|
+| `Microagentes Gerais de Repositório` | Não |
+| `Microagentes Ativados por Palavras-chave` | Sim |
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/prompting/microagents-public.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/prompting/microagents-public.md
index 05ff8f7be0f7..a0875a1e8364 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/prompting/microagents-public.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/prompting/microagents-public.md
@@ -1,153 +1,50 @@
-# Microagentes Públicos
+# Microagentes Globais
## Visão Geral
-Microagentes públicos são diretrizes especializadas acionadas por palavras-chave para todos os usuários do OpenHands.
-Eles são definidos em arquivos markdown no diretório
-[`microagents/`](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents).
+Microagentes globais são [microagentes ativados por palavras-chave](./microagents-keyword) que se aplicam a todos os usuários do OpenHands. Uma lista dos microagentes globais atuais pode ser encontrada [no repositório OpenHands](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents).
-Microagentes públicos:
-- Monitoram comandos recebidos em busca de suas palavras-chave de acionamento.
-- São ativados quando os gatilhos relevantes são detectados.
-- Aplicam seus conhecimentos e capacidades especializados.
-- Seguem suas diretrizes e restrições específicas.
+## Contribuindo com um Microagente Global
-## Microagentes Públicos Atuais
+Você pode criar microagentes globais e compartilhá-los com a comunidade abrindo um pull request no repositório oficial.
-Para mais informações sobre microagentes específicos, consulte seus arquivos de documentação individuais no
-diretório [`microagents/`](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents/).
+Consulte o [CONTRIBUTING.md](https://github.com/All-Hands-AI/OpenHands/blob/main/CONTRIBUTING.md) para instruções específicas sobre como contribuir para o OpenHands.
-### Agente GitHub
-**Arquivo**: `github.md`
-**Gatilhos**: `github`, `git`
-
-O agente GitHub é especializado em interações com a API do GitHub e gerenciamento de repositórios. Ele:
-- Tem acesso a um `GITHUB_TOKEN` para autenticação na API.
-- Segue diretrizes rígidas para interações com repositórios.
-- Lida com gerenciamento de branches e pull requests.
-- Usa a API do GitHub em vez de interações com navegador web.
-
-Principais recursos:
-- Proteção de branch (impede push direto para main/master)
-- Criação automatizada de PR
-- Gerenciamento de configuração do Git
-- Abordagem API-first para operações do GitHub
-
-Exemplo de Uso:
-
-```bash
-git checkout -b feature-branch
-git commit -m "Add new feature"
-git push origin feature-branch
-```
-
-### Agente NPM
-**Arquivo**: `npm.md`
-**Gatilhos**: `npm`
-
-Especializado em lidar com gerenciamento de pacotes npm com foco específico em:
-- Operações shell não interativas.
-- Tratamento automatizado de confirmação usando o comando Unix 'yes'.
-- Automação de instalação de pacotes.
-
-Exemplo de Uso:
-
-```bash
-yes | npm install package-name
-```
-
-## Contribuindo com um Microagente Público
-
-Você pode criar seus próprios microagentes públicos adicionando novos arquivos markdown ao
-diretório [`microagents/`](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents/).
-
-### Melhores Práticas para Microagentes Públicos
+### Melhores Práticas para Microagentes Globais
- **Escopo Claro**: Mantenha o microagente focado em um domínio ou tarefa específica.
-- **Instruções Explícitas**: Forneça diretrizes claras e inequívocas.
+- **Instruções Explícitas**: Forneça diretrizes claras e não ambíguas.
- **Exemplos Úteis**: Inclua exemplos práticos de casos de uso comuns.
-- **Segurança em Primeiro Lugar**: Inclua avisos e restrições necessárias.
+- **Segurança em Primeiro Lugar**: Inclua avisos e restrições necessários.
- **Consciência de Integração**: Considere como o microagente interage com outros componentes.
-### Etapas para Contribuir com um Microagente Público
+### Passos para Contribuir com um Microagente Global
-#### 1. Planeje o Microagente Público
+#### 1. Planeje o Microagente Global
-Antes de criar um microagente público, considere:
-- Qual problema ou caso de uso específico ele abordará?
+Antes de criar um microagente global, considere:
+
+- Qual problema específico ou caso de uso ele abordará?
- Quais capacidades ou conhecimentos únicos ele deve ter?
-- Quais palavras-chave fazem sentido para ativá-lo?
+- Quais palavras-gatilho fazem sentido para ativá-lo?
- Quais restrições ou diretrizes ele deve seguir?
#### 2. Crie o Arquivo
-Crie um novo arquivo markdown em [`microagents/`](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents/)
-com um nome descritivo (por exemplo, `docker.md` para um agente focado em Docker).
-
-Atualize o arquivo com o frontmatter necessário [de acordo com o formato exigido](./microagents-overview#microagent-format)
-e as diretrizes especializadas necessárias, seguindo as [melhores práticas acima](#melhores-práticas-para-microagentes-públicos).
+Crie um novo arquivo Markdown com um nome descritivo no diretório apropriado:
+[`microagents/`](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents)
-#### 3. Testando o Microagente Público
+#### 3. Testando o Microagente Global
- Teste o agente com vários prompts.
-- Verifique se as palavras-chave acionam o agente corretamente.
-- Certifique-se de que as instruções estão claras e abrangentes.
-- Verifique possíveis conflitos com agentes existentes.
+- Verifique se as palavras-gatilho ativam o agente corretamente.
+- Certifique-se de que as instruções sejam claras e abrangentes.
+- Verifique possíveis conflitos e sobreposições com agentes existentes.
-#### 4. Processo de Envio
+#### 4. Processo de Submissão
Envie um pull request com:
+
- O novo arquivo do microagente.
- Documentação atualizada, se necessário.
-- Descrição do propósito e das capacidades do agente.
-
-### Exemplo de Implementação de Microagente Público
-
-Aqui está um modelo para um novo microagente:
-
-```markdown
----
-name: docker
-agent: CodeActAgent
-triggers:
-- docker
-- container
----
-
-Você é responsável pelo gerenciamento de contêineres Docker e criação de Dockerfile.
-
-Principais responsabilidades:
-1. Criar e modificar Dockerfiles
-2. Gerenciar o ciclo de vida do contêiner
-3. Lidar com configurações do Docker Compose
-
-Diretrizes:
-- Sempre use imagens base oficiais quando possível
-- Inclua considerações de segurança necessárias
-- Siga as melhores práticas do Docker para otimização de camadas
-
-Exemplos:
-1. Criando um Dockerfile:
- FROM node:18-alpine
- WORKDIR /app
- COPY package*.json ./
- RUN npm install
- COPY . .
- CMD ["npm", "start"]
-
-2. Uso do Docker Compose:
- version: '3'
- services:
- web:
- build: .
- ports:
- - "3000:3000"
-
-Lembre-se de:
-- Validar a sintaxe do Dockerfile
-- Verificar vulnerabilidades de segurança
-- Otimizar para tempo de build e tamanho da imagem
-```
-
-Veja os [microagentes públicos atuais](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents) para
-mais exemplos.
+- Descrição do propósito e capacidades do agente.
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/prompting/microagents-repo.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/prompting/microagents-repo.md
index c0e33949ba0b..0a79f687c6f6 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/prompting/microagents-repo.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/prompting/microagents-repo.md
@@ -1,68 +1,31 @@
-# Microagentes de Repositório
+# Microagentes Gerais do Repositório
-## Visão Geral
+## Propósito
-O OpenHands pode ser personalizado para trabalhar de forma mais eficaz com repositórios específicos, fornecendo contexto
-e diretrizes específicas do repositório. Esta seção explica como otimizar o OpenHands para o seu projeto.
+Diretrizes gerais para o OpenHands trabalhar de forma mais eficaz com o repositório.
-## Criando um Micro-Agente de Repositório
+## Uso
-Você pode personalizar o comportamento do OpenHands para o seu repositório criando um diretório `.openhands/microagents/` na raiz do seu repositório.
-No mínimo, ele deve conter o arquivo
-`.openhands/microagents/repo.md`, que inclui instruções que serão
-fornecidas ao agente toda vez que ele trabalhar com este repositório.
+Esses microagentes são sempre carregados como parte do contexto.
-### Melhores Práticas para Microagentes de Repositório
+## Sintaxe do Frontmatter
-- **Mantenha as Instruções Atualizadas**: Atualize regularmente o seu diretório `.openhands/microagents/` à medida que o seu projeto evolui.
-- **Seja Específico**: Inclua caminhos, padrões e requisitos específicos exclusivos do seu projeto.
-- **Documente as Dependências**: Liste todas as ferramentas e dependências necessárias para o desenvolvimento.
-- **Inclua Exemplos**: Forneça exemplos de bons padrões de código do seu projeto.
-- **Especifique Convenções**: Documente convenções de nomenclatura, organização de arquivos e preferências de estilo de código.
+O frontmatter para este tipo de microagente é opcional.
-### Etapas para Criar um Microagente de Repositório
+O frontmatter deve ser delimitado por três traços (---) e pode incluir os seguintes campos:
-#### 1. Planeje o Microagente de Repositório
-Ao criar um micro-agente específico para um repositório, sugerimos incluir as seguintes informações:
-- **Visão Geral do Repositório**: Uma breve descrição do propósito e arquitetura do seu projeto.
-- **Estrutura de Diretórios**: Diretórios-chave e seus propósitos.
-- **Diretrizes de Desenvolvimento**: Padrões e práticas de codificação específicas do projeto.
-- **Requisitos de Teste**: Como executar testes e quais tipos de testes são necessários.
-- **Instruções de Configuração**: Etapas necessárias para construir e executar o projeto.
+| Campo | Descrição | Obrigatório | Padrão |
+|-----------|----------------------------------------|-------------|----------------|
+| `agent` | O agente ao qual este microagente se aplica | Não | 'CodeActAgent' |
-#### 2. Crie o Arquivo
-
-Crie um arquivo em seu repositório em `.openhands/microagents/` (Exemplo: `.openhands/microagents/repo.md`)
-
-Atualize o arquivo com o frontmatter necessário [de acordo com o formato exigido](./microagents-overview#microagent-format)
-e as diretrizes especializadas necessárias para o seu repositório.
-
-### Exemplo de Microagente de Repositório
+## Exemplo
+Exemplo de arquivo de microagente geral do repositório localizado em `.openhands/microagents/repo.md`:
```
----
-name: repo
-type: repo
-agent: CodeActAgent
----
-
-Repository: MeuProjeto
-Description: Uma aplicação web para gerenciamento de tarefas
+Este projeto é uma aplicação de TODO que permite aos usuários rastrear itens de TODO.
-Directory Structure:
-- src/: Código principal da aplicação
-- tests/: Arquivos de teste
-- docs/: Documentação
-
-Setup:
-- Execute `npm install` para instalar as dependências
-- Use `npm run dev` para desenvolvimento
-- Execute `npm test` para testes
-
-Guidelines:
-- Siga a configuração do ESLint
-- Escreva testes para todos os novos recursos
-- Use TypeScript para novo código
-
-Se adicionar um novo componente em src/components, sempre adicione testes unitários apropriados em tests/components/.
+Para configurá-lo, você pode executar `npm run build`.
+Sempre certifique-se de que os testes estão passando antes de confirmar as alterações. Você pode executar os testes rodando `npm run test`.
```
+
+[Veja mais exemplos de microagentes gerais de repositório aqui.](https://github.com/All-Hands-AI/OpenHands/tree/main/.openhands/microagents)
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/prompting/prompting-best-practices.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/prompting/prompting-best-practices.md
index a052d6af8551..7b2a144eaf53 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/prompting/prompting-best-practices.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/prompting/prompting-best-practices.md
@@ -1,37 +1,38 @@
-# Melhores Práticas de Prompt
+# Melhores Práticas para Prompts
-Ao trabalhar com o desenvolvedor de software OpenHands AI, é crucial fornecer prompts claros e eficazes. Este guia descreve as melhores práticas para criar prompts que produzirão as respostas mais precisas e úteis.
+Ao trabalhar com o desenvolvedor de software OpenHands AI, fornecer prompts claros e eficazes é fundamental para obter respostas precisas
+e úteis. Este guia descreve as melhores práticas para elaborar prompts eficazes.
## Características de Bons Prompts
Bons prompts são:
-- **Concretos**: Eles explicam exatamente qual funcionalidade deve ser adicionada ou qual erro precisa ser corrigido.
-- **Específicos de localização**: Se conhecido, eles explicam os locais na base de código que devem ser modificados.
-- **Escopo apropriado**: Eles devem ter o tamanho de uma única funcionalidade, normalmente não excedendo 100 linhas de código.
+- **Concretos**: Descrevem claramente qual funcionalidade deve ser adicionada ou qual erro precisa ser corrigido.
+- **Específicos quanto à localização**: Especificam os locais na base de código que devem ser modificados, se conhecidos.
+- **Adequadamente delimitados**: Focam em uma única funcionalidade, geralmente não excedendo 100 linhas de código.
## Exemplos
### Exemplos de Bons Prompts
-- "Adicione uma função `calculate_average` em `utils/math_operations.py` que recebe uma lista de números como entrada e retorna sua média."
-- "Corrija o TypeError em `frontend/src/components/UserProfile.tsx` ocorrendo na linha 42. O erro sugere que estamos tentando acessar uma propriedade de undefined."
-- "Implemente a validação de entrada para o campo de e-mail no formulário de registro. Atualize `frontend/src/components/RegistrationForm.tsx` para verificar se o e-mail está em um formato válido antes do envio."
+- Adicione uma função `calculate_average` em `utils/math_operations.py` que receba uma lista de números como entrada e retorne a média deles.
+- Corrija o TypeError em `frontend/src/components/UserProfile.tsx` que ocorre na linha 42. O erro sugere que estamos tentando acessar uma propriedade de undefined.
+- Implemente validação de entrada para o campo de e-mail no formulário de registro. Atualize `frontend/src/components/RegistrationForm.tsx` para verificar se o e-mail está em um formato válido antes do envio.
-### Exemplos de Maus Prompts
+### Exemplos de Prompts Ruins
-- "Torne o código melhor." (Muito vago, não concreto)
-- "Reescreva todo o backend para usar um framework diferente." (Escopo não apropriado)
-- "Há um bug em algum lugar na autenticação do usuário. Você pode encontrá-lo e corrigi-lo?" (Falta especificidade e informações de localização)
+- Melhore o código. (Muito vago, não concreto)
+- Reescreva todo o backend para usar um framework diferente. (Não adequadamente delimitado)
+- Há um bug em algum lugar na autenticação do usuário. Você pode encontrá-lo e corrigi-lo? (Falta especificidade e informações de localização)
## Dicas para Prompts Eficazes
- Seja o mais específico possível sobre o resultado desejado ou o problema a ser resolvido.
-- Forneça contexto, incluindo caminhos de arquivo relevantes e números de linha, se disponíveis.
+- Forneça contexto, incluindo caminhos de arquivos relevantes e números de linha, se disponíveis.
- Divida tarefas grandes em prompts menores e gerenciáveis.
-- Inclua quaisquer mensagens de erro ou logs relevantes.
-- Especifique a linguagem de programação ou framework se não for óbvio a partir do contexto.
+- Inclua mensagens de erro ou logs relevantes.
+- Especifique a linguagem de programação ou framework, se não for óbvio.
-Lembre-se, quanto mais preciso e informativo for o seu prompt, melhor a IA poderá ajudá-lo a desenvolver ou modificar o software OpenHands.
+Quanto mais precisos e informativos forem seus prompts, melhor o OpenHands poderá ajudá-lo.
-Veja [Começando com o OpenHands](../getting-started) para mais exemplos de prompts úteis.
+Veja [Começando com OpenHands](../getting-started) para mais exemplos de prompts úteis.
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes-index.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes-index.md
new file mode 100644
index 000000000000..583b72ab236c
--- /dev/null
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes-index.md
@@ -0,0 +1,26 @@
+# Configuração de Runtime
+
+:::note
+Esta seção é para usuários que gostariam de usar um runtime diferente do Docker para o OpenHands.
+:::
+
+Um Runtime é um ambiente onde o agente OpenHands pode editar arquivos e executar
+comandos.
+
+Por padrão, o OpenHands usa um [runtime baseado em Docker](./runtimes/docker), executando em seu computador local.
+Isso significa que você só precisa pagar pelo LLM que está usando, e seu código é enviado apenas para o LLM.
+
+Também oferecemos suporte a outros runtimes, que geralmente são gerenciados por terceiros.
+
+Além disso, fornecemos um [Runtime Local](./runtimes/local) que é executado diretamente em sua máquina sem Docker,
+o que pode ser útil em ambientes controlados como pipelines de CI.
+
+## Runtimes Disponíveis
+
+O OpenHands suporta vários ambientes de runtime diferentes:
+
+- [Runtime Docker](./runtimes/docker.md) - O runtime padrão que usa contêineres Docker para isolamento (recomendado para a maioria dos usuários).
+- [Runtime Remoto OpenHands](./runtimes/remote.md) - Runtime baseado em nuvem para execução paralela (beta).
+- [Runtime Modal](./runtimes/modal.md) - Runtime fornecido por nossos parceiros da Modal.
+- [Runtime Daytona](./runtimes/daytona.md) - Runtime fornecido pela Daytona.
+- [Runtime Local](./runtimes/local.md) - Execução direta em sua máquina local sem Docker.
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes.md
index 2da3467b755d..13d5ba09abb5 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes.md
@@ -1,165 +1,8 @@
-# Configuração de Runtime
+---
+slug: /usage/runtimes
+title: Runtime Configuration
+---
-Um Runtime é um ambiente onde o agente OpenHands pode editar arquivos e executar comandos.
+import { Redirect } from '@docusaurus/router';
-Por padrão, o OpenHands usa um runtime baseado em Docker, executando no seu computador local. Isso significa que você só precisa pagar pelo LLM que está usando, e seu código é enviado apenas para o LLM.
-
-Também suportamos runtimes "remotos", que são tipicamente gerenciados por terceiros. Eles podem tornar a configuração um pouco mais simples e escalável, especialmente se você estiver executando muitas conversas do OpenHands em paralelo (por exemplo, para fazer avaliação).
-
-Além disso, fornecemos um runtime "local" que é executado diretamente na sua máquina sem o Docker, o que pode ser útil em ambientes controlados como pipelines de CI.
-
-## Runtime Docker
-Este é o Runtime padrão que é usado quando você inicia o OpenHands. Você pode notar algumas flags sendo passadas para o `docker run` que tornam isso possível:
-
-```
-docker run # ...
- -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.36-nikolaik \
- -v /var/run/docker.sock:/var/run/docker.sock \
- # ...
-```
-
-O `SANDBOX_RUNTIME_CONTAINER_IMAGE` do nikolaik é uma imagem de runtime pré-construída que contém nosso servidor Runtime, bem como algumas utilidades básicas para Python e NodeJS. Você também pode [construir sua própria imagem de runtime](how-to/custom-sandbox-guide).
-
-### Conectando ao seu sistema de arquivos
-Um recurso útil aqui é a capacidade de se conectar ao seu sistema de arquivos local. Para montar seu sistema de arquivos no runtime:
-1. Defina `WORKSPACE_BASE`:
-
- ```bash
- export WORKSPACE_BASE=/caminho/para/seu/codigo
-
- # Exemplo no Linux e Mac
- # export WORKSPACE_BASE=$HOME/OpenHands
- # Definirá $WORKSPACE_BASE como /home//OpenHands
- #
- # Exemplo no WSL no Windows
- # export WORKSPACE_BASE=/mnt/c/dev/OpenHands
- # Definirá $WORKSPACE_BASE como C:\dev\OpenHands
- ```
-2. Adicione as seguintes opções ao comando `docker run`:
-
- ```bash
- docker run # ...
- -e SANDBOX_USER_ID=$(id -u) \
- -e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
- -v $WORKSPACE_BASE:/opt/workspace_base \
- # ...
- ```
-
-Tenha cuidado! Não há nada impedindo o agente OpenHands de excluir ou modificar quaisquer arquivos que estejam montados em seu workspace.
-
-Essa configuração pode causar alguns problemas com permissões de arquivo (daí a variável `SANDBOX_USER_ID`), mas parece funcionar bem na maioria dos sistemas.
-
-## OpenHands Remote Runtime
-
-O OpenHands Remote Runtime está atualmente em beta (leia [aqui](https://runtime.all-hands.dev/) para mais detalhes), ele permite que você inicie runtimes em paralelo na nuvem. Preencha [este formulário](https://docs.google.com/forms/d/e/1FAIpQLSckVz_JFwg2_mOxNZjCtr7aoBFI2Mwdan3f75J_TrdMS1JV2g/viewform) para se inscrever se quiser experimentar isso!
-
-NOTA: Este runtime é projetado especificamente apenas para fins de avaliação de agentes por meio do [harness de avaliação do OpenHands](https://github.com/All-Hands-AI/OpenHands/tree/main/evaluation). Ele não deve ser usado para iniciar aplicativos OpenHands em produção.
-
-## Runtime Modal
-Nossos parceiros na [Modal](https://modal.com/) também forneceram um runtime para o OpenHands.
-
-Para usar o Runtime Modal, crie uma conta e, em seguida, [crie uma chave de API.](https://modal.com/settings)
-
-Você precisará definir as seguintes variáveis de ambiente ao iniciar o OpenHands:
-```bash
-docker run # ...
- -e RUNTIME=modal \
- -e MODAL_API_TOKEN_ID="seu-id" \
- -e MODAL_API_TOKEN_SECRET="seu-segredo" \
-```
-
-## Runtime Daytona
-
-Outra opção é usar o [Daytona](https://www.daytona.io/) como provedor de runtime:
-
-### Passo 1: Recupere sua chave de API do Daytona
-1. Visite o [Painel do Daytona](https://app.daytona.io/dashboard/keys).
-2. Clique em **"Create Key"**.
-3. Digite um nome para sua chave e confirme a criação.
-4. Depois que a chave for gerada, copie-a.
-
-### Passo 2: Defina sua chave de API como uma variável de ambiente
-Execute o seguinte comando no seu terminal, substituindo `` pela chave real que você copiou:
-```bash
-export DAYTONA_API_KEY=""
-```
-
-Esta etapa garante que o OpenHands possa se autenticar na plataforma Daytona quando for executado.
-
-### Passo 3: Execute o OpenHands localmente usando o Docker
-Para iniciar a versão mais recente do OpenHands em sua máquina, execute o seguinte comando no seu terminal:
-```bash
-bash -i <(curl -sL https://get.daytona.io/openhands)
-```
-
-#### O que este comando faz:
-- Baixa o script de lançamento mais recente do OpenHands.
-- Executa o script em uma sessão interativa do Bash.
-- Automaticamente baixa e executa o contêiner do OpenHands usando o Docker.
-
-Uma vez executado, o OpenHands deve estar sendo executado localmente e pronto para uso.
-
-Para mais detalhes e inicialização manual, veja o [README.md](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/runtime/impl/daytona/README.md) completo.
-
-## Runtime Local
-
-O Runtime Local permite que o agente OpenHands execute ações diretamente em sua máquina local sem usar o Docker. Este runtime é destinado principalmente para ambientes controlados, como pipelines de CI ou cenários de teste onde o Docker não está disponível.
-
-:::caution
-**Aviso de segurança**: O Runtime Local é executado sem nenhum isolamento de sandbox. O agente pode acessar e modificar diretamente os arquivos em sua máquina. Use este runtime apenas em ambientes controlados ou quando você entender completamente as implicações de segurança.
-:::
-
-### Pré-requisitos
-
-Antes de usar o Runtime Local, certifique-se de ter as seguintes dependências instaladas:
-
-1. Você seguiu as [instruções de configuração de desenvolvimento](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md).
-2. O tmux está disponível em seu sistema.
-
-### Configuração
-
-Para usar o Runtime Local, além das configurações necessárias como o modelo, chave de API, você precisará definir as seguintes opções por meio de variáveis de ambiente ou do [arquivo config.toml](https://github.com/All-Hands-AI/OpenHands/blob/main/config.template.toml) ao iniciar o OpenHands:
-
-- Via variáveis de ambiente:
-
-```bash
-# Obrigatório
-export RUNTIME=local
-
-# Opcional, mas recomendado
-export WORKSPACE_BASE=/caminho/para/seu/workspace
-```
-
-- Via `config.toml`:
-
-```toml
-[core]
-runtime = "local"
-workspace_base = "/caminho/para/seu/workspace"
-```
-
-Se `WORKSPACE_BASE` não for definido, o runtime criará um diretório temporário para o agente trabalhar.
-
-### Exemplo de uso
-
-Aqui está um exemplo de como iniciar o OpenHands com o Runtime Local no Modo Headless:
-
-```bash
-# Define o tipo de runtime como local
-export RUNTIME=local
-
-# Opcionalmente, define um diretório de workspace
-export WORKSPACE_BASE=/caminho/para/seu/projeto
-
-# Inicia o OpenHands
-poetry run python -m openhands.core.main -t "escreva um script bash que imprima oi"
-```
-
-### Casos de uso
-
-O Runtime Local é particularmente útil para:
-
-- Pipelines de CI/CD onde o Docker não está disponível.
-- Testes e desenvolvimento do próprio OpenHands.
-- Ambientes onde o uso de contêineres é restrito.
-- Cenários onde o acesso direto ao sistema de arquivos é necessário.
+
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes/daytona.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes/daytona.md
new file mode 100644
index 000000000000..aaf7d9ae86d0
--- /dev/null
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes/daytona.md
@@ -0,0 +1,32 @@
+# Runtime Daytona
+
+Você pode usar o [Daytona](https://www.daytona.io/) como um provedor de runtime:
+
+## Passo 1: Obtenha Sua Chave de API do Daytona
+1. Visite o [Painel do Daytona](https://app.daytona.io/dashboard/keys).
+2. Clique em **"Create Key"**.
+3. Digite um nome para sua chave e confirme a criação.
+4. Depois que a chave for gerada, copie-a.
+
+## Passo 2: Configure Sua Chave de API como uma Variável de Ambiente
+Execute o seguinte comando no seu terminal, substituindo `` pela chave real que você copiou:
+```bash
+export DAYTONA_API_KEY=""
+```
+
+Este passo garante que o OpenHands possa se autenticar na plataforma Daytona quando for executado.
+
+## Passo 3: Execute o OpenHands Localmente Usando Docker
+Para iniciar a versão mais recente do OpenHands em sua máquina, execute o seguinte comando no seu terminal:
+```bash
+bash -i <(curl -sL https://get.daytona.io/openhands)
+```
+
+### O Que Este Comando Faz:
+- Baixa o script da versão mais recente do OpenHands.
+- Executa o script em uma sessão interativa do Bash.
+- Automaticamente baixa e executa o contêiner do OpenHands usando Docker.
+
+Uma vez executado, o OpenHands deve estar rodando localmente e pronto para uso.
+
+Para mais detalhes e inicialização manual, veja o [README.md](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/runtime/impl/daytona/README.md) completo
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes/docker.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes/docker.md
new file mode 100644
index 000000000000..db12f26ffcdf
--- /dev/null
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes/docker.md
@@ -0,0 +1,129 @@
+# Docker Runtime
+
+Este é o Runtime padrão que é usado quando você inicia o OpenHands.
+
+## Imagem
+O `SANDBOX_RUNTIME_CONTAINER_IMAGE` da nikolaik é uma imagem de runtime pré-construída
+que contém nosso servidor Runtime, bem como algumas utilidades básicas para Python e NodeJS.
+Você também pode [construir sua própria imagem de runtime](../how-to/custom-sandbox-guide).
+
+## Conectando ao seu sistema de arquivos
+Um recurso útil é a capacidade de se conectar ao seu sistema de arquivos local. Para montar seu sistema de arquivos no runtime:
+
+### Usando SANDBOX_VOLUMES
+
+A maneira mais simples de montar seu sistema de arquivos local é usar a variável de ambiente `SANDBOX_VOLUMES`:
+
+```bash
+docker run # ...
+ -e SANDBOX_USER_ID=$(id -u) \
+ -e SANDBOX_VOLUMES=/path/to/your/code:/workspace:rw \
+ # ...
+```
+
+O formato do `SANDBOX_VOLUMES` é: `caminho_host:caminho_container[:modo]`
+
+- `caminho_host`: O caminho na sua máquina host que você deseja montar
+- `caminho_container`: O caminho dentro do container onde o caminho do host será montado
+ - Use `/workspace` para arquivos que você quer que o agente modifique. O agente trabalha em `/workspace` por padrão.
+ - Use um caminho diferente (ex: `/data`) para materiais de referência somente leitura ou grandes conjuntos de dados
+- `modo`: Modo de montagem opcional, pode ser `rw` (leitura-escrita, padrão) ou `ro` (somente leitura)
+
+Você também pode especificar múltiplas montagens separando-as com vírgulas (`,`):
+
+```bash
+export SANDBOX_VOLUMES=/path1:/workspace/path1,/path2:/workspace/path2:ro
+```
+
+Exemplos:
+
+```bash
+# Exemplo para Linux e Mac - Workspace com permissão de escrita
+export SANDBOX_VOLUMES=$HOME/OpenHands:/workspace:rw
+
+# Exemplo para WSL no Windows - Workspace com permissão de escrita
+export SANDBOX_VOLUMES=/mnt/c/dev/OpenHands:/workspace:rw
+
+# Exemplo de código de referência somente leitura
+export SANDBOX_VOLUMES=/path/to/reference/code:/data:ro
+
+# Exemplo de múltiplas montagens - Workspace com permissão de escrita e dados de referência somente leitura
+export SANDBOX_VOLUMES=$HOME/projects:/workspace:rw,/path/to/large/dataset:/data:ro
+```
+
+> **Nota:** Ao usar múltiplas montagens, a primeira montagem é considerada o workspace principal e será usada para compatibilidade com ferramentas que esperam um único workspace.
+
+> **Importante:** O agente trabalhará em `/workspace` por padrão. Se você quiser que o agente modifique arquivos em seu diretório local, você deve montar esse diretório em `/workspace`. Se você tem dados somente leitura que deseja que o agente acesse mas não modifique, monte-os em um caminho diferente (como `/data`) e instrua explicitamente o agente a procurar lá.
+
+### Usando variáveis WORKSPACE_* (Obsoleto)
+
+> **Nota:** Este método está obsoleto e será removido em uma versão futura. Por favor, use `SANDBOX_VOLUMES` em vez disso.
+
+1. Configure `WORKSPACE_BASE`:
+
+ ```bash
+ export WORKSPACE_BASE=/path/to/your/code
+ ```
+
+2. Adicione as seguintes opções ao comando `docker run`:
+
+ ```bash
+ docker run # ...
+ -e SANDBOX_USER_ID=$(id -u) \
+ -e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
+ -v $WORKSPACE_BASE:/opt/workspace_base \
+ # ...
+ ```
+
+Tenha cuidado! Não há nada impedindo o agente OpenHands de excluir ou modificar
+quaisquer arquivos que estejam montados em seu workspace.
+
+O `-e SANDBOX_USER_ID=$(id -u)` é passado para o comando Docker para garantir que o usuário do sandbox corresponda às
+permissões do usuário do host. Isso impede que o agente crie arquivos pertencentes ao root no workspace montado.
+
+## Instalação Docker Reforçada
+
+Ao implantar o OpenHands em ambientes onde a segurança é uma prioridade, você deve considerar implementar uma
+configuração Docker reforçada. Esta seção fornece recomendações para proteger sua implantação Docker do OpenHands além da configuração padrão.
+
+### Considerações de Segurança
+
+A configuração Docker padrão no README é projetada para facilidade de uso em uma máquina de desenvolvimento local. Se você estiver
+executando em uma rede pública (por exemplo, Wi-Fi de aeroporto), você deve implementar medidas de segurança adicionais.
+
+### Segurança de Vinculação de Rede
+
+Por padrão, o OpenHands se vincula a todas as interfaces de rede (`0.0.0.0`), o que pode expor sua instância a todas as redes às quais
+o host está conectado. Para uma configuração mais segura:
+
+1. **Restringir Vinculação de Rede**: Use a configuração `runtime_binding_address` para restringir quais interfaces de rede o OpenHands escuta:
+
+ ```bash
+ docker run # ...
+ -e SANDBOX_RUNTIME_BINDING_ADDRESS=127.0.0.1 \
+ # ...
+ ```
+
+ Esta configuração garante que o OpenHands só escute na interface de loopback (`127.0.0.1`), tornando-o acessível apenas a partir da máquina local.
+
+2. **Vinculação Segura de Porta**: Modifique a flag `-p` para vincular apenas ao localhost em vez de todas as interfaces:
+
+ ```bash
+ docker run # ... \
+ -p 127.0.0.1:3000:3000 \
+ ```
+
+ Isso garante que a interface web do OpenHands seja acessível apenas a partir da máquina local, não de outras máquinas na rede.
+
+### Isolamento de Rede
+
+Use os recursos de rede do Docker para isolar o OpenHands:
+
+```bash
+# Crie uma rede isolada
+docker network create openhands-network
+
+# Execute o OpenHands na rede isolada
+docker run # ... \
+ --network openhands-network \
+```
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes/local.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes/local.md
new file mode 100644
index 000000000000..2a5d3aa5ac27
--- /dev/null
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes/local.md
@@ -0,0 +1,74 @@
+# Runtime Local
+
+O Runtime Local permite que o agente OpenHands execute ações diretamente em sua máquina local sem usar Docker.
+Este runtime é destinado principalmente para ambientes controlados como pipelines de CI ou cenários de teste onde o Docker não está disponível.
+
+:::caution
+**Aviso de Segurança**: O Runtime Local é executado sem qualquer isolamento de sandbox. O agente pode acessar e modificar
+arquivos diretamente em sua máquina. Use este runtime apenas em ambientes controlados ou quando você compreender completamente as implicações de segurança.
+:::
+
+## Pré-requisitos
+
+Antes de usar o Runtime Local, certifique-se de que:
+
+1. Você pode executar o OpenHands usando o [fluxo de Desenvolvimento](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md).
+2. O tmux está disponível em seu sistema.
+
+## Configuração
+
+Para usar o Runtime Local, além das configurações necessárias como o provedor LLM, modelo e chave API, você precisará definir
+as seguintes opções através de variáveis de ambiente ou do [arquivo config.toml](https://github.com/All-Hands-AI/OpenHands/blob/main/config.template.toml) ao iniciar o OpenHands:
+
+Via variáveis de ambiente:
+
+```bash
+# Obrigatório
+export RUNTIME=local
+
+# Opcional, mas recomendado
+# O agente trabalha em /workspace por padrão, então monte seu diretório de projeto lá
+export SANDBOX_VOLUMES=/caminho/para/seu/workspace:/workspace:rw
+# Para dados somente leitura, use um caminho de montagem diferente
+# export SANDBOX_VOLUMES=/caminho/para/seu/workspace:/workspace:rw,/caminho/para/grande/dataset:/data:ro
+```
+
+Via `config.toml`:
+
+```toml
+[core]
+runtime = "local"
+
+[sandbox]
+# O agente trabalha em /workspace por padrão, então monte seu diretório de projeto lá
+volumes = "/caminho/para/seu/workspace:/workspace:rw"
+# Para dados somente leitura, use um caminho de montagem diferente
+# volumes = "/caminho/para/seu/workspace:/workspace:rw,/caminho/para/grande/dataset:/data:ro"
+```
+
+Se `SANDBOX_VOLUMES` não for definido, o runtime criará um diretório temporário para o agente trabalhar.
+
+## Exemplo de Uso
+
+Aqui está um exemplo de como iniciar o OpenHands com o Runtime Local no Modo Headless:
+
+```bash
+# Defina o tipo de runtime como local
+export RUNTIME=local
+
+# Defina um diretório de workspace (o agente trabalha em /workspace por padrão)
+export SANDBOX_VOLUMES=/caminho/para/seu/projeto:/workspace:rw
+# Para dados somente leitura que você não quer que o agente modifique, use um caminho diferente
+# export SANDBOX_VOLUMES=/caminho/para/seu/projeto:/workspace:rw,/caminho/para/dados/referencia:/data:ro
+
+# Inicie o OpenHands
+poetry run python -m openhands.core.main -t "escreva um script bash que imprima oi"
+```
+
+## Casos de Uso
+
+O Runtime Local é particularmente útil para:
+
+- Pipelines de CI/CD onde o Docker não está disponível.
+- Testes e desenvolvimento do próprio OpenHands.
+- Ambientes onde o uso de contêineres é restrito.
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes/modal.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes/modal.md
new file mode 100644
index 000000000000..fb04de3dbfb2
--- /dev/null
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes/modal.md
@@ -0,0 +1,13 @@
+# Modal Runtime
+
+Nossos parceiros da [Modal](https://modal.com/) forneceram um runtime para OpenHands.
+
+Para usar o Modal Runtime, crie uma conta e, em seguida, [crie uma chave API.](https://modal.com/settings)
+
+Você precisará definir as seguintes variáveis de ambiente ao iniciar o OpenHands:
+```bash
+docker run # ...
+ -e RUNTIME=modal \
+ -e MODAL_API_TOKEN_ID="seu-id" \
+ -e MODAL_API_TOKEN_SECRET="sua-chave-api-modal" \
+```
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes/remote.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes/remote.md
new file mode 100644
index 000000000000..6cb59ea83f71
--- /dev/null
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/runtimes/remote.md
@@ -0,0 +1,9 @@
+# OpenHands Remote Runtime
+
+:::note
+Este runtime é especificamente projetado apenas para fins de avaliação de agentes através do
+[OpenHands evaluation harness](https://github.com/All-Hands-AI/OpenHands/tree/main/evaluation). Não deve ser usado para lançar aplicações OpenHands em produção.
+:::
+
+O OpenHands Remote Runtime está atualmente em beta (leia [aqui](https://runtime.all-hands.dev/) para mais detalhes), ele permite que você execute runtimes
+em paralelo na nuvem. Preencha [este formulário](https://docs.google.com/forms/d/e/1FAIpQLSckVz_JFwg2_mOxNZjCtr7aoBFI2Mwdan3f75J_TrdMS1JV2g/viewform) para se candidatar se quiser experimentar!
\ No newline at end of file
diff --git a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/troubleshooting/troubleshooting.md b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/troubleshooting/troubleshooting.md
index c169d0653a53..9c410811e93b 100644
--- a/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/troubleshooting/troubleshooting.md
+++ b/docs/i18n/pt-BR/docusaurus-plugin-content-docs/current/usage/troubleshooting/troubleshooting.md
@@ -1,48 +1,68 @@
# 🚧 Solução de Problemas
:::tip
-O OpenHands só suporta Windows via WSL. Certifique-se de executar todos os comandos dentro do seu terminal WSL.
+OpenHands só suporta Windows via WSL. Certifique-se de executar todos os comandos dentro do seu terminal WSL.
:::
-### Falha ao iniciar o cliente docker
+### Não é possível acessar a aba do VS Code via IP local
**Descrição**
-Ao executar o OpenHands, o seguinte erro é visto:
+Ao acessar o OpenHands através de uma URL não-localhost (como um endereço IP de LAN), a aba do VS Code mostra um erro "Forbidden", enquanto outras partes da interface funcionam normalmente.
+
+**Resolução**
+
+Isso acontece porque o VS Code é executado em uma porta alta aleatória que pode não estar exposta ou acessível de outras máquinas. Para corrigir isso:
+
+1. Defina uma porta específica para o VS Code usando a variável de ambiente `SANDBOX_VSCODE_PORT`:
+ ```bash
+ docker run -it --rm \
+ -e SANDBOX_VSCODE_PORT=41234 \
+ -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:latest \
+ -v /var/run/docker.sock:/var/run/docker.sock \
+ -v ~/.openhands-state:/.openhands-state \
+ -p 3000:3000 \
+ -p 41234:41234 \
+ --add-host host.docker.internal:host-gateway \
+ --name openhands-app \
+ docker.all-hands.dev/all-hands-ai/openhands:latest
+ ```
+
+2. Certifique-se de expor a mesma porta com `-p 41234:41234` no seu comando Docker.
+
+3. Alternativamente, você pode definir isso no seu arquivo `config.toml`:
+ ```toml
+ [sandbox]
+ vscode_port = 41234
+ ```
+
+### Falha ao iniciar o cliente docker
+
+**Descrição**
+Ao executar o OpenHands, o seguinte erro é exibido:
```
Launch docker client failed. Please make sure you have installed docker and started docker desktop/daemon.
```
**Resolução**
-Tente estes passos em ordem:
+Tente estas soluções em ordem:
+* Confirme se o `docker` está em execução no seu sistema. Você deve conseguir executar `docker ps` no terminal com sucesso.
+* Se estiver usando o Docker Desktop, certifique-se de que `Settings > Advanced > Allow the default Docker socket to be used` esteja habilitado.
+* Dependendo da sua configuração, você pode precisar habilitar `Settings > Resources > Network > Enable host networking` no Docker Desktop.
+* Reinstale o Docker Desktop.
-- Confirme que o `docker` está em execução no seu sistema. Você deve ser capaz de executar `docker ps` no terminal com sucesso.
-- Se estiver usando o Docker Desktop, certifique-se de que `Settings > Advanced > Allow the default Docker socket to be used` esteja habilitado.
-- Dependendo da sua configuração, você pode precisar habilitar `Settings > Resources > Network > Enable host networking` no Docker Desktop.
-- Reinstale o Docker Desktop.
-
----
-
-# Problemas Específicos ao Ambiente de Desenvolvimento
-
-### Erro ao construir a imagem docker do runtime
+### Erro de Permissão
**Descrição**
-Tentativas de iniciar uma nova sessão falham e erros com termos como os seguintes aparecem nos logs:
+No prompt inicial, um erro é exibido com `Permission Denied` ou `PermissionError`.
-```
-debian-security bookworm-security
-InRelease At least one invalid signature was encountered.
-```
-
-Isso parece acontecer quando o hash de uma biblioteca externa existente muda e sua instância local do docker tem uma versão anterior em cache. Para contornar isso, tente o seguinte:
+**Resolução**
-- Pare quaisquer contêineres onde o nome tenha o prefixo `openhands-runtime-`:
- `docker ps --filter name=openhands-runtime- --filter status=running -aq | xargs docker stop`
-- Remova quaisquer contêineres onde o nome tenha o prefixo `openhands-runtime-`:
- `docker rmi $(docker images --filter name=openhands-runtime- -q --no-trunc)`
-- Pare e remova quaisquer contêineres / imagens onde o nome tenha o prefixo `openhands-runtime-`
-- Limpe contêineres / imagens: `docker container prune -f && docker image prune -f`
+* Verifique se o diretório `~/.openhands-state` pertence ao usuário `root`. Se sim, você pode:
+ * Alterar a propriedade do diretório: `sudo chown : ~/.openhands-state`.
+ * ou atualizar as permissões do diretório: `sudo chmod 777 ~/.openhands-state`
+ * ou excluí-lo se você não precisar de dados anteriores. O OpenHands irá recriá-lo. Você precisará inserir novamente as configurações do LLM.
+* Se estiver montando um diretório local, certifique-se de que seu `WORKSPACE_BASE` tenha as permissões necessárias para o usuário que está executando o OpenHands.
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/about.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/about.md
index 2847f317f78b..82203371e104 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/about.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/about.md
@@ -2,25 +2,24 @@
## 研究策略
-使用 LLM 实现生产级应用的完全复制是一项复杂的工作。我们的策略包括:
+通过LLM实现对生产级应用程序的完全复制是一项复杂的工作。我们的策略包括:
-1. **核心技术研究:** 专注于基础研究,以理解和改进代码生成和处理的技术方面
-2. **专业能力:** 通过数据整理、训练方法等提高核心组件的效率
-3. **任务规划:** 开发 bug 检测、代码库管理和优化的能力
-4. **评估:** 建立全面的评估指标,以更好地理解和改进我们的模型
+- **核心技术研究:** 专注于基础研究,以理解并改进代码生成和处理的技术方面。
+- **任务规划:** 开发用于错误检测、代码库管理和优化的能力。
+- **评估:** 建立全面的评估指标,以更好地理解和改进我们的智能体。
-## 默认 Agent
+## 默认智能体
-我们当前的默认 Agent 是 [CodeActAgent](agents),它能够生成代码并处理文件。
+我们当前的默认智能体是[CodeActAgent](agents),它能够生成代码并处理文件。
-## 构建技术
+## 技术栈
-OpenHands 使用强大的框架和库组合构建,为其开发提供了坚实的基础。以下是项目中使用的关键技术:
+OpenHands使用多种强大的框架和库构建,为其开发提供了坚实的基础。以下是项目中使用的关键技术:
       
-请注意,这些技术的选择正在进行中,随着项目的发展,可能会添加其他技术或删除现有技术。我们努力采用最合适和最有效的工具来增强 OpenHands 的能力。
+请注意,这些技术的选择仍在进行中,随着项目的发展,可能会添加新技术或移除现有技术。我们努力采用最合适和高效的工具来增强OpenHands的能力。
## 许可证
-根据 MIT [许可证](https://github.com/All-Hands-AI/OpenHands/blob/main/LICENSE) 分发。
+根据MIT [许可证](https://github.com/All-Hands-AI/OpenHands/blob/main/LICENSE)分发。
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/agents.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/agents.md
index 90e32f0aad7b..373358d50b41 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/agents.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/agents.md
@@ -4,15 +4,15 @@
### 描述
-这个代理实现了 CodeAct 的思想([论文](https://arxiv.org/abs/2402.01030),[推文](https://twitter.com/xingyaow_/status/1754556835703751087)),将 LLM 代理的**行动**整合到一个统一的**代码**行动空间中,以实现_简单性_和_性能_。
+该代理实现了CodeAct理念([论文](https://arxiv.org/abs/2402.01030),[推文](https://twitter.com/xingyaow_/status/1754556835703751087)),将LLM代理的**行动**整合到统一的**代码**行动空间中,以实现_简洁性_和_性能_。
-概念思想如下图所示。在每一轮中,代理可以:
+概念性的想法如下图所示。在每个回合中,代理可以:
1. **对话**:用自然语言与人类交流,以寻求澄清、确认等。
2. **CodeAct**:选择通过执行代码来执行任务
-- 执行任何有效的 Linux `bash` 命令
-- 使用 [交互式 Python 解释器](https://ipython.org/) 执行任何有效的 `Python` 代码。这是通过 `bash` 命令模拟的,有关更多详细信息,请参阅下面的插件系统。
+- 执行任何有效的Linux `bash`命令
+- 通过[交互式Python解释器](https://ipython.org/)执行任何有效的`Python`代码。这是通过`bash`命令模拟实现的,更多详情请参见下面的插件系统。

@@ -20,4 +20,4 @@
https://github.com/All-Hands-AI/OpenHands/assets/38853559/f592a192-e86c-4f48-ad31-d69282d5f6ac
-_使用 `gpt-4-turbo-2024-04-09` 的 CodeActAgent 执行数据科学任务(线性回归)的示例_。
+_使用`gpt-4-turbo-2024-04-09`的CodeActAgent执行数据科学任务(线性回归)的示例_。
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/architecture/backend.mdx b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/architecture/backend.mdx
index c22231dc1da9..23ff0116c3ec 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/architecture/backend.mdx
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/architecture/backend.mdx
@@ -1,5 +1,3 @@
-以下是翻译后的内容:
-
# 🏛️ 系统架构
@@ -7,48 +5,49 @@
OpenHands 系统架构图 (2024年7月4日)
-这是系统架构的高层次概述。系统分为两个主要组件:前端和后端。前端负责处理用户交互并显示结果。后端负责处理业务逻辑并执行代理。
+这是系统架构的高级概述。系统分为两个主要组件:前端和后端。前端负责处理用户交互并显示结果。后端负责处理业务逻辑和执行代理。
-# 前端架构 {#frontend-architecture-zh}
+# 前端架构 {#frontend-architecture-en}

-这个概述经过简化,只显示了主要组件及其交互。有关后端架构的更详细视图,请参阅下面的后端架构部分。
+此概述经过简化,仅显示主要组件及其交互。有关后端架构的更详细视图,请参阅下面的后端架构部分。
-# 后端架构 {#backend-architecture-zh}
+# 后端架构 {#backend-architecture-en}
-_**免责声明**:后端架构正在进行中,可能会发生变化。下图显示了基于图表页脚中显示的提交的后端当前架构。_
+_**免责声明**:后端架构仍在开发中,可能会发生变化。以下图表显示了基于图表页脚中显示的提交的当前后端架构。_

更新此图表
- 后端架构图的生成是部分自动化的。
- 该图是使用py2puml工具从代码中的类型提示生成的。然后手动审查、调整图表并导出为PNG和SVG格式。
+ 后端架构图的生成部分是自动化的。
+ 该图表是使用py2puml工具从代码中的类型提示生成的。然后手动审查、调整并导出为PNG
+ 和SVG格式。
## 先决条件
- - 运行可执行openhands的python环境
+ - 运行可执行openhands的Python环境
(根据存储库根目录中README.md文件中的说明)
- - 已安装[py2puml](https://github.com/lucsorel/py2puml)
+ - 安装[py2puml](https://github.com/lucsorel/py2puml)
## 步骤
-1. 通过从存储库的根目录运行以下命令来自动生成图表:
+1. 通过从存储库根目录运行以下命令自动生成图表:
`py2puml openhands openhands > docs/architecture/backend_architecture.puml`
-2. 在PlantUML编辑器中打开生成的文件,例如带有PlantUML扩展的Visual Studio Code或[PlantText](https://www.planttext.com/)
+2. 在PlantUML编辑器中打开生成的文件,例如安装了PlantUML扩展的Visual Studio Code或[PlantText](https://www.planttext.com/)
-3. 审查生成的PUML,并对图表进行所有必要的调整(添加缺失的部分,修复错误,改进定位)。
- _py2puml根据代码中的类型提示创建图表,因此缺失或不正确的类型提示可能导致图表不完整或不正确。_
+3. 审查生成的PUML并对图表进行所有必要的调整(添加缺失部分,修复错误,改进定位)。
+ _py2puml根据代码中的类型提示创建图表,因此缺失或不正确的类型提示可能导致图表不完整或不正确。_
-4. 审查新图表和以前图表之间的差异,并手动检查更改是否正确。
+4. 查看新旧图表之间的差异,并手动检查更改是否正确。
_确保不要删除过去手动添加到图表中且仍然相关的部分。_
-5. 将用于生成图表的提交的提交哈希添加到图表页脚。
+5. 将用于生成图表的提交哈希添加到图表页脚。
-6. 将图表导出为PNG和SVG文件,并替换`docs/architecture`目录中的现有图表。这可以使用(例如[PlantText](https://www.planttext.com/))完成
+6. 将图表导出为PNG和SVG文件,并替换`docs/architecture`目录中的现有图表。这可以通过(例如[PlantText](https://www.planttext.com/))完成
-
+
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/architecture/runtime.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/architecture/runtime.md
index 5e01f62da5d8..d3166a43dbc5 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/architecture/runtime.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/architecture/runtime.md
@@ -1,42 +1,40 @@
-以下是翻译后的内容:
-
# 📦 Docker 运行时
-OpenHands Docker 运行时是实现 AI 代理操作安全灵活执行的核心组件。
-它使用 Docker 创建一个沙盒环境,可以安全地运行任意代码而不会危及主机系统。
+OpenHands Docker 运行时是使 AI 代理能够安全灵活执行操作的核心组件。
+它使用 Docker 创建一个沙盒环境,在这个环境中可以安全地运行任意代码,而不会危及宿主系统。
-## 为什么我们需要沙盒运行时?
+## 为什么我们需要沙盒运行时?
-OpenHands 需要在安全、隔离的环境中执行任意代码,原因如下:
+OpenHands 需要在安全、隔离的环境中执行任意代码,原因如下:
-1. 安全性:执行不受信任的代码可能会给主机系统带来重大风险。沙盒环境可以防止恶意代码访问或修改主机系统的资源
-2. 一致性:沙盒环境确保代码执行在不同机器和设置下保持一致,消除"在我的机器上可以工作"的问题
-3. 资源控制:沙盒允许更好地控制资源分配和使用,防止失控进程影响主机系统
-4. 隔离:不同的项目或用户可以在隔离的环境中工作,而不会相互干扰或影响主机系统
-5. 可重现性:沙盒环境使重现错误和问题变得更容易,因为执行环境是一致和可控的
+1. 安全性:执行不受信任的代码可能对宿主系统造成重大风险。沙盒环境可防止恶意代码访问或修改宿主系统的资源
+2. 一致性:沙盒环境确保代码执行在不同机器和设置上保持一致,消除"在我的机器上可以运行"的问题
+3. 资源控制:沙盒允许更好地控制资源分配和使用,防止失控进程影响宿主系统
+4. 隔离:不同项目或用户可以在隔离的环境中工作,而不会相互干扰或影响宿主系统
+5. 可重现性:沙盒环境使得重现错误和问题变得更容易,因为执行环境是一致且可控的
-## 运行时如何工作?
+## 运行时如何工作?
-OpenHands 运行时系统使用 Docker 容器实现的客户端-服务器架构。以下是它的工作原理概述:
+OpenHands 运行时系统使用 Docker 容器实现的客户端-服务器架构。以下是其工作原理概述:
```mermaid
graph TD
A[用户提供的自定义 Docker 镜像] --> B[OpenHands 后端]
B -->|构建| C[OH 运行时镜像]
- C -->|启动| D[Action 执行器]
+ C -->|启动| D[操作执行器]
D -->|初始化| E[浏览器]
D -->|初始化| F[Bash Shell]
D -->|初始化| G[插件]
G -->|初始化| L[Jupyter 服务器]
B -->|生成| H[代理]
- B -->|生成| I[EventStream]
+ B -->|生成| I[事件流]
I <--->|通过 REST API
- 执行 Action 获取 Observation
+ 执行操作获取观察结果
| D
- H -->|生成 Action| I
- I -->|获取 Observation| H
+ H -->|生成操作| I
+ I -->|获取观察结果| H
subgraph "Docker 容器"
D
@@ -47,85 +45,82 @@ graph TD
end
```
-1. 用户输入:用户提供自定义基础 Docker 镜像
-2. 镜像构建:OpenHands 基于用户提供的镜像构建新的 Docker 镜像("OH 运行时镜像")。这个新镜像包含 OpenHands 特定的代码,主要是"运行时客户端"
-3. 容器启动:当 OpenHands 启动时,它使用 OH 运行时镜像启动一个 Docker 容器
-4. Action 执行服务器初始化:Action 执行服务器在容器内初始化一个 `ActionExecutor`,设置必要的组件,如 bash shell,并加载任何指定的插件
-5. 通信:OpenHands 后端(`openhands/runtime/impl/eventstream/eventstream_runtime.py`)通过 RESTful API 与 Action 执行服务器通信,发送 Action 并接收 Observation
-6. Action 执行:运行时客户端从后端接收 Action,在沙盒环境中执行它们,并将 Observation 发送回去
-7. Observation 返回:Action 执行服务器将执行结果作为 Observation 发送回 OpenHands 后端
+1. 用户输入:用户提供自定义基础 Docker 镜像
+2. 镜像构建:OpenHands 基于用户提供的镜像构建新的 Docker 镜像("OH 运行时镜像")。这个新镜像包含 OpenHands 特定代码,主要是"运行时客户端"
+3. 容器启动:当 OpenHands 启动时,它使用 OH 运行时镜像启动 Docker 容器
+4. 操作执行服务器初始化:操作执行服务器在容器内初始化 `ActionExecutor`,设置必要组件如 bash shell 并加载指定的插件
+5. 通信:OpenHands 后端(`openhands/runtime/impl/eventstream/eventstream_runtime.py`)通过 RESTful API 与操作执行服务器通信,发送操作并接收观察结果
+6. 操作执行:运行时客户端从后端接收操作,在沙盒环境中执行它们,并返回观察结果
+7. 观察结果返回:操作执行服务器将执行结果作为观察结果发送回 OpenHands 后端
+
+客户端的角色:
-客户端的作用:
- 它充当 OpenHands 后端和沙盒环境之间的中介
-- 它在容器内安全地执行各种类型的 Action(shell 命令、文件操作、Python 代码等)
-- 它管理沙盒环境的状态,包括当前工作目录和加载的插件
-- 它格式化 Observation 并将其返回给后端,确保处理结果的接口一致
+- 它在容器内安全地执行各种类型的操作(shell 命令、文件操作、Python 代码等)
+- 它管理沙盒环境的状态,包括当前工作目录和已加载的插件
+- 它格式化并将观察结果返回给后端,确保处理结果的接口一致
## OpenHands 如何构建和维护 OH 运行时镜像
-OpenHands 构建和管理运行时镜像的方法确保了在为生产和开发环境创建和维护 Docker 镜像时的效率、一致性和灵活性。
+OpenHands 构建和管理运行时镜像的方法确保了在创建和维护生产和开发环境的 Docker 镜像时的效率、一致性和灵活性。
-如果你对更多细节感兴趣,可以查看[相关代码](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/runtime/utils/runtime_build.py)。
+如果您对更多细节感兴趣,请查看[相关代码](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/runtime/utils/runtime_build.py)。
### 镜像标签系统
-OpenHands 为其运行时镜像使用三标签系统,以平衡可重现性和灵活性。
-标签可以是以下 2 种格式之一:
+OpenHands 使用三标签系统来平衡其运行时镜像的可重现性和灵活性。
+标签可能采用以下 2 种格式之一:
-- **版本标签**: `oh_v{openhands_version}_{base_image}` (例如: `oh_v0.9.9_nikolaik_s_python-nodejs_t_python3.12-nodejs22`)
-- **锁定标签**: `oh_v{openhands_version}_{16_digit_lock_hash}` (例如: `oh_v0.9.9_1234567890abcdef`)
-- **源码标签**: `oh_v{openhands_version}_{16_digit_lock_hash}_{16_digit_source_hash}`
- (例如: `oh_v0.9.9_1234567890abcdef_1234567890abcdef`)
+- **版本标签**:`oh_v{openhands_version}_{base_image}`(例如:`oh_v0.9.9_nikolaik_s_python-nodejs_t_python3.12-nodejs22`)
+- **锁定标签**:`oh_v{openhands_version}_{16_digit_lock_hash}`(例如:`oh_v0.9.9_1234567890abcdef`)
+- **源码标签**:`oh_v{openhands_version}_{16_digit_lock_hash}_{16_digit_source_hash}`
+ (例如:`oh_v0.9.9_1234567890abcdef_1234567890abcdef`)
#### 源码标签 - 最具体
-这是源目录的目录哈希的 MD5 的前 16 位数字。这为 openhands 源码提供了一个哈希值。
+这是源目录的目录哈希的 MD5 的前 16 位数字。这仅为 openhands 源码提供了一个哈希值。
#### 锁定标签
-这个哈希由以下内容的 MD5 的前 16 位数字构建:
-- 构建镜像所基于的基础镜像的名称(例如: `nikolaik/python-nodejs:python3.12-nodejs22`)
+此哈希值由以下内容的 MD5 的前 16 位数字构建:
+
+- 构建镜像所基于的基础镜像的名称(例如:`nikolaik/python-nodejs:python3.12-nodejs22`)
- 镜像中包含的 `pyproject.toml` 的内容
- 镜像中包含的 `poetry.lock` 的内容
-这实际上为 Openhands 的依赖项提供了一个独立于源代码的哈希值。
+这有效地为 Openhands 的依赖项提供了一个独立于源代码的哈希值。
#### 版本标签 - 最通用
-这个标签是 openhands 版本和基础镜像名称的串联(转换以适应标签标准)。
+此标签是 openhands 版本和基础镜像名称(转换为符合标签标准)的连接。
#### 构建过程
-在生成镜像时...
+生成镜像时...
-- **无需重建**:OpenHands 首先检查是否存在具有相同**最具体源码标签**的镜像。如果存在这样的镜像,
- 则不执行构建 - 使用现有镜像。
-- **最快重建**:OpenHands 接下来检查是否存在具有**通用锁定标签**的镜像。如果存在这样的镜像,
- OpenHands 会基于它构建一个新镜像,绕过所有安装步骤(如 `poetry install` 和
- `apt-get`),除了最后一个复制当前源代码的操作。新镜像仅使用**源码**标签。
-- **还行的重建**:如果**源码**和**锁定**标签都不存在,将基于**版本**标签镜像构建镜像。
- 在版本标签镜像中,大多数依赖项应该已经安装,从而节省时间。
-- **最慢重建**:如果三个标签都不存在,则基于基础镜像构建全新的镜像
- (这是一个较慢的操作)。这个新镜像使用**源码**、**锁定**和**版本**标签。
+- **无需重建**:OpenHands 首先检查是否存在具有相同**最具体源码标签**的镜像。如果存在这样的镜像,则不执行构建 - 使用现有镜像。
+- **最快重建**:OpenHands 接下来检查是否存在具有**通用锁定标签**的镜像。如果存在这样的镜像,OpenHands 基于它构建新镜像,绕过所有安装步骤(如 `poetry install` 和 `apt-get`),只执行最后一步操作来复制当前源代码。新镜像仅使用**源码**标签标记。
+- **一般重建**:如果既没有**源码**标签也没有**锁定**标签存在,将基于**版本**标签镜像构建镜像。在版本标签镜像中,大多数依赖项应该已经安装,从而节省时间。
+- **最慢重建**:如果三个标签都不存在,将基于基础镜像构建全新镜像(这是一个较慢的操作)。这个新镜像将使用所有**源码**、**锁定**和**版本**标签进行标记。
-这种标记方法允许 OpenHands 高效地管理开发和生产环境。
+这种标签方法使 OpenHands 能够高效管理开发和生产环境。
-1. 相同的源代码和 Dockerfile 总是产生相同的镜像(通过基于哈希的标签)
-2. 当发生小的更改时,系统可以快速重建镜像(通过利用最近兼容的镜像)
-3. **锁定**标签(例如: `runtime:oh_v0.9.3_1234567890abcdef`)总是指向特定基础镜像、依赖项和 OpenHands 版本组合的最新构建
+1. 相同的源代码和 Dockerfile 总是产生相同的镜像(通过基于哈希的标签)
+2. 当发生微小变化时,系统可以快速重建镜像(通过利用最近的兼容镜像)
+3. **锁定**标签(例如,`runtime:oh_v0.9.3_1234567890abcdef`)始终指向特定基础镜像、依赖项和 OpenHands 版本组合的最新构建
## 运行时插件系统
-OpenHands 运行时支持一个插件系统,允许扩展功能和自定义运行时环境。插件在运行时客户端启动时初始化。
+OpenHands 运行时支持插件系统,允许扩展功能和自定义运行时环境。插件在运行时客户端启动时初始化。
-如果你想实现自己的插件,可以查看[这里的 Jupyter 插件示例](https://github.com/All-Hands-AI/OpenHands/blob/ecf4aed28b0cf7c18d4d8ff554883ba182fc6bdd/openhands/runtime/plugins/jupyter/__init__.py#L21-L55)。
+如果您想实现自己的插件,请查看[这里的 Jupyter 插件示例](https://github.com/All-Hands-AI/OpenHands/blob/ecf4aed28b0cf7c18d4d8ff554883ba182fc6bdd/openhands/runtime/plugins/jupyter/__init__.py#L21-L55)。
-*关于插件系统的更多细节仍在建设中 - 欢迎贡献!*
+*关于插件系统的更多详细信息仍在建设中 - 欢迎贡献!*
-插件系统的关键方面:
+插件系统的关键方面:
-1. 插件定义:插件被定义为继承自基础 `Plugin` 类的 Python 类
-2. 插件注册:可用的插件在 `ALL_PLUGINS` 字典中注册
-3. 插件规范:插件与 `Agent.sandbox_plugins: list[PluginRequirement]` 相关联。用户可以在初始化运行时时指定要加载的插件
-4. 初始化:插件在运行时客户端启动时异步初始化
-5. 使用:运行时客户端可以使用初始化的插件来扩展其功能(例如,用于运行 IPython 单元格的 JupyterPlugin)
+1. 插件定义:插件被定义为继承自基础 `Plugin` 类的 Python 类
+2. 插件注册:可用插件在 `ALL_PLUGINS` 字典中注册
+3. 插件规范:插件与 `Agent.sandbox_plugins: list[PluginRequirement]` 相关联。用户可以在初始化运行时时指定要加载的插件
+4. 初始化:插件在运行时客户端启动时异步初始化
+5. 使用:运行时客户端可以使用已初始化的插件来扩展其功能(例如,用于运行 IPython 单元格的 JupyterPlugin)
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/cloud/cloud-api.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/cloud/cloud-api.md
new file mode 100644
index 000000000000..082b7a78b72d
--- /dev/null
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/cloud/cloud-api.md
@@ -0,0 +1,177 @@
+# OpenHands Cloud API
+
+OpenHands Cloud提供了REST API,允许您以编程方式与服务交互。如果您想以灵活的方式从程序中轻松启动自己的任务,这将非常有用。
+
+本指南解释了如何获取API密钥并使用API启动对话。
+有关API的更详细信息,请参阅[OpenHands API参考](https://docs.all-hands.dev/swagger-ui/)。
+
+## 获取API密钥
+
+要使用OpenHands Cloud API,您需要生成一个API密钥:
+
+1. 登录您的[OpenHands Cloud](https://app.all-hands.dev)账户
+2. 导航至[设置页面](https://app.all-hands.dev/settings)
+3. 找到"API密钥"部分
+4. 点击"生成新密钥"
+5. 为您的密钥提供一个描述性名称(例如,"开发环境","生产环境")
+6. 复制生成的API密钥并安全存储 - 它只会显示一次
+
+
+
+## API使用
+
+### 开始新对话
+
+要开始一个新的OpenHands执行任务的对话,您需要向对话端点发送POST请求。
+
+#### 请求参数
+
+| 参数 | 类型 | 必需 | 描述 |
+|-----------|------|----------|-------------|
+| `initial_user_msg` | string | 是 | 开始对话的初始消息 |
+| `repository` | string | 否 | 提供上下文的Git仓库名称,格式为`owner/repo`。您必须有权访问该仓库。 |
+
+#### 示例
+
+
+cURL
+
+```bash
+curl -X POST "https://app.all-hands.dev/api/conversations" \
+ -H "Authorization: Bearer YOUR_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "initial_user_msg": "Check whether there is any incorrect information in the README.md file and send a PR to fix it if so.",
+ "repository": "yourusername/your-repo"
+ }'
+```
+
+
+
+Python (with requests)
+
+```python
+import requests
+
+api_key = "YOUR_API_KEY"
+url = "https://app.all-hands.dev/api/conversations"
+
+headers = {
+ "Authorization": f"Bearer {api_key}",
+ "Content-Type": "application/json"
+}
+
+data = {
+ "initial_user_msg": "Check whether there is any incorrect information in the README.md file and send a PR to fix it if so.",
+ "repository": "yourusername/your-repo"
+}
+
+response = requests.post(url, headers=headers, json=data)
+conversation = response.json()
+
+print(f"Conversation Link: https://app.all-hands.dev/conversations/{conversation['id']}")
+print(f"Status: {conversation['status']}")
+```
+
+
+
+TypeScript/JavaScript (with fetch)
+
+```typescript
+const apiKey = "YOUR_API_KEY";
+const url = "https://app.all-hands.dev/api/conversations";
+
+const headers = {
+ "Authorization": `Bearer ${apiKey}`,
+ "Content-Type": "application/json"
+};
+
+const data = {
+ initial_user_msg: "Check whether there is any incorrect information in the README.md file and send a PR to fix it if so.",
+ repository: "yourusername/your-repo"
+};
+
+async function startConversation() {
+ try {
+ const response = await fetch(url, {
+ method: "POST",
+ headers: headers,
+ body: JSON.stringify(data)
+ });
+
+ const conversation = await response.json();
+
+ console.log(`Conversation Link: https://app.all-hands.dev/conversations/${conversation.id}`);
+ console.log(`Status: ${conversation.status}`);
+
+ return conversation;
+ } catch (error) {
+ console.error("Error starting conversation:", error);
+ }
+}
+
+startConversation();
+```
+
+
+
+#### 响应
+
+API将返回一个包含已创建对话详情的JSON对象:
+
+```json
+{
+ "status": "ok",
+ "conversation_id": "abc1234",
+}
+```
+
+如果出现以下情况,您可能会收到`AuthenticationError`:
+
+1. 您提供了无效的API密钥
+2. 您提供了错误的仓库名称
+3. 您没有访问该仓库的权限
+
+
+### 获取对话状态
+
+您可以通过向对话端点发送GET请求来检查对话的状态。
+
+#### 端点
+
+```
+GET https://app.all-hands.dev/api/conversations/{conversation_id}
+```
+
+#### 示例
+
+
+cURL
+
+```bash
+curl -X GET "https://app.all-hands.dev/api/conversations/{conversation_id}" \
+ -H "Authorization: Bearer YOUR_API_KEY"
+```
+
+
+#### 响应
+
+响应格式如下:
+
+```json
+{
+ "conversation_id":"abc1234",
+ "title":"Update README.md",
+ "created_at":"2025-04-29T15:13:51.370706Z",
+ "last_updated_at":"2025-04-29T15:13:57.199210Z",
+ "status":"RUNNING",
+ "selected_repository":"yourusername/your-repo",
+ "trigger":"gui"
+}
+```
+
+## 速率限制
+
+API对每个账户有10个同时对话的限制。如果您的使用场景需要更高的限制,请通过[contact@all-hands.dev](mailto:contact@all-hands.dev)联系我们。
+
+如果您超过此限制,API将返回429 Too Many Requests响应。
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/cloud/cloud-github-resolver.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/cloud/cloud-github-resolver.md
new file mode 100644
index 000000000000..840825ef2ed2
--- /dev/null
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/cloud/cloud-github-resolver.md
@@ -0,0 +1,31 @@
+# Cloud GitHub Resolver
+
+GitHub Resolver 自动修复代码并为您的仓库提供智能辅助。
+
+## 设置
+
+当您[授予 OpenHands Cloud 仓库访问权限](./openhands-cloud#adding-repository-access)后,Cloud GitHub Resolver 会自动可用。
+
+## 使用方法
+
+授予 OpenHands Cloud 仓库访问权限后,您可以在仓库的 issues 和 pull requests 中使用 Cloud GitHub Resolver。
+
+### Issues
+
+在您的仓库中,给 issue 添加 `openhands` 标签。OpenHands 将会:
+1. 在 issue 上发表评论,让您知道它正在处理该问题。
+ - 您可以点击链接在 OpenHands Cloud 上跟踪进度。
+2. 如果确定问题已成功解决,则会打开一个 pull request。
+3. 在 issue 上发表评论,总结已执行的任务并提供 pull request 的链接。
+
+
+### Pull Requests
+
+要让 OpenHands 处理 pull requests,请在顶级或内联评论中使用 `@openhands` 来:
+ - 提问
+ - 请求更新
+ - 获取代码解释
+
+OpenHands 将会:
+1. 在 PR 上发表评论,让您知道它正在处理该请求。
+2. 执行任务。
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/cloud/openhands-cloud.mdx b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/cloud/openhands-cloud.mdx
new file mode 100644
index 000000000000..19b4995a1109
--- /dev/null
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/cloud/openhands-cloud.mdx
@@ -0,0 +1,65 @@
+# OpenHands Cloud
+
+OpenHands Cloud 是由 All Hands AI 提供的 OpenHands 云托管版本。
+
+## 访问 OpenHands Cloud
+
+OpenHands Cloud 可以通过 https://app.all-hands.dev/ 访问。
+
+您还可以使用 [API](./cloud-api) 以编程方式与 OpenHands Cloud 交互。
+
+## 入门指南
+
+访问 OpenHands Cloud 后,系统会要求您连接您的 GitHub 或 GitLab 账户:
+
+1. 阅读并接受服务条款后,点击 `Log in with GitHub` 或 `Log in with GitLab`。
+2. 查看 OpenHands 请求的权限,然后点击 `Authorize OpenHands AI`。
+ - OpenHands 将需要您的 GitHub 或 GitLab 账户的一些权限。要了解更多关于这些权限的信息:
+ - GitHub:您可以点击 GitHub 授权页面上的 `Learn more` 链接。
+ - GitLab:您可以在 GitLab 授权页面上展开每个权限请求。
+
+## 仓库访问
+
+### GitHub
+
+#### 添加仓库访问权限
+
+您可以授予 OpenHands 特定仓库的访问权限:
+1. 在首页点击 `Add GitHub repos`。
+2. 选择组织,然后选择要授予 OpenHands 访问权限的特定仓库。
+
+ 仓库访问权限详情
+
+ Openhands 请求短期令牌(8小时过期)并具有以下权限:
+ - Actions:读写权限
+ - Administration:只读权限
+ - Commit statuses:读写权限
+ - Contents:读写权限
+ - Issues:读写权限
+ - Metadata:只读权限
+ - Pull requests:读写权限
+ - Webhooks:读写权限
+ - Workflows:读写权限
+
+ 用户的仓库访问权限基于:
+ - 为仓库授予的权限。
+ - 用户的 GitHub 权限(所有者/协作者)。
+
+
+3. 点击 `Install & Authorize`。
+
+#### 修改仓库访问权限
+
+您可以随时修改 GitHub 仓库访问权限,方法是:
+* 使用相同的 `Add GitHub repos` 流程,或
+* 访问设置页面,在 `Git Settings` 部分下选择 `Configure GitHub Repositories`。
+
+### GitLab
+
+使用 GitLab 账户时,OpenHands 将自动获得对您仓库的访问权限。
+
+## 对话持久性
+
+- 对话列表 – 仅显示过去 10 天内发起的 10 个最近对话。
+- 工作区 – 对话工作区保留 14 天。
+- 运行时 – 运行时保持活跃("热"状态)30 分钟。在此期间后,恢复对话可能需要 1-2 分钟。
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/configuration-options.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/configuration-options.md
index 4b0e5c63f0f9..18b67a4d1f7e 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/configuration-options.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/configuration-options.md
@@ -1,83 +1,41 @@
# 配置选项
-本指南详细介绍了 OpenHands 的所有可用配置选项,帮助您自定义其行为并与其他服务集成。
-
:::note
-如果您在 [GUI 模式](https://docs.all-hands.dev/modules/usage/how-to/gui-mode) 下运行,Settings UI 中的可用设置将始终优先。
+本页概述了 OpenHands 的所有可用配置选项,允许您自定义其行为并将其与其他服务集成。在 GUI 模式下,通过设置界面应用的任何设置将优先生效。
:::
----
-
-# 目录
-
-1. [核心配置](#core-configuration)
- - [API Keys](#api-keys)
- - [工作区](#workspace)
- - [调试和日志记录](#debugging-and-logging)
- - [轨迹](#trajectories)
- - [文件存储](#file-store)
- - [任务管理](#task-management)
- - [沙箱配置](#sandbox-configuration)
- - [其他](#miscellaneous)
-2. [LLM 配置](#llm-configuration)
- - [AWS 凭证](#aws-credentials)
- - [API 配置](#api-configuration)
- - [自定义 LLM Provider](#custom-llm-provider)
- - [Embeddings](#embeddings)
- - [消息处理](#message-handling)
- - [模型选择](#model-selection)
- - [重试](#retrying)
- - [高级选项](#advanced-options)
-3. [Agent 配置](#agent-configuration)
- - [内存配置](#memory-configuration)
- - [LLM 配置](#llm-configuration-1)
- - [ActionSpace 配置](#actionspace-configuration)
- - [Microagent 使用](#microagent-usage)
-4. [沙箱配置](#sandbox-configuration-1)
- - [执行](#execution)
- - [容器镜像](#container-image)
- - [网络](#networking)
- - [Linting 和插件](#linting-and-plugins)
- - [依赖和环境](#dependencies-and-environment)
- - [评估](#evaluation)
-5. [安全配置](#security-configuration)
- - [确认模式](#confirmation-mode)
- - [安全分析器](#security-analyzer)
-
----
-
## 核心配置
核心配置选项在 `config.toml` 文件的 `[core]` 部分中定义。
-**API Keys**
+### API 密钥
- `e2b_api_key`
- 类型: `str`
- 默认值: `""`
- - 描述: E2B 的 API key
+ - 描述: E2B 的 API 密钥
- `modal_api_token_id`
- 类型: `str`
- 默认值: `""`
- - 描述: Modal 的 API token ID
+ - 描述: Modal 的 API 令牌 ID
- `modal_api_token_secret`
- 类型: `str`
- 默认值: `""`
- - 描述: Modal 的 API token secret
+ - 描述: Modal 的 API 令牌密钥
-**工作区**
-- `workspace_base`
+### 工作区
+- `workspace_base` **(已弃用)**
- 类型: `str`
- 默认值: `"./workspace"`
- - 描述: 工作区的基础路径
+ - 描述: 工作区的基本路径。**已弃用:请使用 `SANDBOX_VOLUMES` 代替。**
- `cache_dir`
- 类型: `str`
- 默认值: `"/tmp/cache"`
- 描述: 缓存目录路径
-**调试和日志记录**
+### 调试和日志
- `debug`
- 类型: `bool`
- 默认值: `false`
@@ -86,15 +44,20 @@
- `disable_color`
- 类型: `bool`
- 默认值: `false`
- - 描述: 禁用终端输出中的颜色
+ - 描述: 在终端输出中禁用颜色
-**轨迹**
+### 轨迹
- `save_trajectory_path`
- 类型: `str`
- 默认值: `"./trajectories"`
- - 描述: 存储轨迹的路径(可以是文件夹或文件)。如果是文件夹,轨迹将保存在该文件夹中以会话 ID 命名的 .json 文件中。
+ - 描述: 存储轨迹的路径(可以是文件夹或文件)。如果是文件夹,轨迹将保存在该文件夹中以会话 ID 命名并带有 .json 扩展名的文件中。
+
+- `replay_trajectory_path`
+ - 类型: `str`
+ - 默认值: `""`
+ - 描述: 加载并重放轨迹的路径。如果提供,必须是 JSON 格式的轨迹文件路径。轨迹文件中的操作将在执行任何用户指令之前先重放。
-**文件存储**
+### 文件存储
- `file_store_path`
- 类型: `str`
- 默认值: `"/tmp/file_store"`
@@ -113,7 +76,7 @@
- `file_uploads_max_file_size_mb`
- 类型: `int`
- 默认值: `0`
- - 描述: 上传文件的最大文件大小,以 MB 为单位
+ - 描述: 上传文件的最大大小,以兆字节为单位
- `file_uploads_restrict_file_types`
- 类型: `bool`
@@ -125,38 +88,43 @@
- 默认值: `[".*"]`
- 描述: 允许上传的文件扩展名列表
-**任务管理**
+### 任务管理
- `max_budget_per_task`
- 类型: `float`
- 默认值: `0.0`
- - 描述: 每个任务的最大预算(0.0 表示无限制)
+ - 描述: 每个任务的最大预算(0.0 表示无限制)
- `max_iterations`
- 类型: `int`
- 默认值: `100`
- 描述: 最大迭代次数
-**沙箱配置**
-- `workspace_mount_path_in_sandbox`
+### 沙盒配置
+- `volumes`
+ - 类型: `str`
+ - 默认值: `None`
+ - 描述: 格式为 'host_path:container_path[:mode]' 的卷挂载,例如 '/my/host/dir:/workspace:rw'。可以使用逗号指定多个挂载,例如 '/path1:/workspace/path1,/path2:/workspace/path2:ro'
+
+- `workspace_mount_path_in_sandbox` **(已弃用)**
- 类型: `str`
- 默认值: `"/workspace"`
- - 描述: 在沙箱中挂载工作区的路径
+ - 描述: 在沙盒中挂载工作区的路径。**已弃用:请使用 `SANDBOX_VOLUMES` 代替。**
-- `workspace_mount_path`
+- `workspace_mount_path` **(已弃用)**
- 类型: `str`
- 默认值: `""`
- - 描述: 挂载工作区的路径
+ - 描述: 挂载工作区的路径。**已弃用:请使用 `SANDBOX_VOLUMES` 代替。**
-- `workspace_mount_rewrite`
+- `workspace_mount_rewrite` **(已弃用)**
- 类型: `str`
- 默认值: `""`
- - 描述: 重写工作区挂载路径的路径。通常可以忽略这个,它指的是在另一个容器内运行的特殊情况。
+ - 描述: 将工作区挂载路径重写为的路径。通常可以忽略此项,它指的是在另一个容器内运行的特殊情况。**已弃用:请使用 `SANDBOX_VOLUMES` 代替。**
-**其他**
+### 其他
- `run_as_openhands`
- 类型: `bool`
- 默认值: `true`
- - 描述: 以 OpenHands 身份运行
+ - 描述: 作为 OpenHands 运行
- `runtime`
- 类型: `str`
@@ -166,40 +134,44 @@
- `default_agent`
- 类型: `str`
- 默认值: `"CodeActAgent"`
- - 描述: 默认 agent 的名称
+ - 描述: 默认代理的名称
- `jwt_secret`
- 类型: `str`
- 默认值: `uuid.uuid4().hex`
- - 描述: 用于身份验证的 JWT 密钥。请将其设置为您自己的值。
+ - 描述: 用于身份验证的 JWT 密钥。请设置为您自己的值。
## LLM 配置
-LLM(大语言模型)配置选项在 `config.toml` 文件的 `[llm]` 部分中定义。
+LLM(大型语言模型)配置选项在 `config.toml` 文件的 `[llm]` 部分中定义。
+
+要在 docker 命令中使用这些选项,请传入 `-e LLM_`。例如:`-e LLM_NUM_RETRIES`。
-要在 docker 命令中使用这些选项,请传入 `-e LLM_ `。例如: `-e LLM_NUM_RETRIES`。
+:::note
+对于开发设置,您还可以定义自定义命名的 LLM 配置。有关详细信息,请参阅[自定义 LLM 配置](./llms/custom-llm-configs)。
+:::
**AWS 凭证**
- `aws_access_key_id`
- 类型: `str`
- 默认值: `""`
- - 描述: AWS access key ID
+ - 描述: AWS 访问密钥 ID
- `aws_region_name`
- 类型: `str`
- 默认值: `""`
- - 描述: AWS region name
+ - 描述: AWS 区域名称
- `aws_secret_access_key`
- 类型: `str`
- 默认值: `""`
- - 描述: AWS secret access key
+ - 描述: AWS 秘密访问密钥
-**API 配置**
+### API 配置
- `api_key`
- 类型: `str`
- 默认值: `None`
- - 描述: 要使用的 API key
+ - 描述: 要使用的 API 密钥
- `base_url`
- 类型: `str`
@@ -214,58 +186,42 @@ LLM(大语言模型)配置选项在 `config.toml` 文件的 `[llm]` 部分中定
- `input_cost_per_token`
- 类型: `float`
- 默认值: `0.0`
- - 描述: 每个输入 token 的成本
+ - 描述: 每个输入令牌的成本
- `output_cost_per_token`
- 类型: `float`
- 默认值: `0.0`
- - 描述: 每个输出 token 的成本
+ - 描述: 每个输出令牌的成本
-**自定义 LLM Provider**
+### 自定义 LLM 提供商
- `custom_llm_provider`
- 类型: `str`
- 默认值: `""`
- - 描述: 自定义 LLM provider
+ - 描述: 自定义 LLM 提供商
-**Embeddings**
-- `embedding_base_url`
- - 类型: `str`
- - 默认值: `""`
- - 描述: Embedding API 基础 URL
-
-- `embedding_deployment_name`
- - 类型: `str`
- - 默认值: `""`
- - 描述: Embedding 部署名称
-
-- `embedding_model`
- - 类型: `str`
- - 默认值: `"local"`
- - 描述: 要使用的 Embedding 模型
-
-**消息处理**
+### 消息处理
- `max_message_chars`
- 类型: `int`
- 默认值: `30000`
- - 描述: 包含在提示 LLM 的事件内容中的最大字符数(近似值)。较大的观察结果会被截断。
+ - 描述: 包含在提示中发送给 LLM 的事件内容的大致最大字符数。较大的观察结果会被截断。
- `max_input_tokens`
- 类型: `int`
- 默认值: `0`
- - 描述: 最大输入 token 数
+ - 描述: 最大输入令牌数
- `max_output_tokens`
- 类型: `int`
- 默认值: `0`
- - 描述: 最大输出 token 数
+ - 描述: 最大输出令牌数
-**模型选择**
+### 模型选择
- `model`
- 类型: `str`
- 默认值: `"claude-3-5-sonnet-20241022"`
- 描述: 要使用的模型
-**重试**
+### 重试
- `num_retries`
- 类型: `int`
- 默认值: `8`
@@ -274,28 +230,28 @@ LLM(大语言模型)配置选项在 `config.toml` 文件的 `[llm]` 部分中定
- `retry_max_wait`
- 类型: `int`
- 默认值: `120`
- - 描述: 重试尝试之间的最大等待时间(秒)
+ - 描述: 重试尝试之间的最大等待时间(以秒为单位)
- `retry_min_wait`
- 类型: `int`
- 默认值: `15`
- - 描述: 重试尝试之间的最小等待时间(秒)
+ - 描述: 重试尝试之间的最小等待时间(以秒为单位)
- `retry_multiplier`
- 类型: `float`
- 默认值: `2.0`
- 描述: 指数退避计算的乘数
-**高级选项**
+### 高级选项
- `drop_params`
- 类型: `bool`
- 默认值: `false`
- - 描述: 丢弃任何未映射(不支持)的参数,而不会引发异常
+ - 描述: 删除任何未映射(不支持)的参数而不引发异常
- `caching_prompt`
- 类型: `bool`
- 默认值: `true`
- - 描述: 如果 LLM 提供并支持,则使用提示缓存功能
+ - 描述: 如果 LLM 提供并支持,则使用提示缓存功能
- `ollama_base_url`
- 类型: `str`
@@ -305,7 +261,7 @@ LLM(大语言模型)配置选项在 `config.toml` 文件的 `[llm]` 部分中定
- `temperature`
- 类型: `float`
- 默认值: `0.0`
- - 描述: API 的 temperature
+ - 描述: API 的温度参数
- `timeout`
- 类型: `int`
@@ -315,35 +271,24 @@ LLM(大语言模型)配置选项在 `config.toml` 文件的 `[llm]` 部分中定
- `top_p`
- 类型: `float`
- 默认值: `1.0`
- - 描述: API 的 top p
+ - 描述: API 的 top p 参数
- `disable_vision`
- 类型: `bool`
- 默认值: `None`
- - 描述: 如果模型支持视觉,此选项允许禁用图像处理(对于降低成本很有用)
-
-## Agent 配置
+ - 描述: 如果模型具有视觉能力,此选项允许禁用图像处理(对于成本降低很有用)
-Agent 配置选项在 `config.toml` 文件的 `[agent]` 和 `[agent.]` 部分中定义。
+## 代理配置
-**内存配置**
-- `memory_enabled`
- - 类型: `bool`
- - 默认值: `false`
- - 描述: 是否启用长期记忆(embeddings)
+代理配置选项在 `config.toml` 文件的 `[agent]` 和 `[agent.]` 部分中定义。
-- `memory_max_threads`
- - 类型: `int`
- - 默认值: `3`
- - 描述: 同时为 embeddings 编制索引的最大线程数
-
-**LLM 配置**
+### LLM 配置
- `llm_config`
- 类型: `str`
- 默认值: `'your-llm-config-group'`
- 描述: 要使用的 LLM 配置的名称
-**ActionSpace 配置**
+### ActionSpace 配置
- `function_calling`
- 类型: `bool`
- 默认值: `true`
@@ -352,25 +297,64 @@ Agent 配置选项在 `config.toml` 文件的 `[agent]` 和 `[agent.
- `enable_browsing`
- 类型: `bool`
- 默认值: `false`
- - 描述: 是否在 action space 中启用浏览代理(仅适用于函数调用)
+ - 描述: 是否在操作空间中启用浏览代理(仅适用于函数调用)
- `enable_llm_editor`
- 类型: `bool`
- 默认值: `false`
- - 描述: 是否在 action space 中启用 LLM 编辑器(仅适用于函数调用)
+ - 描述: 是否在操作空间中启用 LLM 编辑器(仅适用于函数调用)
- `enable_jupyter`
- 类型: `bool`
- 默认值: `false`
- - 描述: 是否在 action space 中启用 Jupyter
+ - 描述: 是否在操作空间中启用 Jupyter
+
+- `enable_history_truncation`
+ - 类型: `bool`
+ - 默认值: `true`
+ - 描述: 当达到 LLM 上下文长度限制时,是否应截断历史记录以继续会话
-**Microagent 使用**
+### 微代理使用
- `enable_prompt_extensions`
- 类型: `bool`
- 默认值: `true`
- - 描述: 是否使用 microagents
+ - 描述: 是否使用微代理
- `disabled_microagents`
- 类型: `list of str`
- 默认值: `None`
- - 描述: 要禁用
+ - 描述: 要禁用的微代理列表
+
+## 沙盒配置
+
+沙盒配置选项在 `config.toml` 文件的 `[sandbox]` 部分中定义。
+
+要在 docker 命令中使用这些选项,请传入 `-e SANDBOX_`。例如:`-e SANDBOX_TIMEOUT`。
+
+### 执行
+- `timeout`
+ - 类型: `int`
+ - 默认值: `120`
+ - 描述: 沙盒超时时间(以秒为单位)
+
+- `user_id`
+ - 类型: `int`
+ - 默认值: `1000`
+ - 描述: 沙盒用户 ID
+
+### 容器镜像
+- `base_container_image`
+ - 类型: `str`
+ - 默认值: `"nikolaik/python-nodejs:python3.12-nodejs22"`
+ - 描述: 用于沙盒的容器镜像
+
+### 网络
+- `use_host_network`
+ - 类型: `bool`
+ - 默认值: `false`
+ - 描述: 使用主机网络
+
+- `runtime_binding_address`
+ - 类型: `str`
+ - 默认值: `0.0.0.0`
+ - 描述: 运行时端口的绑定地址。它指定 Docker 应该将
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/customization/repository.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/customization/repository.md
new file mode 100644
index 000000000000..0b7481acaa29
--- /dev/null
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/customization/repository.md
@@ -0,0 +1,21 @@
+# 仓库自定义
+
+您可以通过在根目录创建一个 `.openhands` 目录来自定义 OpenHands 与您的仓库的交互方式。
+
+## 微代理
+
+微代理允许您使用特定于项目的信息扩展 OpenHands 提示,并定义 OpenHands 应该如何运行。有关更多信息,请参阅[微代理概述](../prompting/microagents-overview)。
+
+
+## 设置脚本
+您可以添加一个 `.openhands/setup.sh` 文件,该文件将在 OpenHands 每次开始处理您的仓库时运行。
+这是安装依赖项、设置环境变量和执行其他设置任务的理想位置。
+
+例如:
+```bash
+#!/bin/bash
+export MY_ENV_VAR="my value"
+sudo apt-get update
+sudo apt-get install -y lsof
+cd frontend && npm install ; cd ..
+```
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/feedback.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/feedback.md
index 18f3f60558b6..efb3eb2a489e 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/feedback.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/feedback.md
@@ -1,10 +1,10 @@
# ✅ 提供反馈
-在使用 OpenHands 时,您会遇到一些工作良好的情况,也会遇到一些不太理想的情况。我们鼓励您在使用 OpenHands 时提供反馈,以帮助向开发团队提供反馈,更重要的是,创建一个开放的编码智能体训练示例语料库——Share-OpenHands!
+在使用OpenHands时,您会遇到一些运行良好的情况,也会遇到一些不太理想的情况。我们鼓励您在使用OpenHands时提供反馈,以帮助开发团队改进,更重要的是,创建一个开放的编码代理训练示例语料库 -- Share-OpenHands!
## 📝 如何提供反馈
-提供反馈很容易!当您在使用 OpenHands 时,您可以在交互的任何时候按下竖起大拇指或竖起大拇指按钮。系统会提示您提供电子邮件地址(例如,以便我们在需要询问任何后续问题时与您联系),您可以选择公开或私下提供反馈。
+提供反馈非常简单!在使用OpenHands时,您可以在交互过程中的任何时候点击点赞或点踩按钮。系统会提示您提供电子邮件地址(例如,以便我们在需要时联系您进行后续问题咨询),您可以选择是公开还是私下提供反馈。
VIDEO
@@ -12,28 +12,28 @@
### 数据共享设置
-在提交数据时,您可以选择公开或私下提交。
+提交数据时,您可以选择公开或私下提交。
-* **公开**数据将在 MIT 许可下发布,与 OpenHands 本身一样,社区可以使用这些数据来训练和测试模型。显然,您可以公开的反馈对整个社区来说会更有价值,因此当您不处理敏感信息时,我们鼓励您选择这个选项!
-* **私有**数据将仅与 OpenHands 团队共享,用于改进 OpenHands。
+- **公开**数据将在MIT许可证下分发,与OpenHands本身一样,可供社区用于训练和测试模型。显然,您可以公开的反馈对整个社区来说更有价值,因此当您不涉及敏感信息时,我们鼓励您选择此选项!
+- **私人**数据将提供给OpenHands团队用于改进OpenHands。但是,系统仍会创建一个带有唯一ID的链接,您可以公开与他人分享。
-### 谁收集和存储数据?
+### 谁收集和存储数据?
-数据由 [All Hands AI](https://all-hands.dev) 收集和存储,这是一家由 OpenHands 维护者创立的公司,旨在支持和改进 OpenHands。
+数据由[All Hands AI](https://all-hands.dev)收集和存储,这是一家由OpenHands维护者创建的公司,旨在支持和改进OpenHands。
-### 公开数据将如何发布?
+### 公共数据将如何发布?
-公开数据将在我们达到固定的里程碑时发布,例如 1,000 个公开示例、10,000 个公开示例等。
-届时,我们将遵循以下发布流程:
+当我们达到固定里程碑时,如1,000个公共示例、10,000个公共示例等,公共数据将被发布。
+届时,我们将遵循以下发布流程:
-1. 所有提供公开反馈的人都将收到一封电子邮件,描述数据发布情况,并有机会选择退出。
-2. 负责数据发布的人员将对数据进行质量控制,删除低质量的反馈,删除提交者的电子邮件地址,并尝试删除任何敏感信息。
-3. 数据将通过 github 或 Hugging Face 等常用网站在 MIT 许可下公开发布。
+1. 所有贡献公共反馈的人将收到一封电子邮件,描述数据发布情况,并有机会选择退出。
+2. 负责数据发布的人员将对数据进行质量控制,删除低质量反馈,移除提交者电子邮件地址,并尝试删除任何敏感信息。
+3. 数据将通过GitHub或Hugging Face等常用网站在MIT许可证下公开发布。
-### 如果我想删除我的数据怎么办?
+### 如果我想删除我的数据怎么办?
-对于 All Hands AI 服务器上的数据,我们很乐意根据要求删除它:
+对于All Hands AI服务器上的数据,我们很乐意根据请求删除:
-**一条数据:**如果您想删除一条数据,我们将很快添加一种机制,使用您在提交数据时显示在界面上的链接和密码来删除数据。
+**单条数据:** 如果您想删除一条数据,我们将很快添加一种机制,使用您提交数据时界面上显示的链接和密码删除数据。
-**所有数据:**如果您想删除所有数据,或者您没有在提交数据时收到的 ID 和密码,请从您最初提交数据时注册的电子邮件地址联系`contact@all-hands.dev`。
+**所有数据:** 如果您想删除所有数据,或者您没有提交数据时收到的ID和密码,请从您最初提交数据时注册的电子邮件地址联系`contact@all-hands.dev`。
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/getting-started.mdx b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/getting-started.mdx
index c73f8b8f7ff7..9fce29851c0a 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/getting-started.mdx
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/getting-started.mdx
@@ -1,111 +1,90 @@
# OpenHands 入门指南
-您已经[安装了 OpenHands](./installation)并且
-[设置了您的 LLM](./installation#setup)。接下来呢?
+您已经[运行了 OpenHands](./installation)并且[设置了您的 LLM](./installation#setup)。接下来做什么?
-OpenHands 可以帮助您处理各种工程任务。但这项技术
-仍然很新,我们还有很长的路要走,才能拥有无需任何指导就能承担大型、复杂
-工程任务的智能体。因此,了解智能体擅长什么,以及
-它可能需要什么帮助非常重要。
+OpenHands 可以协助完成各种工程任务。然而,这项技术仍然很新,我们距离拥有能够独立处理复杂任务的代理还有很长的路要走。了解代理擅长什么以及在哪些方面需要支持是很重要的。
## Hello World
-您可能想尝试的第一件事是一个简单的 "hello world" 示例。
-这可能比听起来更复杂!
+从一个简单的"hello world"示例开始。这可能比看起来更棘手!
-尝试提示智能体:
-> 请编写一个 bash 脚本 hello.sh,打印 "hello world!"
+向代理提示:
+> 编写一个 bash 脚本 hello.sh,打印"hello world!"
-您应该看到,智能体不仅编写了脚本,还设置了正确的
-权限并运行脚本以检查输出。
+代理将编写脚本,设置正确的权限,并运行它以检查输出。
-您可以继续提示智能体优化您的代码。这是一个很好的
-与智能体合作的方式。从简单开始,然后迭代。
+您可以继续提示代理来完善您的代码。这是与代理合作的好方法。从简单开始,然后迭代。
-> 请修改 hello.sh,使其接受一个名称作为第一个参数,但默认为 "world"
+> 修改 hello.sh,使其接受名称作为第一个参数,但默认为"world"
-您还可以使用任何需要的语言,尽管智能体可能需要花一些
-时间来设置它的环境!
+您也可以使用任何需要的语言。代理可能需要时间来设置环境。
-> 请将 hello.sh 转换为 Ruby 脚本,并运行它
+> 请将 hello.sh 转换为 Ruby 脚本,并运行它
## 从头开始构建
-智能体在 "绿地" 任务(不需要
-任何关于现有代码库的上下文的任务)方面表现得非常出色,它们可以直接从头开始。
+代理在"绿地"任务中表现出色,在这些任务中,它们不需要了解现有代码的上下文,可以从头开始。
+从一个简单的任务开始,然后从那里迭代。明确说明您想要什么和技术栈。
-最好从一个简单的任务开始,然后迭代它。最好也要
-尽可能具体地说明您想要什么,技术栈应该是什么,等等。
+例如,我们可以构建一个 TODO 应用:
-例如,我们可以构建一个 TODO 应用:
+> 用 React 构建一个仅前端的 TODO 应用。所有状态都应存储在 localStorage 中。
-> 请在 React 中构建一个基本的 TODO 列表应用。它应该只有前端,所有状态
-> 应该保存在 localStorage 中。
+一旦基本结构就位,继续完善:
-一旦骨架搭建好,我们就可以继续迭代应用:
+> 允许为每个任务添加可选的截止日期。
-> 请允许为每个任务添加一个可选的截止日期
-
-就像正常开发一样,经常提交和推送代码是很好的做法。
-这样,如果智能体偏离轨道,您总是可以恢复到旧的状态。
-您可以要求智能体为您提交和推送:
-
-> 请提交更改并将其推送到名为 "feature/due-dates" 的新分支
+就像正常开发一样,经常提交和推送您的代码。
+这样,如果代理偏离轨道,您总是可以恢复到旧状态。
+您可以要求代理为您提交和推送:
+> 提交更改并将其推送到名为"feature/due-dates"的新分支
## 添加新代码
-OpenHands 还可以很好地将新代码添加到现有代码库中。
+OpenHands 非常擅长向现有代码库添加新代码。
-例如,您可以要求 OpenHands 向您的项目添加一个新的 GitHub action
-来检查您的代码。OpenHands 可能会查看您的代码库以确定应该使用什么语言,
-但随后它可以直接将一个新文件放入 `./github/workflows/lint.yml`
+例如,您可以要求 OpenHands 添加一个对代码进行 lint 检查的 GitHub action。它可能会检查您的代码库以确定语言,然后在 `./github/workflows/lint.yml` 中创建一个新文件。
-> 请添加一个 GitHub action 来检查此仓库中的代码
+> 添加一个对此存储库中的代码进行 lint 检查的 GitHub action。
-某些任务可能需要更多上下文。虽然 OpenHands 可以使用 `ls` 和 `grep`
-在您的代码库中搜索,但提前提供上下文可以让它移动得更快、
-更准确。而且这会让您花费更少的 token!
+有些任务需要更多上下文。虽然 OpenHands 可以使用 ls 和 grep 等命令进行搜索,但提前提供上下文可以加快速度并减少令牌使用。
-> 请修改 ./backend/api/routes.js 以添加一个新路由,返回所有任务的列表
+> 修改 ./backend/api/routes.js 以添加一个返回所有任务列表的新路由。
-> 请在 ./frontend/components 目录中添加一个新的 React 组件,用于显示 Widget 列表。
+> 在 ./frontend/components 目录中添加一个新的 React 组件来显示 Widget 列表。
> 它应该使用现有的 Widget 组件。
## 重构
-OpenHands 在重构现有代码方面表现出色,尤其是在小块中。
-您可能不想尝试重新构建整个代码库,但拆分
-长文件和函数、重命名变量等往往效果很好。
+OpenHands 擅长小块重构代码。与其重新架构整个代码库,更有效的方法是拆分长文件和函数或重命名变量。
-> 请重命名 ./app.go 中的所有单字母变量
+> 重命名 ./app.go 中所有的单字母变量。
-> 请将 widget.php 中的函数 `build_and_deploy_widgets` 拆分为两个函数:`build_widgets` 和 `deploy_widgets`
+> 将 widget.php 中的 `build_and_deploy_widgets` 函数拆分为两个函数,`build_widgets` 和 `deploy_widgets`。
-> 请将 ./api/routes.js 拆分为每个路由的单独文件
+> 将 ./api/routes.js 拆分为每个路由的单独文件。
-## Bug 修复
+## 错误修复
-OpenHands 还可以帮助您跟踪和修复代码中的错误。但是,任何
-开发人员都知道,修复错误可能非常棘手,通常 OpenHands 需要更多上下文。
-如果您已经诊断出错误,但希望 OpenHands 找出逻辑,这会有所帮助。
+OpenHands 可以帮助追踪和修复错误,但错误修复可能很棘手,通常需要更多上下文。
+如果您已经诊断出问题,只需要 OpenHands 处理逻辑,这会很有帮助。
-> 目前 `/subscribe` 端点中的电子邮件字段拒绝 .io 域名。请修复这个问题。
+> `/subscribe` 端点中的电子邮件字段拒绝 .io 域名。修复这个问题。
-> ./app.py 中的 `search_widgets` 函数正在执行区分大小写的搜索。请使其不区分大小写。
+> ./app.py 中的 `search_widgets` 函数正在执行区分大小写的搜索。使其不区分大小写。
-在使用智能体进行错误修复时,进行测试驱动开发通常很有帮助。
-您可以要求智能体编写一个新测试,然后迭代直到修复错误:
+对于错误修复,测试驱动开发非常有用。您可以要求代理编写一个新测试,然后迭代直到错误被修复:
-> `hello` 函数在空字符串上崩溃。请编写一个测试来重现此错误,然后修复代码以通过测试。
+> `hello` 函数在空字符串上崩溃。编写一个重现此错误的测试,然后修复代码使其通过。
## 更多
-OpenHands 能够在几乎任何编码任务上提供帮助。但需要一些练习
-才能充分利用它。请记住:
-* 保持任务简单
-* 尽可能具体
-* 提供尽可能多的上下文
-* 经常提交和推送
+OpenHands 几乎可以协助任何编码任务,但需要一些实践才能获得最佳结果。
+请记住以下提示:
+* 保持任务小型化。
+* 具体明确。
+* 提供充分的上下文。
+* 频繁提交和推送。
-有关如何充分利用 OpenHands 的更多提示,请参阅[提示最佳实践](./prompting/prompting-best-practices)。
+查看[提示最佳实践](./prompting/prompting-best-practices)获取更多关于如何充分利用 OpenHands 的提示。
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/cli-mode.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/cli-mode.md
index 016709fe8e64..492db3c001e5 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/cli-mode.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/cli-mode.md
@@ -1,110 +1,54 @@
-以下是翻译后的内容:
+# CLI 模式
-# 命令行模式
+OpenHands 可以在交互式 CLI 模式下运行,允许用户通过命令行启动交互式会话。
-OpenHands 可以在交互式命令行模式下运行,允许用户通过命令行启动交互式会话。
-
-这种模式不同于[无头模式](headless-mode),后者是非交互式的,更适合脚本编写。
+这种模式与[无头模式](headless-mode)不同,后者是非交互式的,更适合脚本编写。
## 使用 Python
-要通过命令行启动交互式 OpenHands 会话,请按照以下步骤操作:
-
-1. 确保你已按照[开发设置说明](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)进行操作。
+通过命令行启动交互式 OpenHands 会话:
-2. 运行以下命令:
+1. 确保您已按照[开发环境设置说明](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)进行操作。
+2. 运行以下命令:
```bash
poetry run python -m openhands.core.cli
```
-该命令将启动一个交互式会话,你可以在其中输入任务并接收来自 OpenHands 的响应。
-
-你需要确保通过环境变量[或 `config.toml` 文件](https://github.com/All-Hands-AI/OpenHands/blob/main/config.template.toml)设置你的模型、API 密钥和其他设置。
+此命令将启动一个交互式会话,您可以在其中输入任务并接收来自 OpenHands 的响应。
+您需要确保通过环境变量[或 `config.toml` 文件](https://github.com/All-Hands-AI/OpenHands/blob/main/config.template.toml)设置您的模型、API 密钥和其他设置。
## 使用 Docker
-要在 Docker 中以命令行模式运行 OpenHands,请按照以下步骤操作:
-
-1. 将 `WORKSPACE_BASE` 设置为你希望 OpenHands 编辑的目录:
-
-```bash
-WORKSPACE_BASE=$(pwd)/workspace
-```
-
-2. 将 `LLM_MODEL` 设置为你要使用的模型:
-
-```bash
-LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"
-```
+要使用 Docker 在 CLI 模式下运行 OpenHands:
-3. 将 `LLM_API_KEY` 设置为你的 API 密钥:
+1. 在终端中设置以下环境变量:
-```bash
-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"`)。
-4. 运行以下 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 \
- -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 \
--name openhands-app-$(date +%Y%m%d%H%M%S) \
docker.all-hands.dev/all-hands-ai/openhands:0.36 \
python -m openhands.core.cli
```
-该命令将在 Docker 中启动一个交互式会话,你可以在其中输入任务并接收来自 OpenHands 的响应。
-
-## CLI 命令和预期输出示例
-
-以下是一些 CLI 命令及其预期输出的示例:
-
-### 示例 1:简单任务
-
-```bash
-How can I help? >> Write a Python script that prints "Hello, World!"
-```
-
-预期输出:
+此命令将在 Docker 中启动一个交互式会话,您可以在其中输入任务并接收来自 OpenHands 的响应。
-```bash
-🤖 当然!这是一个打印 "Hello, World!" 的 Python 脚本:
-
-❯ print("Hello, World!")
-```
-
-### 示例 2:Bash 命令
-
-```bash
-How can I help? >> Create a directory named "test_dir"
-```
-
-预期输出:
-
-```bash
-🤖 创建一个名为 "test_dir" 的目录:
-
-❯ mkdir test_dir
-```
-
-### 示例 3:错误处理
-
-```bash
-How can I help? >> Delete a non-existent file
-```
-
-预期输出:
-
-```bash
-🤖 发生错误。请重试。
-```
+传递给 Docker 命令的 `-e SANDBOX_USER_ID=$(id -u)` 确保沙箱用户与主机用户的权限匹配。这可以防止代理在挂载的工作区中创建 root 拥有的文件。
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/custom-sandbox-guide.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/custom-sandbox-guide.md
index f80bb0623769..96b916520f8e 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/custom-sandbox-guide.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/custom-sandbox-guide.md
@@ -1,48 +1,65 @@
-# 自定义沙箱
+# 自定义沙盒
-沙箱是代理执行任务的地方。代理不是直接在你的计算机上运行命令(这可能有风险),而是在 Docker 容器内运行。
+:::note
+本指南适用于希望为运行时使用自己的自定义Docker镜像的用户。例如,预装了特定工具或编程语言的镜像。
+:::
-默认的 OpenHands 沙箱(`python-nodejs:python3.12-nodejs22`,来自 [nikolaik/python-nodejs](https://hub.docker.com/r/nikolaik/python-nodejs))预装了一些软件包,如 Python 和 Node.js,但可能需要默认安装其他软件。
+沙盒是代理执行任务的地方。代理不会直接在您的计算机上运行命令(这可能有风险),而是在Docker容器内运行它们。
-你有两个自定义选项:
+默认的OpenHands沙盒(来自[nikolaik/python-nodejs](https://hub.docker.com/r/nikolaik/python-nodejs)的`python-nodejs:python3.12-nodejs22`)预装了一些软件包,如Python和Node.js,但可能需要默认安装其他软件。
-1. 使用已有的镜像,其中包含所需的软件。
-2. 创建你自己的自定义 Docker 镜像。
+您有两种自定义选项:
-如果你选择第一个选项,可以跳过"创建你的 Docker 镜像"部分。
+- 使用已有的、包含所需软件的镜像。
+- 创建您自己的自定义Docker镜像。
-## 创建你的 Docker 镜像
+如果您选择第一个选项,可以跳过`创建您的Docker镜像`部分。
-要创建自定义 Docker 镜像,它必须基于 Debian。
+## 创建您的Docker镜像
-例如,如果你想让 OpenHands 安装 `ruby`,创建一个包含以下内容的 `Dockerfile`:
+要创建自定义Docker镜像,它必须基于Debian。
+
+例如,如果您希望OpenHands预装`ruby`,您可以创建一个包含以下内容的`Dockerfile`:
```dockerfile
-FROM debian:latest
+FROM nikolaik/python-nodejs:python3.12-nodejs22
# Install required packages
RUN apt-get update && apt-get install -y ruby
```
-将此文件保存在一个文件夹中。然后,通过在终端中导航到该文件夹并运行以下命令来构建你的 Docker 镜像(例如,名为 custom-image):
+或者您可以使用特定于Ruby的基础镜像:
+
+```dockerfile
+FROM ruby:latest
+```
+将此文件保存在一个文件夹中。然后,通过在终端中导航到该文件夹并运行以下命令来构建您的Docker镜像(例如,命名为custom-image):
```bash
docker build -t custom-image .
```
-这将生成一个名为 `custom-image` 的新镜像,该镜像将在 Docker 中可用。
+这将生成一个名为`custom-image`的新镜像,该镜像将在Docker中可用。
+
+## 使用Docker命令
+
+使用[docker命令](/modules/usage/installation#start-the-app)运行OpenHands时,将`-e SANDBOX_RUNTIME_CONTAINER_IMAGE=...`替换为`-e SANDBOX_BASE_CONTAINER_IMAGE=<自定义镜像名称>`:
-> 请注意,在本文档描述的配置中,OpenHands 将以用户 "openhands" 的身份在沙箱内运行,因此通过 docker 文件安装的所有软件包应该对系统上的所有用户可用,而不仅仅是 root。
+```commandline
+docker run -it --rm --pull=always \
+ -e SANDBOX_BASE_CONTAINER_IMAGE=custom-image \
+ ...
+```
-## 使用开发工作流
+## 使用开发工作流程
### 设置
-首先,按照 [Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md) 中的说明,确保你可以运行 OpenHands。
+首先,确保您可以按照[Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)中的说明运行OpenHands。
-### 指定基础沙箱镜像
+### 指定基础沙盒镜像
-在 OpenHands 目录中的 `config.toml` 文件中,将 `base_container_image` 设置为你要使用的镜像。这可以是你已经拉取的镜像或你构建的镜像:
+在OpenHands目录中的`config.toml`文件中,将`base_container_image`设置为您想要使用的镜像。这可以是您已经拉取的镜像或您构建的镜像:
```bash
[core]
@@ -51,10 +68,28 @@ docker build -t custom-image .
base_container_image="custom-image"
```
-### 运行
+### 其他配置选项
+
+`config.toml`文件支持多种其他选项来自定义您的沙盒:
-通过在顶层目录中运行 ```make run``` 来运行 OpenHands。
+```toml
+[core]
+# 在构建运行时安装额外的依赖项
+# 可以包含任何有效的shell命令
+# 如果您在这些命令中需要Python解释器的路径,可以使用$OH_INTERPRETER_PATH变量
+runtime_extra_deps = """
+pip install numpy pandas
+apt-get update && apt-get install -y ffmpeg
+"""
+
+# 为运行时设置环境变量
+# 对于需要在运行时可用的配置很有用
+runtime_startup_env_vars = { DATABASE_URL = "postgresql://user:pass@localhost/db" }
+
+# 为多架构构建指定平台(例如,"linux/amd64"或"linux/arm64")
+platform = "linux/amd64"
+```
-## 技术解释
+### 运行
-请参阅[运行时文档的自定义 docker 镜像部分](https://docs.all-hands.dev/modules/usage/architecture/runtime#advanced-how-openhands-builds-and-maintains-od-runtime-images)以获取更多详细信息。
+通过在顶级目录中运行```make run```来运行OpenHands。
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/debugging.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/debugging.md
index 30a68dd6af68..971c70fb7259 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/debugging.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/debugging.md
@@ -1,12 +1,10 @@
-以下是翻译后的内容:
-
# 调试
-以下内容旨在作为开发目的下调试 OpenHands 的入门指南。
+以下内容旨在作为开发目的调试 OpenHands 的入门指南。
## 服务器 / VSCode
-以下 `launch.json` 将允许调试 agent、controller 和 server 元素,但不包括 sandbox(它运行在 docker 内)。它将忽略 `workspace/` 目录内的任何更改:
+以下 `launch.json` 将允许调试代理、控制器和服务器元素,但不包括沙盒(在 Docker 内运行)。它将忽略 `workspace/` 目录内的任何更改:
```
{
@@ -38,7 +36,7 @@
}
```
-可以指定更具体的调试配置,其中包括更多参数:
+可以指定包含更多参数的更具体的调试配置:
```
...
@@ -64,10 +62,10 @@
...
```
-上面代码片段中的值可以更新,例如:
+上面代码片段中的值可以更新,使得:
- * *t*: 任务
- * *d*: openhands 工作区目录
- * *c*: agent
- * *l*: LLM 配置 (在 config.toml 中预定义)
- * *n*: 会话名称 (例如 eventstream 名称)
+ * *t*:任务
+ * *d*:openhands 工作空间目录
+ * *c*:代理
+ * *l*:LLM 配置(在 config.toml 中预定义)
+ * *n*:会话名称(例如 eventstream 名称)
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/development-overview.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/development-overview.md
new file mode 100644
index 000000000000..33b6bca97a75
--- /dev/null
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/development-overview.md
@@ -0,0 +1,74 @@
+---
+sidebar_position: 9
+---
+
+# 开发概述
+
+本指南提供了 OpenHands 仓库中可用的关键文档资源概述。无论您是想要贡献代码、了解架构还是处理特定组件,这些资源都将帮助您有效地浏览代码库。
+
+## 核心文档
+
+### 项目基础
+- **主项目概述** (`/README.md`)
+ 了解 OpenHands 的主要入口点,包括功能和基本设置说明。
+
+- **开发指南** (`/Development.md`)
+ 为 OpenHands 开发人员提供的综合指南,包括设置、要求和开发工作流程。
+
+- **贡献指南** (`/CONTRIBUTING.md`)
+ 为贡献者提供的基本信息,涵盖代码风格、PR 流程和贡献工作流程。
+
+### 组件文档
+
+#### 前端
+- **前端应用程序** (`/frontend/README.md`)
+ 设置和开发基于 React 的前端应用程序的完整指南。
+
+#### 后端
+- **后端实现** (`/openhands/README.md`)
+ Python 后端实现和架构的详细文档。
+
+- **服务器文档** (`/openhands/server/README.md`)
+ 服务器实现细节、API 文档和服务架构。
+
+- **运行时环境** (`/openhands/runtime/README.md`)
+ 涵盖运行时环境、执行模型和运行时配置的文档。
+
+#### 基础设施
+- **容器文档** (`/containers/README.md`)
+ 关于 Docker 容器、部署策略和容器管理的综合信息。
+
+### 测试和评估
+- **单元测试指南** (`/tests/unit/README.md`)
+ 编写、运行和维护单元测试的说明。
+
+- **评估框架** (`/evaluation/README.md`)
+ 评估框架、基准测试和性能测试的文档。
+
+### 高级功能
+- **微代理架构** (`/microagents/README.md`)
+ 关于微代理架构、实现和使用的详细信息。
+
+### 文档标准
+- **文档风格指南** (`/docs/DOC_STYLE_GUIDE.md`)
+ 编写和维护项目文档的标准和指南。
+
+## 开发入门
+
+如果您是 OpenHands 开发的新手,我们建议按照以下顺序进行:
+
+1. 从主 `README.md` 开始,了解项目的目的和功能
+2. 如果您计划贡献,请查看 `CONTRIBUTING.md` 指南
+3. 按照 `Development.md` 中的设置说明进行操作
+4. 根据您的兴趣领域深入研究特定组件文档:
+ - 前端开发人员应关注 `/frontend/README.md`
+ - 后端开发人员应从 `/openhands/README.md` 开始
+ - 基础设施工作应从 `/containers/README.md` 开始
+
+## 文档更新
+
+在对代码库进行更改时,请确保:
+1. 更新相关文档以反映您的更改
+2. 在适当的 README 文件中记录新功能
+3. 任何 API 更改都反映在服务器文档中
+4. 文档遵循 `/docs/DOC_STYLE_GUIDE.md` 中的风格指南
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/evaluation-harness.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/evaluation-harness.md
index 9872034bd1a3..c3f2f957fc46 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/evaluation-harness.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/evaluation-harness.md
@@ -1,17 +1,17 @@
# 评估
-本指南概述了如何将您自己的评估基准集成到 OpenHands 框架中。
+本指南概述了如何将您自己的评估基准集成到OpenHands框架中。
-## 设置环境和 LLM 配置
+## 设置环境和LLM配置
请按照[此处](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)的说明设置您的本地开发环境。
-开发模式下的 OpenHands 使用 `config.toml` 来跟踪大多数配置。
+OpenHands在开发模式下使用`config.toml`来跟踪大多数配置。
-以下是一个示例配置文件,您可以使用它来定义和使用多个 LLM:
+以下是一个示例配置文件,您可以用它来定义和使用多个LLM:
```toml
[llm]
-# 重要:在此处添加您的 API 密钥,并将模型设置为您要评估的模型
+# 重要:在此处添加您的API密钥,并将模型设置为您要评估的模型
model = "claude-3-5-sonnet-20241022"
api_key = "sk-XXX"
@@ -28,9 +28,9 @@ temperature = 0.0
```
-## 如何在命令行中使用 OpenHands
+## 如何在命令行中使用OpenHands
-可以使用以下格式从命令行运行 OpenHands:
+OpenHands可以使用以下格式从命令行运行:
```bash
poetry run python ./openhands/core/main.py \
@@ -50,39 +50,39 @@ poetry run python ./openhands/core/main.py \
-l llm
```
-此命令使用以下参数运行 OpenHands:
-- 最大迭代次数为 10
+此命令运行OpenHands,具有:
+- 最多10次迭代
- 指定的任务描述
-- 使用 CodeActAgent
-- 使用 `config.toml` 文件的 `llm` 部分中定义的 LLM 配置
+- 使用CodeActAgent
+- 使用`config.toml`文件中`llm`部分定义的LLM配置
-## OpenHands 如何工作
+## OpenHands如何工作
-OpenHands 的主要入口点在 `openhands/core/main.py` 中。以下是它的简化工作流程:
+OpenHands的主要入口点在`openhands/core/main.py`中。以下是其工作流程的简化说明:
1. 解析命令行参数并加载配置
-2. 使用 `create_runtime()` 创建运行时环境
+2. 使用`create_runtime()`创建运行时环境
3. 初始化指定的代理
-4. 使用 `run_controller()` 运行控制器,它:
+4. 使用`run_controller()`运行控制器,它会:
- 将运行时附加到代理
- 执行代理的任务
- - 完成后返回最终状态
+ - 完成时返回最终状态
-`run_controller()` 函数是 OpenHands 执行的核心。它管理代理、运行时和任务之间的交互,处理用户输入模拟和事件处理等事项。
+`run_controller()`函数是OpenHands执行的核心。它管理代理、运行时和任务之间的交互,处理用户输入模拟和事件处理等内容。
-## 入门最简单的方法:探索现有基准
+## 最简单的入门方式:探索现有基准
-我们鼓励您查看我们仓库的 [`evaluation/benchmarks/` 目录](https://github.com/All-Hands-AI/OpenHands/blob/main/evaluation/benchmarks)中提供的各种评估基准。
+我们鼓励您查看我们仓库中[`evaluation/benchmarks/`目录](https://github.com/All-Hands-AI/OpenHands/blob/main/evaluation/benchmarks)中可用的各种评估基准。
-要集成您自己的基准,我们建议从最接近您需求的基准开始。这种方法可以显著简化您的集成过程,允许您在现有结构的基础上进行构建并使其适应您的特定要求。
+要集成您自己的基准,我们建议从最接近您需求的基准开始。这种方法可以显著简化您的集成过程,让您能够在现有结构的基础上构建并根据您的特定需求进行调整。
-## 如何创建评估工作流
+## 如何创建评估工作流程
-要为您的基准创建评估工作流,请按照以下步骤操作:
+要为您的基准创建评估工作流程,请按照以下步骤操作:
-1. 导入相关的 OpenHands 实用程序:
+1. 导入相关的OpenHands工具:
```python
import openhands.agenthub
from evaluation.utils.shared import (
@@ -132,7 +132,7 @@ OpenHands 的主要入口点在 `openhands/core/main.py` 中。以下是它的
pass
```
-4. 创建一个函数来处理每个实例:
+4. 创建一个处理每个实例的函数:
```python
from openhands.utils.async_utils import call_async_from_sync
def process_instance(instance: pd.Series, metadata: EvalMetadata) -> EvalOutput:
@@ -150,7 +150,7 @@ OpenHands 的主要入口点在 `openhands/core/main.py` 中。以下是它的
fake_user_response_fn=your_user_response_function,
)
- # 评估代理的操作
+ # 评估代理的行动
evaluation_result = await evaluate_agent_actions(runtime, instance)
return EvalOutput(
@@ -179,32 +179,32 @@ OpenHands 的主要入口点在 `openhands/core/main.py` 中。以下是它的
)
```
-此工作流设置配置,初始化运行时环境,通过运行代理并评估其操作来处理每个实例,然后将结果收集到 `EvalOutput` 对象中。`run_evaluation` 函数处理并行化和进度跟踪。
+这个工作流程设置配置,初始化运行时环境,通过运行代理并评估其行动来处理每个实例,然后将结果收集到`EvalOutput`对象中。`run_evaluation`函数处理并行化和进度跟踪。
-请记住根据您特定的基准要求自定义 `get_instruction`、`your_user_response_function` 和 `evaluate_agent_actions` 函数。
+记得根据您的特定基准要求自定义`get_instruction`、`your_user_response_function`和`evaluate_agent_actions`函数。
-通过遵循此结构,您可以在 OpenHands 框架内为您的基准创建强大的评估工作流。
+通过遵循这种结构,您可以在OpenHands框架内为您的基准创建一个健壮的评估工作流程。
-## 理解 `user_response_fn`
+## 理解`user_response_fn`
-`user_response_fn` 是 OpenHands 评估工作流中的关键组件。它模拟用户与代理的交互,允许在评估过程中自动响应。当您想要为代理的查询或操作提供一致的、预定义的响应时,此函数特别有用。
+`user_response_fn`是OpenHands评估工作流程中的一个关键组件。它模拟用户与代理的交互,允许在评估过程中进行自动响应。当您想要向代理的查询或行动提供一致的、预定义的响应时,这个函数特别有用。
-### 工作流和交互
+### 工作流程和交互
-处理操作和 `user_response_fn` 的正确工作流如下:
+处理行动和`user_response_fn`的正确工作流程如下:
1. 代理接收任务并开始处理
-2. 代理发出操作
-3. 如果操作可执行(例如 CmdRunAction、IPythonRunCellAction):
- - 运行时处理操作
- - 运行时返回观察结果
-4. 如果操作不可执行(通常是 MessageAction):
- - 调用 `user_response_fn`
- - 它返回模拟的用户响应
-5. 代理接收观察结果或模拟响应
-6. 重复步骤 2-5,直到任务完成或达到最大迭代次数
+2. 代理发出一个Action
+3. 如果Action是可执行的(例如,CmdRunAction,IPythonRunCellAction):
+ - 运行时处理该Action
+ - 运行时返回一个Observation
+4. 如果Action不可执行(通常是MessageAction):
+ - 调用`user_response_fn`
+ - 它返回一个模拟的用户响应
+5. 代理接收Observation或模拟响应
+6. 步骤2-5重复,直到任务完成或达到最大迭代次数
以下是更准确的可视化表示:
@@ -212,10 +212,10 @@ OpenHands 的主要入口点在 `openhands/core/main.py` 中。以下是它的
[代理]
|
v
- [发出操作]
+ [发出Action]
|
v
- [操作是否可执行?]
+ [Action是否可执行?]
/ \
是 否
| |
@@ -223,7 +223,7 @@ OpenHands 的主要入口点在 `openhands/core/main.py` 中。以下是它的
[运行时] [user_response_fn]
| |
v v
- [返回观察结果] [模拟响应]
+ [返回Observation] [模拟响应]
\ /
\ /
v v
@@ -233,17 +233,17 @@ OpenHands 的主要入口点在 `openhands/core/main.py` 中。以下是它的
[继续或完成任务]
```
-在此工作流中:
+在这个工作流程中:
-- 可执行的操作(如运行命令或执行代码)由运行时直接处理
-- 不可执行的操作(通常是当代理想要通信或寻求澄清时)由 `user_response_fn` 处理
-- 然后,代理处理反馈,无论是来自运行时的观察结果还是来自 `user_response_fn` 的模拟响应
+- 可执行的行动(如运行命令或执行代码)由运行时直接处理
+- 不可执行的行动(通常是当代理想要沟通或请求澄清时)由`user_response_fn`处理
+- 然后代理处理反馈,无论是来自运行时的Observation还是来自`user_response_fn`的模拟响应
-这种方法允许自动处理具体操作和模拟用户交互,使其适用于您想要测试代理在最少人工干预的情况下完成任务的能力的评估场景。
+这种方法允许自动处理具体行动和模拟用户交互,使其适用于评估场景,在这些场景中,您希望测试代理在最少人工干预的情况下完成任务的能力。
### 示例实现
-以下是 SWE-Bench 评估中使用的 `user_response_fn` 示例:
+以下是SWE-Bench评估中使用的`user_response_fn`示例:
```python
def codeact_user_response(state: State | None) -> str:
@@ -254,14 +254,14 @@ def codeact_user_response(state: State | None) -> str:
)
if state and state.history:
- # 检查代理是否已尝试与用户对话 3 次,如果是,让代理知道它可以放弃
+ # check if the agent has tried to talk to the user 3 times, if so, let the agent know it can give up
user_msgs = [
event
for event in state.history
if isinstance(event, MessageAction) and event.source == 'user'
]
if len(user_msgs) >= 2:
- # 当代理已尝试 3 次时,让它知道可以放弃
+ # let the agent know that it can give up when it has tried 3 times
return (
msg
+ 'If you want to give up, run: exit .\n'
@@ -269,10 +269,10 @@ def codeact_user_response(state: State | None) -> str:
return msg
```
-此函数执行以下操作:
+这个函数执行以下操作:
-1. 提供一条标准消息,鼓励代理继续工作
+1. 提供一个标准消息,鼓励代理继续工作
2. 检查代理尝试与用户通信的次数
-3. 如果代理已多次尝试,它会提供放弃的选项
+3. 如果代理已经多次尝试,它提供一个放弃的选项
-通过使用此函数,您可以确保在多次评估运行中保持一致的行为,并防止代理在等待人工输入时陷入困境。
+通过使用这个函数,您可以确保在多次评估运行中的一致行为,并防止代理因等待人工输入而卡住。
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/github-action.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/github-action.md
index 1609956b9175..aca2191e15e1 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/github-action.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/github-action.md
@@ -1,49 +1,51 @@
-# 在 OpenHands 仓库中使用 GitHub Action
+# 使用 OpenHands GitHub Action
-本指南解释了如何在 OpenHands 仓库内以及你自己的项目中使用 OpenHands GitHub Action。
+本指南解释如何在您自己的项目中使用 OpenHands GitHub Action。
## 在 OpenHands 仓库中使用 Action
-要在仓库中使用 OpenHands GitHub Action,你可以:
+要在仓库中使用 OpenHands GitHub Action,您可以:
1. 在仓库中创建一个 issue。
-2. 为 issue 添加 `fix-me` 标签,或在 issue 中留下以 `@openhands-agent` 开头的评论。
+2. 为该 issue 添加 `fix-me` 标签或在 issue 上留下以 `@openhands-agent` 开头的评论。
-该 action 将自动触发并尝试解决该 issue。
+该 action 将自动触发并尝试解决问题。
## 在新仓库中安装 Action
-要在你自己的仓库中安装 OpenHands GitHub Action,请按照 [OpenHands Resolver 的 README](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/resolver/README.md) 进行操作。
+要在您自己的仓库中安装 OpenHands GitHub Action,请按照
+[OpenHands Resolver 的 README](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/resolver/README.md) 进行操作。
## 使用技巧
-### 迭代解决
+### 迭代式解决
1. 在仓库中创建一个 issue。
-2. 为 issue 添加 `fix-me` 标签,或留下以 `@openhands-agent` 开头的评论。
-3. 通过检查 pull request 来审查解决 issue 的尝试。
+2. 为该 issue 添加 `fix-me` 标签,或留下以 `@openhands-agent` 开头的评论。
+3. 通过检查拉取请求来查看解决问题的尝试。
4. 通过一般评论、审查评论或内联线程评论提供反馈。
-5. 为 pull request 添加 `fix-me` 标签,或通过以 `@openhands-agent` 开头来解决特定的评论。
+5. 为拉取请求添加 `fix-me` 标签,或以 `@openhands-agent` 开头来回应特定评论。
-### 标签与宏
+### 标签与宏命令的区别
-- 标签(`fix-me`):请求 OpenHands 解决**整个** issue 或 pull request。
-- 宏(`@openhands-agent`):请求 OpenHands 仅考虑 issue/pull request 描述和**特定评论**。
+- 标签(`fix-me`):请求 OpenHands 处理**整个** issue 或拉取请求。
+- 宏命令(`@openhands-agent`):请求 OpenHands 仅考虑 issue/拉取请求描述和**特定评论**。
## 高级设置
### 添加自定义仓库设置
-你可以按照 [resolver 的 README](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/resolver/README.md#providing-custom-instructions) 为 OpenHands 提供自定义指令。
+您可以按照[resolver 的 README](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/resolver/README.md#providing-custom-instructions)为 OpenHands 提供自定义指示。
### 自定义配置
-Github resolver 将自动检查有效的 [仓库机密](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions?tool=webui#creating-secrets-for-a-repository) 或 [仓库变量](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/store-information-in-variables#creating-configuration-variables-for-a-repository) 以自定义其行为。
-你可以设置的自定义选项有:
+GitHub resolver 将自动检查有效的[仓库密钥](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions?tool=webui#creating-secrets-for-a-repository)或[仓库变量](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/store-information-in-variables#creating-configuration-variables-for-a-repository)来自定义其行为。
+您可以设置的自定义选项有:
-| **属性名称** | **类型** | **用途** | **示例** |
-|----------------------------------| -------- |-------------------------------------------------------------------------------------------|------------------------------------------------------|
-| `LLM_MODEL` | Variable | 设置与 OpenHands 一起使用的 LLM | `LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"` |
-| `OPENHANDS_MAX_ITER` | Variable | 设置代理迭代的最大限制 | `OPENHANDS_MAX_ITER=10` |
-| `OPENHANDS_MACRO` | Variable | 自定义用于调用 resolver 的默认宏 | `OPENHANDS_MACRO=@resolveit` |
-| `OPENHANDS_BASE_CONTAINER_IMAGE` | Variable | 自定义沙箱 ([了解更多](https://docs.all-hands.dev/modules/usage/how-to/custom-sandbox-guide)) | `OPENHANDS_BASE_CONTAINER_IMAGE="custom_image"` |
+| **属性名称** | **类型** | **用途** | **示例** |
+| -------------------------------- | -------- | --------------------------------------------------------------------------------------- | -------------------------------------------------- |
+| `LLM_MODEL` | 变量 | 设置与 OpenHands 一起使用的 LLM | `LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"` |
+| `OPENHANDS_MAX_ITER` | 变量 | 设置代理迭代的最大限制 | `OPENHANDS_MAX_ITER=10` |
+| `OPENHANDS_MACRO` | 变量 | 自定义用于调用 resolver 的默认宏 | `OPENHANDS_MACRO=@resolveit` |
+| `OPENHANDS_BASE_CONTAINER_IMAGE` | 变量 | 自定义沙箱([了解更多](https://docs.all-hands.dev/modules/usage/how-to/custom-sandbox-guide)) | `OPENHANDS_BASE_CONTAINER_IMAGE="custom_image"` |
+| `TARGET_BRANCH` | 变量 | 合并到 `main` 以外的分支 | `TARGET_BRANCH="dev"` |
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/gui-mode.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/gui-mode.md
index 396fa4945449..34a6eb725334 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/gui-mode.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/gui-mode.md
@@ -1,166 +1,141 @@
# GUI 模式
-## 简介
-
-OpenHands 提供了一个用户友好的图形用户界面(GUI)模式,用于与 AI 助手交互。这种模式提供了一种直观的方式来设置环境、管理设置和与 AI 通信。
+OpenHands 提供了一个图形用户界面(GUI)模式,用于与 AI 助手交互。
## 安装和设置
-1. 按照[安装](../installation)指南中的说明安装 OpenHands。
-
+1. 按照安装说明安装 OpenHands。
2. 运行命令后,通过 [http://localhost:3000](http://localhost:3000) 访问 OpenHands。
## 与 GUI 交互
### 初始设置
-1. 首次启动时,您将看到一个设置模态框。
-2. 从下拉菜单中选择 `LLM Provider` 和 `LLM Model`。
-3. 输入所选提供商对应的 `API Key`。
-4. 点击"保存"应用设置。
+1. 首次启动时,您将看到一个设置弹窗。
+2. 从下拉菜单中选择 `LLM Provider` 和 `LLM Model`。如果所需模型不在列表中,
+ 选择 `see advanced settings`。然后切换 `Advanced` 选项,并在
+ `Custom Model` 文本框中输入正确前缀的模型名称。
+3. 输入您所选提供商对应的 `API Key`。
+4. 点击 `Save Changes` 应用设置。
### 版本控制令牌
OpenHands 支持多个版本控制提供商。您可以同时配置多个提供商的令牌。
-#### GitHub Token 设置
-
-如果可用,OpenHands 会自动将 `GITHUB_TOKEN` 导出到 shell 环境中。这可以通过两种方式实现:
-
-1. **本地(OSS)**:用户直接输入他们的 GitHub token
-2. **在线(SaaS)**:通过 GitHub OAuth 身份验证获取 token
-
-##### 设置本地 GitHub Token
-
-1. **生成个人访问令牌(PAT)**:
- - 转到 GitHub 设置 > 开发者设置 > 个人访问令牌 > 令牌(经典)
- - 点击"生成新令牌(经典)"
- - 所需范围:
- - `repo`(完全控制私有仓库)
- - `workflow`(更新 GitHub Action 工作流)
- - `read:org`(读取组织数据)
-
-2. **在 OpenHands 中输入令牌**:
- - 点击右上角的设置按钮(齿轮图标)
- - 导航到"Git Provider Settings"部分
- - 将令牌粘贴到"GitHub Token"字段中
- - 点击"保存"应用更改
-
-##### 组织令牌策略
-
-如果您使用组织仓库,可能需要额外的设置:
-
-1. **检查组织要求**:
- - 组织管理员可能会强制执行特定的令牌策略
- - 某些组织要求使用启用 SSO 的令牌
- - 查看您组织的[令牌策略设置](https://docs.github.com/en/organizations/managing-programmatic-access-to-your-organization/setting-a-personal-access-token-policy-for-your-organization)
-
-2. **验证组织访问权限**:
- - 转到 GitHub 上的令牌设置
- - 在"组织访问"下查找组织
- - 如果需要,点击组织旁边的"启用 SSO"
- - 完成 SSO 授权过程
-
-##### OAuth 身份验证(在线模式)
-
-在在线模式下使用 OpenHands 时,GitHub OAuth 流程:
-
-1. 请求以下权限:
- - 仓库访问(读/写)
- - 工作流管理
- - 组织读取访问
-
-2. 身份验证步骤:
- - 出现提示时,点击"使用 GitHub 登录"
- - 查看请求的权限
- - 授权 OpenHands 访问您的 GitHub 帐户
- - 如果使用组织,在出现提示时授权组织访问
-
-##### 故障排除
-
-常见问题和解决方案:
-
-1. **令牌无法识别**:
- - 确保令牌已正确保存在设置中
- - 检查令牌是否已过期
- - 验证令牌是否具有所需的范围
- - 尝试重新生成令牌
-
-2. **组织访问被拒绝**:
- - 检查是否需要但未启用 SSO
- - 验证组织成员资格
- - 如果令牌策略阻止访问,请联系组织管理员
-
-3. **验证令牌是否有效**:
- - 如果令牌有效,应用程序将显示绿色复选标记
- - 尝试访问仓库以确认权限
- - 检查浏览器控制台中是否有任何错误消息
- - 如果可用,使用设置中的"测试连接"按钮
-
-#### GitLab Token 设置
-
-OpenHands 会自动将 `GITLAB_TOKEN` 导出到 shell 环境中,仅适用于本地安装,如果它可用的话。
-
-##### 设置 GitLab Token
-
-1. **生成个人访问令牌(PAT)**:
- - 在 GitLab 中,转到用户设置 > 访问令牌
- - 创建具有以下范围的新令牌:
- - `api`(API 访问)
- - `read_user`(读取用户信息)
- - `read_repository`(读取仓库)
- - `write_repository`(写入仓库)
- - 设置过期日期或留空以获取永不过期的令牌
-
-2. **在 OpenHands 中输入令牌**:
- - 点击设置按钮(齿轮图标)
- - 导航到 `Git Provider Settings` 部分
- - 将令牌粘贴到 `GitLab Token` 字段中
- - 如果使用自托管 GitLab,请输入您的 GitLab 实例 URL
- - 点击 `Save Changes` 应用更改
-
-##### 故障排除
-
-常见问题和解决方案:
-
-1. **令牌无法识别**:
- - 确保令牌已正确保存在设置中
- - 检查令牌是否已过期
- - 验证令牌是否具有所需的范围
- - 对于自托管实例,验证正确的实例 URL
-
-2. **访问被拒绝**:
- - 验证项目访问权限
- - 检查令牌是否具有必要的范围
- - 对于组/组织仓库,确保您拥有适当的访问权限
+#### GitHub 令牌设置
+
+如果提供了 GitHub 令牌,OpenHands 会自动将 `GITHUB_TOKEN` 导出到 shell 环境:
+
+
+ 设置 GitHub 令牌
+
+ 1. **生成个人访问令牌 (PAT)**:
+ - 在 GitHub 上,前往 Settings > Developer Settings > Personal Access Tokens > Tokens (classic)。
+ - **New token (classic)**
+ - 所需权限范围:
+ - `repo` (对私有仓库的完全控制)
+ - **Fine-Grained Tokens**
+ - 所有仓库(您可以选择特定仓库,但这会影响仓库搜索返回的结果)
+ - 最小权限(选择 `Meta Data = Read-only` 用于搜索,`Pull Requests = Read and Write` 和 `Content = Read and Write` 用于分支创建)
+ 2. **在 OpenHands 中输入令牌**:
+ - 点击设置按钮(齿轮图标)。
+ - 在 `GitHub Token` 字段中粘贴您的令牌。
+ - 点击 `Save` 应用更改。
+
+
+
+ 组织令牌策略
+
+ 如果您使用组织仓库,可能需要额外设置:
+
+ 1. **检查组织要求**:
+ - 组织管理员可能强制执行特定的令牌策略。
+ - 某些组织要求创建启用了 SSO 的令牌。
+ - 查看您组织的[令牌策略设置](https://docs.github.com/en/organizations/managing-programmatic-access-to-your-organization/setting-a-personal-access-token-policy-for-your-organization)。
+ 2. **验证组织访问权限**:
+ - 前往 GitHub 上的令牌设置。
+ - 在 `Organization access` 下查找您的组织。
+ - 如果需要,点击组织旁边的 `Enable SSO`。
+ - 完成 SSO 授权流程。
+
+
+
+ 故障排除
+
+ 常见问题和解决方案:
+
+ - **令牌未被识别**:
+ - 确保令牌已正确保存在设置中。
+ - 检查令牌是否已过期。
+ - 验证令牌是否具有所需的权限范围。
+ - 尝试重新生成令牌。
+
+ - **组织访问被拒绝**:
+ - 检查是否需要 SSO 但未启用。
+ - 验证组织成员资格。
+ - 如果令牌策略阻止访问,请联系组织管理员。
+
+ - **验证令牌是否有效**:
+ - 如果令牌有效,应用程序将显示绿色对勾。
+ - 尝试访问仓库以确认权限。
+ - 检查浏览器控制台是否有错误消息。
+
+
+#### GitLab 令牌设置
+
+如果提供了 GitLab 令牌,OpenHands 会自动将 `GITLAB_TOKEN` 导出到 shell 环境:
+
+
+ 设置 GitLab 令牌
+
+ 1. **生成个人访问令牌 (PAT)**:
+ - 在 GitLab 上,前往 User Settings > Access Tokens。
+ - 创建一个具有以下权限范围的新令牌:
+ - `api` (API 访问)
+ - `read_user` (读取用户信息)
+ - `read_repository` (读取仓库)
+ - `write_repository` (写入仓库)
+ - 设置过期日期,或留空以创建永不过期的令牌。
+ 2. **在 OpenHands 中输入令牌**:
+ - 点击设置按钮(齿轮图标)。
+ - 在 `GitLab Token` 字段中粘贴您的令牌。
+ - 如果使用自托管 GitLab,请输入您的 GitLab 实例 URL。
+ - 点击 `Save` 应用更改。
+
+
+
+ 故障排除
+
+ 常见问题和解决方案:
+
+ - **令牌未被识别**:
+ - 确保令牌已正确保存在设置中。
+ - 检查令牌是否已过期。
+ - 验证令牌是否具有所需的权限范围。
+ - 对于自托管实例,验证实例 URL 是否正确。
+
+ - **访问被拒绝**:
+ - 验证项目访问权限。
+ - 检查令牌是否具有必要的权限范围。
+ - 对于群组/组织仓库,确保您拥有适当的访问权限。
+
### 高级设置
-1. 切换`高级选项`以访问其他设置。
-2. 如果列表中没有所需的模型,使用`自定义模型`文本框手动输入模型。
-3. 如果您的 LLM 提供商需要,请指定`基本 URL`。
-
-### 主界面
-
-主界面由几个关键组件组成:
-
-1. **聊天窗口**:中央区域,您可以在其中查看与 AI 助手的对话历史记录。
-2. **输入框**:位于屏幕底部,用于输入您要发送给 AI 的消息或命令。
-3. **发送按钮**:点击此按钮将消息发送给 AI。
-4. **设置按钮**:打开设置模态框的齿轮图标,允许您随时调整配置。
-5. **工作区面板**:显示工作区中的文件和文件夹,允许您导航和查看文件,或查看代理的过去命令或网页浏览历史记录。
+1. 在设置页面内,切换 `Advanced` 选项以访问其他设置。
+2. 如果模型不在列表中,使用 `Custom Model` 文本框手动输入模型。
+3. 如果您的 LLM 提供商需要,请指定 `Base URL`。
### 与 AI 交互
-1. 在输入框中输入您的问题、请求或任务描述。
-2. 点击发送按钮或按 Enter 键提交消息。
+1. 在输入框中输入您的提示。
+2. 点击发送按钮或按 Enter 键提交您的消息。
3. AI 将处理您的输入并在聊天窗口中提供响应。
-4. 您可以通过询问后续问题或提供额外信息来继续对话。
+4. 您可以通过提出后续问题或提供额外信息来继续对话。
-## 有效使用的提示
+## 有效使用的技巧
-1. 在请求中要具体,以获得最准确和最有帮助的响应,如[提示最佳实践](../prompting/prompting-best-practices)中所述。
-2. 使用工作区面板探索项目结构。
-3. 使用[LLMs 部分](usage/llms/llms.md)中描述的推荐模型之一。
+- 在请求中具体明确,以获得最准确和最有帮助的回应,如[提示最佳实践](../prompting/prompting-best-practices)中所述。
+- 使用[LLMs 部分](usage/llms/llms.md)中描述的推荐模型之一。
-请记住,OpenHands 的 GUI 模式旨在使您与 AI 助手的交互尽可能流畅和直观。不要犹豫探索其功能以最大限度地提高您的工作效率。
+请记住,OpenHands 的 GUI 模式旨在使您与 AI 助手的交互尽可能顺畅和直观。请随时探索其功能,以最大限度地提高您的生产力。
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/headless-mode.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/headless-mode.md
index d69a33ea7269..a79d4b912856 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/headless-mode.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/how-to/headless-mode.md
@@ -1,62 +1,58 @@
-以下是翻译后的内容:
-
# 无头模式
-你可以使用单个命令运行 OpenHands,而无需启动 Web 应用程序。
-这使得使用 OpenHands 编写脚本和自动化任务变得很容易。
-
-这与[CLI 模式](cli-mode)不同,后者是交互式的,更适合主动开发。
+您可以使用单个命令运行OpenHands,而无需启动Web应用程序。
+这使得使用OpenHands编写脚本和自动化任务变得简单。
-## 使用 Python
+这与[CLI模式](cli-mode)不同,CLI模式是交互式的,更适合主动开发。
-要在 Python 中以无头模式运行 OpenHands,
-[请按照开发设置说明](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md),
-然后运行:
+## 使用Python
+要使用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"
```
-你需要确保通过环境变量
-[或 `config.toml` 文件](https://github.com/All-Hands-AI/OpenHands/blob/main/config.template.toml)
-设置你的模型、API 密钥和其他设置。
+您需要确保通过环境变量或[`config.toml`文件](https://github.com/All-Hands-AI/OpenHands/blob/main/config.template.toml)设置您的模型、API密钥和其他设置。
-## 使用 Docker
+## 使用Docker
-1. 将 `WORKSPACE_BASE` 设置为你希望 OpenHands 编辑的目录:
+要使用Docker在无头模式下运行OpenHands:
-```bash
-WORKSPACE_BASE=$(pwd)/workspace
-```
+1. 在终端中设置以下环境变量:
-2. 将 `LLM_MODEL` 设置为你要使用的模型:
+- `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"`)。
-```bash
-LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"
-
-```
-
-3. 将 `LLM_API_KEY` 设置为你的 API 密钥:
-
-```bash
-LLM_API_KEY="sk_test_12345"
-```
-
-4. 运行以下 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 \
--name openhands-app-$(date +%Y%m%d%H%M%S) \
docker.all-hands.dev/all-hands-ai/openhands:0.36 \
- python -m openhands.core.main -t "write a bash script that prints hi" --no-auto-continue
+ python -m openhands.core.main -t "write a bash script that prints hi"
```
+
+传递给Docker命令的`-e SANDBOX_USER_ID=$(id -u)`确保沙箱用户与主机用户的权限匹配。这可以防止代理在挂载的工作区中创建root所有的文件。
+
+## 高级无头模式配置
+
+要查看无头模式的所有可用配置选项,请使用`--help`标志运行Python命令。
+
+### 额外日志
+
+要让无头模式记录所有代理操作,在终端中运行:`export LOG_ALL_EVENTS=true`
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/installation.mdx b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/installation.mdx
index bf90942586cc..247b38dc5312 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/installation.mdx
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/installation.mdx
@@ -2,13 +2,60 @@
## 系统要求
-* Docker 版本 26.0.0+ 或 Docker Desktop 4.31.0+。
-* 你必须使用 Linux 或 Mac OS。
- * 如果你使用的是 Windows,你必须使用 [WSL](https://learn.microsoft.com/en-us/windows/wsl/install)。
+- 支持 [Docker Desktop](https://docs.docker.com/desktop/setup/install/mac-install/#system-requirements) 的 MacOS
+- Linux
+- 配有 [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) 和 [Docker Desktop 支持](https://docs.docker.com/desktop/setup/install/windows-install/#system-requirements) 的 Windows
+
+建议使用具有现代处理器和至少 **4GB RAM** 的系统来运行 OpenHands。
+
+## 前提条件
+
+
+ MacOS
+
+ **Docker Desktop**
+
+ 1. [在 Mac 上安装 Docker Desktop](https://docs.docker.com/desktop/setup/install/mac-install)。
+ 2. 打开 Docker Desktop,进入 `Settings > Advanced` 并确保启用了 `Allow the default Docker socket to be used`。
+
+
+
+ Linux
+
+ :::note
+ 已在 Ubuntu 22.04 上测试通过。
+ :::
+
+ **Docker Desktop**
+
+ 1. [在 Linux 上安装 Docker Desktop](https://docs.docker.com/desktop/setup/install/linux/)。
+
+
+
+
+ Windows
+
+ **WSL**
+
+ 1. [安装 WSL](https://learn.microsoft.com/en-us/windows/wsl/install)。
+ 2. 在 powershell 中运行 `wsl --version` 并确认 `Default Version: 2`。
+
+ **Docker Desktop**
+
+ 1. [在 Windows 上安装 Docker Desktop](https://docs.docker.com/desktop/setup/install/windows-install)。
+ 2. 打开 Docker Desktop,进入 `Settings` 并确认以下设置:
+ - General: 启用 `Use the WSL 2 based engine`。
+ - Resources > WSL Integration: 启用 `Enable integration with my default WSL distro`。
+
+ :::note
+ 下面启动应用的 docker 命令必须在 WSL 终端内运行。
+ :::
+
+
## 启动应用
-在 Docker 中运行 OpenHands 是最简单的方式。
+运行 OpenHands 最简单的方法是使用 Docker。
```bash
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.36-nikolaik
@@ -17,38 +64,56 @@ docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.36-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
+ -v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.36
```
-你也可以在可脚本化的[无头模式](https://docs.all-hands.dev/modules/usage/how-to/headless-mode)下运行 OpenHands,作为[交互式 CLI](https://docs.all-hands.dev/modules/usage/how-to/cli-mode),或使用 [OpenHands GitHub Action](https://docs.all-hands.dev/modules/usage/how-to/github-action)。
+OpenHands 将在 http://localhost:3000 运行!
+
+你还可以[将 OpenHands 连接到本地文件系统](https://docs.all-hands.dev/modules/usage/runtimes/docker#connecting-to-your-filesystem),
+以[无头模式](https://docs.all-hands.dev/modules/usage/how-to/headless-mode)运行 OpenHands,
+通过[友好的 CLI](https://docs.all-hands.dev/modules/usage/how-to/cli-mode)与其交互,
+或者使用 [GitHub action](https://docs.all-hands.dev/modules/usage/how-to/github-action) 在标记的问题上运行它。
## 设置
-运行上述命令后,你可以在 [http://localhost:3000](http://localhost:3000) 找到正在运行的 OpenHands。
+启动 OpenHands 后,你**必须**选择一个 `LLM Provider` 和 `LLM Model` 并输入相应的 `API Key`。
+这可以在初始设置弹窗中完成,或者通过在 UI 中选择 `Settings` 按钮(齿轮图标)来完成。
-启动 OpenHands 后,你会看到一个设置模态框。你**必须**选择一个 `LLM Provider` 和 `LLM Model`,并输入相应的 `API Key`。
-这些设置可以随时通过选择 UI 中的 `Settings` 按钮(齿轮图标)进行更改。
+如果列表中不存在所需的模型,你可以切换 `Advanced` 选项,并在 `Custom Model` 文本框中手动输入带有正确前缀的模型。
+`Advanced` 选项还允许你在需要时指定 `Base URL`。
-如果所需的 `LLM Model` 不在列表中,你可以切换 `Advanced Options`,并在 `Custom Model` 文本框中使用正确的前缀手动输入。
-`Advanced Options` 还允许你在需要时指定 `Base URL`。
+### 获取 API 密钥
-
-
-
-
+OpenHands 需要 API 密钥才能访问大多数语言模型。以下是从推荐提供商获取 API 密钥的方法:
-## 版本
+#### Anthropic (Claude)
-上述命令拉取最新的 OpenHands 稳定版本。你还有其他选择:
-- 对于特定版本,使用 `docker.all-hands.dev/all-hands-ai/openhands:$VERSION`,将 $VERSION 替换为版本号。
-- 我们使用语义化版本,并发布主要版本、次要版本和补丁标签。因此,`0.9` 将自动指向最新的 `0.9.x` 版本,而 `0` 将指向最新的 `0.x.x` 版本。
-- 对于最新的开发版本,你可以使用 `docker.all-hands.dev/all-hands-ai/openhands:main`。此版本不稳定,仅建议用于测试或开发目的。
+1. [创建 Anthropic 账户](https://console.anthropic.com/)。
+2. [生成 API 密钥](https://console.anthropic.com/settings/keys)。
+3. [设置计费](https://console.anthropic.com/settings/billing)。
+
+考虑设置使用限制以控制成本。
+
+#### OpenAI
+
+1. [创建 OpenAI 账户](https://platform.openai.com/)。
+2. [生成 API 密钥](https://platform.openai.com/api-keys)。
+3. [设置计费](https://platform.openai.com/account/billing/overview)。
+
+现在你已准备好[开始使用 OpenHands](./getting-started)。
+
+## 版本
-你可以根据稳定性要求和所需功能选择最适合你需求的标签。
+[上面的 docker 命令](./installation#start-the-app)会拉取 OpenHands 的最新稳定版本。你还有其他选择:
+- 对于特定版本,请在 `openhands:$VERSION` 和 `runtime:$VERSION` 中将 $VERSION 替换为版本号。
+我们使用 SemVer,因此 `0.9` 将自动指向最新的 `0.9.x` 版本,而 `0` 将指向最新的 `0.x.x` 版本。
+- 对于最新的开发版本,请在 `openhands:$VERSION` 和 `runtime:$VERSION` 中将 $VERSION 替换为 `main`。
+此版本不稳定,仅推荐用于测试或开发目的。
有关开发工作流程,请参阅 [Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)。
-遇到问题了吗?查看我们的[故障排除指南](https://docs.all-hands.dev/modules/usage/troubleshooting)。
+遇到问题?请查看我们的[故障排除指南](https://docs.all-hands.dev/modules/usage/troubleshooting)。
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/key-features.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/key-features.md
new file mode 100644
index 000000000000..a158412d2b63
--- /dev/null
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/key-features.md
@@ -0,0 +1,29 @@
+# OpenHands 功能概览
+
+
+
+### 聊天面板
+- 显示用户与 OpenHands 之间的对话。
+- OpenHands 在此面板中解释其操作。
+
+### 变更
+- 显示 OpenHands 执行的文件变更。
+
+### VS Code
+- 嵌入式 VS Code,用于浏览和修改文件。
+- 也可用于上传和下载文件。
+
+### 终端
+- 供 OpenHands 和用户运行终端命令的空间。
+
+### Jupyter
+- 显示 OpenHands 执行的所有 Python 命令。
+- 在使用 OpenHands 执行数据可视化任务时特别有用。
+
+### 应用
+- 当 OpenHands 运行应用程序时显示网络服务器。
+- 用户可以与运行中的应用程序交互。
+
+### 浏览器
+- 由 OpenHands 用于浏览网站。
+- 浏览器是非交互式的。
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/azure-llms.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/azure-llms.md
index cf93b2e23fa1..1d96048d4fff 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/azure-llms.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/azure-llms.md
@@ -1,10 +1,10 @@
# Azure
-OpenHands 使用 LiteLLM 调用 Azure 的聊天模型。你可以在[这里](https://docs.litellm.ai/docs/providers/azure)找到他们关于使用 Azure 作为提供商的文档。
+OpenHands 使用 LiteLLM 来调用 Azure 的聊天模型。您可以在[这里](https://docs.litellm.ai/docs/providers/azure)找到他们关于使用 Azure 作为提供商的文档。
## Azure OpenAI 配置
-运行 OpenHands 时,你需要在 [docker run 命令](/modules/usage/installation#start-the-app)中使用 `-e` 设置以下环境变量:
+运行 OpenHands 时,您需要使用 [docker run 命令](../installation#running-openhands)中的 `-e` 设置以下环境变量:
```
LLM_API_VERSION="" # 例如 "2023-05-15"
@@ -17,27 +17,22 @@ docker run -it --pull=always \
...
```
-然后在 OpenHands UI 的设置中设置以下内容:
+然后在 OpenHands UI 设置中:
:::note
-你需要你的 ChatGPT 部署名称,可以在 Azure 的部署页面找到。下面将其称为 <deployment-name>。
+您需要您的 ChatGPT 部署名称,可以在 Azure 的部署页面上找到。这在下面被引用为 <deployment-name>。
:::
-* 启用 `Advanced Options`
-* 将 `Custom Model` 设置为 azure/<deployment-name>
-* 将 `Base URL` 设置为你的 Azure API 基础 URL(例如 `https://example-endpoint.openai.azure.com`)
-* 将 `API Key` 设置为你的 Azure API 密钥
-
-## Embeddings
-
-OpenHands 使用 llama-index 进行 embeddings。你可以在[这里](https://docs.llamaindex.ai/en/stable/api_reference/embeddings/azure_openai/)找到他们关于 Azure 的文档。
+1. 启用 `高级` 选项。
+2. 设置以下内容:
+ - `自定义模型` 设为 azure/<deployment-name>
+ - `基础 URL` 设为您的 Azure API 基础 URL(例如 `https://example-endpoint.openai.azure.com`)
+ - `API 密钥` 设为您的 Azure API 密钥
### Azure OpenAI 配置
-运行 OpenHands 时,在 [docker run 命令](/modules/usage/installation#start-the-app)中使用 `-e` 设置以下环境变量:
+运行 OpenHands 时,使用 [docker run 命令](../installation#running-openhands)中的 `-e` 设置以下环境变量:
```
-LLM_EMBEDDING_MODEL="azureopenai"
-LLM_EMBEDDING_DEPLOYMENT_NAME="" # 例如 "TextEmbedding..."
LLM_API_VERSION="" # 例如 "2024-02-15-preview"
-```
+```
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/custom-llm-configs.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/custom-llm-configs.md
new file mode 100644
index 000000000000..a5bb2d5b6370
--- /dev/null
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/custom-llm-configs.md
@@ -0,0 +1,136 @@
+# 自定义 LLM 配置
+
+OpenHands 支持在 `config.toml` 文件中定义多个命名的 LLM 配置。此功能允许您针对不同目的使用不同的 LLM 配置,例如对不需要高质量响应的任务使用更经济的模型,或者为特定代理使用具有不同参数的不同模型。
+
+## 工作原理
+
+命名的 LLM 配置在 `config.toml` 文件中使用以 `llm.` 开头的部分定义。例如:
+
+```toml
+# 默认 LLM 配置
+[llm]
+model = "gpt-4"
+api_key = "your-api-key"
+temperature = 0.0
+
+# 更经济模型的自定义 LLM 配置
+[llm.gpt3]
+model = "gpt-3.5-turbo"
+api_key = "your-api-key"
+temperature = 0.2
+
+# 另一个具有不同参数的自定义配置
+[llm.high-creativity]
+model = "gpt-4"
+api_key = "your-api-key"
+temperature = 0.8
+top_p = 0.9
+```
+
+每个命名配置都从默认的 `[llm]` 部分继承所有设置,并可以覆盖任何这些设置。您可以根据需要定义任意数量的自定义配置。
+
+## 使用自定义配置
+
+### 与代理一起使用
+
+您可以通过在代理的配置部分设置 `llm_config` 参数来指定代理应使用哪个 LLM 配置:
+
+```toml
+[agent.RepoExplorerAgent]
+# 为此代理使用更经济的 GPT-3 配置
+llm_config = 'gpt3'
+
+[agent.CodeWriterAgent]
+# 为此代理使用高创造力配置
+llm_config = 'high-creativity'
+```
+
+### 配置选项
+
+每个命名的 LLM 配置支持与默认 LLM 配置相同的所有选项。这些包括:
+
+- 模型选择 (`model`)
+- API 配置 (`api_key`, `base_url` 等)
+- 模型参数 (`temperature`, `top_p` 等)
+- 重试设置 (`num_retries`, `retry_multiplier` 等)
+- 令牌限制 (`max_input_tokens`, `max_output_tokens`)
+- 以及所有其他 LLM 配置选项
+
+有关可用选项的完整列表,请参阅 [配置选项](../configuration-options) 文档中的 LLM 配置部分。
+
+## 使用场景
+
+自定义 LLM 配置在几种情况下特别有用:
+
+- **成本优化**:对不需要高质量响应的任务使用更经济的模型,如代码库探索或简单的文件操作。
+- **任务特定调整**:为需要不同创造力或确定性水平的任务配置不同的 temperature 和 top_p 值。
+- **不同提供商**:为不同任务使用不同的 LLM 提供商或 API 端点。
+- **测试和开发**:在开发和测试期间轻松切换不同的模型配置。
+
+## 示例:成本优化
+
+使用自定义 LLM 配置优化成本的实用示例:
+
+```toml
+# 使用 GPT-4 的默认配置,用于高质量响应
+[llm]
+model = "gpt-4"
+api_key = "your-api-key"
+temperature = 0.0
+
+# 用于代码库探索的更经济配置
+[llm.repo-explorer]
+model = "gpt-3.5-turbo"
+temperature = 0.2
+
+# 用于代码生成的配置
+[llm.code-gen]
+model = "gpt-4"
+temperature = 0.0
+max_output_tokens = 2000
+
+[agent.RepoExplorerAgent]
+llm_config = 'repo-explorer'
+
+[agent.CodeWriterAgent]
+llm_config = 'code-gen'
+```
+
+在此示例中:
+- 代码库探索使用更经济的模型,因为它主要涉及理解和导航代码
+- 代码生成使用 GPT-4,并具有更高的令牌限制,用于生成更大的代码块
+- 默认配置仍可用于其他任务
+
+# 具有保留名称的自定义配置
+
+OpenHands 可以使用具有保留名称的自定义 LLM 配置,用于特定用例。如果您在保留名称下指定模型和其他设置,那么 OpenHands 将加载并将它们用于特定目的。目前,已实现了一种这样的配置:草稿编辑器。
+
+## 草稿编辑器配置
+
+`draft_editor` 配置是一组设置,您可以提供它来指定用于初步起草代码编辑的模型,适用于任何涉及编辑和优化代码的任务。您需要在 `[llm.draft_editor]` 部分下提供它。
+
+例如,您可以在 `config.toml` 中定义一个草稿编辑器,如下所示:
+
+```toml
+[llm.draft_editor]
+model = "gpt-4"
+temperature = 0.2
+top_p = 0.95
+presence_penalty = 0.0
+frequency_penalty = 0.0
+```
+
+此配置:
+- 使用 GPT-4 进行高质量的编辑和建议
+- 设置较低的温度 (0.2) 以保持一致性,同时允许一些灵活性
+- 使用较高的 top_p 值 (0.95) 以考虑广泛的令牌选项
+- 禁用存在和频率惩罚,以保持对所需特定编辑的关注
+
+当您希望让 LLM 在进行编辑之前起草编辑时,请使用此配置。通常,它可能有助于:
+- 审查并建议代码改进
+- 优化现有内容,同时保持其核心含义
+- 对代码或文本进行精确、有针对性的更改
+
+:::note
+自定义 LLM 配置仅在通过 `main.py` 或 `cli.py` 在开发模式下使用 OpenHands 时可用。当通过 `docker run` 运行时,请使用标准配置选项。
+:::
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/google-llms.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/google-llms.md
index 9d457dc73873..ad3da4d02f25 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/google-llms.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/google-llms.md
@@ -1,21 +1,21 @@
# Google Gemini/Vertex
-OpenHands 使用 LiteLLM 调用 Google 的聊天模型。你可以在以下文档中找到使用 Google 作为提供商的说明:
+OpenHands 使用 LiteLLM 调用 Google 的聊天模型。您可以在以下文档中找到关于使用 Google 作为提供商的信息:
- [Gemini - Google AI Studio](https://docs.litellm.ai/docs/providers/gemini)
- [VertexAI - Google Cloud Platform](https://docs.litellm.ai/docs/providers/vertex)
## Gemini - Google AI Studio 配置
-运行 OpenHands 时,你需要在设置中设置以下内容:
-* 将 `LLM Provider` 设置为 `Gemini`
-* 将 `LLM Model` 设置为你将使用的模型。
-如果模型不在列表中,请切换 `Advanced Options`,并在 `Custom Model` 中输入(例如 gemini/<model-name> 如 `gemini/gemini-1.5-pro`)。
-* 将 `API Key` 设置为你的 Gemini API 密钥
+运行 OpenHands 时,您需要在 OpenHands UI 的设置中设置以下内容:
+- `LLM Provider` 设为 `Gemini`
+- `LLM Model` 设为您将使用的模型。
+如果列表中没有该模型,请切换到`高级`选项,并在`自定义模型`中输入(例如 gemini/<model-name> 如 `gemini/gemini-2.0-flash`)。
+- `API Key` 设为您的 Gemini API 密钥
## VertexAI - Google Cloud Platform 配置
-要在运行 OpenHands 时通过 Google Cloud Platform 使用 Vertex AI,你需要使用 [docker run 命令](/modules/usage/installation#start-the-app) 中的 `-e` 设置以下环境变量:
+要通过 Google Cloud Platform 使用 Vertex AI 运行 OpenHands,您需要在 [docker run 命令](../installation#running-openhands) 中使用 `-e` 设置以下环境变量:
```
GOOGLE_APPLICATION_CREDENTIALS=""
@@ -23,7 +23,7 @@ VERTEXAI_PROJECT=""
VERTEXAI_LOCATION=""
```
-然后在设置中设置以下内容:
-* 将 `LLM Provider` 设置为 `VertexAI`
-* 将 `LLM Model` 设置为你将使用的模型。
-如果模型不在列表中,请切换 `Advanced Options`,并在 `Custom Model` 中输入(例如 vertex_ai/<model-name>)。
+然后在 OpenHands UI 的设置中设置以下内容:
+- `LLM Provider` 设为 `VertexAI`
+- `LLM Model` 设为您将使用的模型。
+如果列表中没有该模型,请切换到`高级`选项,并在`自定义模型`中输入(例如 vertex_ai/<model-name>)。
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/groq.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/groq.md
index c5de59584416..6014296ab78d 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/groq.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/groq.md
@@ -1,20 +1,19 @@
# Groq
-OpenHands 使用 LiteLLM 在 Groq 上调用聊天模型。你可以在[这里](https://docs.litellm.ai/docs/providers/groq)找到他们关于使用 Groq 作为提供商的文档。
+OpenHands 使用 LiteLLM 调用 Groq 上的聊天模型。您可以在[这里](https://docs.litellm.ai/docs/providers/groq)找到关于使用 Groq 作为提供商的文档。
## 配置
-在运行 OpenHands 时,你需要在设置中设置以下内容:
-* `LLM Provider` 设置为 `Groq`
-* `LLM Model` 设置为你将使用的模型。[访问此处查看 Groq 托管的模型列表](https://console.groq.com/docs/models)。如果模型不在列表中,切换 `Advanced Options`,并在 `Custom Model` 中输入它(例如 groq/<model-name> 如 `groq/llama3-70b-8192`)。
-* `API key` 设置为你的 Groq API 密钥。要查找或创建你的 Groq API 密钥,[请参见此处](https://console.groq.com/keys)。
-
-
+运行 OpenHands 时,您需要在 OpenHands UI 的设置中设置以下内容:
+- `LLM Provider` 设为 `Groq`
+- `LLM Model` 设为您将使用的模型。[访问此处查看 Groq 托管的模型列表](https://console.groq.com/docs/models)。如果模型不在列表中,切换到`高级`选项,并在`自定义模型`中输入(例如 groq/<model-name> 如 `groq/llama3-70b-8192`)。
+- `API key` 设为您的 Groq API 密钥。要查找或创建您的 Groq API 密钥,[请参见此处](https://console.groq.com/keys)。
## 使用 Groq 作为 OpenAI 兼容端点
-Groq 的聊天完成端点[大部分与 OpenAI 兼容](https://console.groq.com/docs/openai)。因此,你可以像访问任何 OpenAI 兼容端点一样访问 Groq 模型。你可以在设置中设置以下内容:
-* 启用 `Advanced Options`
-* `Custom Model` 设置为前缀 `openai/` + 你将使用的模型(例如 `openai/llama3-70b-8192`)
-* `Base URL` 设置为 `https://api.groq.com/openai/v1`
-* `API Key` 设置为你的 Groq API 密钥
+Groq 的聊天完成端点[大部分与 OpenAI 兼容](https://console.groq.com/docs/openai)。因此,您可以像访问任何 OpenAI 兼容端点一样访问 Groq 模型。在 OpenHands UI 的设置中:
+1. 启用`高级`选项
+2. 设置以下内容:
+ - `自定义模型`设为前缀 `openai/` + 您将使用的模型(例如 `openai/llama3-70b-8192`)
+ - `Base URL` 设为 `https://api.groq.com/openai/v1`
+ - `API Key` 设为您的 Groq API 密钥
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/litellm-proxy.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/litellm-proxy.md
index c2fa57303d41..36953f1d8a1c 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/litellm-proxy.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/litellm-proxy.md
@@ -1,22 +1,20 @@
-以下是翻译后的内容:
-
# LiteLLM 代理
OpenHands 支持使用 [LiteLLM 代理](https://docs.litellm.ai/docs/proxy/quick_start)来访问各种 LLM 提供商。
## 配置
-要在 OpenHands 中使用 LiteLLM 代理,你需要:
+要在 OpenHands 中使用 LiteLLM 代理,您需要:
-1. 设置一个 LiteLLM 代理服务器(参见 [LiteLLM 文档](https://docs.litellm.ai/docs/proxy/quick_start))
-2. 运行 OpenHands 时,你需要在 OpenHands UI 的设置中设置以下内容:
- * 启用`高级选项`
- * 将`自定义模型`设置为前缀 `litellm_proxy/` + 你将使用的模型(例如 `litellm_proxy/anthropic.claude-3-5-sonnet-20241022-v2:0`)
- * 将`Base URL`设置为你的 LiteLLM 代理 URL(例如 `https://your-litellm-proxy.com`)
- * 将`API Key`设置为你的 LiteLLM 代理 API 密钥
+1. 设置 LiteLLM 代理服务器(参见 [LiteLLM 文档](https://docs.litellm.ai/docs/proxy/quick_start))
+2. 运行 OpenHands 时,您需要通过设置在 OpenHands UI 中设置以下内容:
+ * 启用 `高级` 选项
+ * 将 `自定义模型` 设置为前缀 `litellm_proxy/` + 您将使用的模型(例如 `litellm_proxy/anthropic.claude-3-5-sonnet-20241022-v2:0`)
+ * 将 `基础 URL` 设置为您的 LiteLLM 代理 URL(例如 `https://your-litellm-proxy.com`)
+ * 将 `API 密钥` 设置为您的 LiteLLM 代理 API 密钥
## 支持的模型
-支持的模型取决于你的 LiteLLM 代理配置。OpenHands 支持你的 LiteLLM 代理配置的任何模型。
+支持的模型取决于您的 LiteLLM 代理配置。OpenHands 支持您的 LiteLLM 代理配置为处理的任何模型。
-有关可用模型及其名称的列表,请参阅你的 LiteLLM 代理配置。
+请参考您的 LiteLLM 代理配置以获取可用模型及其名称的列表。
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/llms.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/llms.md
index c5c0106d5a3c..b109094a58ee 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/llms.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/llms.md
@@ -1,48 +1,47 @@
# 🤖 LLM 后端
-OpenHands 可以连接到 LiteLLM 支持的任何 LLM。但是,它需要一个强大的模型才能工作。
-
-## 模型推荐
-
-根据我们对编码任务语言模型的评估(使用 SWE-bench 数据集),我们可以为模型选择提供一些建议。一些分析可以在[这篇比较 LLM 的博客文章](https://www.all-hands.dev/blog/evaluation-of-llms-as-coding-agents-on-swe-bench-at-30x-speed)和[这篇包含一些最新结果的博客文章](https://www.all-hands.dev/blog/openhands-codeact-21-an-open-state-of-the-art-software-development-agent)中找到。
+:::note
+本节适用于希望将 OpenHands 连接到不同 LLM 的用户。
+:::
-在选择模型时,要同时考虑输出质量和相关成本。以下是调查结果的总结:
+OpenHands 可以连接到任何 LiteLLM 支持的 LLM。但是,它需要一个强大的模型才能正常工作。
-- Claude 3.5 Sonnet 是目前最好的,在 SWE-Bench Verified 上使用 OpenHands 中的默认代理可以达到 53% 的解决率。
-- GPT-4o 落后于 Claude,而 o1-mini 的表现甚至比 GPT-4o 还要差一些。我们进行了一些分析,简单来说,o1 有时会"想得太多",在可以直接完成任务的情况下执行额外的环境配置任务。
-- 最后,最强大的开放模型是 Llama 3.1 405 B 和 deepseek-v2.5,它们表现得相当不错,甚至超过了一些封闭模型。
+## 模型推荐
-请参阅[完整文章](https://www.all-hands.dev/blog/evaluation-of-llms-as-coding-agents-on-swe-bench-at-30x-speed)了解更多详情。
+根据我们对编程任务语言模型的评估(使用 SWE-bench 数据集),我们可以提供一些模型选择建议。我们最新的基准测试结果可以在[这个电子表格](https://docs.google.com/spreadsheets/d/1wOUdFCMyY6Nt0AIqF705KN4JKOWgeI4wUGUP60krXXs/edit?gid=0)中找到。
-根据这些发现和社区反馈,以下模型已经验证可以与 OpenHands 很好地配合使用:
+基于这些发现和社区反馈,以下模型已被验证可以与 OpenHands 合理地配合使用:
-- claude-3-5-sonnet(推荐)
-- gpt-4 / gpt-4o
-- llama-3.1-405b
-- deepseek-v2.5
+- [anthropic/claude-3-7-sonnet-20250219](https://www.anthropic.com/api)(推荐)
+- [gemini/gemini-2.5-pro](https://blog.google/technology/google-deepmind/gemini-model-thinking-updates-march-2025/)
+- [deepseek/deepseek-chat](https://api-docs.deepseek.com/)
+- [openai/o3-mini](https://openai.com/index/openai-o3-mini/)
+- [openai/o3](https://openai.com/index/introducing-o3-and-o4-mini/)
+- [openai/o4-mini](https://openai.com/index/introducing-o3-and-o4-mini/)
+- [all-hands/openhands-lm-32b-v0.1](https://www.all-hands.dev/blog/introducing-openhands-lm-32b----a-strong-open-coding-agent-model) -- 通过 [OpenRouter](https://openrouter.ai/all-hands/openhands-lm-32b-v0.1) 提供
:::warning
-OpenHands 将向您配置的 LLM 发出许多提示。这些 LLM 中的大多数都需要付费,因此请务必设置支出限制并监控使用情况。
+OpenHands 将向您配置的 LLM 发送许多提示。大多数这些 LLM 都需要付费,因此请确保设置支出限制并监控使用情况。
:::
-如果您已经成功地使用特定的未列出的 LLM 运行 OpenHands,请将它们添加到已验证列表中。我们也鼓励您提交 PR 分享您的设置过程,以帮助其他使用相同提供商和 LLM 的人!
+如果您已成功使用列表中未包含的特定 LLM 运行 OpenHands,请将它们添加到已验证列表中。我们还鼓励您提交 PR 分享您的设置过程,以帮助使用相同提供商和 LLM 的其他人!
-有关可用提供商和模型的完整列表,请查阅 [litellm 文档](https://docs.litellm.ai/docs/providers)。
+有关可用提供商和模型的完整列表,请参阅 [litellm 文档](https://docs.litellm.ai/docs/providers)。
:::note
-目前大多数本地和开源模型都没有那么强大。使用这些模型时,您可能会看到消息之间的长时间等待、响应不佳或有关 JSON 格式错误的错误。OpenHands 只能和驱动它的模型一样强大。但是,如果您确实找到了可以使用的模型,请将它们添加到上面的已验证列表中。
+大多数当前的本地和开源模型并不那么强大。使用此类模型时,您可能会看到消息之间的长时间等待、较差的响应或有关格式错误 JSON 的错误。OpenHands 的能力取决于驱动它的模型。但是,如果您确实找到了可行的模型,请将它们添加到上面的已验证列表中。
:::
## LLM 配置
-以下内容可以通过设置在 OpenHands UI 中设置:
+以下内容可以通过 OpenHands UI 的设置进行设置:
- `LLM Provider`
- `LLM Model`
- `API Key`
-- `Base URL`(通过`Advanced Settings`)
+- `Base URL`(通过`高级`设置)
-有些设置可能对某些 LLM/提供商是必需的,但无法通过 UI 设置。相反,可以通过传递给 [docker run 命令](/modules/usage/installation#start-the-app)的环境变量使用 `-e` 来设置这些变量:
+有些设置对某些 LLM/提供商可能是必需的,但无法通过 UI 设置。相反,这些可以通过使用 `-e` 传递给 docker run 命令的环境变量来设置:
- `LLM_API_VERSION`
- `LLM_EMBEDDING_MODEL`
@@ -56,27 +55,28 @@ OpenHands 将向您配置的 LLM 发出许多提示。这些 LLM 中的大多数
- [Azure](llms/azure-llms)
- [Google](llms/google-llms)
- [Groq](llms/groq)
+- [使用 SGLang 或 vLLM 的本地 LLM](llms/../local-llms.md)
- [LiteLLM Proxy](llms/litellm-proxy)
- [OpenAI](llms/openai-llms)
- [OpenRouter](llms/openrouter)
### API 重试和速率限制
-LLM 提供商通常有速率限制,有时非常低,可能需要重试。如果 OpenHands 收到速率限制错误(429 错误代码)、API 连接错误或其他瞬时错误,它将自动重试请求。
+LLM 提供商通常有速率限制,有时非常低,可能需要重试。如果 OpenHands 收到速率限制错误(429 错误代码),它将自动重试请求。
-您可以根据使用的提供商的需要自定义这些选项。查看他们的文档,并设置以下环境变量来控制重试次数和重试之间的时间:
+您可以根据所使用提供商的需要自定义这些选项。查看他们的文档,并设置以下环境变量来控制重试次数和重试之间的时间:
-- `LLM_NUM_RETRIES`(默认为 8)
-- `LLM_RETRY_MIN_WAIT`(默认为 15 秒)
-- `LLM_RETRY_MAX_WAIT`(默认为 120 秒)
+- `LLM_NUM_RETRIES`(默认为 4 次)
+- `LLM_RETRY_MIN_WAIT`(默认为 5 秒)
+- `LLM_RETRY_MAX_WAIT`(默认为 30 秒)
- `LLM_RETRY_MULTIPLIER`(默认为 2)
-如果您在开发模式下运行 OpenHands,也可以在 `config.toml` 文件中设置这些选项:
+如果您在开发模式下运行 OpenHands,您也可以在 `config.toml` 文件中设置这些选项:
```toml
[llm]
-num_retries = 8
-retry_min_wait = 15
-retry_max_wait = 120
+num_retries = 4
+retry_min_wait = 5
+retry_max_wait = 30
retry_multiplier = 2
-```
+```
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/local-llms.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/local-llms.md
index f022465de2d2..840e49cc4566 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/local-llms.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/local-llms.md
@@ -1,192 +1,83 @@
-# 使用 Ollama 的本地 LLM
+# 使用SGLang或vLLM的本地LLM
:::warning
-使用本地 LLM 时,OpenHands 可能会有功能限制。
+使用本地LLM时,OpenHands可能功能有限。
+强烈建议您使用GPU来提供本地模型服务,以获得最佳体验。
:::
-确保你已经启动并运行了 Ollama 服务器。
-有关详细的启动说明,请参考[此处](https://github.com/ollama/ollama)。
+## 新闻
-本指南假设你已经使用 `ollama serve` 启动了 ollama。如果你以不同的方式运行 ollama(例如在 docker 内),则可能需要修改说明。请注意,如果你正在运行 WSL,默认的 ollama 配置会阻止来自 docker 容器的请求。请参阅[此处](#configuring-ollama-service-wsl-zh)。
+- 2025/03/31:我们发布了开源模型OpenHands LM v0.1 32B,在SWE-Bench Verified上达到37.1%的成绩
+([博客](https://www.all-hands.dev/blog/introducing-openhands-lm-32b----a-strong-open-coding-agent-model),[模型](https://huggingface.co/all-hands/openhands-lm-32b-v0.1))。
-## 拉取模型
+## 从Huggingface下载模型
-Ollama 模型名称可以在[此处](https://ollama.com/library)找到。对于一个小示例,你可以使用
-`codellama:7b` 模型。更大的模型通常会有更好的表现。
+例如,要下载[OpenHands LM 32B v0.1](https://huggingface.co/all-hands/openhands-lm-32b-v0.1):
```bash
-ollama pull codellama:7b
+huggingface-cli download all-hands/openhands-lm-32b-v0.1 --local-dir all-hands/openhands-lm-32b-v0.1
```
-你可以像这样检查已下载的模型:
+## 使用模型服务框架创建兼容OpenAI的端点
-```bash
-~$ ollama list
-NAME ID SIZE MODIFIED
-codellama:7b 8fdf8f752f6e 3.8 GB 6 weeks ago
-mistral:7b-instruct-v0.2-q4_K_M eb14864c7427 4.4 GB 2 weeks ago
-starcoder2:latest f67ae0f64584 1.7 GB 19 hours ago
-```
+### 使用SGLang提供服务
-## 使用 Docker 运行 OpenHands
-
-### 启动 OpenHands
-使用[此处](../getting-started)的说明使用 Docker 启动 OpenHands。
-但在运行 `docker run` 时,你需要添加一些额外的参数:
+- 按照[官方文档](https://docs.sglang.ai/start/install.html)安装SGLang。
+- OpenHands LM 32B的示例启动命令(至少需要2个GPU):
```bash
-docker run # ...
- --add-host host.docker.internal:host-gateway \
- -e LLM_OLLAMA_BASE_URL="http://host.docker.internal:11434" \
- # ...
-```
-
-LLM_OLLAMA_BASE_URL 是可选的。如果设置了它,它将用于在 UI 中显示
-可用的已安装模型。
-
-
-### 配置 Web 应用程序
-
-在运行 `openhands` 时,你需要在 OpenHands UI 的设置中设置以下内容:
-- 模型设置为 "ollama/<model-name>"
-- 基础 URL 设置为 `http://host.docker.internal:11434`
-- API 密钥是可选的,你可以使用任何字符串,例如 `ollama`。
-
-
-## 在开发模式下运行 OpenHands
-
-### 从源代码构建
-
-使用 [Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md) 中的说明构建 OpenHands。
-通过运行 `make setup-config` 确保 `config.toml` 存在,它将为你创建一个。在 `config.toml` 中,输入以下内容:
-
-```
-[core]
-workspace_base="./workspace"
-
-[llm]
-embedding_model="local"
-ollama_base_url="http://localhost:11434"
-
+SGLANG_ALLOW_OVERWRITE_LONGER_CONTEXT_LEN=1 python3 -m sglang.launch_server \
+ --model all-hands/openhands-lm-32b-v0.1 \
+ --served-model-name openhands-lm-32b-v0.1 \
+ --port 8000 \
+ --tp 2 --dp 1 \
+ --host 0.0.0.0 \
+ --api-key mykey --context-length 131072
```
-完成!现在你可以通过 `make run` 启动 OpenHands。你现在应该能够连接到 `http://localhost:3000/`
-
-### 配置 Web 应用程序
-
-在 OpenHands UI 中,点击左下角的设置齿轮。
-然后在 `Model` 输入框中,输入 `ollama/codellama:7b`,或者你之前拉取的模型名称。
-如果它没有出现在下拉列表中,启用 `Advanced Settings` 并输入它。请注意:你需要 `ollama list` 列出的模型名称,带有 `ollama/` 前缀。
-
-在 API Key 字段中,输入 `ollama` 或任何值,因为你不需要特定的密钥。
-
-在 Base URL 字段中,输入 `http://localhost:11434`。
-
-现在你已经准备好了!
+### 使用vLLM提供服务
-## 配置 ollama 服务(WSL) {#configuring-ollama-service-wsl-zh}
-
-WSL 中 ollama 的默认配置只服务于 localhost。这意味着你无法从 docker 容器中访问它。例如,它不能与 OpenHands 一起工作。首先让我们测试 ollama 是否正确运行。
+- 按照[官方文档](https://docs.vllm.ai/en/latest/getting_started/installation.html)安装vLLM。
+- OpenHands LM 32B的示例启动命令(至少需要2个GPU):
```bash
-ollama list # 获取已安装模型的列表
-curl http://localhost:11434/api/generate -d '{"model":"[NAME]","prompt":"hi"}'
-#例如 curl http://localhost:11434/api/generate -d '{"model":"codellama:7b","prompt":"hi"}'
-#例如 curl http://localhost:11434/api/generate -d '{"model":"codellama","prompt":"hi"}' #如果只有一个,标签是可选的
+vllm serve all-hands/openhands-lm-32b-v0.1 \
+ --host 0.0.0.0 --port 8000 \
+ --api-key mykey \
+ --tensor-parallel-size 2 \
+ --served-model-name openhands-lm-32b-v0.1
+ --enable-prefix-caching
```
-完成后,测试它是否允许"外部"请求,例如来自 docker 容器内部的请求。
+## 运行和配置OpenHands
-```bash
-docker ps # 获取正在运行的 docker 容器列表,为了最准确的测试,选择 OpenHands 沙盒容器。
-docker exec [CONTAINER ID] curl http://host.docker.internal:11434/api/generate -d '{"model":"[NAME]","prompt":"hi"}'
-#例如 docker exec cd9cc82f7a11 curl http://host.docker.internal:11434/api/generate -d '{"model":"codellama","prompt":"hi"}'
-```
+### 运行OpenHands
-## 修复它
+#### 使用Docker
-现在让我们让它工作。使用 sudo 权限编辑 /etc/systemd/system/ollama.service。(路径可能因 Linux 发行版而异)
+使用[官方docker运行命令](../installation#start-the-app)运行OpenHands。
-```bash
-sudo vi /etc/systemd/system/ollama.service
-```
+#### 使用开发模式
-或
-
-```bash
-sudo nano /etc/systemd/system/ollama.service
-```
-
-在 [Service] 括号中添加这些行
-
-```
-Environment="OLLAMA_HOST=0.0.0.0:11434"
-Environment="OLLAMA_ORIGINS=*"
-```
-
-然后保存,重新加载配置并重启服务。
-
-```bash
-sudo systemctl daemon-reload
-sudo systemctl restart ollama
-```
-
-最后测试 ollama 是否可以从容器内访问
-
-```bash
-ollama list # 获取已安装模型的列表
-docker ps # 获取正在运行的 docker 容器列表,为了最准确的测试,选择 OpenHands 沙盒容器。
-docker exec [CONTAINER ID] curl http://host.docker.internal:11434/api/generate -d '{"model":"[NAME]","prompt":"hi"}'
-```
-
-
-# 使用 LM Studio 的本地 LLM
-
-设置 LM Studio 的步骤:
-1. 打开 LM Studio
-2. 转到 Local Server 选项卡。
-3. 点击 "Start Server" 按钮。
-4. 从下拉列表中选择要使用的模型。
-
-
-设置以下配置:
-```bash
-LLM_MODEL="openai/lmstudio"
-LLM_BASE_URL="http://localhost:1234/v1"
-CUSTOM_LLM_PROVIDER="openai"
-```
-
-### Docker
-
-```bash
-docker run # ...
- -e LLM_MODEL="openai/lmstudio" \
- -e LLM_BASE_URL="http://host.docker.internal:1234/v1" \
- -e CUSTOM_LLM_PROVIDER="openai" \
- # ...
-```
-
-你现在应该能够连接到 `http://localhost:3000/`
-
-在开发环境中,你可以在 `config.toml` 文件中设置以下配置:
+使用[Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)中的说明构建OpenHands。
+通过运行`make setup-config`确保`config.toml`存在,它会为您创建一个。在`config.toml`中,输入以下内容:
```
[core]
-workspace_base="./workspace"
+workspace_base="/path/to/your/workspace"
[llm]
-model="openai/lmstudio"
-base_url="http://localhost:1234/v1"
-custom_llm_provider="openai"
+model="openhands-lm-32b-v0.1"
+ollama_base_url="http://localhost:8000"
```
-完成!现在你可以通过 `make run` 启动 OpenHands,无需 Docker。你现在应该能够连接到 `http://localhost:3000/`
+使用`make run`启动OpenHands。
-# 注意
+### 配置OpenHands
-对于 WSL,在 cmd 中运行以下命令以将网络模式设置为镜像:
-
-```
-python -c "print('[wsl2]\nnetworkingMode=mirrored',file=open(r'%UserProfile%\.wslconfig','w'))"
-wsl --shutdown
-```
+一旦OpenHands运行起来,您需要通过设置在OpenHands UI中设置以下内容:
+1. 启用`高级`选项。
+2. 设置以下内容:
+- `自定义模型`为`openai/`(例如`openai/openhands-lm-32b-v0.1`)
+- `基础URL`为`http://host.docker.internal:8000`
+- `API密钥`为您在提供模型服务时设置的相同字符串(例如`mykey`)
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/openai-llms.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/openai-llms.md
index eef4017ec834..6695ede39c53 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/openai-llms.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/openai-llms.md
@@ -1,24 +1,25 @@
# OpenAI
-OpenHands 使用 LiteLLM 调用 OpenAI 的聊天模型。你可以在[这里](https://docs.litellm.ai/docs/providers/openai)找到他们关于使用 OpenAI 作为提供商的文档。
+OpenHands 使用 LiteLLM 调用 OpenAI 的聊天模型。您可以在[这里](https://docs.litellm.ai/docs/providers/openai)找到关于使用 OpenAI 作为提供商的文档。
## 配置
-运行 OpenHands 时,你需要在设置中设置以下内容:
-* `LLM Provider` 设置为 `OpenAI`
-* `LLM Model` 设置为你将使用的模型。
-[访问此处查看 LiteLLM 支持的 OpenAI 模型的完整列表。](https://docs.litellm.ai/docs/providers/openai#openai-chat-completion-models)
-如果模型不在列表中,请切换 `Advanced Options`,并在 `Custom Model` 中输入它(例如 openai/<model-name> 如 `openai/gpt-4o`)。
-* `API Key` 设置为你的 OpenAI API 密钥。要查找或创建你的 OpenAI 项目 API 密钥,[请参阅此处](https://platform.openai.com/api-keys)。
+运行 OpenHands 时,您需要在 OpenHands UI 的设置中设置以下内容:
+* `LLM Provider` 设为 `OpenAI`
+* `LLM Model` 设为您将使用的模型。
+[点击这里查看 LiteLLM 支持的 OpenAI 模型完整列表。](https://docs.litellm.ai/docs/providers/openai#openai-chat-completion-models)
+如果模型不在列表中,切换到`高级`选项,并在`自定义模型`中输入(例如 openai/<model-name> 如 `openai/gpt-4o`)。
+* `API Key` 设为您的 OpenAI API 密钥。要查找或创建您的 OpenAI 项目 API 密钥,[请参见此处](https://platform.openai.com/api-keys)。
## 使用 OpenAI 兼容端点
-就像 OpenAI 聊天补全一样,我们使用 LiteLLM 进行 OpenAI 兼容端点。你可以在[这里](https://docs.litellm.ai/docs/providers/openai_compatible)找到他们关于此主题的完整文档。
+与 OpenAI 聊天补全一样,我们使用 LiteLLM 处理 OpenAI 兼容端点。您可以在[这里](https://docs.litellm.ai/docs/providers/openai_compatible)找到他们关于此主题的完整文档。
## 使用 OpenAI 代理
-如果你使用 OpenAI 代理,你需要在设置中设置以下内容:
-* 启用 `Advanced Options`
-* `Custom Model` 设置为 openai/<model-name>(例如 `openai/gpt-4o` 或 openai/<proxy-prefix>/<model-name>)
-* `Base URL` 设置为你的 OpenAI 代理的 URL
-* `API Key` 设置为你的 OpenAI API 密钥
+如果您使用的是 OpenAI 代理,在 OpenHands UI 的设置中:
+1. 启用`高级`选项
+2. 设置以下内容:
+ - `自定义模型`为 openai/<model-name>(例如 `openai/gpt-4o` 或 openai/<proxy-prefix>/<model-name>)
+ - `Base URL` 设为您的 OpenAI 代理的 URL
+ - `API Key` 设为您的 OpenAI API 密钥
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/openrouter.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/openrouter.md
index 7a423f8ece64..60f1d4a530c1 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/openrouter.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/llms/openrouter.md
@@ -1,14 +1,12 @@
-以下是翻译后的内容:
-
# OpenRouter
-OpenHands 使用 LiteLLM 调用 OpenRouter 上的聊天模型。你可以在[这里](https://docs.litellm.ai/docs/providers/openrouter)找到他们关于使用 OpenRouter 作为提供者的文档。
+OpenHands 使用 LiteLLM 来调用 OpenRouter 上的聊天模型。您可以在[这里](https://docs.litellm.ai/docs/providers/openrouter)找到关于使用 OpenRouter 作为提供商的文档。
## 配置
-运行 OpenHands 时,你需要在设置中设置以下内容:
-* `LLM Provider` 设置为 `OpenRouter`
-* `LLM Model` 设置为你将使用的模型。
+运行 OpenHands 时,您需要在 OpenHands UI 的设置中设置以下内容:
+* 将 `LLM Provider` 设置为 `OpenRouter`
+* 将 `LLM Model` 设置为您将使用的模型。
[访问此处查看 OpenRouter 模型的完整列表](https://openrouter.ai/models)。
-如果模型不在列表中,请切换 `Advanced Options`,并在 `Custom Model` 中输入(例如 openrouter/<model-name> 如 `openrouter/anthropic/claude-3.5-sonnet`)。
-* `API Key` 设置为你的 OpenRouter API 密钥。
+如果模型不在列表中,切换到 `Advanced` 选项,并在 `Custom Model` 中输入(例如 openrouter/<model-name> 如 `openrouter/anthropic/claude-3.5-sonnet`)。
+* 将 `API Key` 设置为您的 OpenRouter API 密钥。
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/mcp.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/mcp.md
new file mode 100644
index 000000000000..a359434ebaf4
--- /dev/null
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/mcp.md
@@ -0,0 +1,96 @@
+# 模型上下文协议 (MCP)
+
+:::note
+本页概述了如何在OpenHands中配置和使用模型上下文协议(MCP),使您能够通过自定义工具扩展代理的功能。
+:::
+
+## 概述
+
+模型上下文协议(MCP)是一种允许OpenHands与外部工具服务器通信的机制。这些服务器可以为代理提供额外的功能,如专业数据处理、外部API访问或自定义工具。MCP基于[modelcontextprotocol.io](https://modelcontextprotocol.io)定义的开放标准。
+
+## 配置
+
+MCP配置在`config.toml`文件的`[mcp]`部分中定义。
+
+### 配置示例
+
+```toml
+[mcp]
+# SSE服务器 - 通过服务器发送事件通信的外部服务器
+sse_servers = [
+ # 仅有URL的基本SSE服务器
+ "http://example.com:8080/mcp",
+
+ # 带API密钥认证的SSE服务器
+ {url="https://secure-example.com/mcp", api_key="your-api-key"}
+]
+
+# Stdio服务器 - 通过标准输入/输出通信的本地进程
+stdio_servers = [
+ # 基本stdio服务器
+ {name="fetch", command="uvx", args=["mcp-server-fetch"]},
+
+ # 带环境变量的stdio服务器
+ {
+ name="data-processor",
+ command="python",
+ args=["-m", "my_mcp_server"],
+ env={
+ "DEBUG": "true",
+ "PORT": "8080"
+ }
+ }
+]
+```
+
+## 配置选项
+
+### SSE服务器
+
+SSE服务器可以使用字符串URL或具有以下属性的对象进行配置:
+
+- `url` (必需)
+ - 类型: `str`
+ - 描述: SSE服务器的URL
+
+- `api_key` (可选)
+ - 类型: `str`
+ - 默认值: `None`
+ - 描述: 用于SSE服务器认证的API密钥
+
+### Stdio服务器
+
+Stdio服务器使用具有以下属性的对象进行配置:
+
+- `name` (必需)
+ - 类型: `str`
+ - 描述: 服务器的唯一名称
+
+- `command` (必需)
+ - 类型: `str`
+ - 描述: 运行服务器的命令
+
+- `args` (可选)
+ - 类型: `list of str`
+ - 默认值: `[]`
+ - 描述: 传递给服务器的命令行参数
+
+- `env` (可选)
+ - 类型: `dict of str to str`
+ - 默认值: `{}`
+ - 描述: 为服务器进程设置的环境变量
+
+## MCP工作原理
+
+当OpenHands启动时,它会:
+
+1. 从`config.toml`读取MCP配置
+2. 连接到任何已配置的SSE服务器
+3. 启动任何已配置的stdio服务器
+4. 向代理注册这些服务器提供的工具
+
+然后代理可以像使用任何内置工具一样使用这些工具。当代理调用MCP工具时:
+
+1. OpenHands将调用路由到适当的MCP服务器
+2. 服务器处理请求并返回响应
+3. OpenHands将响应转换为观察结果并呈现给代理
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/prompting/microagents-keyword.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/prompting/microagents-keyword.md
new file mode 100644
index 000000000000..c6a1e6fe39d6
--- /dev/null
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/prompting/microagents-keyword.md
@@ -0,0 +1,36 @@
+# 关键词触发的微代理
+
+## 目的
+
+关键词触发的微代理为OpenHands提供了特定指令,这些指令在提示中出现某些关键词时被激活。这对于根据特定工具、语言或框架定制行为非常有用。
+
+## 使用方法
+
+这些微代理仅在提示包含触发词之一时才会被加载。
+
+## 前置元数据语法
+
+关键词触发的微代理需要前置元数据。它必须放在文件顶部,指南内容之上。
+
+将前置元数据包含在三个破折号(---)之间,并包括以下字段:
+
+| 字段 | 描述 | 必需 | 默认值 |
+|------------|--------------------------------|-------|------------------|
+| `triggers` | 激活微代理的关键词列表。 | 是 | 无 |
+| `agent` | 此微代理适用的代理。 | 否 | 'CodeActAgent' |
+
+
+## 示例
+
+位于`.openhands/microagents/yummy.md`的关键词触发微代理文件示例:
+```
+---
+triggers:
+- yummyhappy
+- happyyummy
+---
+
+用户说了魔法词。回复"那真美味!"
+```
+
+[在官方OpenHands仓库中查看由关键词触发的微代理示例](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents)
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/prompting/microagents-overview.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/prompting/microagents-overview.md
new file mode 100644
index 000000000000..806bdedc11c8
--- /dev/null
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/prompting/microagents-overview.md
@@ -0,0 +1,38 @@
+# 微代理概述
+
+微代理是专门的提示,通过领域特定知识增强OpenHands的能力。
+它们提供专家指导,自动化常见任务,并确保项目间的实践一致性。
+
+## 微代理类型
+
+目前OpenHands支持以下类型的微代理:
+
+- [通用仓库微代理](./microagents-repo):关于仓库的OpenHands通用指南。
+- [关键词触发微代理](./microagents-keyword):通过提示中的特定关键词激活的指南。
+
+要自定义OpenHands的行为,请在仓库根目录创建.openhands/microagents/目录,并在其中添加`.md`文件。
+
+:::note
+加载的微代理会占用上下文窗口的空间。
+这些微代理与用户消息一起,为OpenHands提供有关任务和环境的信息。
+:::
+
+仓库结构示例:
+
+```
+some-repository/
+└── .openhands/
+ └── microagents/
+ └── repo.md # 通用仓库指南
+ └── trigger_this.md # 由特定关键词触发的微代理
+ └── trigger_that.md # 由特定关键词触发的微代理
+```
+
+## 微代理前置元数据要求
+
+每个微代理文件可能包含提供额外信息的前置元数据。在某些情况下,这些前置元数据是必需的:
+
+| 微代理类型 | 是否必需 |
+|------------|----------|
+| `通用仓库微代理` | 否 |
+| `关键词触发微代理` | 是 |
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/prompting/microagents-public.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/prompting/microagents-public.md
new file mode 100644
index 000000000000..adad0bb68626
--- /dev/null
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/prompting/microagents-public.md
@@ -0,0 +1,50 @@
+# 全局微代理
+
+## 概述
+
+全局微代理是适用于所有OpenHands用户的[关键词触发微代理](./microagents-keyword)。当前全局微代理的列表可以在[OpenHands仓库](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents)中找到。
+
+## 贡献全局微代理
+
+您可以创建全局微代理并通过向官方仓库提交拉取请求与社区分享。
+
+有关如何为OpenHands做出贡献的具体说明,请参阅[CONTRIBUTING.md](https://github.com/All-Hands-AI/OpenHands/blob/main/CONTRIBUTING.md)。
+
+### 全局微代理最佳实践
+
+- **明确范围**:保持微代理专注于特定领域或任务。
+- **明确指令**:提供清晰、明确的指导方针。
+- **有用的示例**:包含常见用例的实用示例。
+- **安全第一**:包含必要的警告和约束。
+- **集成意识**:考虑微代理如何与其他组件交互。
+
+### 贡献全局微代理的步骤
+
+#### 1. 规划全局微代理
+
+在创建全局微代理之前,请考虑:
+
+- 它将解决什么特定问题或用例?
+- 它应该具有哪些独特的能力或知识?
+- 哪些触发词适合激活它?
+- 它应该遵循哪些约束或指导方针?
+
+#### 2. 创建文件
+
+在适当的目录中创建一个具有描述性名称的新Markdown文件:
+[`microagents/`](https://github.com/All-Hands-AI/OpenHands/tree/main/microagents)
+
+#### 3. 测试全局微代理
+
+- 使用各种提示测试代理。
+- 验证触发词是否正确激活代理。
+- 确保指令清晰全面。
+- 检查与现有代理的潜在冲突和重叠。
+
+#### 4. 提交流程
+
+提交拉取请求,包括:
+
+- 新的微代理文件。
+- 如有需要,更新文档。
+- 描述代理的目的和功能。
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/prompting/microagents-repo.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/prompting/microagents-repo.md
new file mode 100644
index 000000000000..0be7174e2d83
--- /dev/null
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/prompting/microagents-repo.md
@@ -0,0 +1,31 @@
+# 通用仓库微代理
+
+## 目的
+
+为OpenHands提供更有效地与仓库协作的一般性指南。
+
+## 用法
+
+这些微代理始终作为上下文的一部分被加载。
+
+## 前置元数据语法
+
+这类微代理的前置元数据是可选的。
+
+前置元数据应该被三个短横线(---)包围,可能包含以下字段:
+
+| 字段 | 描述 | 必需 | 默认值 |
+|-----------|--------------------------------|------|----------------|
+| `agent` | 此微代理适用的代理 | 否 | 'CodeActAgent' |
+
+## 示例
+
+位于`.openhands/microagents/repo.md`的通用仓库微代理文件示例:
+```
+这个项目是一个TODO应用程序,允许用户跟踪TODO项目。
+
+要设置它,你可以运行`npm run build`。
+在提交更改之前,始终确保测试通过。你可以通过运行`npm run test`来执行测试。
+```
+
+[在这里查看更多通用仓库微代理的示例。](https://github.com/All-Hands-AI/OpenHands/tree/main/.openhands/microagents)
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/prompting/prompting-best-practices.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/prompting/prompting-best-practices.md
index 06c513501f0e..ff0ad0802b88 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/prompting/prompting-best-practices.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/prompting/prompting-best-practices.md
@@ -1,43 +1,37 @@
-以下是翻译后的内容:
-
# 提示最佳实践
-在使用 OpenHands AI 软件开发者时,提供清晰有效的提示至关重要。本指南概述了创建提示的最佳实践,以产生最准确和最有用的响应。
+在使用OpenHands AI软件开发者时,提供清晰有效的提示是获得准确且有用回应的关键。本指南概述了制定有效提示的最佳实践。
-## 好的提示的特点
+## 良好提示的特征
-好的提示应该:
+好的提示是:
-1. **具体**: 它们准确解释应该添加什么功能或需要修复什么错误。
-2. **位置特定**: 如果已知,它们解释了应该修改代码库中的哪些位置。
-3. **适当范围**: 它们应该是单个功能的大小,通常不超过100行代码。
+- **具体的**:清楚描述应该添加什么功能或需要修复什么错误。
+- **位置明确的**:如果已知,指明代码库中应该修改的位置。
+- **范围适当的**:专注于单一功能,通常不超过100行代码。
## 示例
### 好的提示示例
-1. "在 `utils/math_operations.py` 中添加一个函数 `calculate_average`,它接受一个数字列表作为输入并返回它们的平均值。"
-
-2. "修复 `frontend/src/components/UserProfile.tsx` 第42行发生的 TypeError。错误表明我们试图访问 undefined 的属性。"
-
-3. "为注册表单中的电子邮件字段实现输入验证。更新 `frontend/src/components/RegistrationForm.tsx` 以在提交之前检查电子邮件是否为有效格式。"
+- 在`utils/math_operations.py`中添加一个函数`calculate_average`,该函数接受一个数字列表作为输入并返回它们的平均值。
+- 修复`frontend/src/components/UserProfile.tsx`第42行出现的TypeError。错误表明我们试图访问undefined的属性。
+- 为注册表单中的电子邮件字段实现输入验证。更新`frontend/src/components/RegistrationForm.tsx`,在提交前检查电子邮件是否为有效格式。
### 不好的提示示例
-1. "让代码变得更好。"(太模糊,不具体)
-
-2. "用不同的框架重写整个后端。"(范围不合适)
-
-3. "用户身份验证中有一个错误。你能找到并修复它吗?"(缺乏具体性和位置信息)
+- 让代码更好。(太模糊,不具体)
+- 重写整个后端以使用不同的框架。(范围不适当)
+- 用户认证中某处有一个错误。你能找到并修复它吗?(缺乏特异性和位置信息)
## 有效提示的技巧
-1. 尽可能具体地说明所需的结果或要解决的问题。
-2. 提供上下文,包括相关的文件路径和行号(如果可用)。
-3. 将大型任务分解为更小、更易管理的提示。
-4. 包括任何相关的错误消息或日志。
-5. 如果从上下文中不明显,请指定编程语言或框架。
+- 尽可能具体地描述期望的结果或要解决的问题。
+- 提供上下文,包括相关文件路径和行号(如果可用)。
+- 将大任务分解为更小、更易管理的提示。
+- 包含相关的错误消息或日志。
+- 如果不明显,指定编程语言或框架。
-请记住,您的提示越精确和信息量大,AI 就越能帮助您开发或修改 OpenHands 软件。
+您的提示越精确和信息丰富,OpenHands就能提供越好的帮助。
-有关更多有用提示的示例,请参阅[OpenHands 入门](../getting-started)。
+查看[OpenHands入门](../getting-started)获取更多有用提示的示例。
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes-index.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes-index.md
new file mode 100644
index 000000000000..3a3e81370ca0
--- /dev/null
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes-index.md
@@ -0,0 +1,25 @@
+# 运行时配置
+
+:::note
+本节适用于希望使用Docker以外的运行时环境来运行OpenHands的用户。
+:::
+
+运行时是OpenHands代理可以编辑文件和运行命令的环境。
+
+默认情况下,OpenHands使用[基于Docker的运行时](./runtimes/docker),在您的本地计算机上运行。
+这意味着您只需要为所使用的LLM付费,而且您的代码只会发送给LLM。
+
+我们还支持其他运行时,这些通常由第三方管理。
+
+此外,我们提供了一个[本地运行时](./runtimes/local),可以直接在您的机器上运行而无需Docker,
+这在CI流水线等受控环境中非常有用。
+
+## 可用的运行时
+
+OpenHands支持几种不同的运行时环境:
+
+- [Docker运行时](./runtimes/docker.md) - 默认运行时,使用Docker容器进行隔离(推荐大多数用户使用)。
+- [OpenHands远程运行时](./runtimes/remote.md) - 用于并行执行的云端运行时(测试版)。
+- [Modal运行时](./runtimes/modal.md) - 由我们的合作伙伴Modal提供的运行时。
+- [Daytona运行时](./runtimes/daytona.md) - 由Daytona提供的运行时。
+- [本地运行时](./runtimes/local.md) - 无需Docker直接在本地机器上执行。
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes.md
index 52c08a8be9ec..13d5ba09abb5 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes.md
@@ -1,76 +1,8 @@
-# 运行时配置
+---
+slug: /usage/runtimes
+title: Runtime Configuration
+---
-运行时是 OpenHands 代理可以编辑文件和运行命令的环境。
+import { Redirect } from '@docusaurus/router';
-默认情况下,OpenHands 使用基于 Docker 的运行时,在您的本地计算机上运行。这意味着您只需要为使用的 LLM 付费,并且您的代码只会发送到 LLM。
-
-我们还支持"远程"运行时,通常由第三方管理。它们可以使设置更简单、更具可扩展性,特别是当您并行运行多个 OpenHands 对话时(例如进行评估)。
-
-## Docker 运行时
-这是启动 OpenHands 时使用的默认运行时。您可能会注意到传递给 `docker run` 的一些标志使这成为可能:
-
-```
-docker run # ...
- -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.36-nikolaik \
- -v /var/run/docker.sock:/var/run/docker.sock \
- # ...
-```
-
-来自 nikolaik 的 `SANDBOX_RUNTIME_CONTAINER_IMAGE` 是一个预构建的运行时镜像,其中包含我们的运行时服务器,以及一些用于 Python 和 NodeJS 的基本实用程序。您也可以[构建自己的运行时镜像](how-to/custom-sandbox-guide)。
-
-### 连接到您的文件系统
-这里一个有用的功能是能够连接到您的本地文件系统。
-
-要将文件系统挂载到运行时,首先设置 WORKSPACE_BASE:
-```bash
-export WORKSPACE_BASE=/path/to/your/code
-
-# Linux 和 Mac 示例
-# export WORKSPACE_BASE=$HOME/OpenHands
-# 将 $WORKSPACE_BASE 设置为 /home//OpenHands
-#
-# Windows 上的 WSL 示例
-# export WORKSPACE_BASE=/mnt/c/dev/OpenHands
-# 将 $WORKSPACE_BASE 设置为 C:\dev\OpenHands
-```
-
-然后将以下选项添加到 `docker run` 命令中:
-
-```bash
-docker run # ...
- -e SANDBOX_USER_ID=$(id -u) \
- -e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
- -v $WORKSPACE_BASE:/opt/workspace_base \
- # ...
-```
-
-请小心!没有任何措施可以阻止 OpenHands 代理删除或修改挂载到其工作区的任何文件。
-
-此设置可能会导致一些文件权限问题(因此有 `SANDBOX_USER_ID` 变量),但似乎在大多数系统上都能很好地工作。
-
-## All Hands 运行时
-All Hands 运行时目前处于测试阶段。您可以通过加入 Slack 上的 #remote-runtime-limited-beta 频道来请求访问权限([请参阅自述文件](https://github.com/All-Hands-AI/OpenHands?tab=readme-ov-file#-join-our-community)以获取邀请)。
-
-要使用 All Hands 运行时,请在启动 OpenHands 时设置以下环境变量:
-
-```bash
-docker run # ...
- -e RUNTIME=remote \
- -e SANDBOX_REMOTE_RUNTIME_API_URL="https://runtime.app.all-hands.dev" \
- -e SANDBOX_API_KEY="your-all-hands-api-key" \
- -e SANDBOX_KEEP_RUNTIME_ALIVE="true" \
- # ...
-```
-
-## Modal 运行时
-我们在 [Modal](https://modal.com/) 的合作伙伴也为 OpenHands 提供了一个运行时。
-
-要使用 Modal 运行时,请创建一个帐户,然后[创建一个 API 密钥](https://modal.com/settings)。
-
-然后,您需要在启动 OpenHands 时设置以下环境变量:
-```bash
-docker run # ...
- -e RUNTIME=modal \
- -e MODAL_API_TOKEN_ID="your-id" \
- -e MODAL_API_TOKEN_SECRET="your-secret" \
-```
+
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes/daytona.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes/daytona.md
new file mode 100644
index 000000000000..b94e1ac4e476
--- /dev/null
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes/daytona.md
@@ -0,0 +1,32 @@
+# Daytona 运行时
+
+您可以使用 [Daytona](https://www.daytona.io/) 作为运行时提供商:
+
+## 步骤 1:获取您的 Daytona API 密钥
+1. 访问 [Daytona 控制面板](https://app.daytona.io/dashboard/keys)。
+2. 点击 **"Create Key"**。
+3. 输入密钥名称并确认创建。
+4. 密钥生成后,复制它。
+
+## 步骤 2:将您的 API 密钥设置为环境变量
+在终端中运行以下命令,将 `` 替换为您复制的实际密钥:
+```bash
+export DAYTONA_API_KEY=""
+```
+
+此步骤确保 OpenHands 在运行时可以与 Daytona 平台进行身份验证。
+
+## 步骤 3:使用 Docker 在本地运行 OpenHands
+要在您的机器上启动最新版本的 OpenHands,在终端中执行以下命令:
+```bash
+bash -i <(curl -sL https://get.daytona.io/openhands)
+```
+
+### 此命令的作用:
+- 下载最新的 OpenHands 发布脚本。
+- 在交互式 Bash 会话中运行脚本。
+- 自动使用 Docker 拉取并运行 OpenHands 容器。
+
+执行后,OpenHands 应该在本地运行并准备使用。
+
+有关更多详细信息和手动初始化,请查看完整的 [README.md](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/runtime/impl/daytona/README.md)
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes/docker.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes/docker.md
new file mode 100644
index 000000000000..6dfa162c3860
--- /dev/null
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes/docker.md
@@ -0,0 +1,124 @@
+# Docker 运行时
+
+这是启动 OpenHands 时默认使用的运行时。
+
+## 镜像
+来自 nikolaik 的 `SANDBOX_RUNTIME_CONTAINER_IMAGE` 是一个预构建的运行时镜像,
+其中包含我们的运行时服务器,以及一些 Python 和 NodeJS 的基本工具。
+您也可以[构建自己的运行时镜像](../how-to/custom-sandbox-guide)。
+
+## 连接到您的文件系统
+一个有用的功能是能够连接到您的本地文件系统。要将您的文件系统挂载到运行时中:
+
+### 使用 SANDBOX_VOLUMES
+
+挂载本地文件系统最简单的方法是使用 `SANDBOX_VOLUMES` 环境变量:
+
+```bash
+docker run # ...
+ -e SANDBOX_USER_ID=$(id -u) \
+ -e SANDBOX_VOLUMES=/path/to/your/code:/workspace:rw \
+ # ...
+```
+
+`SANDBOX_VOLUMES` 格式为:`host_path:container_path[:mode]`
+
+- `host_path`:您想要挂载的主机路径
+- `container_path`:容器内挂载主机路径的位置
+ - 对于您希望代理修改的文件,请使用 `/workspace`。代理默认在 `/workspace` 中工作。
+ - 对于只读参考材料或大型数据集,请使用不同的路径(例如 `/data`)
+- `mode`:可选的挂载模式,可以是 `rw`(读写,默认)或 `ro`(只读)
+
+您也可以通过逗号(`,`)分隔来指定多个挂载点:
+
+```bash
+export SANDBOX_VOLUMES=/path1:/workspace/path1,/path2:/workspace/path2:ro
+```
+
+示例:
+
+```bash
+# Linux 和 Mac 示例 - 可写工作区
+export SANDBOX_VOLUMES=$HOME/OpenHands:/workspace:rw
+
+# Windows 上的 WSL 示例 - 可写工作区
+export SANDBOX_VOLUMES=/mnt/c/dev/OpenHands:/workspace:rw
+
+# 只读参考代码示例
+export SANDBOX_VOLUMES=/path/to/reference/code:/data:ro
+
+# 多挂载点示例 - 可写工作区和只读参考数据
+export SANDBOX_VOLUMES=$HOME/projects:/workspace:rw,/path/to/large/dataset:/data:ro
+```
+
+> **注意:** 使用多个挂载点时,第一个挂载点被视为主要工作区,并将用于向后兼容那些期望单一工作区的工具。
+
+> **重要:** 代理默认在 `/workspace` 中工作。如果您希望代理修改您本地目录中的文件,您应该将该目录挂载到 `/workspace`。如果您有希望代理访问但不修改的只读数据,请将其挂载到不同的路径(如 `/data`),并明确指示代理在那里查找。
+
+### 使用 WORKSPACE_* 变量(已弃用)
+
+> **注意:** 此方法已弃用,将在未来版本中移除。请改用 `SANDBOX_VOLUMES`。
+
+1. 设置 `WORKSPACE_BASE`:
+
+ ```bash
+ export WORKSPACE_BASE=/path/to/your/code
+ ```
+
+2. 在 `docker run` 命令中添加以下选项:
+
+ ```bash
+ docker run # ...
+ -e SANDBOX_USER_ID=$(id -u) \
+ -e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
+ -v $WORKSPACE_BASE:/opt/workspace_base \
+ # ...
+ ```
+
+请小心!没有任何措施可以阻止 OpenHands 代理删除或修改挂载到其工作区的任何文件。
+
+将 `-e SANDBOX_USER_ID=$(id -u)` 传递给 Docker 命令是为了确保沙箱用户与主机用户的权限匹配。这可以防止代理在挂载的工作区中创建 root 所有的文件。
+
+## 强化的 Docker 安装
+
+在安全性是优先考虑因素的环境中部署 OpenHands 时,您应该考虑实施强化的 Docker 配置。本节提供了超出默认配置的建议,以保护您的 OpenHands Docker 部署。
+
+### 安全考虑因素
+
+README 中的默认 Docker 配置旨在方便本地开发机器使用。如果您在公共网络(例如机场 WiFi)上运行,应该实施额外的安全措施。
+
+### 网络绑定安全
+
+默认情况下,OpenHands 绑定到所有网络接口(`0.0.0.0`),这可能会将您的实例暴露给主机连接的所有网络。对于更安全的设置:
+
+1. **限制网络绑定**:使用 `runtime_binding_address` 配置来限制 OpenHands 监听的网络接口:
+
+ ```bash
+ docker run # ...
+ -e SANDBOX_RUNTIME_BINDING_ADDRESS=127.0.0.1 \
+ # ...
+ ```
+
+ 此配置确保 OpenHands 只在回环接口(`127.0.0.1`)上监听,使其只能从本地机器访问。
+
+2. **安全端口绑定**:修改 `-p` 标志,使其只绑定到 localhost 而不是所有接口:
+
+ ```bash
+ docker run # ... \
+ -p 127.0.0.1:3000:3000 \
+ ```
+
+ 这确保 OpenHands 网页界面只能从本地机器访问,而不能从网络上的其他机器访问。
+
+### 网络隔离
+
+使用 Docker 的网络功能来隔离 OpenHands:
+
+```bash
+# 创建一个隔离的网络
+docker network create openhands-network
+
+# 在隔离的网络中运行 OpenHands
+docker run # ... \
+ --network openhands-network \
+```
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes/local.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes/local.md
new file mode 100644
index 000000000000..d39fff63daa2
--- /dev/null
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes/local.md
@@ -0,0 +1,73 @@
+# 本地运行时
+
+本地运行时允许OpenHands代理直接在您的本地机器上执行操作,无需使用Docker。
+这种运行时主要用于受控环境,如CI流水线或Docker不可用的测试场景。
+
+:::caution
+**安全警告**:本地运行时在没有任何沙箱隔离的情况下运行。代理可以直接访问和修改
+您机器上的文件。仅在受控环境中或当您完全理解安全影响时使用此运行时。
+:::
+
+## 前提条件
+
+在使用本地运行时之前,请确保:
+
+1. 您可以使用[开发工作流](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)运行OpenHands。
+2. 您的系统上有tmux可用。
+
+## 配置
+
+要使用本地运行时,除了必需的配置(如LLM提供商、模型和API密钥)外,您还需要在启动OpenHands时通过环境变量或[config.toml文件](https://github.com/All-Hands-AI/OpenHands/blob/main/config.template.toml)设置以下选项:
+
+通过环境变量:
+
+```bash
+# 必需
+export RUNTIME=local
+
+# 可选但推荐
+# 代理默认在/workspace中工作,所以将您的项目目录挂载到那里
+export SANDBOX_VOLUMES=/path/to/your/workspace:/workspace:rw
+# 对于只读数据,使用不同的挂载路径
+# export SANDBOX_VOLUMES=/path/to/your/workspace:/workspace:rw,/path/to/large/dataset:/data:ro
+```
+
+通过`config.toml`:
+
+```toml
+[core]
+runtime = "local"
+
+[sandbox]
+# 代理默认在/workspace中工作,所以将您的项目目录挂载到那里
+volumes = "/path/to/your/workspace:/workspace:rw"
+# 对于只读数据,使用不同的挂载路径
+# volumes = "/path/to/your/workspace:/workspace:rw,/path/to/large/dataset:/data:ro"
+```
+
+如果未设置`SANDBOX_VOLUMES`,运行时将创建一个临时目录供代理工作。
+
+## 使用示例
+
+以下是如何在无头模式下使用本地运行时启动OpenHands的示例:
+
+```bash
+# 将运行时类型设置为local
+export RUNTIME=local
+
+# 设置工作区目录(代理默认在/workspace中工作)
+export SANDBOX_VOLUMES=/path/to/your/project:/workspace:rw
+# 对于您不希望代理修改的只读数据,使用不同的路径
+# export SANDBOX_VOLUMES=/path/to/your/project:/workspace:rw,/path/to/reference/data:/data:ro
+
+# 启动OpenHands
+poetry run python -m openhands.core.main -t "write a bash script that prints hi"
+```
+
+## 使用场景
+
+本地运行时特别适用于:
+
+- Docker不可用的CI/CD流水线。
+- OpenHands本身的测试和开发。
+- 容器使用受限的环境。
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes/modal.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes/modal.md
new file mode 100644
index 000000000000..bc251de6e615
--- /dev/null
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes/modal.md
@@ -0,0 +1,13 @@
+# Modal 运行时
+
+我们在 [Modal](https://modal.com/) 的合作伙伴为 OpenHands 提供了一个运行时。
+
+要使用 Modal 运行时,请创建一个账户,然后[创建一个 API 密钥。](https://modal.com/settings)
+
+然后,在启动 OpenHands 时,您需要设置以下环境变量:
+```bash
+docker run # ...
+ -e RUNTIME=modal \
+ -e MODAL_API_TOKEN_ID="your-id" \
+ -e MODAL_API_TOKEN_SECRET="modal-api-key" \
+```
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes/remote.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes/remote.md
new file mode 100644
index 000000000000..5f143127c78d
--- /dev/null
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/runtimes/remote.md
@@ -0,0 +1,7 @@
+# OpenHands 远程运行时
+
+:::note
+此运行时专为通过 [OpenHands 评估框架](https://github.com/All-Hands-AI/OpenHands/tree/main/evaluation) 进行代理评估而设计。它不应用于启动生产环境的 OpenHands 应用程序。
+:::
+
+OpenHands 远程运行时目前处于测试阶段(详情请阅读[此处](https://runtime.all-hands.dev/)),它允许您在云端并行启动运行时。如果您想尝试使用,请填写[此表单](https://docs.google.com/forms/d/e/1FAIpQLSckVz_JFwg2_mOxNZjCtr7aoBFI2Mwdan3f75J_TrdMS1JV2g/viewform)申请!
\ No newline at end of file
diff --git a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/troubleshooting/troubleshooting.md b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/troubleshooting/troubleshooting.md
index 287a14f73ef5..c7f071687797 100644
--- a/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/troubleshooting/troubleshooting.md
+++ b/docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/usage/troubleshooting/troubleshooting.md
@@ -1,10 +1,42 @@
# 🚧 故障排除
:::tip
-OpenHands 仅通过 WSL 支持 Windows。请确保在 WSL 终端内运行所有命令。
+OpenHands 仅通过 WSL 支持 Windows。请确保在 WSL 终端中运行所有命令。
:::
-### 启动 Docker 客户端失败
+### 无法通过本地 IP 访问 VS Code 标签页
+
+**描述**
+
+当通过非本地主机 URL(如 LAN IP 地址)访问 OpenHands 时,VS Code 标签页显示"禁止访问"错误,而 UI 的其他部分正常工作。
+
+**解决方案**
+
+这是因为 VS Code 运行在随机的高端口上,可能没有暴露或无法从其他机器访问。要解决此问题:
+
+1. 使用 `SANDBOX_VSCODE_PORT` 环境变量为 VS Code 设置特定端口:
+ ```bash
+ docker run -it --rm \
+ -e SANDBOX_VSCODE_PORT=41234 \
+ -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:latest \
+ -v /var/run/docker.sock:/var/run/docker.sock \
+ -v ~/.openhands-state:/.openhands-state \
+ -p 3000:3000 \
+ -p 41234:41234 \
+ --add-host host.docker.internal:host-gateway \
+ --name openhands-app \
+ docker.all-hands.dev/all-hands-ai/openhands:latest
+ ```
+
+2. 确保在 Docker 命令中使用 `-p 41234:41234` 暴露相同的端口。
+
+3. 或者,您可以在 `config.toml` 文件中设置:
+ ```toml
+ [sandbox]
+ vscode_port = 41234
+ ```
+
+### 启动 docker 客户端失败
**描述**
@@ -15,29 +47,22 @@ Launch docker client failed. Please make sure you have installed docker and star
**解决方案**
-请按顺序尝试以下步骤:
-* 确认 `docker` 正在您的系统上运行。您应该能够在终端中成功运行 `docker ps`。
-* 如果使用 Docker Desktop,请确保 `Settings > Advanced > Allow the default Docker socket to be used` 已启用。
-* 根据您的配置,您可能需要在 Docker Desktop 中启用 `Settings > Resources > Network > Enable host networking`。
+按顺序尝试以下方法:
+* 确认系统上正在运行 `docker`。您应该能够在终端中成功运行 `docker ps`。
+* 如果使用 Docker Desktop,确保启用了 `设置 > 高级 > 允许使用默认 Docker 套接字`。
+* 根据您的配置,可能需要在 Docker Desktop 中启用 `设置 > 资源 > 网络 > 启用主机网络`。
* 重新安装 Docker Desktop。
----
-# 开发工作流程特定问题
-### 构建运行时 Docker 镜像时出错
+### 权限错误
**描述**
-尝试启动新会话失败,并且日志中出现以下术语的错误:
-```
-debian-security bookworm-security
-InRelease At least one invalid signature was encountered.
-```
+在初始提示时,出现带有 `Permission Denied` 或 `PermissionError` 的错误。
-当现有外部库的哈希值发生变化且本地 Docker 实例缓存了先前版本时,似乎会发生这种情况。要解决此问题,请尝试以下操作:
+**解决方案**
-* 停止名称以 `openhands-runtime-` 为前缀的任何容器:
- `docker ps --filter name=openhands-runtime- --filter status=running -aq | xargs docker stop`
-* 删除名称以 `openhands-runtime-` 为前缀的任何容器:
- `docker rmi $(docker images --filter name=openhands-runtime- -q --no-trunc)`
-* 停止并删除名称以 `openhands-runtime-` 为前缀的任何容器/镜像
-* 清理容器/镜像:`docker container prune -f && docker image prune -f`
+* 检查 `~/.openhands-state` 是否由 `root` 拥有。如果是,您可以:
+ * 更改目录的所有权:`sudo chown : ~/.openhands-state`。
+ * 或更新目录的权限:`sudo chmod 777 ~/.openhands-state`
+ * 或者如果您不需要之前的数据,可以删除它。OpenHands 将重新创建它。您需要重新输入 LLM 设置。
+* 如果挂载本地目录,确保您的 `WORKSPACE_BASE` 对运行 OpenHands 的用户有必要的权限。
\ No newline at end of file
diff --git a/docs/modules/usage/configuration-options.md b/docs/modules/usage/configuration-options.md
index ab2de58c1b4b..e5c15e352d20 100644
--- a/docs/modules/usage/configuration-options.md
+++ b/docs/modules/usage/configuration-options.md
@@ -26,10 +26,10 @@ The core configuration options are defined in the `[core]` section of the `confi
- Description: API token secret for Modal
### Workspace
-- `workspace_base`
+- `workspace_base` **(Deprecated)**
- Type: `str`
- Default: `"./workspace"`
- - Description: Base path for the workspace
+ - Description: Base path for the workspace. **Deprecated: Use `SANDBOX_VOLUMES` instead.**
- `cache_dir`
- Type: `str`
@@ -101,20 +101,25 @@ The core configuration options are defined in the `[core]` section of the `confi
- Description: Maximum number of iterations
### Sandbox Configuration
-- `workspace_mount_path_in_sandbox`
+- `volumes`
+ - Type: `str`
+ - Default: `None`
+ - Description: Volume mounts in the format 'host_path:container_path[:mode]', e.g. '/my/host/dir:/workspace:rw'. Multiple mounts can be specified using commas, e.g. '/path1:/workspace/path1,/path2:/workspace/path2:ro'
+
+- `workspace_mount_path_in_sandbox` **(Deprecated)**
- Type: `str`
- Default: `"/workspace"`
- - Description: Path to mount the workspace in the sandbox
+ - Description: Path to mount the workspace in the sandbox. **Deprecated: Use `SANDBOX_VOLUMES` instead.**
-- `workspace_mount_path`
+- `workspace_mount_path` **(Deprecated)**
- Type: `str`
- Default: `""`
- - Description: Path to mount the workspace
+ - Description: Path to mount the workspace. **Deprecated: Use `SANDBOX_VOLUMES` instead.**
-- `workspace_mount_rewrite`
+- `workspace_mount_rewrite` **(Deprecated)**
- Type: `str`
- Default: `""`
- - Description: Path to rewrite the workspace mount path to. You can usually ignore this, it refers to special cases of running inside another container.
+ - Description: Path to rewrite the workspace mount path to. You can usually ignore this, it refers to special cases of running inside another container. **Deprecated: Use `SANDBOX_VOLUMES` instead.**
### Miscellaneous
- `run_as_openhands`
diff --git a/docs/modules/usage/how-to/cli-mode.md b/docs/modules/usage/how-to/cli-mode.md
index cd7afd4d5f27..657021d9a637 100644
--- a/docs/modules/usage/how-to/cli-mode.md
+++ b/docs/modules/usage/how-to/cli-mode.md
@@ -26,7 +26,9 @@ To run OpenHands in CLI mode with Docker:
1. Set the following environmental variables in your terminal:
-- `WORKSPACE_BASE` to the directory you want OpenHands to edit (Ex: `export WORKSPACE_BASE=$(pwd)/workspace`).
+- `SANDBOX_VOLUMES` to specify the directory you want OpenHands to access (Ex: `export SANDBOX_VOLUMES=$(pwd)/workspace:/workspace:rw`).
+ - The agent works in `/workspace` by default, so mount your project directory there if you want the agent to modify files.
+ - For read-only data, use a different mount path (Ex: `export SANDBOX_VOLUMES=$(pwd)/workspace:/workspace:rw,/path/to/large/dataset:/data:ro`).
- `LLM_MODEL` to the model to use (Ex: `export LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"`).
- `LLM_API_KEY` to the API key (Ex: `export LLM_API_KEY="sk_test_12345"`).
@@ -37,10 +39,9 @@ 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 \
- -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 \
diff --git a/docs/modules/usage/how-to/headless-mode.md b/docs/modules/usage/how-to/headless-mode.md
index ebf9c0cdfdd0..702fc45b2433 100644
--- a/docs/modules/usage/how-to/headless-mode.md
+++ b/docs/modules/usage/how-to/headless-mode.md
@@ -23,7 +23,9 @@ To run OpenHands in Headless mode with Docker:
1. Set the following environmental variables in your terminal:
-- `WORKSPACE_BASE` to the directory you want OpenHands to edit (Ex: `export WORKSPACE_BASE=$(pwd)/workspace`).
+- `SANDBOX_VOLUMES` to specify the directory you want OpenHands to access (Ex: `export SANDBOX_VOLUMES=$(pwd)/workspace:/workspace:rw`).
+ - The agent works in `/workspace` by default, so mount your project directory there if you want the agent to modify files.
+ - For read-only data, use a different mount path (Ex: `export SANDBOX_VOLUMES=$(pwd)/workspace:/workspace:rw,/path/to/large/dataset:/data:ro`).
- `LLM_MODEL` to the model to use (Ex: `export LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"`).
- `LLM_API_KEY` to the API key (Ex: `export LLM_API_KEY="sk_test_12345"`).
@@ -34,11 +36,10 @@ 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 \
diff --git a/docs/modules/usage/runtimes/docker.md b/docs/modules/usage/runtimes/docker.md
index 0b24e017e889..8a1e33de9bcd 100644
--- a/docs/modules/usage/runtimes/docker.md
+++ b/docs/modules/usage/runtimes/docker.md
@@ -9,19 +9,62 @@ You can also [build your own runtime image](../how-to/custom-sandbox-guide).
## Connecting to Your filesystem
A useful feature is the ability to connect to your local filesystem. To mount your filesystem into the runtime:
+
+### Using SANDBOX_VOLUMES
+
+The simplest way to mount your local filesystem is to use the `SANDBOX_VOLUMES` environment variable:
+
+```bash
+docker run # ...
+ -e SANDBOX_USER_ID=$(id -u) \
+ -e SANDBOX_VOLUMES=/path/to/your/code:/workspace:rw \
+ # ...
+```
+
+The `SANDBOX_VOLUMES` format is: `host_path:container_path[:mode]`
+
+- `host_path`: The path on your host machine that you want to mount
+- `container_path`: The path inside the container where the host path will be mounted
+ - Use `/workspace` for files you want the agent to modify. The agent works in `/workspace` by default.
+ - Use a different path (e.g., `/data`) for read-only reference materials or large datasets
+- `mode`: Optional mount mode, either `rw` (read-write, default) or `ro` (read-only)
+
+You can also specify multiple mounts by separating them with commas (`,`):
+
+```bash
+export SANDBOX_VOLUMES=/path1:/workspace/path1,/path2:/workspace/path2:ro
+```
+
+Examples:
+
+```bash
+# Linux and Mac Example - Writable workspace
+export SANDBOX_VOLUMES=$HOME/OpenHands:/workspace:rw
+
+# WSL on Windows Example - Writable workspace
+export SANDBOX_VOLUMES=/mnt/c/dev/OpenHands:/workspace:rw
+
+# Read-only reference code example
+export SANDBOX_VOLUMES=/path/to/reference/code:/data:ro
+
+# Multiple mounts example - Writable workspace with read-only reference data
+export SANDBOX_VOLUMES=$HOME/projects:/workspace:rw,/path/to/large/dataset:/data:ro
+```
+
+> **Note:** When using multiple mounts, the first mount is considered the primary workspace and will be used for backward compatibility with tools that expect a single workspace.
+
+> **Important:** The agent will work in `/workspace` by default. If you want the agent to modify files in your local directory, you should mount that directory to `/workspace`. If you have read-only data that you want the agent to access but not modify, mount it to a different path (like `/data`) and explicitly instruct the agent to look there.
+
+### Using WORKSPACE_* variables (Deprecated)
+
+> **Note:** This method is deprecated and will be removed in a future version. Please use `SANDBOX_VOLUMES` instead.
+
1. Set `WORKSPACE_BASE`:
```bash
export WORKSPACE_BASE=/path/to/your/code
-
- # Linux and Mac Example
- # export WORKSPACE_BASE=$HOME/OpenHands
- # Will set $WORKSPACE_BASE to /home//OpenHands
- #
- # WSL on Windows Example
- # export WORKSPACE_BASE=/mnt/c/dev/OpenHands
- # Will set $WORKSPACE_BASE to C:\dev\OpenHands
```
+
2. Add the following options to the `docker run` command:
```bash
diff --git a/docs/modules/usage/runtimes/local.md b/docs/modules/usage/runtimes/local.md
index 7c4d8c05d25f..27bac18bb473 100644
--- a/docs/modules/usage/runtimes/local.md
+++ b/docs/modules/usage/runtimes/local.md
@@ -27,7 +27,10 @@ Via environment variables:
export RUNTIME=local
# Optional but recommended
-export WORKSPACE_BASE=/path/to/your/workspace
+# The agent works in /workspace by default, so mount your project directory there
+export SANDBOX_VOLUMES=/path/to/your/workspace:/workspace:rw
+# For read-only data, use a different mount path
+# export SANDBOX_VOLUMES=/path/to/your/workspace:/workspace:rw,/path/to/large/dataset:/data:ro
```
Via `config.toml`:
@@ -35,10 +38,15 @@ Via `config.toml`:
```toml
[core]
runtime = "local"
-workspace_base = "/path/to/your/workspace"
+
+[sandbox]
+# The agent works in /workspace by default, so mount your project directory there
+volumes = "/path/to/your/workspace:/workspace:rw"
+# For read-only data, use a different mount path
+# volumes = "/path/to/your/workspace:/workspace:rw,/path/to/large/dataset:/data:ro"
```
-If `WORKSPACE_BASE` is not set, the runtime will create a temporary directory for the agent to work in.
+If `SANDBOX_VOLUMES` is not set, the runtime will create a temporary directory for the agent to work in.
## Example Usage
@@ -48,8 +56,10 @@ Here's an example of how to start OpenHands with the Local Runtime in Headless M
# Set the runtime type to local
export RUNTIME=local
-# Optionally set a workspace directory
-export WORKSPACE_BASE=/path/to/your/project
+# Set a workspace directory (the agent works in /workspace by default)
+export SANDBOX_VOLUMES=/path/to/your/project:/workspace:rw
+# For read-only data that you don't want the agent to modify, use a different path
+# export SANDBOX_VOLUMES=/path/to/your/project:/workspace:rw,/path/to/reference/data:/data:ro
# Start OpenHands
poetry run python -m openhands.core.main -t "write a bash script that prints hi"
diff --git a/openhands/agenthub/codeact_agent/codeact_agent.py b/openhands/agenthub/codeact_agent/codeact_agent.py
index 55de69df30ef..612e976c2d83 100644
--- a/openhands/agenthub/codeact_agent/codeact_agent.py
+++ b/openhands/agenthub/codeact_agent/codeact_agent.py
@@ -5,6 +5,7 @@
if TYPE_CHECKING:
from litellm import ChatCompletionToolParam
+
from openhands.events.action import Action
from openhands.llm.llm import ModelResponse
diff --git a/openhands/agenthub/readonly_agent/readonly_agent.py b/openhands/agenthub/readonly_agent/readonly_agent.py
index fdbb70a1b92f..b196c7b362cb 100644
--- a/openhands/agenthub/readonly_agent/readonly_agent.py
+++ b/openhands/agenthub/readonly_agent/readonly_agent.py
@@ -3,11 +3,11 @@
"""
import os
-
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from litellm import ChatCompletionToolParam
+
from openhands.events.action import Action
from openhands.llm.llm import ModelResponse
diff --git a/openhands/core/config/app_config.py b/openhands/core/config/app_config.py
index f025825e9096..6fcaa0a40253 100644
--- a/openhands/core/config/app_config.py
+++ b/openhands/core/config/app_config.py
@@ -63,10 +63,12 @@ class AppConfig(BaseModel):
save_trajectory_path: str | None = Field(default=None)
save_screenshots_in_trajectory: bool = Field(default=False)
replay_trajectory_path: str | None = Field(default=None)
- workspace_base: str | None = Field(default=None)
- workspace_mount_path: str | None = Field(default=None)
- workspace_mount_path_in_sandbox: str = Field(default='/workspace')
- workspace_mount_rewrite: str | None = Field(default=None)
+
+ # Deprecated parameters - will be removed in a future version
+ workspace_base: str | None = Field(default=None, deprecated=True)
+ workspace_mount_path: str | None = Field(default=None, deprecated=True)
+ workspace_mount_path_in_sandbox: str = Field(default='/workspace', deprecated=True)
+ workspace_mount_rewrite: str | None = Field(default=None, deprecated=True)
cache_dir: str = Field(default='/tmp/cache')
run_as_openhands: bool = Field(default=True)
max_iterations: int = Field(default=OH_MAX_ITERATIONS)
diff --git a/openhands/core/config/sandbox_config.py b/openhands/core/config/sandbox_config.py
index a335579e9d84..050d9789143f 100644
--- a/openhands/core/config/sandbox_config.py
+++ b/openhands/core/config/sandbox_config.py
@@ -80,6 +80,10 @@ class SandboxConfig(BaseModel):
selected_repo: str | None = Field(default=None)
trusted_dirs: list[str] = Field(default_factory=list)
vscode_port: int | None = Field(default=None)
+ volumes: str | None = Field(
+ default=None,
+ description="Volume mounts in the format 'host_path:container_path[:mode]', e.g. '/my/host/dir:/workspace:rw'. Multiple mounts can be specified using commas, e.g. '/path1:/workspace/path1,/path2:/workspace/path2:ro'",
+ )
model_config = {'extra': 'forbid'}
diff --git a/openhands/core/config/utils.py b/openhands/core/config/utils.py
index 32fb59bd5d1f..1c1639a46144 100644
--- a/openhands/core/config/utils.py
+++ b/openhands/core/config/utils.py
@@ -294,10 +294,51 @@ def get_or_create_jwt_secret(file_store: FileStore) -> str:
def finalize_config(cfg: AppConfig) -> None:
"""More tweaks to the config after it's been loaded."""
- if cfg.workspace_base is not None:
- cfg.workspace_base = os.path.abspath(cfg.workspace_base)
- if cfg.workspace_mount_path is None:
- cfg.workspace_mount_path = cfg.workspace_base
+ # Handle the sandbox.volumes parameter
+ if cfg.sandbox.volumes is not None:
+ # Split by commas to handle multiple mounts
+ mounts = cfg.sandbox.volumes.split(',')
+
+ # Use the first volume for backward compatibility
+ if mounts:
+ primary_mount = mounts[0]
+ parts = primary_mount.split(':')
+ if len(parts) < 2 or len(parts) > 3:
+ raise ValueError(
+ f'Invalid sandbox.volumes format: {primary_mount}. '
+ f"Expected format: 'host_path:container_path[:mode]', e.g. '/my/host/dir:/workspace:rw'"
+ )
+
+ host_path = os.path.abspath(parts[0])
+ container_path = parts[1]
+
+ # Set the workspace_mount_path and workspace_mount_path_in_sandbox for backward compatibility
+ cfg.workspace_mount_path = host_path
+ cfg.workspace_mount_path_in_sandbox = container_path
+
+ # Also set workspace_base for backward compatibility
+ cfg.workspace_base = host_path
+
+ # Validate all mounts
+ for mount in mounts:
+ parts = mount.split(':')
+ if len(parts) < 2 or len(parts) > 3:
+ raise ValueError(
+ f'Invalid mount format in sandbox.volumes: {mount}. '
+ f"Expected format: 'host_path:container_path[:mode]', e.g. '/my/host/dir:/workspace:rw'"
+ )
+
+ # Handle the deprecated workspace_* parameters
+ elif cfg.workspace_base is not None or cfg.workspace_mount_path is not None:
+ logger.openhands_logger.warning(
+ 'DEPRECATED: The WORKSPACE_BASE and WORKSPACE_MOUNT_PATH environment variables are deprecated. '
+ "Please use RUNTIME_MOUNT instead, e.g. 'RUNTIME_MOUNT=/my/host/dir:/workspace:rw'"
+ )
+
+ if cfg.workspace_base is not None:
+ cfg.workspace_base = os.path.abspath(cfg.workspace_base)
+ if cfg.workspace_mount_path is None:
+ cfg.workspace_mount_path = cfg.workspace_base
if cfg.workspace_mount_rewrite:
base = cfg.workspace_base or os.getcwd()
diff --git a/openhands/integrations/github/github_service.py b/openhands/integrations/github/github_service.py
index ffff6835ba01..e3eacf7dff26 100644
--- a/openhands/integrations/github/github_service.py
+++ b/openhands/integrations/github/github_service.py
@@ -6,6 +6,11 @@
import httpx
from pydantic import SecretStr
+from openhands.core.logger import openhands_logger as logger
+from openhands.integrations.github.queries import (
+ suggested_task_issue_graphql_query,
+ suggested_task_pr_graphql_query,
+)
from openhands.integrations.service_types import (
BaseGitService,
Branch,
@@ -20,9 +25,6 @@
)
from openhands.server.types import AppMode
from openhands.utils.import_utils import get_impl
-from openhands.integrations.github.queries import suggested_task_pr_graphql_query, suggested_task_issue_graphql_query
-from datetime import datetime
-from openhands.core.logger import openhands_logger as logger
class GitHubService(BaseGitService, GitService):
@@ -291,7 +293,7 @@ async def get_suggested_tasks(self) -> list[SuggestedTask]:
Returns:
- PRs authored by the user.
- Issues assigned to the user.
-
+
Note: Queries are split to avoid timeout issues.
"""
# Get user info to use in queries
@@ -301,9 +303,11 @@ async def get_suggested_tasks(self) -> list[SuggestedTask]:
variables = {'login': login}
try:
- pr_response = await self.execute_graphql_query(suggested_task_pr_graphql_query, variables)
+ pr_response = await self.execute_graphql_query(
+ suggested_task_pr_graphql_query, variables
+ )
pr_data = pr_response['data']['user']
-
+
# Process pull requests
for pr in pr_data['pullRequests']['nodes']:
repo_name = pr['repository']['nameWithOwner']
@@ -341,16 +345,22 @@ async def get_suggested_tasks(self) -> list[SuggestedTask]:
)
)
-
except Exception as e:
- logger.info(f"Error fetching suggested task for PRs: {e}",
- extra={'signal': 'github_suggested_tasks', 'user_id': self.external_auth_id})
-
+ logger.info(
+ f'Error fetching suggested task for PRs: {e}',
+ extra={
+ 'signal': 'github_suggested_tasks',
+ 'user_id': self.external_auth_id,
+ },
+ )
+
try:
# Execute issue query
- issue_response = await self.execute_graphql_query(suggested_task_issue_graphql_query, variables)
+ issue_response = await self.execute_graphql_query(
+ suggested_task_issue_graphql_query, variables
+ )
issue_data = issue_response['data']['user']
-
+
# Process issues
for issue in issue_data['issues']['nodes']:
repo_name = issue['repository']['nameWithOwner']
@@ -365,10 +375,15 @@ async def get_suggested_tasks(self) -> list[SuggestedTask]:
)
return tasks
-
+
except Exception as e:
- logger.info(f"Error fetching suggested task for issues: {e}",
- extra={'signal': 'github_suggested_tasks', 'user_id': self.external_auth_id})
+ logger.info(
+ f'Error fetching suggested task for issues: {e}',
+ extra={
+ 'signal': 'github_suggested_tasks',
+ 'user_id': self.external_auth_id,
+ },
+ )
return tasks
diff --git a/openhands/integrations/github/queries.py b/openhands/integrations/github/queries.py
index 3d73a787589b..6e4d48bce828 100644
--- a/openhands/integrations/github/queries.py
+++ b/openhands/integrations/github/queries.py
@@ -29,7 +29,7 @@
}
"""
-
+
suggested_task_issue_graphql_query = """
query GetUserIssues($login: String!) {
user(login: $login) {
diff --git a/openhands/integrations/templates/resolver/summary_prompt.j2 b/openhands/integrations/templates/resolver/summary_prompt.j2
index 538306db7dff..48f3b9b41bac 100644
--- a/openhands/integrations/templates/resolver/summary_prompt.j2
+++ b/openhands/integrations/templates/resolver/summary_prompt.j2
@@ -1,5 +1,5 @@
Please summarize your work.
-
+
If you answered a question, please re-state the answer to the question
If you made changes, please create a concise overview on whether the request has been addressed successfully or if there are were issues with the attempt.
If successful, make sure your changes are pushed to the remote branch.
diff --git a/openhands/runtime/impl/docker/docker_runtime.py b/openhands/runtime/impl/docker/docker_runtime.py
index c0fc01a6f57a..adc7879c70d1 100644
--- a/openhands/runtime/impl/docker/docker_runtime.py
+++ b/openhands/runtime/impl/docker/docker_runtime.py
@@ -207,6 +207,54 @@ def _init_docker_client() -> docker.DockerClient:
)
raise ex
+ def _process_volumes(self) -> dict[str, dict[str, str]]:
+ """Process volume mounts based on configuration.
+
+ Returns:
+ A dictionary mapping host paths to container bind mounts with their modes.
+ """
+ # Initialize volumes dictionary
+ volumes: dict[str, dict[str, str]] = {}
+
+ # Process volumes (comma-delimited)
+ if self.config.sandbox.volumes is not None:
+ # Handle multiple mounts with comma delimiter
+ mounts = self.config.sandbox.volumes.split(',')
+
+ for mount in mounts:
+ parts = mount.split(':')
+ if len(parts) >= 2:
+ host_path = os.path.abspath(parts[0])
+ container_path = parts[1]
+ # Default mode is 'rw' if not specified
+ mount_mode = parts[2] if len(parts) > 2 else 'rw'
+
+ volumes[host_path] = {
+ 'bind': container_path,
+ 'mode': mount_mode,
+ }
+ logger.debug(
+ f'Mount dir (sandbox.volumes): {host_path} to {container_path} with mode: {mount_mode}'
+ )
+
+ # Legacy mounting with workspace_* parameters
+ elif (
+ self.config.workspace_mount_path is not None
+ and self.config.workspace_mount_path_in_sandbox is not None
+ ):
+ mount_mode = 'rw' # Default mode
+
+ # e.g. result would be: {"/home/user/openhands/workspace": {'bind': "/workspace", 'mode': 'rw'}}
+ volumes[self.config.workspace_mount_path] = {
+ 'bind': self.config.workspace_mount_path_in_sandbox,
+ 'mode': mount_mode,
+ }
+ logger.debug(
+ f'Mount dir (legacy): {self.config.workspace_mount_path} with mode: {mount_mode}'
+ )
+
+ return volumes
+
def _init_container(self):
self.log('debug', 'Preparing to start container...')
self.send_status_message('STATUS$PREPARING_CONTAINER')
@@ -272,23 +320,16 @@ def _init_container(self):
environment.update(self.config.sandbox.runtime_startup_env_vars)
self.log('debug', f'Workspace Base: {self.config.workspace_base}')
- if (
- self.config.workspace_mount_path is not None
- and self.config.workspace_mount_path_in_sandbox is not None
- ):
- # e.g. result would be: {"/home/user/openhands/workspace": {'bind': "/workspace", 'mode': 'rw'}}
- volumes = {
- self.config.workspace_mount_path: {
- 'bind': self.config.workspace_mount_path_in_sandbox,
- 'mode': 'rw',
- }
- }
- logger.debug(f'Mount dir: {self.config.workspace_mount_path}')
- else:
+
+ # Process volumes for mounting
+ volumes = self._process_volumes()
+
+ # If no volumes were configured, set to None
+ if not volumes:
logger.debug(
'Mount dir is not set, will not mount the workspace directory to the container'
)
- volumes = None
+ volumes = {} # Empty dict instead of None to satisfy mypy
self.log(
'debug',
f'Sandbox workspace: {self.config.workspace_mount_path_in_sandbox}',
diff --git a/openhands/server/README.md b/openhands/server/README.md
index 132f3996f343..8d0cf383f142 100644
--- a/openhands/server/README.md
+++ b/openhands/server/README.md
@@ -42,7 +42,7 @@ websocat ws://127.0.0.1:3000/ws
```sh
LLM_API_KEY=sk-... # Your Anthropic API Key
LLM_MODEL=claude-3-5-sonnet-20241022 # Default model for the agent to use
-WORKSPACE_BASE=/path/to/your/workspace # Default absolute path to workspace
+SANDBOX_VOLUMES=/path/to/your/workspace:/workspace:rw # Mount paths in format host_path:container_path:mode
```
## API Schema
diff --git a/tests/test_fileops.py b/tests/test_fileops.py
index 0687247cb5a6..4500d5baf7b9 100644
--- a/tests/test_fileops.py
+++ b/tests/test_fileops.py
@@ -5,41 +5,62 @@
from openhands.runtime.utils import files
SANDBOX_PATH_PREFIX = '/workspace'
-WORKSPACE_BASE = 'workspace'
+CONTAINER_PATH = '/workspace'
+HOST_PATH = 'workspace'
def test_resolve_path():
assert (
- files.resolve_path('test.txt', '/workspace')
- == Path(WORKSPACE_BASE) / 'test.txt'
+ files.resolve_path('test.txt', '/workspace', HOST_PATH, CONTAINER_PATH)
+ == Path(HOST_PATH) / 'test.txt'
)
assert (
- files.resolve_path('subdir/test.txt', '/workspace')
- == Path(WORKSPACE_BASE) / 'subdir' / 'test.txt'
+ files.resolve_path('subdir/test.txt', '/workspace', HOST_PATH, CONTAINER_PATH)
+ == Path(HOST_PATH) / 'subdir' / 'test.txt'
)
assert (
- files.resolve_path(Path(SANDBOX_PATH_PREFIX) / 'test.txt', '/workspace')
- == Path(WORKSPACE_BASE) / 'test.txt'
+ files.resolve_path(
+ Path(SANDBOX_PATH_PREFIX) / 'test.txt',
+ '/workspace',
+ HOST_PATH,
+ CONTAINER_PATH,
+ )
+ == Path(HOST_PATH) / 'test.txt'
)
assert (
files.resolve_path(
- Path(SANDBOX_PATH_PREFIX) / 'subdir' / 'test.txt', '/workspace'
+ Path(SANDBOX_PATH_PREFIX) / 'subdir' / 'test.txt',
+ '/workspace',
+ HOST_PATH,
+ CONTAINER_PATH,
)
- == Path(WORKSPACE_BASE) / 'subdir' / 'test.txt'
+ == Path(HOST_PATH) / 'subdir' / 'test.txt'
)
assert (
files.resolve_path(
- Path(SANDBOX_PATH_PREFIX) / 'subdir' / '..' / 'test.txt', '/workspace'
+ Path(SANDBOX_PATH_PREFIX) / 'subdir' / '..' / 'test.txt',
+ '/workspace',
+ HOST_PATH,
+ CONTAINER_PATH,
)
- == Path(WORKSPACE_BASE) / 'test.txt'
+ == Path(HOST_PATH) / 'test.txt'
)
with pytest.raises(PermissionError):
- files.resolve_path(Path(SANDBOX_PATH_PREFIX) / '..' / 'test.txt', '/workspace')
+ files.resolve_path(
+ Path(SANDBOX_PATH_PREFIX) / '..' / 'test.txt',
+ '/workspace',
+ HOST_PATH,
+ CONTAINER_PATH,
+ )
with pytest.raises(PermissionError):
- files.resolve_path(Path('..') / 'test.txt', '/workspace')
+ files.resolve_path(
+ Path('..') / 'test.txt', '/workspace', HOST_PATH, CONTAINER_PATH
+ )
with pytest.raises(PermissionError):
- files.resolve_path(Path('/') / 'test.txt', '/workspace')
+ files.resolve_path(
+ Path('/') / 'test.txt', '/workspace', HOST_PATH, CONTAINER_PATH
+ )
assert (
- files.resolve_path('test.txt', '/workspace/test')
- == Path(WORKSPACE_BASE) / 'test' / 'test.txt'
+ files.resolve_path('test.txt', '/workspace/test', HOST_PATH, CONTAINER_PATH)
+ == Path(HOST_PATH) / 'test' / 'test.txt'
)
diff --git a/tests/unit/test_config.py b/tests/unit/test_config.py
index bc24def019b9..8e77f0ac0b39 100644
--- a/tests/unit/test_config.py
+++ b/tests/unit/test_config.py
@@ -54,7 +54,7 @@ def default_config(monkeypatch):
def test_compat_env_to_config(monkeypatch, setup_env):
# Use `monkeypatch` to set environment variables for this specific test
- monkeypatch.setenv('WORKSPACE_BASE', '/repos/openhands/workspace')
+ monkeypatch.setenv('SANDBOX_VOLUMES', '/repos/openhands/workspace:/workspace:rw')
monkeypatch.setenv('LLM_API_KEY', 'sk-proj-rgMV0...')
monkeypatch.setenv('LLM_MODEL', 'gpt-4o')
monkeypatch.setenv('DEFAULT_AGENT', 'CodeActAgent')
@@ -62,8 +62,13 @@ def test_compat_env_to_config(monkeypatch, setup_env):
config = AppConfig()
load_from_env(config, os.environ)
+ finalize_config(config)
- assert config.workspace_base == '/repos/openhands/workspace'
+ assert config.sandbox.volumes == '/repos/openhands/workspace:/workspace:rw'
+ # Check that the old parameters are set for backward compatibility
+ assert config.workspace_base == os.path.abspath('/repos/openhands/workspace')
+ assert config.workspace_mount_path == os.path.abspath('/repos/openhands/workspace')
+ assert config.workspace_mount_path_in_sandbox == '/workspace'
assert isinstance(config.get_llm_config(), LLMConfig)
assert config.get_llm_config().api_key.get_secret_value() == 'sk-proj-rgMV0...'
assert config.get_llm_config().model == 'gpt-4o'
@@ -76,6 +81,7 @@ def test_load_from_old_style_env(monkeypatch, default_config):
# Test loading configuration from old-style environment variables using monkeypatch
monkeypatch.setenv('LLM_API_KEY', 'test-api-key')
monkeypatch.setenv('DEFAULT_AGENT', 'BrowsingAgent')
+ # Using deprecated WORKSPACE_BASE to test backward compatibility
monkeypatch.setenv('WORKSPACE_BASE', '/opt/files/workspace')
monkeypatch.setenv('SANDBOX_BASE_CONTAINER_IMAGE', 'custom_image')
@@ -83,6 +89,7 @@ def test_load_from_old_style_env(monkeypatch, default_config):
assert default_config.get_llm_config().api_key.get_secret_value() == 'test-api-key'
assert default_config.default_agent == 'BrowsingAgent'
+ # Verify deprecated variables still work
assert default_config.workspace_base == '/opt/files/workspace'
assert default_config.workspace_mount_path is None # before finalize_config
assert default_config.workspace_mount_path_in_sandbox is not None
@@ -111,9 +118,9 @@ def test_load_from_new_style_toml(default_config, temp_toml_file):
[sandbox]
timeout = 1
+volumes = "/opt/files2/workspace:/workspace:rw"
[core]
-workspace_base = "/opt/files2/workspace"
default_agent = "TestAgent"
"""
)
@@ -148,7 +155,7 @@ def test_load_from_new_style_toml(default_config, temp_toml_file):
is False
)
- assert default_config.workspace_base == '/opt/files2/workspace'
+ assert default_config.sandbox.volumes == '/opt/files2/workspace:/workspace:rw'
assert default_config.sandbox.timeout == 1
assert default_config.workspace_mount_path is None
@@ -157,9 +164,11 @@ def test_load_from_new_style_toml(default_config, temp_toml_file):
finalize_config(default_config)
- # after finalize_config, workspace_mount_path is set to the absolute path of workspace_base
- # if it was undefined
- assert default_config.workspace_mount_path == '/opt/files2/workspace'
+ # after finalize_config, workspace_mount_path is set based on sandbox.volumes
+ assert default_config.workspace_mount_path == os.path.abspath(
+ '/opt/files2/workspace'
+ )
+ assert default_config.workspace_mount_path_in_sandbox == '/workspace'
def test_llm_config_native_tool_calling(default_config, temp_toml_file, monkeypatch):
@@ -213,14 +222,16 @@ def test_env_overrides_compat_toml(monkeypatch, default_config, temp_toml_file):
api_key = "toml-api-key"
[core]
-workspace_base = "/opt/files3/workspace"
disable_color = true
-sandbox_timeout = 500
-sandbox_user_id = 1001
+
+[sandbox]
+volumes = "/opt/files3/workspace:/workspace:rw"
+timeout = 500
+user_id = 1001
""")
monkeypatch.setenv('LLM_API_KEY', 'env-api-key')
- monkeypatch.setenv('WORKSPACE_BASE', 'UNDEFINED')
+ monkeypatch.setenv('SANDBOX_VOLUMES', '/tmp/test:/workspace:ro')
monkeypatch.setenv('SANDBOX_TIMEOUT', '1000')
monkeypatch.setenv('SANDBOX_USER_ID', '1002')
monkeypatch.delenv('LLM_MODEL', raising=False)
@@ -237,10 +248,8 @@ def test_env_overrides_compat_toml(monkeypatch, default_config, temp_toml_file):
assert default_config.get_llm_config_from_agent().model == 'test-model'
assert default_config.get_llm_config().api_key.get_secret_value() == 'env-api-key'
- # after we set workspace_base to 'UNDEFINED' in the environment,
- # workspace_base should be set to that
- assert default_config.workspace_base is not None
- assert default_config.workspace_base == 'UNDEFINED'
+ # Environment variable should override TOML value
+ assert default_config.sandbox.volumes == '/tmp/test:/workspace:ro'
assert default_config.workspace_mount_path is None
assert default_config.disable_color is True
@@ -248,8 +257,9 @@ def test_env_overrides_compat_toml(monkeypatch, default_config, temp_toml_file):
assert default_config.sandbox.user_id == 1002
finalize_config(default_config)
- # after finalize_config, workspace_mount_path is set to absolute path of workspace_base if it was undefined
- assert default_config.workspace_mount_path == os.getcwd() + '/UNDEFINED'
+ # after finalize_config, workspace_mount_path is set based on the sandbox.volumes
+ assert default_config.workspace_mount_path == os.path.abspath('/tmp/test')
+ assert default_config.workspace_mount_path_in_sandbox == '/workspace'
def test_env_overrides_sandbox_toml(monkeypatch, default_config, temp_toml_file):
@@ -262,15 +272,15 @@ def test_env_overrides_sandbox_toml(monkeypatch, default_config, temp_toml_file)
api_key = "toml-api-key"
[core]
-workspace_base = "/opt/files3/workspace"
[sandbox]
+volumes = "/opt/files3/workspace:/workspace:rw"
timeout = 500
user_id = 1001
""")
monkeypatch.setenv('LLM_API_KEY', 'env-api-key')
- monkeypatch.setenv('WORKSPACE_BASE', 'UNDEFINED')
+ monkeypatch.setenv('SANDBOX_VOLUMES', '/tmp/test:/workspace:ro')
monkeypatch.setenv('SANDBOX_TIMEOUT', '1000')
monkeypatch.setenv('SANDBOX_USER_ID', '1002')
monkeypatch.delenv('LLM_MODEL', raising=False)
@@ -281,6 +291,7 @@ def test_env_overrides_sandbox_toml(monkeypatch, default_config, temp_toml_file)
# before load_from_env, values are set to the values from the toml file
assert default_config.get_llm_config().api_key.get_secret_value() == 'toml-api-key'
+ assert default_config.sandbox.volumes == '/opt/files3/workspace:/workspace:rw'
assert default_config.sandbox.timeout == 500
assert default_config.sandbox.user_id == 1001
@@ -290,13 +301,14 @@ def test_env_overrides_sandbox_toml(monkeypatch, default_config, temp_toml_file)
assert os.environ.get('LLM_MODEL') is None
assert default_config.get_llm_config().model == 'test-model'
assert default_config.get_llm_config().api_key.get_secret_value() == 'env-api-key'
-
+ assert default_config.sandbox.volumes == '/tmp/test:/workspace:ro'
assert default_config.sandbox.timeout == 1000
assert default_config.sandbox.user_id == 1002
finalize_config(default_config)
- # after finalize_config, workspace_mount_path is set to absolute path of workspace_base if it was undefined
- assert default_config.workspace_mount_path == os.getcwd() + '/UNDEFINED'
+ # after finalize_config, workspace_mount_path is set based on sandbox.volumes
+ assert default_config.workspace_mount_path == os.path.abspath('/tmp/test')
+ assert default_config.workspace_mount_path_in_sandbox == '/workspace'
def test_sandbox_config_from_toml(monkeypatch, default_config, temp_toml_file):
@@ -305,12 +317,12 @@ def test_sandbox_config_from_toml(monkeypatch, default_config, temp_toml_file):
toml_file.write(
"""
[core]
-workspace_base = "/opt/files/workspace"
[llm]
model = "test-model"
[sandbox]
+volumes = "/opt/files/workspace:/workspace:rw"
timeout = 1
base_container_image = "custom_image"
user_id = 1001
@@ -322,6 +334,11 @@ def test_sandbox_config_from_toml(monkeypatch, default_config, temp_toml_file):
finalize_config(default_config)
assert default_config.get_llm_config().model == 'test-model'
+ assert default_config.sandbox.volumes == '/opt/files/workspace:/workspace:rw'
+ assert default_config.workspace_mount_path == os.path.abspath(
+ '/opt/files/workspace'
+ )
+ assert default_config.workspace_mount_path_in_sandbox == '/workspace'
assert default_config.sandbox.timeout == 1
assert default_config.sandbox.base_container_image == 'custom_image'
assert default_config.sandbox.user_id == 1001
@@ -389,6 +406,44 @@ def test_defaults_dict_after_updates(default_config):
assert defaults_after_updates == initial_defaults
+def test_sandbox_volumes(monkeypatch, default_config):
+ # Test SANDBOX_VOLUMES with multiple mounts
+ monkeypatch.setenv(
+ 'SANDBOX_VOLUMES',
+ '/host/path1:/container/path1,/host/path2:/container/path2:ro',
+ )
+
+ load_from_env(default_config, os.environ)
+ finalize_config(default_config)
+
+ # Check that sandbox.volumes is set correctly
+ assert (
+ default_config.sandbox.volumes
+ == '/host/path1:/container/path1,/host/path2:/container/path2:ro'
+ )
+
+ # Check that the old parameters are set from the first mount for backward compatibility
+ assert default_config.workspace_base == os.path.abspath('/host/path1')
+ assert default_config.workspace_mount_path == os.path.abspath('/host/path1')
+ assert default_config.workspace_mount_path_in_sandbox == '/container/path1'
+
+
+def test_sandbox_volumes_with_mode(monkeypatch, default_config):
+ # Test SANDBOX_VOLUMES with read-only mode
+ monkeypatch.setenv('SANDBOX_VOLUMES', '/host/path1:/container/path1:ro')
+
+ load_from_env(default_config, os.environ)
+ finalize_config(default_config)
+
+ # Check that sandbox.volumes is set correctly
+ assert default_config.sandbox.volumes == '/host/path1:/container/path1:ro'
+
+ # Check that the old parameters are set for backward compatibility
+ assert default_config.workspace_base == os.path.abspath('/host/path1')
+ assert default_config.workspace_mount_path == os.path.abspath('/host/path1')
+ assert default_config.workspace_mount_path_in_sandbox == '/container/path1'
+
+
def test_invalid_toml_format(monkeypatch, temp_toml_file, default_config):
# Invalid TOML format doesn't break the configuration
monkeypatch.setenv('LLM_MODEL', 'gpt-5-turbo-1106')
diff --git a/tests/unit/test_docker_runtime.py b/tests/unit/test_docker_runtime.py
index 321307b965ee..7f80d119439a 100644
--- a/tests/unit/test_docker_runtime.py
+++ b/tests/unit/test_docker_runtime.py
@@ -69,3 +69,99 @@ def test_container_not_stopped_when_keep_runtime_alive_true(
# Assert
mock_stop_containers.assert_not_called()
+
+
+def test_volumes_mode_extraction():
+ """Test that the mount mode is correctly extracted from sandbox.volumes."""
+ import os
+
+ from openhands.runtime.impl.docker.docker_runtime import DockerRuntime
+
+ # Create a DockerRuntime instance with a mock config
+ runtime = DockerRuntime.__new__(DockerRuntime)
+ runtime.config = MagicMock()
+ runtime.config.sandbox.volumes = '/host/path:/container/path:ro'
+ runtime.config.workspace_mount_path = '/host/path'
+ runtime.config.workspace_mount_path_in_sandbox = '/container/path'
+
+ # Call the actual method that processes volumes
+ volumes = runtime._process_volumes()
+
+ # Assert that the mode was correctly set to 'ro'
+ assert volumes[os.path.abspath('/host/path')]['mode'] == 'ro'
+
+
+# This test has been replaced by test_volumes_multiple_mounts
+
+
+def test_volumes_multiple_mounts():
+ """Test that multiple mounts in sandbox.volumes are correctly processed."""
+ import os
+
+ from openhands.runtime.impl.docker.docker_runtime import DockerRuntime
+
+ # Create a DockerRuntime instance with a mock config
+ runtime = DockerRuntime.__new__(DockerRuntime)
+ runtime.config = MagicMock()
+ runtime.config.runtime_mount = None
+ runtime.config.sandbox.volumes = (
+ '/host/path1:/container/path1,/host/path2:/container/path2:ro'
+ )
+ runtime.config.workspace_mount_path = '/host/path1'
+ runtime.config.workspace_mount_path_in_sandbox = '/container/path1'
+
+ # Call the actual method that processes volumes
+ volumes = runtime._process_volumes()
+
+ # Assert that both mounts were processed correctly
+ assert len(volumes) == 2
+ assert volumes[os.path.abspath('/host/path1')]['bind'] == '/container/path1'
+ assert volumes[os.path.abspath('/host/path1')]['mode'] == 'rw' # Default mode
+ assert volumes[os.path.abspath('/host/path2')]['bind'] == '/container/path2'
+ assert volumes[os.path.abspath('/host/path2')]['mode'] == 'ro' # Specified mode
+
+
+def test_multiple_volumes():
+ """Test that multiple volumes are correctly processed."""
+ import os
+
+ from openhands.runtime.impl.docker.docker_runtime import DockerRuntime
+
+ # Create a DockerRuntime instance with a mock config
+ runtime = DockerRuntime.__new__(DockerRuntime)
+ runtime.config = MagicMock()
+ runtime.config.sandbox.volumes = '/host/path1:/container/path1,/host/path2:/container/path2,/host/path3:/container/path3:ro'
+ runtime.config.workspace_mount_path = '/host/path1'
+ runtime.config.workspace_mount_path_in_sandbox = '/container/path1'
+
+ # Call the actual method that processes volumes
+ volumes = runtime._process_volumes()
+
+ # Assert that all mounts were processed correctly
+ assert len(volumes) == 3
+ assert volumes[os.path.abspath('/host/path1')]['bind'] == '/container/path1'
+ assert volumes[os.path.abspath('/host/path1')]['mode'] == 'rw'
+ assert volumes[os.path.abspath('/host/path2')]['bind'] == '/container/path2'
+ assert volumes[os.path.abspath('/host/path2')]['mode'] == 'rw'
+ assert volumes[os.path.abspath('/host/path3')]['bind'] == '/container/path3'
+ assert volumes[os.path.abspath('/host/path3')]['mode'] == 'ro'
+
+
+def test_volumes_default_mode():
+ """Test that the default mount mode (rw) is used when not specified in sandbox.volumes."""
+ import os
+
+ from openhands.runtime.impl.docker.docker_runtime import DockerRuntime
+
+ # Create a DockerRuntime instance with a mock config
+ runtime = DockerRuntime.__new__(DockerRuntime)
+ runtime.config = MagicMock()
+ runtime.config.sandbox.volumes = '/host/path:/container/path'
+ runtime.config.workspace_mount_path = '/host/path'
+ runtime.config.workspace_mount_path_in_sandbox = '/container/path'
+
+ # Call the actual method that processes volumes
+ volumes = runtime._process_volumes()
+
+ # Assert that the mode remains 'rw' (default)
+ assert volumes[os.path.abspath('/host/path')]['mode'] == 'rw'