Human-in-the-loop für Eve

Lass deinen Eve-Agenten einen Menschen auf dem Handy fragen.

Eine Datei in agent/channels schickt jede Freigabeanfrage deines Eve-Agenten auf das Handy deines Nutzers.

Was Eve mitbringt

approval: always(), never(), once()

Eve löst das gut. Tools haben ein approval-Feld; eve/tools/approval liefert always(), never() und once(). Die Laufzeit prüft die Richtlinie vor execute, statt darauf zu vertrauen, dass das Modell ein Frage-Tool aufruft. Außerdem gibt es ein integriertes ask_question.

nativ
// agent/tools/issue-refund.ts
import { defineTool } from "eve/tools"
import { always } from "eve/tools/approval"
import { z } from "zod"

export default defineTool({
  description: "Refund an order",
  inputSchema: z.object({ amount: z.number() }),
  approval: always(),
  execute: async ({ amount }) => refund(amount),
})

Wo es nicht weitergeht

  • Die Hilfsfunktionen entscheiden vorab. always() fragt bei jedem Aufruf. Das gewöhnt Menschen daran, ohne Lesen auf Ja zu tippen.
  • Es antwortet, wer im konfigurierten Channel ist. Die integrierten Funktionen können keinen bestimmten deiner Nutzer fragen.
  • Eine Freigabe bleibt ein einzelner Moment in einem Channel. Daraus entsteht kein durchsuchbarer oder exportierbarer Nachweis.

Die Lösung

Pushary holt die Antwort deines Nutzers ein.

Eve pausiert den Turn und zeigt Freigaben als Slack-Buttons an. Der Pushary-Channel schickt dieselbe Anfrage auf das Handy deines Nutzers, wartet auf den Tipp, ohne etwas offen zu halten, und speichert die Antwort.

pusharyChannel() übernimmt jede Anfrage, bei der Eve pausiert: jedes Tool mit einem approval-Feld und das integrierte ask_question. Dein Nutzer tippt auf dem Handy auf „Genehmigen“ oder „Ablehnen“, und der pausierte Turn wird fortgesetzt. Während er entscheidet, läuft nichts. Eine Freigabe kann daher auch Stunden warten.

bash
npm i @pushary/eve
eine Datei
// agent/channels/pushary.ts
import { pusharyChannel } from "@pushary/eve"
export default pusharyChannel()

Oder frage gezielt aus einem Tool heraus

Der Channel deckt ab, was Eve bereits pausiert. Für eine Frage, bei der Eve sonst nicht anhalten würde, ergänzt du zwei Tool-Dateien. pusharyAskHuman() wartet auf die Antwort, pusharyConnectPhone() liefert den Verbindungslink. Das Modell entscheidet selbst, wann es das Frage-Tool aufruft. Es kann daher keine Erstattung sperren. Setze dafür pusharyApproval() in das approval-Feld des Erstattungs-Tools.

zwei Tool-Dateien
// agent/tools/ask-human.ts
import { pusharyAskHuman } from "@pushary/eve"
export default pusharyAskHuman()

// agent/tools/connect-phone.ts
import { pusharyConnectPhone } from "@pushary/eve"
export default pusharyConnectPhone()

So funktioniert es

Von der Installation zur ersten Antwort

Verbinde deinen Nutzer einmal. Sichere den riskanten Schritt mit einer Freigabe ab. Pushary schickt die Frage, wartet auf die Antwort und speichert sie.

  1. 01

    Paket installieren

    Führe npm i @pushary/eve aus. Setze PUSHARY_API_KEY und PUSHARY_WEBHOOK_SECRET sowie PUSHARY_CALLBACK_ORIGIN, wenn der Agent nicht auf Vercel läuft.

  2. 02

    Nutzer einmal verbinden

    pusharyConnectPhone() liefert einen Link. Dein Nutzer öffnet ihn einmal mit der kostenlosen Pushary-App auf seinem Handy. Kein Konto, keine Zahlung.

  3. 03

    Channel-Datei ergänzen

    Erstelle agent/channels/pushary.ts mit pusharyChannel() als Default-Export. Sichere riskante Tools über Eves approval-Feld ab und verwende nutzerbezogene Authentifizierung, damit jeder Nutzer für seine eigene Sitzung antwortet.

  4. 04

    Auf die Antwort reagieren

    Der Tipp sendet die Antwort an die Antwort-Route. Diese prüft zwei Signaturen und setzt den pausierten Turn fort. Bei Nein, abgelaufener Anfrage oder fehlender Antwort wird das Tool nicht ausgeführt.

Eine Frage kann ein Ja oder Nein verlangen, eine Auswahl aus einer Liste oder eine Texteingabe. Jede Antwort wird gespeichert.

Vor der Veröffentlichung

Stolperfallen bei Eve

