getting-started.mdx 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. # Démarrer avec OpenHands
  2. Vous avez donc [installé OpenHands](./installation) et avez
  3. [configuré votre LLM](./installation#setup). Et maintenant ?
  4. OpenHands peut vous aider à vous attaquer à une grande variété de tâches d'ingénierie. Mais la technologie
  5. est encore nouvelle, et nous sommes loin d'avoir des agents capables de prendre en charge des tâches
  6. 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
  7. fait bien, et où il pourrait avoir besoin d'un coup de main.
  8. ## Hello World
  9. La première chose que vous voudrez peut-être essayer est un simple exemple "hello world".
  10. Cela peut être plus compliqué qu'il n'y paraît !
  11. Essayez de demander à l'agent :
  12. > Please write a bash script hello.sh that prints "hello world!"
  13. Vous devriez constater que l'agent non seulement écrit le script, mais définit également les
  14. permissions correctes et exécute le script pour vérifier la sortie.
  15. Vous pouvez continuer à demander à l'agent d'affiner votre code. C'est une excellente façon de
  16. travailler avec les agents. Commencez simplement, et itérez.
  17. > Please modify hello.sh so that it accepts a name as the first argument, but defaults to "world"
  18. 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
  19. temps à configurer son environnement !
  20. > Please convert hello.sh to a Ruby script, and run it
  21. ## Construire à partir de zéro
  22. Les agents se débrouillent exceptionnellement bien pour les tâches "greenfield" (tâches où ils n'ont pas besoin
  23. de contexte sur une base de code existante) et ils peuvent simplement commencer à partir de zéro.
  24. Il est préférable de commencer par une tâche simple, puis d'itérer. Il est également préférable d'être
  25. aussi précis que possible sur ce que vous voulez, sur la pile technologique à utiliser, etc.
  26. Par exemple, nous pourrions construire une application TODO :
  27. > Please build a basic TODO list app in React. It should be frontend-only, and all state
  28. > should be kept in localStorage.
  29. Nous pouvons continuer à itérer sur l'application une fois le squelette en place :
  30. > Please allow adding an optional due date to every task
  31. Tout comme avec le développement normal, il est bon de commiter et de pousser votre code fréquemment.
  32. De cette façon, vous pouvez toujours revenir à un ancien état si l'agent dévie.
  33. Vous pouvez demander à l'agent de commiter et de pousser pour vous :
  34. > Please commit the changes and push them to a new branch called "feature/due-dates"
  35. ## Ajouter du nouveau code
  36. OpenHands peut également faire un excellent travail en ajoutant du nouveau code à une base de code existante.
  37. Par exemple, vous pouvez demander à OpenHands d'ajouter une nouvelle action GitHub à votre projet
  38. qui analyse votre code. OpenHands peut jeter un coup d'œil à votre base de code pour voir quel langage
  39. il doit utiliser, mais ensuite il peut simplement déposer un nouveau fichier dans `./github/workflows/lint.yml`.
  40. > Please add a GitHub action that lints the code in this repository
  41. Certaines tâches peuvent nécessiter un peu plus de contexte. Bien qu'OpenHands puisse utiliser `ls` et `grep`
  42. pour rechercher dans votre base de code, fournir le contexte à l'avance lui permet d'aller plus vite,
  43. et plus précisément. Et cela vous coûtera moins de tokens !
  44. > Please modify ./backend/api/routes.js to add a new route that returns a list of all tasks
  45. > Please add a new React component that displays a list of Widgets to the ./frontend/components
  46. > directory. It should use the existing Widget component.
  47. ## Refactoring
  48. OpenHands est excellent pour refactoriser du code existant, surtout par petits morceaux.
  49. Vous ne voulez probablement pas essayer de réarchitecturer toute votre base de code, mais diviser
  50. les longs fichiers et fonctions, renommer les variables, etc. ont tendance à très bien fonctionner.
  51. > Please rename all the single-letter variables in ./app.go
  52. > Please break the function `build_and_deploy_widgets` into two functions, `build_widgets` and `deploy_widgets` in widget.php
  53. > Please break ./api/routes.js into separate files for each route
  54. ## Corrections de bugs
  55. OpenHands peut également vous aider à traquer et corriger des bugs dans votre code. Mais, comme tout
  56. développeur le sait, la correction de bugs peut être extrêmement délicate, et souvent OpenHands aura besoin de plus de contexte.
  57. Cela aide si vous avez diagnostiqué le bug, mais que vous voulez qu'OpenHands trouve la logique.
  58. > Currently the email field in the `/subscribe` endpoint is rejecting .io domains. Please fix this.
  59. > The `search_widgets` function in ./app.py is doing a case-sensitive search. Please make it case-insensitive.
  60. Il est souvent utile de faire du développement piloté par les tests lors de la correction de bugs avec un agent.
  61. Vous pouvez demander à l'agent d'écrire un nouveau test, puis d'itérer jusqu'à ce qu'il corrige le bug :
  62. > The `hello` function crashes on the empty string. Please write a test that reproduces this bug, then fix the code so it passes.
  63. ## Plus
  64. OpenHands est capable d'aider sur à peu près n'importe quelle tâche de codage. Mais il faut un peu de pratique
  65. pour en tirer le meilleur parti. N'oubliez pas de :
  66. * Garder vos tâches petites
  67. * Être aussi précis que possible
  68. * Fournir autant de contexte que possible
  69. * Commiter et pousser fréquemment
  70. Voir [Bonnes pratiques de prompting](./prompting-best-practices) pour plus de conseils sur la façon de tirer le meilleur parti d'OpenHands.