Pular para o conteúdo principal
A coisa mais importante a ter em mente ao instruir o Devin é ser o mais específico possível. Assim como você forneceria uma especificação detalhada ao pedir a um colega para programar algo, você deve fazer o mesmo com o Devin. Este guia ajudará você a estruturar suas instruções/prompts para maximizar a utilidade do Devin. Para estratégias mais amplas sobre como trabalhar com agentes de código de forma eficaz, confira também nosso guia Coding Agents 101.

Exemplo de Prompt

No repositório do Devin, quero que você crie uma ferramenta que monitore o uso de RAM e CPU das máquinas remotas nas quais o Devin é executado. Para fazer isso, execute as seguintes tarefas:
  • Crie uma tarefa em segundo plano que seja iniciada automaticamente quando o devin.rs for iniciado.
  • A tarefa deve abrir uma conexão com todas as máquinas remotas criadas por fork usadas nesta sessão do Devin e monitorar o uso de RAM e CPU delas.
  • Se o uso exceder 80% do recurso disponível correspondente, emita um novo tipo de evento do Devin para sinalizar isso (verifique como usamos o Kafka).
  • Projete isso de forma inteligente, de modo que não bloqueie outras operações. Você deve entender como todos os contêineres dos subagentes do Devin interagem entre si.

Por que Isso Funciona Bem

Fornece Contexto Útil

  • Detalhe: Especifica o repositório do Devin e o propósito mais amplo (monitorar o uso de recursos).
  • Benefício: Devin entende claramente o escopo e o domínio.

Fornece Instruções Passo a Passo

  • Detalhe: Tarefas como “create a background task” e “emit an event at 80% usage”.
  • Benefício: Divide o trabalho em partes lógicas.

Define Critérios Claros de Sucesso

  • Detalhe: Define “success” como emitir um evento específico ao atingir 80% de uso.
  • Benefício: Devin sabe exatamente o que precisa alcançar.

Faz Referência a Padrões e Código Existentes

  • Detalhe: Menciona Kafka e interações com contêineres.
  • Benefício: Incentiva a reutilização de código ou abordagens de design já estabelecidas.
Experimente o Prompt Improvement Button ao criar uma sessão (clique no círculo de aviso amarelo para ver o feedback)
Prompt Improvement Button

Boas práticas: o que fazer e o que evitar

Faça: Forneça orientações claras
  • Por quê: Devin pode ficar travado sem um caminho claro ou quando se depara com muitas interpretações possíveis.
  • Como:
    • Tome decisões importantes e faça julgamentos em nome do Devin.
    • Ofereça escolhas de design específicas e estratégias de implementação.
    • Defina claramente o escopo, os limites e os critérios de sucesso.
  • Exemplo: “Otimize a consulta getOrderDetails em orderService.js adicionando um índice composto nas colunas order_id e product_id na tabela order_items. Refatore a consulta para substituir a subconsulta correlacionada existente por um JOIN com a tabela products para buscar os detalhes dos produtos.”
Não faça: Deixar decisões em aberto
  • Por quê: Instruções vagas podem levar o Devin a implementar soluções que não atendem às suas necessidades reais.
  • Como:
    • Evite instruções que exijam que o Devin tome decisões significativas de design ou implementação sem orientação. Isso pode levar a resultados inesperados.
  • Exemplo: Não faça: “Melhore a performance do nosso banco de dados.”
Faça: Escolha tarefas em que o Devin é bom
  • Por que:
    • Maximize os resultados: Ao atribuir tarefas que se alinham às capacidades do Devin, você obtém os melhores resultados com o mínimo esforço e ACUs gastos. Pedir ao Devin para fazer tarefas que estão muito além das capacidades atuais dele muitas vezes leva a resultados ruins.
  • Como:
    • Leia este guia: Quando usar o Devin
    • Especialmente para tarefas avançadas, forneça exemplos, módulos, recursos e templates que o Devin possa seguir.
      • Compartilhe links diretos para sites de documentação para que o Devin possa ler detalhes como corpos de requisição de API e funcionalidades que ele talvez não conheça.
      • Compartilhe nomes de arquivos específicos que você quer que o Devin analise e aprenda com eles.
    • Exemplo: Faça: “Refatore o gerenciamento de estado no componente Header para usar o hook useReducer do React para melhor escalabilidade e manutenibilidade. Garanta que toda a funcionalidade existente seja preservada e adicione testes unitários para cobrir a nova lógica de estado.”
    • Exemplo: Faça: “Use authTemplate.rs como referência para manter a consistência no tratamento de erros.”
    • Exemplo: Faça: “Confira a documentação oficial do Sequelize em https://sequelize.org/docs/v6/getting-started/ para as etapas de migração.”
