mirror of
https://github.com/OpenHands/OpenHands.git
synced 2025-12-26 05:48:36 +08:00
112 lines
5.4 KiB
Plaintext
112 lines
5.4 KiB
Plaintext
# Começando com o OpenHands
|
|
|
|
Então você [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.
|
|
|
|
## Olá Mundo
|
|
|
|
A primeira coisa que você pode querer tentar é um exemplo simples de "olá mundo".
|
|
Isso pode ser mais complicado do que parece!
|
|
|
|
Tente solicitar ao agente:
|
|
> Por favor, 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.
|
|
|
|
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.
|
|
|
|
> Por favor, modifique hello.sh para que ele aceite um nome como o 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!
|
|
|
|
> 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.
|
|
|
|
É 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 lista de tarefas:
|
|
|
|
> 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.
|
|
|
|
Podemos continuar iterando no aplicativo assim que o esqueleto estiver lá:
|
|
|
|
> 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.
|
|
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"
|
|
|
|
|
|
## Adicionando Novo Código
|
|
|
|
O OpenHands também pode fazer um ótimo trabalho adicionando 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 favor, 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ê!
|
|
|
|
> Por favor, 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.
|
|
> 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.
|
|
|
|
> Por favor, renomeie todas as variáveis de uma letra 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.
|
|
|
|
> Por favor, divida ./api/routes.js em arquivos separados para cada rota.
|
|
|
|
## Correções 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.
|
|
|
|
> Atualmente, o campo de e-mail no endpoint `/subscribe` está rejeitando domínios .io. Por favor, 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.
|
|
|
|
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:
|
|
|
|
> 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.
|
|
|
|
## 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.
|
|
|
|
Veja [Melhores Práticas de Prompt](./prompting/prompting-best-practices) para mais dicas sobre como obter o máximo do OpenHands.
|