Pular para o conteúdo principal
Você não precisa escrever isso manualmente. A forma mais fácil de configurar seu ambiente é iniciar uma sessão do Devin e pedir que ele configure o repo. O Devin analisará o projeto, instalará dependências e proporá uma configuração — você clica em Approve nos cartões de sugestão na sua timeline. Este guia é para quando você quiser entender o que o Devin gerou, personalizá-la ou escrever uma configuração do zero.

Como o ambiente do Devin funciona

O Devin roda em sua própria VM. Cada sessão é iniciada a partir de uma imagem da máquina — um snapshot salvo com suas ferramentas, repositórios e dependências pré-instalados. Você controla o que entra nessa imagem editando a configuração do seu ambiente em Configurações > Ambiente do Devin.

Escrevendo sua configuração

Seu environment.yaml tem três seções:
SectionPurposeWhen it runsExecuted?
initializeInstala ferramentas e compila dependênciasApenas no build — os resultados são salvos na imagem da máquinaSim
maintenanceMantém as dependências atualizadas e grava configurações de credenciaisBuild + início de cada sessãoSim
knowledgeNotas curtas vinculadas à configuração do ambiente (por exemplo, comandos de lint/teste)Carregado no início da sessãoNão — apenas notas de referência

initialize — configuração única

Use initialize para qualquer coisa lenta ou que só precise acontecer uma vez: instalar gerenciadores de pacotes, ferramentas globais de CLI, compilar dependências nativas ou adicionar pacotes do sistema. Os resultados ficam salvos na imagem da máquina e não são executados novamente no início da sessão.
initialize: |
  curl -LsSf https://astral.sh/uv/install.sh | sh
  npm install -g pnpm
A string multilinha é executada como um único script bash com set -e, então qualquer linha que falhar interrompe o build. Use \ para continuação de linha ou mude para a forma expandida para etapas nomeadas que aparecem individualmente nos logs de build.
O arquivo de segredos é removido antes de a imagem da máquina ser salva. Se um comando em initialize gravar um valor secreto em um arquivo de configuração (por exemplo, um token de autenticação em .npmrc), esse valor pode permanecer na imagem — o que representa um risco de segurança. Em vez disso, coloque as etapas de gravação de credenciais em maintenance, onde os segredos são carregados novamente a cada sessão.

Forma expandida

Quando precisar de etapas nomeadas, use o formato de lista. Etapas nomeadas tornam os logs de build mais fáceis de depurar — quando algo falhar, você verá em qual etapa ocorreu a falha em vez de apenas um número de linha.
initialize:
  - name: Install uv
    run: curl -LsSf https://astral.sh/uv/install.sh | sh
  - name: Install system packages
    run: |
      sudo apt-get update -qq
      sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -qq libpq-dev ffmpeg
Você pode misturar etapas nomeadas e não nomeadas. Etapas sem run são ignoradas.

Definir variáveis de ambiente

Para definir variáveis de ambiente para as etapas seguintes, grave linhas KEY=VALUE no arquivo $ENVRC (como o $GITHUB_ENV do GitHub Actions). Todas as variáveis gravadas em $ENVRC são exportadas automaticamente para as etapas seguintes e para a sessão do Devin.
initialize:
  - name: Configure environment
    run: |
      echo "NODE_ENV=production" >> $ENVRC
      echo "CI=true" >> $ENVRC

maintenance — em toda sessão

Use maintenance para manter as dependências atualizadas e gravar arquivos de configuração de credenciais. Ele é executado durante o build (após initialize) e no início de cada sessão, após puxar a versão mais recente do código. Como ele é executado no início de toda sessão, os comandos devem ser rápidos e incrementais.
maintenance: |
  npm install
  pip install -r requirements.txt
Use npm install, não npm ci. npm ci exclui node_modules e reinstala tudo do zero a cada execução. npm install faz uma atualização incremental, que é muito mais rápida quando as dependências não mudaram.

Configuração de credenciais

Qualquer etapa que escreva segredos em arquivos de configuração (.npmrc, settings.xml, pip.conf) deve ficar em maintenance, não em initialize. Isso mantém as credenciais atualizadas no início de cada sessão.
maintenance:
  - name: Install dependencies
    run: npm install
  - name: Configure private registry
    run: npm config set //registry.npmjs.org/:_authToken $NPM_TOKEN

knowledge — notas específicas do ambiente (opcional)

