Workspace nativi (consigliato)
Crea un blueprint separato per ogni sottodirectory. Ogni workspace ha le proprie sezioni initialize, maintenance e Knowledge, con la directory di lavoro impostata automaticamente sulla sottodirectory corrispondente.
Subshells
Esegui i comandi nelle sottodirectory all’interno di un singolo blueprint usando
(cd dir && command). È più semplice per monorepo di piccole dimensioni con pochi package.Workspace nativi
Consigliati per la maggior parte dei monorepo. I workspace nativi forniscono a ogni sottodirectory il proprio blueprint, con setup, Knowledge e directory di lavoro isolati. Questa soluzione è più ordinata e più facile da mantenere rispetto ai subshells, man mano che aumenta il numero di package.
cd o di subshells.
Il blueprint radice
Ogni repo che usa workspace native deve avere un blueprint radice. Il blueprint radice viene eseguito dalla radice del repository prima di qualsiasi blueprint con ambito workspace. Usalo per la configurazione condivisa valida per l’intero repo — ad esempio per installare runtime, strumenti globali o le dipendenze a livello della radice.Creare un workspace
- Vai a Settings > Environment > Blueprints
- Fai clic sul repository
- Apri la tab Workspaces e fai clic su Add blueprint
- Inserisci il percorso della sottodirectory (ad es.
packages/frontend) - Scrivi il blueprint per quel workspace
Esempio
Un monorepo con un frontend React e un backend Python. Il blueprint radice installa gli strumenti condivisi, poi ogni workspace gestisce le proprie dipendenze:- Root
- packages/frontend
- packages/backend
knowledge di ciascun workspace sono limitate a quella sottodirectory. Quando Devin lavora in packages/frontend, vede i comandi lint/test/dev del frontend, non quelli del backend.
Quando usare i workspace nativi
- Le sottodirectory usano linguaggi o gestori di pacchetti diversi
- Ogni package ha bisogno di proprie voci di Knowledge (comandi di lint, test, build)
- Vuoi una configurazione isolata — un blueprint non funzionante in un workspace non blocca gli altri
- Il numero di package è in crescita e un singolo blueprint sta diventando difficile da gestire
Subshells
Per i monorepo più semplici, puoi gestire tutto all’interno di un unico blueprint tramite subshell. Racchiudi i comandi tra parentesi per eseguirli in una sottodirectory senza influire sui passaggi successivi:(cd ... && ...) creano una subshell. Quando la subshell termina, la directory di lavoro torna alla radice della repo per il passaggio successivo.
Perché le subshell sono importanti
Confronta questi due approcci:- Corretto (subshell)
- Errato (senza subshell)
packages/ corretta.Quando usare le subshell
- Il monorepo ha pochi pacchetti con una configurazione semplice
- Tutti i pacchetti condividono lo stesso linguaggio di programmazione e lo stesso gestore di pacchetti
- Non sono necessarie voci di Knowledge per singolo pacchetto
Voci di Knowledge per i monorepo
Che tu usi workspace nativi o subshell, delle voci di Knowledge ben strutturate aiutano Devin a orientarsi nel codebase:Esempi
Workspace Turborepo / Nx
Per i workspace gestiti da uno strumento di build monorepo come Turborepo o Nx, installa le dipendenze alla radice e lascia che lo strumento gestisca l’orchestrazione dei singoli pacchetti:Più versioni del JDK
Un monorepo Java in cui servizi diversi richiedono versioni diverse del JDK:Blueprint dell’org per gli strumenti condivisi
Quando più package di un monorepo condividono gli stessi strumenti, installali una sola volta nel blueprint per tutta l’org. Vai su Settings > Environment > Blueprints e clicca su Edit nella riga Organization blueprint della sezione Configuration:Buone pratiche
Preferisci workspace nativi per i monorepo complessi
Preferisci workspace nativi per i monorepo complessi
Quando ogni sottodirectory ha il proprio linguaggio, gestore di pacchetti o processo di build, i workspace nativi mantengono ogni blueprint focalizzato e indipendente. Riserva le subshell ai casi semplici con pochi pacchetti.
Usa sempre le subshell per i cambi di directory
Usa sempre le subshell per i cambi di directory
Quando usi l’approccio basato su subshell, racchiudi i comandi
cd tra parentesi: (cd dir && command). Questo impedisce che il cambio di directory di un passaggio influisca su quello successivo.Metti gli strumenti condivisi nel blueprint dell'org
Metti gli strumenti condivisi nel blueprint dell'org
I runtime dei linguaggi e i gestori di pacchetti usati in più repo appartengono al blueprint per tutta l’org. Questo evita duplicazioni e mantiene i blueprint delle repo focalizzati sulla configurazione specifica del progetto.
Ordina i passaggi di maintenance in base alle dipendenze
Ordina i passaggi di maintenance in base alle dipendenze
Se il pacchetto A dipende dal fatto che il pacchetto B venga compilato per primo, elenca il passaggio di build di B prima del passaggio di installazione di A in
maintenance. I passaggi del blueprint vengono eseguiti in sequenza nell’ordine indicato.Aggiungi una voce di Knowledge sulla struttura
Aggiungi una voce di Knowledge sulla struttura
Una voce di Knowledge chiamata
structure, che associa le directory ai rispettivi linguaggi e strumenti, aiuta Devin a orientarsi nella codebase. Includi quale gestore di pacchetti usa ogni sottodirectory ed eventuali dipendenze tra pacchetti.Usa voci di Knowledge per pacchetto
Usa voci di Knowledge per pacchetto
Invece di un’unica grande voce di Knowledge, crea voci separate per ogni pacchetto (ad es.
frontend, backend, ml-pipeline). Con i workspace nativi, ogni workspace include già la propria sezione Knowledge.Mantieni incrementale la sezione maintenance
Mantieni incrementale la sezione maintenance
Usa
pnpm install (non pnpm install --force) e uv sync (non rm -rf .venv && uv sync). I comandi incrementali sono più veloci durante le ricostruzioni periodiche.Pagine correlate
- Configurazione dichiarativa dell’ambiente
- Riferimento del blueprint
- Libreria dei template — con template monorepo pronti all’uso

