Verwenden Sie Kubernetes? devin-outpost-k8s
ist ein Open-Source-Operator, der diesen Ablauf für Sie implementiert: Er überwacht die
Warteschlange, beansprucht ausstehende Sitzungen und führt jede davon als Worker-Pod auf einem beliebigen
zertifizierten Cluster (GKE, EKS, …) aus. Installieren Sie ihn über das Helm-Chart, anstatt
einen eigenen Orchestrator zu erstellen.
Der grundlegende Ablauf
1. Einen outpost registrieren
rhel, gpu-h200 oder my-outpost). Erstellen Sie einen mit devin worker outpost create:
In der fleet API werden Outposts als
outposts-Ressourcen dargestellt, die
auf Ihr Konto beschränkt sind (gemeinsam für alle zugehörigen Organisationen). Siehe die
Outposts-Endpunkte.2. Fleet API auf wartende Sitzungen überwachen
metadata.session_id aus und tolerieren Sie Duplikate. Siehe Wartende Sitzungen auflisten und Änderungen überwachen für Abfrageparameter, Antwortformate und die vollständige Paginierungssemantik.
3. Vor der Bereitstellung beanspruchen
acceptor_id — eine von Ihrem Worker selbst gemeldete Identität:
409. Das Beanspruchen stellt sicher, dass innerhalb der vom Server zugewiesenen Claim-Frist (status.claim_deadline) ein Worker bereit ist; abgelaufene Beanspruchungen kehren automatisch in die Warteschlange zurück. Wenn die Bereitstellung fehlschlägt, gib die Beanspruchung frei, damit die Sitzung sofort in die Warteschlange zurückkehrt.
4. Eine Maschine bereitstellen und den Worker ausführen
--acceptor-id, die Sie für das Beanspruchen per API verwendet haben, und geben Sie das Token über --token oder DEVIN_OUTPOSTS_TOKEN an (siehe die vollständige Liste der Flags). Der Worker verbindet sich mit Devins Cloud, markiert die Sitzung als bereit und beginnt mit der Ausführung von Tool-Aufrufen.
5. Beenden Sie die Maschine, wenn der Worker beendet ist
devin worker start beendet ist, ist die Sitzung vorbei (oder wurde angehalten). Beenden Sie die VM oder den Container. Wenn Ihr Outpost fortsetzbar ist, erstellen Sie vor dem Beenden einen Snapshot der Maschine, damit Sie sie wiederherstellen können, falls die Sitzung fortgesetzt wird.
Ihr Orchestrator kann seine beanspruchten Sitzungen und deren Zustände verfolgen:
status.session_status von pending, running, suspended oder terminated an.
Planung ohne zentrale Koordination
Wenn Sie planen, mehr als ~16 Koordinatoren (Worker oder Orchestratoren,
die einen Outpost überwachen und daraus Sitzungen beanspruchen) zu betreiben, wenden Sie sich zuerst an Ihr Account-Team — größere
Flotten verstärken die Konkurrenz um Beanspruchungen und die Leselast der Warteschlange. Wir möchten
sicherstellen, dass der Outpost dafür passend bereitgestellt ist.
- Beanspruchungen sind der einzige Koordinationsmechanismus. Jeder Worker überwacht die Warteschlange unabhängig und versucht, ausstehende Sitzungen zu beanspruchen. Eine Beanspruchung ist ein atomares Compare-and-Swap auf dem Server: Genau ein Worker gewinnt, und alle anderen erhalten einen
409und wechseln einfach zur nächsten ausstehenden Sitzung. Einen Wettlauf beim Beanspruchen zu verlieren, ist normal und kein Fehler. - Jeder Worker hat seine eigene Identität. Die
acceptor_idbegrenzt die Beanspruchungen, Verlängerungen und die Wiederherstellung nach einem Neustart auf genau diesen Worker.devin worker starterzeugt und speichert automatisch eine pro Maschine, sodass für eine Flotte keine Identitätskonfiguration erforderlich ist. Verwenden Sie niemals dieselbe Acceptor-ID (oder ein kopiertes Worker-Datenverzeichnis) auf mehreren Maschinen — kollidierende Worker stehlen sich gegenseitig die Beanspruchungen. - Fehler heilen sich selbst. Wenn ein Worker nach dem Beanspruchen ausfällt, läuft seine Beanspruchung mit Ablauf der Claim-Frist ab und die Sitzung kehrt in die Warteschlange zurück, damit ein anderer Worker sie übernehmen kann. Es ist kein fleetweites Health-Tracking erforderlich.
Einen benutzerdefinierten Orchestrator erstellen
devin worker start macht, ist direkt über die fleet API verfügbar, sodass Sie die CLI vollständig ersetzen können: Laden Sie die devin-remote-Binärdatei aus der statischen Distribution von Devin herunter und starten Sie sie selbst mit den dokumentierten Umgebungsvariablen. Weitere Informationen finden Sie unter Verteilung der Remote-Binärdatei und im Spawn-Contract in der Referenz.