Use knowledge para pequenas informações de configuração de que o Devin precisa para realmente usar o ambiente que você acabou de criar — coisas como o comando de lint, o comando de teste ou como iniciar o servidor de desenvolvimento.
Isso não é a mesma coisa que o recurso principal Knowledge. Para a maioria das coisas que você quer que o Devin lembre — arquitetura, convenções, detalhes importantes, workflows da equipe — use o recurso independente Knowledge. Ele tem gatilhos mais avançados, é mais fácil de editar e é o lugar certo para o contexto geral do projeto.Use a seção knowledge em environment.yaml apenas para notas curtas diretamente ligadas à configuração do ambiente neste arquivo (por exemplo, “o comando de lint é npm run lint”). Esta seção é opcional, e a maioria dos ambientes não precisa dela.
As entradas são notas de referência — elas não são executadas. Mantenha-as curtas:
knowledge:
  - name: lint
    contents: |
      Run `npm run lint` to check for errors.
      Run `npm run lint:fix` to auto-fix.
  - name: test
    contents: |
      Run `npm test` for the full suite.
      Run `npm test -- --watch` during development.
  - name: startup
    contents: |
      Run `npm run dev` to start the dev server on port 3000.

Níveis de configuração

O Devin oferece suporte a três níveis de configuração. Os comandos de cada nível são estritamente aditivos — eles são executados em sequência durante as builds, e os níveis inferiores não podem substituir nem modificar o que os níveis superiores configuram.
NívelOnde configurarO que colocar aquiExemplos
Em toda a conta (Enterprise)Configurações do Enterprise > EnvironmentInfraestrutura de que todas as orgs precisamcertificados de CA, proxy corporativo, VPN, DNS
Nível da organizaçãoConfigurações > Environment > Configuração em toda a organizaçãoFerramentas e configuração compartilhadas em todos os repositóriosruntimes de linguagem (pnpm, uv), autenticação do Docker, ferramentas de CLI compartilhadas
Específico do repositórioConfigurações > Environment > [repo]Configuração e conhecimento específicos do projetonpm install, comandos de lint/test/build, notas de arquitetura
Como decidir o que vai em cada lugar:
  • Se toda org no seu Enterprise precisar disso → em toda a conta
  • Se todo repositório na sua org precisar disso → nível da organização
  • Se apenas um repositório precisar disso → específico do repositório
Usuários do Enterprise: Para orientações detalhadas sobre configuração no nível do enterprise — permissões, build em cascata, gerenciamento de várias orgs e migração para o Enterprise — consulte a página Enterprise Environment Setup.

Como funciona

A imagem da máquina

Sua organização tem uma imagem da máquina — um snapshot de uma VM com suas ferramentas, repositórios e dependências pré-instalados. Todos os repositórios configurados são clonados e configurados nessa única imagem. Cada sessão é iniciada a partir de uma cópia nova.

Como as builds funcionam

Uma build cria uma nova imagem da máquina na seguinte ordem:
1. Configuração Enterprise (executada em ~):
   a. initialize
   b. maintenance
2. Configuração em nível da organização (executada em ~):
   a. initialize
   b. maintenance
3. Clonar todos os repositórios (até 10 simultâneos)
4. Para cada repo configurado, na ordem exibida em Configurações
   (executada em ~/repos/<repo-name>):
   a. initialize
   b. maintenance
5. Verificação de integridade, e a imagem é salva
As camadas são aditivas: comandos específicos do repo podem usar ferramentas instaladas pela configuração em nível da organização ou do Enterprise. Níveis inferiores não podem sobrescrever o que um nível superior configurou. Os builds normalmente levam de 5 a 15 minutos. Comandos individuais expiram após 1 hora; o build inteiro expira após 2 horas.

Como as sessões funcionam

Cada sessão inicializa uma nova cópia da imagem da máquina. Quando a sessão termina, todas as mudanças são descartadas. No início da sessão:
  1. As execuções de maintenance do Enterprise e em nível da organização são executadas (em ~).
  2. O código mais recente é obtido do(s) repositório(s) relevante(s).
  3. O maintenance desse repositório é executado novamente para capturar mudanças nas dependências desde a última build.
  4. As entradas de Knowledge desse repositório são carregadas no contexto do Devin.
Knowledge é por repositório. Se você tiver 5 repositórios configurados, o Devin verá apenas as entradas de Knowledge daquele em que estiver trabalhando.

Status da build

