Saltar al contenido principal
Lo más importante que debes recordar al darle instrucciones a Devin es ser lo más específico posible. Del mismo modo que proporcionarías una especificación detallada al pedirle a un compañero de trabajo que programe algo, deberías hacer lo mismo con Devin. Esta guía te ayudará a estructurar tus instrucciones/prompts para maximizar la utilidad de Devin. Para conocer estrategias más generales sobre cómo trabajar de forma eficaz con agentes de código, consulta también nuestra guía Coding Agents 101.

Ejemplo de prompt

En el repositorio de Devin, quiero que desarrolles una herramienta que supervise el uso de RAM y CPU de las máquinas remotas en las que se ejecuta Devin. Para ello, realiza las siguientes tareas:
  • Crea una tarea en segundo plano que se inicie automáticamente cuando se inicie devin.rs.
  • La tarea debe abrir una conexión a todas las máquinas remotas generadas mediante fork que se usen en esta sesión de Devin y supervisar su uso de RAM y CPU.
  • Si el uso supera el 80% de los recursos disponibles, emite un nuevo tipo de evento de Devin para indicarlo (revisa cómo usamos Kafka).
  • Diseña esto de forma inteligente, de modo que no bloquee otras operaciones. Debes entender cómo interactúan entre sí todos los contenedores de los subagentes de Devin.

Por qué esto funciona bien

Proporciona contexto útil

  • Detalle: Especifica el repositorio de Devin y el propósito más amplio (monitorear el uso de recursos).
  • Beneficio: Devin conoce claramente el alcance y el dominio.

Da instrucciones paso a paso

  • Detalle: Tareas como “crear una tarea en segundo plano” y “emitir un evento al 80 % de uso”.
  • Beneficio: Divide el trabajo en partes lógicas.

Define criterios de éxito claros

  • Detalle: Define el “éxito” como emitir un evento específico cuando se alcance el 80 % de uso.
  • Beneficio: Devin sabe exactamente qué debe lograr.

Hace referencia a patrones y código existentes

  • Detalle: Menciona Kafka e interacciones con contenedores.
  • Beneficio: Fomenta la reutilización de código o enfoques de diseño ya establecidos.
Prueba el botón de mejora de prompts al crear una sesión (haz clic en el círculo de advertencia amarillo para ver comentarios)
Prompt Improvement Button

Buenas prácticas: lo que se debe y lo que no se debe hacer

Haz esto: proporciona instrucciones claras
  • Por qué: Devin puede atascarse sin un camino claro o cuando se enfrenta a demasiadas posibles interpretaciones.
  • Cómo:
    • Toma tú las decisiones importantes y los juicios de valor por Devin.
    • Ofrece opciones de diseño concretas y estrategias de implementación específicas.
    • Define con claridad el alcance, los límites y los criterios de éxito.
  • Ejemplo: “Optimize the getOrderDetails query in orderService.js by adding a composite index on the order_id and product_id columns in the order_items table. Refactor the query to replace the existing correlated subquery with a JOIN to the products table for fetching product details.”
No hagas esto: dejar decisiones abiertas
  • Por qué: Las instrucciones vagas pueden llevar a que Devin implemente soluciones que no se alineen con tus necesidades reales.
  • Cómo:
    • Evita enunciados que requieran que Devin tome decisiones de diseño o implementación significativas sin orientación. Esto puede generar resultados inesperados.
  • Ejemplo: No hagas esto: “Improve our database’s performance.”
Haz: Elige tareas en las que Devin es bueno
  • Por qué:
    • Maximiza los resultados: Al asignar tareas que se alinean con las capacidades de Devin, puedes obtener los mejores resultados con el menor esfuerzo y la menor cantidad de ACUs posible. Pedirle a Devin que haga tareas que estén muy fuera de sus capacidades actuales a menudo puede dar resultados deficientes.
  • Cómo:
    • Lee esta guía: Cuándo usar Devin
    • Especialmente para tareas avanzadas, proporciona ejemplos, módulos, recursos y plantillas que Devin pueda seguir.
      • Comparte enlaces directos a sitios de documentación para que Devin pueda leer detalles como los cuerpos de las solicitudes de API y funcionalidades que podría no conocer.
      • Comparte nombres de archivos específicos que quieras que Devin revise y de los que aprenda.
    • Ejemplo: Haz: “Refactoriza la gestión de estado en el componente Header para usar el hook useReducer de React y lograr mejor escalabilidad y mantenibilidad. Asegúrate de que se preserve toda la funcionalidad existente y agrega pruebas unitarias para cubrir la nueva lógica de estado.”
    • Ejemplo: Haz: “Usa authTemplate.rs como referencia para mantener la coherencia en el manejo de errores.”
    • Ejemplo: Haz: “Revisa la documentación oficial de Sequelize en https://sequelize.org/docs/v6/getting-started/ para los pasos de migración.”
