Démarrer avec OpenHands
Vous avez donc installé OpenHands et avez configuré votre LLM. Et maintenant ?
OpenHands peut vous aider à vous attaquer à 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.
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 !
Essayez de demander à l'agent :
Please write a bash script hello.sh that prints "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.
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.
Please modify hello.sh so that it accepts a name as the first argument, but defaults to "world"
Vous pouvez également travailler dans n'importe quel langage dont vous avez besoin, bien que l'agent puisse avoir besoin de passer un peu de temps à configurer son environnement !
Please convert hello.sh to a Ruby script, and run it
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.
Par exemple, nous pourrions construire une application TODO :
Please build a basic TODO list app in React. It should be frontend-only, and all state should be kept in localStorage.
Nous pouvons continuer à itérer sur l'application une fois le squelette en place :
Please allow adding an optional due date to every task
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 :
Please commit the changes and push them to a new branch called "feature/due-dates"
Ajouter du nouveau code
OpenHands peut également faire un excellent travail en ajoutant 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
.
Please add a GitHub action that lints the code in this repository
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 !
Please modify ./backend/api/routes.js to add a new route that returns a list of all tasks
Please add a new React component that displays a list of Widgets to the ./frontend/components directory. It should use the existing Widget component.
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.
Please rename all the single-letter variables in ./app.go
Please break the function
build_and_deploy_widgets
into two functions,build_widgets
anddeploy_widgets
in widget.php
Please break ./api/routes.js into separate files for each 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 trouve la logique.
Currently the email field in the
/subscribe
endpoint is rejecting .io domains. Please fix this.
The
search_widgets
function in ./app.py is doing a case-sensitive search. Please make it case-insensitive.
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 :
The
hello
function crashes on the empty string. Please write a test that reproduces this bug, then fix the code so it passes.
Plus
OpenHands est capable d'aider sur à peu près n'importe quelle tâche de codage. Mais il faut un peu de 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
Voir Bonnes pratiques de prompting pour plus de conseils sur la façon de tirer le meilleur parti d'OpenHands.