StatusSignificado
SuccessTodas as etapas foram concluídas. A imagem da máquina está pronta.
PartialAlguns repositórios falharam, mas a build principal foi bem-sucedida. As sessões funcionarão, mas alguns repositórios podem não estar totalmente configurados.
FailedA build principal falhou (por exemplo, falha na clonagem ou na configuração de Enterprise/org).
CancelledSubstituída por uma build mais recente.
SkippedNenhuma alteração na configuração foi detectada.
A build está falhando? Consulte Solução de problemas e FAQ para ver um guia de depuração passo a passo.

Estados do repositório

Na interface de Configurações do ambiente, os repositórios aparecem em três estados:
EstadoSignificado
ConfiguradoTem configuração YAML com initialize/maintenance/knowledge. Totalmente configurado na imagem da máquina.
IncluídoClonado na imagem da máquina, mas sem configuração personalizada. Devin pode acessar o código.
DisponívelAcessível à org, mas não adicionado ao ambiente. Não clonado.
Incluído vs. configurado: Um repo “incluído” é clonado para que Devin possa acessar o código, mas não tem comandos personalizados de configuração. Um repo “configurado” tem instruções explícitas de initialize/maintenance/knowledge.

O que aciona um rebuild?

Um novo build é acionado quando:
  • Você salva uma configuração em Configurações > Ambiente do Devin
  • Você clica em Rebuild nas Configurações
  • Você aplica uma atualização de ambiente sugerida pelo Devin na sua timeline

Segredos

Use a sintaxe $VARIABLE_NAME para referenciar segredos. Adicione-os em Configurações > Segredos.
maintenance:
  - name: Configure private registry
    run: npm config set //registry.npmjs.org/:_authToken $NPM_TOKEN
Os segredos ficam disponíveis como variáveis de ambiente durante builds e sessões. O arquivo de segredos é removido antes que a imagem da máquina seja salva — mas, se um comando expandiu um valor secreto em um arquivo de configuração durante initialize, esse valor expandido pode persistir na imagem. Em vez disso, sempre grave as credenciais em maintenance, onde elas são recarregadas a cada sessão. Para saber mais sobre gerenciamento de segredos, consulte Segredos & Site Cookies.

Padrões de repositório

Vários repositórios

Quando você configura vários repositórios, cada um recebe seu próprio YAML em Configurações. Durante um build, todos são configurados na mesma imagem — clonados em diretórios separados, com dependências instaladas de forma independente. Durante uma sessão, apenas a manutenção e o Knowledge do repositório ativo são relevantes. E se dois repositórios entrarem em conflito? Os comandos de cada repositório são executados em seu próprio diretório, então conflitos de dependências são raros. Se dois repositórios instalarem versões diferentes de uma ferramenta global ou modificarem arquivos compartilhados (como ~/.bashrc), prevalece o último a ser executado. Coloque as instalações de ferramentas compartilhadas na configuração em nível da organização para evitar isso.

Monorepos

Em um monorepo, você escreve um único YAML que abrange todos os subprojetos. Use subshells para executar comandos em subdiretórios sem alterar o diretório de trabalho das etapas subsequentes:
initialize:
  - name: Install pnpm
    run: npm install -g pnpm
  - name: Install uv
    run: curl -LsSf https://astral.sh/uv/install.sh | sh

maintenance:
  - name: Frontend deps
    run: (cd packages/frontend && pnpm install)
  - name: Backend deps
    run: (cd packages/backend && uv sync)
  - name: Shared library
    run: (cd packages/shared && pnpm install)

knowledge:
  - name: structure
    contents: |
      Monorepo with three packages:
      - `packages/frontend` — React app (TypeScript, pnpm)
      - `packages/backend` — Python API (FastAPI, uv)
      - `packages/shared` — Shared TypeScript utilities
Os parênteses (cd ... && ...) são importantes — eles executam o comando em um subshell, fazendo com que o diretório de trabalho seja redefinido para a próxima etapa. Quando usar configuração multi-repo vs. monorepo: Se o código estiver em um único repositório Git, use um YAML com subshells. Se estiver distribuído em vários repositórios Git, configure cada repo separadamente em Configurações.

Próximas etapas

Referência do YAML

Tabelas de referência de campos, detalhes de execução, ferramentas pré-instaladas e glossário.

Exemplos de configuração

Exemplos prontos para copiar e colar de Node.js, Python, Java, Go, monorepos, padrões para Enterprise e muito mais.

Solução de problemas e FAQ

Solucione falhas de build, migre da configuração interativa e encontre respostas para perguntas comuns.

Configuração de ambiente Enterprise

Permissões, build em cascata, gerenciamento de várias orgs e migração para o Enterprise.