Não faça: Atribuir tarefas fora das principais competências do Devin
  • Por que: Atribuir tarefas que exigem conhecimento avançado do domínio ou decisões de design complexas sem orientação adequada pode levar à ineficiência e ao desperdício de ACUs.
  • Como:
    • Evite tarefas que exijam contribuição criativa significativa ou estratégica em alto nível sem instruções claras ou referências.
    • Evite tarefas que exijam fortes habilidades visuais, por exemplo, implementar designs do Figma, já que, embora o Devin consiga ver páginas web, ele não tem uma visão perfeita.
    • Evite pedir que o Devin crie aplicativos móveis, já que ele não tem acesso a um telefone e não consegue testar facilmente o próprio trabalho.
  • Exemplo: Não faça: “Crie um novo sistema de autenticação para o meu site do zero.”
  • Exemplo: Não faça: “Transforme este mockup do Figma em um componente React.”
  • Exemplo: Não faça: “Crie um app de compras com IA.”
Faça: Colabore concluindo tarefas parciais
  • Por que: Às vezes é mais rápido você concluir os últimos 20% de uma tarefa.
  • Como:
    • Deixe o Devin cuidar da maior parte da implementação e depois faça o refinamento.
    • Use o Devin para acelerar as partes do fluxo de trabalho que são repetitivas, enquanto você se concentra nos aspectos mais críticos.
  • Exemplo: Faça: “Gere o código base inicial (boilerplate) para o novo endpoint de API, e então eu o integrarei ao sistema de autenticação existente.”
Não faça: Confiar apenas no Devin para projetos complexos de ponta a ponta
  • Por que: Confiar demais no Devin para tarefas que exigem entendimento mais aprofundado ou solução criativa de problemas pode causar atrasos e resultados abaixo do ideal.
  • Como:
    • Evite atribuir ao Devin tarefas que você sabe que exigirão intervenção humana significativa para serem concluídas de forma eficaz.
  • Exemplo: Não faça: “Desenvolver toda a infraestrutura de backend para nosso novo recurso de IA generativa”
Faça: estabeleça verificações claras e frequentes
  • Por que: feedback frequente (tanto seu quanto de testes/checks/linters) garante que o Devin corrija erros de forma eficaz.
  • Como:
    • Use testes (unitários/de integração) para confirmar se estão corretos.
    • Mantenha validações de build, verificações de lint e análise estática para garantir a qualidade do código.
  • Exemplo: Faça: “Execute npm test após cada iteração.”
  • Exemplo: Faça: “Garanta que o pipeline no CircleCI não falhe.”
  • Exemplo: Faça: “Passe nas verificações do ESLint/Prettier antes de fazer qualquer commit.”
Não faça: deixar de fornecer feedback
  • Por que: sem feedback, o Devin não saberá se as soluções dele atendem aos seus padrões.
  • Como:
    • Evite atribuir tarefas sem definir como você vai avaliá-las.
Faça: Defina checkpoints e subtarefas claros
  • Por que: Dividir tarefas complexas em checkpoints menores ajuda o Devin a manter o foco e reduz erros.
  • Como:
    • Divida as tarefas em subtarefas verificáveis e inicie uma sessão do Devin para cada subtarefa.
    • Defina o que caracteriza sucesso para cada subtarefa e, opcionalmente, estabeleça checkpoints dentro de cada subtarefa.
    • Peça para o Devin retornar após concluir cada checkpoint ou subtarefa.
Exemplos:
  • Exemplo: Faça: “Ao trabalhar com o conjunto de dados, verifique que ele tenha pelo menos 500 linhas e contenha as colunas X, Y, Z.”
  • Exemplo: Faça: “Ao modificar a API, confirme que o endpoint retorna status 200 e inclui todos os campos obrigatórios.”
  • Exemplo: Faça: “Ao atualizar a UI, verifique que o componente renderiza sem erros no console e corresponde à especificação de design.”
Não faça: Deixar de definir requisitos específicos de validação
  • Por que: Sem etapas de validação definidas, o Devin não consegue concluir tarefas com segurança.
  • Como:
    • Evite critérios de sucesso vagos.
    • Não deixe etapas de verificação implícitas ou indefinidas.
  • Exemplo: Não faça: “Garanta que está funcionando.”
Para tarefas repetitivas ou complexas, recomendamos usar e iterar em Playbooks. Saiba mais sobre como usar playbooks de forma eficaz. Playbooks são prompts reutilizáveis e compartilháveis que simplificam a delegação de tarefas. Por exemplo, se você quiser que o Devin trate falhas recorrentes em builds de CI, crie um playbook que inclua as etapas gerais que o Devin deve seguir sempre.

Conclusão

Defina tarefas com estrutura e clareza suficientes para obter resultados confiáveis e satisfatórios.