Come scrivere prompt efficaci
Nel repo di Devin, voglio che tu crei uno strumento che monitori l’utilizzo di RAM e CPU delle macchine remote su cui viene eseguito Devin. Per farlo, svolgi le seguenti attività:
- Crea un’attività in background che si avvii automaticamente all’avvio di devin.rs.
- L’attività deve aprire una connessione a tutte le macchine remote derivate (forked) utilizzate in questa sessione di Devin e monitorarne l’utilizzo di RAM e CPU.
- Se l’utilizzo supera l’80% della risorsa disponibile, emetti un nuovo tipo di evento Devin per segnalarlo (controlla come utilizziamo Kafka).
- Progetta l’architettura in modo intelligente, in modo che non blocchi le altre operazioni. Dovresti capire come tutti i container dei sotto-agent di Devin interagiscono tra loro.
Perché questo funziona bene
Fornisce un contesto utile
- Dettaglio: Specifica il repository di Devin e l’obiettivo più ampio (monitoraggio dell’utilizzo delle risorse).
- Beneficio: Devin conosce chiaramente l’ambito e il dominio.
Fornisce istruzioni passo-passo
- Dettaglio: Attività come “crea un’attività in background” e “emetti un evento all’80% di utilizzo”.
- Beneficio: Scompone il lavoro in parti logiche.
Definisce criteri di successo chiari
- Dettaglio: Definisce il “successo” come l’emissione di uno specifico evento al raggiungimento dell’80% di utilizzo.
- Beneficio: Devin sa esattamente cosa deve ottenere.
Fa riferimento a pattern e codice esistenti
- Dettaglio: Menziona Kafka e le interazioni con i container.
- Beneficio: Incoraggia il riutilizzo di codice o approcci di design consolidati.
Best Practices: cosa fare e cosa non fare
Sii deciso e specifico
Sii deciso e specifico
Da fare: fornire direttive chiare
- Perché: Devin può bloccarsi senza un percorso chiaro o quando si trova di fronte a troppe possibili interpretazioni.
- Come:
- Prendere decisioni importanti e assumere i giudizi critici al posto di Devin.
- Fornire scelte di design specifiche e strategie di implementazione.
- Definire in modo chiaro ambito, confini e criteri di successo.
- Esempio: “Ottimizza la query getOrderDetails in orderService.js aggiungendo un indice composito sulle colonne order_id e product_id nella tabella order_items. Refattorizza la query per sostituire la subquery correlata esistente con una JOIN alla tabella products per recuperare i dettagli dei prodotti.”
- Perché: Istruzioni vaghe possono portare Devin a implementare soluzioni che non sono allineate alle tue reali esigenze.
- Come:
- Evitare indicazioni che richiedono a Devin di prendere decisioni significative di design o implementazione senza un chiaro orientamento. Questo può portare a risultati inaspettati.
- Esempio: Non fare: “Migliora le prestazioni del nostro database.”
Sfrutta al massimo i punti di forza di Devin
Sfrutta al massimo i punti di forza di Devin
Da fare: scegli task in cui Devin è bravo
- Perché:
- Massimizza i risultati: Assegnando task che si allineano alle capacità di Devin, puoi ottenere i risultati migliori con il minimo sforzo e il minor numero di ACU.
- Come:
- Leggi questa guida: Quando usare Devin
- Fornisci esempi, moduli, risorse e template che Devin possa seguire.
- Condividi link diretti ai siti di documentazione, così che Devin possa leggere dettagli come i body delle richieste API e funzionalità che potrebbe non conoscere.
- Condividi nomi di file specifici che vuoi che Devin analizzi e da cui impari.
- Collega le integrazioni MCP per dare a Devin accesso a design Figma, database, strumenti di monitoraggio e altro ancora.
- Esempio: Da fare: “Refattorizza la gestione dello state nel componente Header per usare l’hook useReducer di React e migliorarne scalabilità e manutenibilità. Assicurati che tutta la funzionalità esistente venga preservata e aggiungi unit test per coprire la nuova logica di state.”
- Esempio: Da fare: “Usa authTemplate.rs come riferimento per mantenere la coerenza nella gestione degli errori.”
- Esempio: Da fare: “Consulta la documentazione ufficiale di Sequelize su https://sequelize.org/docs/v6/getting-started/ per i passaggi di migrazione.”
- Perché: Anche se Devin può gestire attività complesse, dà il meglio quando gli fornisci contesto e una direzione chiara.
- Come:
- Per task che richiedono conoscenze di dominio, fornisci documentazione, esempi o riferimenti pertinenti.
- Per task visivi, fornisci file Figma tramite il Figma MCP, design di riferimento o specifiche dettagliate — Devin può costruire a partire da questi ma non inventerà l’estetica da solo.
- Per app mobile, tieni presente che Devin non ha accesso a un emulatore di telefono, quindi fornisci criteri di test chiari.
- Esempio: Da non fare: “Migliora l’aspetto dell’app” — invece, fornisci specifiche di design precise o un file Figma.
- Esempio: Da non fare: “Migliora le prestazioni del nostro database” — invece, specifica quali query ottimizzare e quali metriche prendere di mira.
Usa cicli di feedback
Usa cicli di feedback
Da fare: stabilire verifiche chiare e frequenti
- Perché: feedback frequenti (sia da parte tua che da test/verifiche/linters) garantiscono che Devin corregga gli errori in modo efficace.
- Come:
- Usa test (unitari/di integrazione) per confermare la correttezza.
- Mantieni verifiche di build, controlli di linting e analisi statica per la qualità del codice.
- Abilita Devin Review con Auto-Fix in modo che Devin risponda automaticamente ai commenti di review e agli errori della CI — creando un ciclo chiuso in cui le PR iterano fino a raggiungere una qualità pronta per il merge senza che tu debba intervenire.
- Esempio: Da fare: “Esegui npm test dopo ogni iterazione.”
- Esempio: Da fare: “Assicurati che la pipeline su CircleCI non fallisca.”
- Esempio: Da fare: “Supera i controlli ESLint/Prettier prima di effettuare qualsiasi commit.”
- Perché: senza feedback, Devin non saprà se le sue soluzioni soddisfano i tuoi standard.
- Come:
- Evita di assegnare task senza definire come li valuterai.
Imposta checkpoint
Imposta checkpoint
Da fare: definire checkpoint e sotto-attività chiari
- Perché: Suddividere attività complesse in checkpoint più piccoli aiuta Devin a rimanere concentrato e riduce gli errori.
- Come:
- Suddividi le attività in sotto-attività verificabili e avvia una sessione Devin per ciascuna sotto-attività.
- Definisci cosa significa successo per ciascuna sotto-attività e, facoltativamente, imposta dei checkpoint all’interno di ogni sotto-attività.
- Chiedi a Devin di fornire un resoconto al termine di ogni checkpoint o sotto-attività.
- Esempio: Da fare: “Quando lavori con il dataset, verifica che contenga almeno 500 righe e includa le colonne X, Y, Z.”
- Esempio: Da fare: “Quando modifichi l’API, conferma che l’endpoint restituisca lo status 200 e includa tutti i campi richiesti.”
- Esempio: Da fare: “Quando aggiorni la UI, controlla che il componente venga renderizzato senza errori in console e che corrisponda alle specifiche di design.”
- Perché: Senza passaggi di validazione definiti, Devin non può completare le attività in modo affidabile.
- Come:
- Evita criteri di successo vaghi.
- Non lasciare che i passaggi di verifica siano impliciti o non definiti.
- Esempio: Da non fare: “Assicurati che funzioni.”
Consenti a Devin di testare il proprio lavoro
Consenti a Devin di testare il proprio lavoro
Devin dispone di un ambiente desktop completo — shell, IDE e browser. Chiedi a Devin di testare il proprio lavoro prima di aprire una PR:
- Avvia l’app: “Esegui
npm run deve verifica che la nuova pagina venga visualizzata su/settings.” - Test nel browser: “Apri il browser, vai alla pagina di login e conferma che il flusso OAuth si completi correttamente.”
- Verifica visiva: “Acquisisci screenshot alle larghezze desktop (1440px) e mobile (375px) e conferma che il layout corrisponda al design.”
- Registrazione schermo: “Effettua una registrazione dello schermo mentre testi l’intero flusso di checkout end‑to‑end.”
Usa Playbooks e Knowledge
Usa Playbooks e Knowledge
Per attività ripetitive o complesse, consigliamo di usare e perfezionare i Playbooks. Scopri di più su come usare i playbook in modo efficace. I playbook sono prompt riutilizzabili e condivisibili che semplificano l’assegnazione dei task. Ad esempio, se vuoi che Devin gestisca i continui errori nei build CI, crea un playbook che includa i passaggi generali che Devin dovrebbe seguire ogni volta.Per il contesto persistente che Devin deve ricordare in tutte le sessioni — come standard di coding, bug comuni e relative correzioni, workflow di deployment o il modo in cui usare gli strumenti interni — usa Knowledge. Gli elementi di Knowledge vengono richiamati automaticamente quando sono pertinenti, così non devi ripetere le stesse istruzioni in ogni prompt. Puoi associare elementi di Knowledge a repo specifici oppure applicarli a livello globale.
