Automatisierungen
Automatisierungen führen Anweisungen nach Zeitplan aus und liefern das Ergebnis als normale Chat-Sitzung. Tägliche Zusammenfassung, wöchentliche Prüfung oder Monatsbericht: Jede Ausführung läuft headless auf dem Server, erscheint in deiner Chatliste und kann wie jede Unterhaltung fortgesetzt werden.
Aufbau
Eine Automatisierung hat Namen, Freitextanweisung, bis zu fünf Auslöser, optionales Modell (leer bedeutet Auto: dein Standardmodell zur Laufzeit), Ziel und Benachrichtigung. Chat-Sitzung ist Standard; Work-Aufgabe startet einen isolierten Work-Sandbox, optional mit benannter Richtlinie. Fehler erscheinen bei aktivierten Meldungen auch im Posteingang. Name und Anweisung sind verschlüsselt; Eigentümer ist der Ersteller.
Auslöser sind once, hourly, daily, weekly, monthly und yearly. Der nächste Lauf ist die früheste kommende
Auslösung in der Server-Zeitzone.
Ausführung
Ein Scheduler tickt jede Minute hinter einem Koordinations-Lease, sodass nur eine Replik Zeitpläne fortschreibt.
Bei Fälligkeit registriert er einen Lauf, reiht automation.run.v1 ein und setzt next_run_at per Compare-and-set,
damit jedes Vorkommen höchstens einmal läuft. Der Job erstellt einen Chat und nutzt dieselbe dauerhafte Generierung
einschließlich Routing, Persona-Standards und Persistenz.
Nach Ausfall wird das letzte Vorkommen einmal nachgeholt, ältere entfallen. Pausieren löscht den Plan; Fortsetzen oder
Bearbeiten berechnet neu. Löschen entfernt den Verlauf per Fremdschlüsselkaskade. Der Job-Ledger markiert Erfolg,
Dead-letter-Fehler oder stalled, wenn er nicht innerhalb von 30 Minuten startet.
Work-Ziele verwenden den Work-Lebenszyklus, verlinken die Aufgabe und gelten bei Abschluss oder Eingabeanforderung als
erfolgreich. Entzogener Work-Zugriff führt zu work-access-denied. Richtlinie, Netzwerk und Limits werden beim Speichern
geprüft. Nur direkte Anbieter und toolfähige Modelle funktionieren.
Agentenroutinen
Eine Work-Automatisierung kann über workTaskId an eine bestehende Work-Aufgabe gebunden werden. Dies ist die
Grundlage des Bereichs Routinen im Detailbereich eines Agenten. Eine gebundene Routine erstellt bei
der Auslösung keine neue Aufgabe, sondern startet einen Lauf im Workspace und in der Unterhaltung dieser Aufgabe und
verwendet deren Modell, Anbieter und Laufzeitrichtlinie. Modell- und Richtlinienfelder der Automatisierung gelten daher
nicht; eine angegebene Richtlinie wird beim Speichern entfernt. Die Bindung wird beim Speichern geprüft: Die Aufgabe muss
existieren und dem Aufrufer gehören. Ist sie bei der Auslösung gelöscht, scheitert der Lauf mit work-task-missing.
Läuft sie bereits oder besitzt eine aktive Vorschau, scheitert das Vorkommen ehrlich mit work-task-busy, statt sich
dahinter einzureihen.
Webhook-Auslöser
Neben dem Zeitplan kann ein externes System eine Automatisierung auslösen: CI-Pipeline, Cron-Dienst, Hausautomatisierung. Im Bearbeitungsdialog erzeugt Webhook-Auslöser → Aktivieren ein Secret pro Automatisierung; gespeichert wird nur dessen SHA-256, der Klartext erscheint also genau einmal. Ein Rotieren entwertet das vorherige Secret sofort, Deaktivieren schließt den Endpunkt wieder.
Das externe System löst so aus:
curl -X POST https://your-host/api/automations/<automationId>/webhook \
-H "Authorization: Bearer lwh_..."
(X-Libre-Webhook-Secret: lwh_... funktioniert als alternativer Header.) Die Antwort ist 202 mit der ID des
eingereihten Laufs, derselbe manuelle Pfad wie Sofort ausführen; Läufe werden also identisch abgeschlossen,
gemeldet und im Verlauf geführt. Der Secret-Vergleich läuft in konstanter Zeit, fehlende Automatisierung und
falsches Secret antworten gleich (kein Orakel für Automatisierungs-IDs), und eine pausierte Automatisierung
antwortet 409: Anders als der Eigentümer mit Sofort ausführen kann ein externer Aufrufer nicht durch eine
Pause hindurch auslösen.
API
Alle Endpunkte außer dem Webhook-Auslöser erfordern Authentifizierung und betreffen nur eigene Automatisierungen; der Webhook-Auslöser authentifiziert stattdessen über das Secret der Automatisierung.
| Methode | Pfad | Zweck |
|---|---|---|
GET | /api/automations | Auflisten |
POST | /api/automations | Erstellen |
GET | /api/automations/occurrences?from=&to= | Kommende Vorkommen |
GET | /api/automations/runs | Filterbarer Verlauf |
GET | /api/automations/runs/summary | Ungesehen und 30-Tage-Gruppen |
POST | /api/automations/runs/seen | Fertige als gesehen markieren |
GET | /api/automations/:automationId | Lesen |
PUT | /api/automations/:automationId | Aktualisieren |
DELETE | /api/automations/:automationId | Löschen |
POST | /api/automations/:automationId/pause | Pausieren |
POST | /api/automations/:automationId/resume | Fortsetzen |
POST | /api/automations/:automationId/run | Sofort ausführen (202 mit ID) |
POST | /api/automations/:automationId/webhook | Per Secret auslösen (202) |
POST | /api/automations/:automationId/webhook-secret | Secret erzeugen oder rotieren |
DELETE | /api/automations/:automationId/webhook-secret | Webhook deaktivieren |
Pro Benutzer sind 50 Automatisierungen erlaubt; Namen 200 Zeichen, Anweisungen 20,000.