No hagas: Asignar tareas fuera de las competencias principales de Devin
  • Por qué: Asignar tareas que requieren conocimientos avanzados del dominio o decisiones de diseño complejas sin la orientación adecuada puede generar ineficiencias y desperdicio de ACUs.
  • Cómo:
    • Evita tareas que requieran un aporte creativo significativo o un enfoque estratégico de alto nivel sin instrucciones o referencias claras.
    • Evita tareas que requieran habilidades visuales avanzadas, por ejemplo implementar diseños de Figma, ya que aunque Devin puede ver páginas web, su visión no es perfecta.
    • Evita pedirle a Devin que cree aplicaciones móviles, ya que no tiene acceso a un teléfono y no puede probar su trabajo fácilmente.
  • Ejemplo: No hagas: “Crea un sistema de autenticación nuevo para mi sitio web desde cero.”
  • Ejemplo: No hagas: “Convierte este mockup de Figma en un componente de React.”
  • Ejemplo: No hagas: “Crea una aplicación de compras basada en IA.”
Haz: Colabora completando tareas parciales
  • Por qué: A veces es más rápido que tú termines el último 20 % de una tarea.
  • Cómo:
    • Deja que Devin se encargue de la mayor parte de la implementación y luego encárgate de refinarla.
    • Usa Devin para acelerar las partes del flujo de trabajo que son repetitivas, mientras tú te enfocas en los aspectos más críticos.
  • Ejemplo: Haz: “Genera el código base (boilerplate) inicial para el nuevo endpoint de la API y luego yo lo integraré con el sistema de autenticación existente.”
No hagas: Confiar únicamente en Devin para proyectos complejos completos
  • Por qué: Confiar en exceso en Devin para tareas que requieren una comprensión detallada o una resolución creativa de problemas puede causar retrasos y resultados subóptimos.
  • Cómo:
    • Evita asignarle a Devin tareas que sabes que requerirán una intervención humana significativa para completarse de forma efectiva.
  • Ejemplo: No hagas: “Desarrolla toda la infraestructura de backend para nuestra nueva funcionalidad de IA generativa”
Haz esto: establece comprobaciones claras y frecuentes
  • Por qué: Los comentarios frecuentes (tanto tuyos como de pruebas/verificaciones/linters) garantizan que Devin corrija los errores de forma eficaz.
  • Cómo:
    • Usa pruebas (unitarias/de integración) para confirmar la corrección.
    • Mantén validaciones de compilación, comprobaciones de lint y análisis estático para asegurar la calidad del código.
  • Ejemplo: Haz esto: “Run npm test after each iteration.”
  • Ejemplo: Haz esto: “Ensure the pipeline on CircleCI doesn’t fail.”
  • Ejemplo: Haz esto: “Pass ESLint/Prettier checks before pushing any commits.”
No hagas esto: descuidar la retroalimentación
  • Por qué: Sin comentarios, Devin no sabrá si sus soluciones cumplen con tus estándares.
  • Cómo:
    • Evita asignar tareas sin definir cómo las evaluarás.
Haz esto: define puntos de control y subtareas claras
  • Por qué: Dividir tareas complejas en subtareas y puntos de control más pequeños ayuda a que Devin se mantenga concentrado y reduce los errores.
  • Cómo:
    • Divide las tareas en subtareas verificables e inicia una sesión de Devin para cada subtarea.
    • Define qué se considera éxito para cada subtarea y, opcionalmente, establece puntos de control dentro de cada una.
    • Pídele a Devin que te informe al completar cada punto de control o subtarea.
Ejemplos:
  • Ejemplo: Haz esto: “Al trabajar con el conjunto de datos, verifica que tenga al menos 500 filas y contenga las columnas X, Y, Z.”
  • Ejemplo: Haz esto: “Al modificar la API, confirma que el endpoint devuelva el código de estado 200 e incluya todos los campos requeridos.”
  • Ejemplo: Haz esto: “Al actualizar la UI, comprueba que el componente se renderice sin errores en la consola y que coincida con la especificación de diseño.”
No hagas esto: no te saltes requisitos de validación específicos
  • Por qué: Sin pasos de validación definidos, Devin no puede dar por completadas las tareas con seguridad.
  • Cómo:
    • Evita criterios de éxito vagos.
    • No dejes los pasos de verificación implícitos o sin definir.
  • Ejemplo: No hagas esto: “Asegúrate de que funcione.”
Para tareas repetitivas o complejas, recomendamos usar e iterar con los Playbooks. Obtén más información sobre cómo usar playbooks de forma eficaz. Los playbooks son prompts reutilizables y compartibles que optimizan la delegación de tareas. Por ejemplo, si quieres que Devin se encargue de fallos recurrentes en los builds de CI, crea un playbook que incluya los pasos generales que Devin debe seguir cada vez.

Conclusión

Plantea las tareas con la suficiente estructura y claridad para obtener resultados fiables y satisfactorios.