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.
// 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.
npm i @pushary/eve// 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.
// 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.
- 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.
- 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.
- 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.
- 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.
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?
Was deckt der Pushary-Channel ab?
Wen fragt der Channel standardmäßig?
Was passiert, wenn niemand eine Eve-Bestätigung beantwortet?
Funktioniert das, wenn eine Eve-Sitzung erst später fortgesetzt wird?
Brauchen meine Nutzer ein Pushary-Konto oder die App?
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 freePartner-Tarif, $99 im Monat. Deine Nutzer brauchen kein Pushary-Konto und zahlen nichts an uns.