Schnellreferenz zur Syntax und zum Verhalten von environment.yaml. Konzepte und Anleitungen finden Sie unter Umgebungskonfiguration.
Felder der obersten Ebene
| Feld | Typ | Erforderlich | Ausgeführt während | Beschreibung |
|---|
initialize | String oder Liste | Nein | Nur beim Build | Einmalige Setup-Befehle. Die Ergebnisse werden im Maschinenabbild gespeichert. Sollte idempotent sein. |
maintenance | String oder Liste | Nein | Build + Sitzungsstart | Wiederkehrende Befehle für Abhängigkeiten. Möglichst schnell und inkrementell halten. |
knowledge | Liste von Objekten | Nein | Nie (nur als Referenz) | Informationen, die beim Sitzungsstart in Devins Kontext geladen werden. |
| Feld | Typ | Erforderlich | Beschreibung |
|---|
name | string | Nein | Menschenlesbare Bezeichnung, die in Build-Logs angezeigt wird. Erleichtert die Identifizierung von Fehlern. |
run | string | Nein | Auszuführende Shell-Befehle. Mehrzeilige Strings werden unterstützt. Schritte ohne run werden übersprungen. |
Felder eines Knowledge-Eintrags
| Feld | Typ | Erforderlich | Beschreibung |
|---|
name | string | Ja | Bezeichner (z. B. test, lint, startup, architecture, notes). |
contents | string | Ja | Referenzinhalt. Wird nicht als Befehl ausgeführt. |
- Befehle werden in bash mit aktiviertem
set -e ausgeführt — wenn eine Zeile fehlschlägt, wird der Schritt sofort beendet.
- Repo-spezifische Befehle werden vom Repo-Stammverzeichnis aus ausgeführt (
~/repos/<repo-name>). Enterprise- und Org-Befehle werden vom Home-Verzeichnis aus ausgeführt (~).
- Jeder Schritt in der erweiterten Form läuft in seinem eigenen Shell-Kontext.
| Geltungsbereich | Zeitlimit |
|---|
| Einzelner Befehl | 1 Stunde |
| Gesamter Build | 2 Stunden |
Best Practices:
- Verwenden Sie Subshells für Befehle in Unterverzeichnissen:
(cd packages/frontend && npm install).
- Bevorzugen Sie inkrementelle Installationen in
maintenance (z. B. npm install statt npm ci).
- Vermeiden Sie Build-Befehle (
npm run build, make) in maintenance — sie werden in jeder Sitzung ausgeführt.
- Fügen Sie
-y-Flags hinzu, um interaktive Abfragen zu vermeiden: sudo DEBIAN_FRONTEND=noninteractive apt-get install -y.
- Befehle sollten sich sicher mehrfach ausführen lassen —
maintenance wird in jeder Sitzung ausgeführt.
Das Basis-Image von Devin (Ubuntu 22.04, x86_64) enthält die folgenden Tools. Sie müssen sie nicht installieren.
| Kategorie | Enthalten |
|---|
| Sprachen | Node.js (über nvm), Python 3.12 (über pyenv; 3.9–3.11 sind ebenfalls verfügbar), Rust (über rustup), Java (OpenJDK 17), Scala, Go |
| Paketmanager | npm, yarn, pnpm, pip, cargo |
| Versionsverwaltung | git, gh (GitHub CLI), git-lfs |
| Container | Docker (mit Compose-Plugin — verwenden Sie docker compose, nicht docker-compose) |
| Build-Tools | make, build-essential (gcc, g++) |
| Dienstprogramme | curl, wget, jq, ripgrep, direnv, awscli, ffmpeg, Homebrew, OpenVPN |
| Browser | Chrome (für browserbasierte Tests) |
Diese Liste ist möglicherweise nicht vollständig. Führen Sie which <tool> oder <tool> --version in einer Devin-Sitzung aus, um das zu prüfen. Falls etwas fehlt, installieren Sie es in Ihrem Abschnitt initialize.
| Begriff | Definition |
|---|
| Konfiguration | Eine gespeicherte Umgebungskonfiguration (der YAML-Inhalt). Jedes Repo/jede org/jedes Enterprise hat eine eigene. |
| Konfigurationsversion | Eine bestimmte Revision einer Konfiguration. Bei jedem Speichern wird eine neue Version erstellt. |
| Build | Der Prozess, bei dem eine Konfiguration ausgeführt wird, um ein Maschinenabbild zu erstellen. |
| Maschinenabbild | Die gespeicherte Umgebung, die durch einen erfolgreichen Build erstellt wird. Sitzungen starten mit dem neuesten erfolgreichen Abbild. |
| Konfiguriert | Ein Repository mit expliziter YAML-Konfiguration (Initialisierung/Wartung/Knowledge). |
| Enthalten | Ein Repository, das in das Maschinenabbild geklont wird, aber keine benutzerdefinierte Konfiguration hat. |
| Verfügbar | Ein Repository, auf das die org zugreifen kann, das aber nicht zur Umgebung hinzugefügt wurde. |
| $ENVRC | Eine spezielle Datei zum Festlegen von Umgebungsvariablen. Ähnlich wie GitHub Actions’ $GITHUB_ENV. |
| Teilweise erfolgreich | Ein Build, bei dem der Kern erfolgreich war, aber einige Einrichtungsschritte auf Repository-Ebene fehlgeschlagen sind. |