devin-remote-Binärdatei und die Spawn-Spezifikation für benutzerdefinierte Orchestratoren.
Authentifizierung
Outposts sind Ihrem Konto zugeordnet und werden von allen zugehörigen Organisationen gemeinsam genutzt.
CLI
devin worker start
devin-remote-Binärdatei herunter und führt Sitzungen aus. Führen Sie den Befehl in dem Verzeichnis aus, das die ausgecheckten Repositorys der Sitzung enthält.
Die Umgebung des Workers kann außerdem
DEVIN_CHROME_PATH enthalten, um Sitzungen für Browser-Funktionen auf eine Chrome-/Chromium-Binärdatei zu verweisen.
devin worker outpost create
Gibt die ID des neuen Outposts aus (
outpost_env-...). Sie können Outposts auch in der Web-App unter Settings → Environment → Outposts erstellen.
devin worker outpost delete
Fleet API
https://api.devin.ai/opbeta/outposts/ verfügbar und verwenden ein Bearer-Token:
metadata-/spec-/status-Struktur, und die Warteschlange verwendet die Kubernetes-Semantik „list-then-watch“ mit mindestens einmaliger Zustellung.
Objekte
Warteschlangeneintrag (devins)
spec.network_policy gibt an, ob der Netzwerkzugriff der Sitzung eingeschränkt ist (enabled) und welche Ziele zulässig sind (allow): Hostname-Muster ({"hostname": ...}), IPv4-Adressen/CIDRs ({"ipv4": ...}) oder IPv6-Adressen/CIDRs ({"ipv6": ...}).
Outpost
Sitzungen in der Warteschlange auflisten
Beispielantwort:
- Übergeben Sie den
Cursorjeder Antwort in die nächste Anfrage, solangehas_next_pagetrueist. - Die Zustellung erfolgt mindestens einmal: Eine Sitzung an einer Seitengrenze kann auf beiden Seiten erscheinen. Führen Sie daher Upserts für Einträge anhand von
metadata.session_idaus, anstatt jedes Element als neu zu behandeln (das Claim-CAS macht Duplikate unschädlich). - Wenn
has_next_pagefalsewird, speichern Sie den zurückgegebenen Cursor als Startposition für einen Watch.
Änderungen beobachten
MODIFIED-Ereignisse werden ausgelöst, wenn sich der Warteschlangeneintrag einer Sitzung ändert (neu in die Warteschlange aufgenommene Sitzungen kommen ebenfalls als MODIFIED an); DELETED-Ereignisse werden ausgelöst, wenn er entfernt wird. Jedes SSE-data-Feld enthält:
- Persistieren Sie nach der Verarbeitung jedes Ereignisses dessen
cursorauf oberster Ebene; stellen Sie die Verbindung mit dem zuletzt persistierten Cursor wieder her, um Änderungen wiederzugeben, die während der Unterbrechung aufgetreten sind. - Die Zustellung erfolgt mindestens einmal — tolerieren Sie doppelte Ereignisse.
- Streams enden nach spätestens fünf Minuten; eine Watch-Schleife mit Wiederverbindung wird erwartet.
phase- undacceptor_id-Filter werden ignoriert, wennwatch=true; filtern Sie beobachtete Ereignisse stattdessen anhand der Felder imobjectjedes Ereignisses.- Wenn der Cursor weggelassen wird, beginnt der Stream am Anfang. Verwenden Sie daher für den normalen Abgleich list-then-watch.
Einen Queue-Eintrag abrufen
Eine Sitzung übernehmen
409 fehl. Eine erfolgreiche Beanspruchungsantwort enthält status.connect_token und status.gateway_url — die Zugangsdaten, die devin-remote zum Herstellen der Verbindung benötigt (siehe den Spawn-Spezifikation).
Mit der Beanspruchung wird zugesichert, dass ein Worker innerhalb der vom Server zugewiesenen Claim-Deadline (status.claim_deadline) bereit ist; abgelaufene Beanspruchungen kehren automatisch in die Warteschlange zurück.
Eine Beanspruchung freigeben
Outposts
orchestrator erforderlich; jede Outpost-Antwort enthält die aktuellen Werte von status.queue_depth und status.active_claims.
Verteilung von Remote-Binärdateien
devin worker start lädt automatisch die passende devin-remote-Binärdatei herunter. Benutzerdefinierte Orchestratoren, die nicht die Devin CLI verwenden, können sie direkt hier abrufen:
Wenn der Warteschlangeneintrag der Sitzung ein
spec.remote_binary_sha enthält, verwenden Sie diesen SHA-Wert anstelle von latest — dadurch wird die Sitzung auf eine bestimmte getestete Version angepinnt.
Spawn-Spezifikation
devin-remote selbst startet, statt devin worker start zu verwenden, starten Sie ihn wie folgt:
Geben Sie dem Remote eine saubere Umgebung, die nur die oben genannten Variablen sowie grundlegende Systemvariablen enthält (
PATH, HOME, USER, LOGNAME, TMPDIR, LANG, TZ und — für die Bildschirmaufnahme des Desktop-Streams unter Linux/X11 — DISPLAY, WAYLAND_DISPLAY, XAUTHORITY). Geben Sie nichts an das Remote weiter, was der Agent nicht sehen können soll: Es wird von der Shell des Agenten vererbt.
Zusätzliche Lifecycle-Erwartungen:
- Arbeitsverzeichnis: Starten Sie das Remote in dem Verzeichnis, das die Repositories der Sitzung enthält (dieselbe Regel wie bei
devin worker start). - Sitzungsende: Wenn die Sitzung endet (in den sleep-Zustand wechselt oder beendet wird), benachrichtigt Devin das Remote und es beendet sich selbst mit Status 0. Behandeln Sie einen sauberen Exit als Ende der Sitzung: Bestätigen Sie, dass
status.session_statusdes Warteschlangeneintragssuspendedoderterminatedist (die Statusaktualisierung kann dem Exit um einige Sekunden hinterherhinken, lesen Sie also einige Male erneut), und geben Sie dann den Claim frei. Als Fallback pollen Siestatus.session_statusauch, während das Remote läuft, und beenden den Prozess selbst, sobald esterminatederreicht (oder der Warteschlangeneintrag verschwindet).