once() merkt sich nur ein ausdrückliches Ja
Bei Ablehnung oder Fortsetzung ohne Antwort wird das Tool nicht vermerkt. Beim nächsten Aufruf wird erneut gefragt. Das ist das sichere Verhalten, überrascht aber alle, die once() als „nur einmal auslösen“ verstehen. Außerdem verwendet es nur den einfachen Tool-Namen und ignoriert zusammengesetzte Freigabeschlüssel.
Der Channel braucht eine öffentliche Origin; Fehler zeigen sich erst zur Laufzeit
pusharyChannel erstellt eine signierte Callback-URL aus PUSHARY_CALLBACK_ORIGIN oder VERCEL_PROJECT_PRODUCTION_URL und prüft Antworten mit PUSHARY_WEBHOOK_SECRET. Beim Build wird keines davon geprüft. Fehlt ein Wert, läuft das Deployment, kann aber keine Antworten empfangen. Setze beide vor der Veröffentlichung.
Eine gemeinsame Sitzung hat keinen Nutzer zum Fragen
Frage-Tool und Freigaberichtlinie greifen standardmäßig auf den angemeldeten Nutzer der Sitzung zurück. Eine appweite oder gemeinsam genutzte Sitzung hat keinen. Sie lösen daher einen Fehler aus, statt die falsche Person zu fragen. Übergib deine eigene Nutzer-ID oder verwende nutzerbezogene Authentifizierung.

Der Partner-Tarif

Dein Agent fragt deine Nutzer, nicht nur dich

Stelle deinen Nutzern deinen Agenten bereit. Jeder gibt dessen riskante Aktionen vom eigenen Handy aus frei, unter deiner Marke.

$99/ Monat, alle Frameworks enthalten
Start free

Deine Nutzer brauchen kein Pushary-Konto und zahlen nichts an uns.

Deine Nutzer antworten auf ihren eigenen Handys

Verbinde jeden Nutzer einmal über einen Link. Er installiert die kostenlose Pushary-App und antwortet vom Sperrbildschirm aus, ohne eigenes Konto.

Keine Antwort heißt Nein

Führe die Aktion nur nach einer ausdrücklichen Freigabe aus. Eine wartende, abgelaufene oder abgebrochene Anfrage zählt nie als Ja. Pushary behält jede Anfrage, damit dein Code sie nach einem Neustart wieder aufnehmen kann.

Erreicht sie auf dem Handy

Die App kommt zuerst, denn nur sie zeigt „Genehmigen“ und „Ablehnen“ auf dem Sperrbildschirm. Browser-Benachrichtigungen folgen danach. Du musst kein Zustellsystem bauen.

Jede Antwort gespeichert

Zu jeder Antwort wird gespeichert, wer wann geantwortet hat. Du kannst sie durchsuchen und exportieren. Mit einer Callback-URL geht jede Antwort außerdem als signierter Webhook an deinen Server.

FAQ

Fragen und Antworten

Gibt es ein Eve-Paket für Pushary?
Ja. @pushary/eve ist auf npm verfügbar. Es exportiert pusharyChannel() für agent/channels, pusharyApproval() für das approval-Feld eines Tools sowie pusharyAskHuman() und pusharyConnectPhone() als Tool-Dateien. Außerdem gibt es @pushary/eve-extension, das die beiden Tools als einbindbare Erweiterung bereitstellt.
Was deckt der Pushary-Channel ab?
Jede Anfrage, bei der Eve pausiert: jedes mit approval aus eve/tools/approval abgesicherte Tool und das integrierte ask_question. Eve zeigt sie als Buttons in Slack. Der Channel schickt dieselben Anfragen als Push-Benachrichtigung auf das Handy deines Nutzers und setzt den Turn fort, sobald er antwortet.
Wen fragt der Channel standardmäßig?
Den angemeldeten Nutzer der Sitzung. Verwende nutzerbezogene Authentifizierung, damit jeder deiner Nutzer eine eigene Identität hat und der Channel diese Person fragt. Soll immer dieselbe Person antworten, etwa bei einem Einzelnutzer-Agenten oder einem geplanten Lauf, übergib deine eigene Nutzer-ID an pusharyChannel().
Was passiert, wenn niemand eine Eve-Bestätigung beantwortet?
Das Tool läuft nicht. Eine abgelehnte, abgelaufene oder unbeantwortete Bestätigung zählt als nicht genehmigt. Der Agent überspringt die Aktion und kann erklären, warum er angehalten hat. Pushary behält die Anfrage, sodass auch eine unbeantwortete Frage später sichtbar bleibt.
Funktioniert das, wenn eine Eve-Sitzung erst später fortgesetzt wird?
Ja. Eve speichert die pausierte Sitzung, Pushary speichert die Anfrage auf seiner Seite. Beides ist unabhängig. Die Anfrage liegt nicht im Prozess, der sie erstellt hat. Eine Sitzung, die Minuten oder Stunden später fortgesetzt wird, erhält daher weiterhin die Antwort deines Nutzers.
Brauchen meine Nutzer ein Pushary-Konto oder die App?
Kein Konto, aber die kostenlose Pushary-App. Sie öffnen deinen Verbindungslink einmal auf ihrem Handy, verknüpft mit deiner eigenen Nutzer-ID. Sie müssen sich weder bei Pushary registrieren noch uns bezahlen oder einen Schlüssel verwalten.

Lass deinen Eve-Agenten fragen, bevor er handelt.

Verbinde einen Nutzer einmal, frage mit einem Aufruf und führe die Aktion nur bei einem Ja aus. Jede Antwort wird gespeichert.

Start free

Partner-Tarif, $99 im Monat. Deine Nutzer brauchen kein Pushary-Konto und zahlen nichts an uns.