Cómo redactar prompts eficaces
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.
Buenas prácticas: lo que se debe y lo que no se debe hacer
Ten opiniones claras y sé específico
Ten opiniones claras y sé específico
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.”
- 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.”
Aprovecha las capacidades de Devin
Aprovecha las capacidades de Devin
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.
- Cómo:
- Lee esta guía: Cuándo usar Devin
- 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.
- Conecta las integraciones MCP para darle a Devin acceso a diseños de Figma, bases de datos, herramientas de monitoreo y más.
- 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.”
- Por qué: Aunque Devin puede encargarse de trabajo complejo, rinde mejor cuando le proporcionas contexto y una dirección clara.
- Cómo:
- Para tareas que requieren conocimiento del dominio, proporciona documentación, ejemplos o referencias relevantes.
- Para tareas visuales, proporciona archivos de Figma a través del Figma MCP, diseños de referencia o especificaciones detalladas: Devin puede construir a partir de esto, pero no va a inventar la estética por sí solo.
- Para aplicaciones móviles, ten en cuenta que Devin no tiene acceso a un emulador de teléfono, así que proporciona criterios de prueba claros.
- Ejemplo: No hagas: “Make the app look better” — en su lugar, proporciona especificaciones de diseño concretas o un archivo de Figma.
- Ejemplo: No hagas: “Improve our database’s performance.” — en su lugar, especifica qué consultas optimizar y qué métricas quieres mejorar.
Utiliza ciclos de retroalimentación
Utiliza ciclos de retroalimentación
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.
- Activa Devin Review con Auto-Fix para que Devin responda automáticamente a los comentarios de revisión de código y a los fallos de CI, creando un ciclo cerrado en el que los PR iteran hasta alcanzar una calidad lista para hacer merge sin que tengas que intervenir.
- 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.”
- 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.
Configurar puntos de control
Configurar puntos de control
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.
- 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.”
- 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.”
Permite que Devin pruebe su propio trabajo
Permite que Devin pruebe su propio trabajo
Devin tiene un entorno de escritorio completo — shell, IDE y navegador. Indícale a Devin que pruebe su propio trabajo antes de abrir un PR:
- Inicia la aplicación: “Run
npm run devand verify the new page renders at/settings.” - Pruebas en el navegador: “Open the browser, navigate to the login page, and confirm the OAuth flow completes successfully.”
- Verificación visual: “Take screenshots at desktop (1440px) and mobile (375px) widths and confirm the layout matches the design.”
- Grabación de pantalla: “Record yourself testing the checkout flow end-to-end.”
Usar Playbooks y Knowledge
Usar Playbooks y Knowledge
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.Para contexto persistente que Devin deba recordar en todas las sesiones —como estándares de codificación, errores comunes y sus soluciones, flujos de despliegue o cómo usar herramientas internas— usa Knowledge. Los elementos de Knowledge se recuperan automáticamente cuando son relevantes, así que no necesitas repetir las mismas instrucciones en cada prompt. Puedes fijar Knowledge a repos específicos o aplicarlo de forma global.
