Human-in-the-loop für Hermes
Menschliche Entscheidungen für Hermes-Agenten, auf dem Handy.
Ein Aufruf in deinem riskanten Hermes-Tool reicht: Es wartet, bis dein Nutzer auf dem Handy zustimmt.
Was Hermes mitbringt
Freigabe gefährlicher Befehle und pre_tool_call
Hermes erkennt gefährliche Befehle bereits und fragt vor der Ausführung: einmal erlauben, für die Sitzung erlauben, immer erlauben oder ablehnen. Standardmäßig wartet diese Frage im Terminal. Plugins können außerdem einen pre_tool_call-Hook registrieren, der vor jedem Tool läuft.
Wo es nicht weitergeht
- Die integrierte Freigabe fragt die Person, die Hermes ausführt, nicht den Nutzer, den die Aktion betrifft.
- Hermes bricht einen pre_tool_call-Hook standardmäßig nach 30 Sekunden ab und sperrt den Aufruf.
- Im Gateway-Modus nutzen viele Nutzer denselben Agenten. Eine Sitzungs-ID bezeichnet ein Gespräch, keine Person.
Die Lösung
Pushary holt die Antwort deines Nutzers ein.
Ein Hermes-Tool-Handler ist eine normale Python-Funktion. Ein decisions.ask()-Aufruf darin schickt die Frage auf das Handy deines Nutzers, wartet auf Freigabe oder Ablehnung und speichert die Antwort.
Das Plugin registriert ein ask_human-Tool, dessen Handler decisions.ask() aufruft. Die Frage geht auf das Handy deines Nutzers. Der Handler wartet auf die Antwort, standardmäßig 55 Sekunden. Alles außer einem ausdrücklichen Ja kommt als nicht genehmigt zurück.
pip install pusharyimport os
from pushary import PusharyServer
px = PusharyServer(api_key=os.environ["PUSHARY_API_KEY"])
def ask_human(params, **kwargs):
d = px.decisions.ask(
question=params["question"],
external_id=current_user_id(), # your own user id, never the model's
type="confirm",
)
return "approved" if d["approved"] else f"not approved ({d['status']})"
def register(ctx):
ctx.register_tool(
name="ask_human",
toolset="approvals",
schema={"type": "object", "properties": {
"question": {"type": "string"},
}, "required": ["question"]},
handler=ask_human,
description="Ask a real person to approve before acting.",
)Oder installiere das Pushary-Plugin aus dem Hermes-Katalog
Das Pushary-Plugin steht im Hermes Agent-Plugin-Katalog. Hermes installiert dadurch die von Nous geprüfte Version. Das Plugin leitet Hermes' eigene Freigaben für gefährliche Befehle auf dein Handy weiter und ergänzt pushary_ask und pushary_notify. Im Partner-Tarif fragt pushary_ask_end_user einen deiner eigenen Nutzer. Setze deinen API-Schlüssel einmal und führe keinen zweiten Installer über die Kataloginstallation aus.
hermes plugins install pushary
export PUSHARY_API_KEY="pk_xxx.xxx"
# ~/.hermes/config.yaml
security:
approval:
transport: pusharySo 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
Python-SDK installieren
Hermes v0.21.6 und neuer verwalten ihr eigenes Python und unterstützen darin keine pip-Installationen. Nutze dort stattdessen das Pushary-Plugin (npx pushary@latest setup --agents hermes): pushary_enroll und pushary_ask_end_user fragen deine eigenen Nutzer. Bei älterem Hermes führst du pip install pushary mit dem Python aus dessen virtualenv aus. Setze PUSHARY_API_KEY.
- 02
Nutzer einmal verbinden
Ein SDK-Aufruf pro Nutzer liefert einen Verbindungslink. Dein Nutzer öffnet ihn mit der kostenlosen Pushary-App auf seinem Handy. Kein Konto, keine Zahlung.
- 03
Ein ask_human-Tool registrieren
Rufe in register(ctx) deines Plugins ctx.register_tool mit einem Handler auf, der px.decisions.ask() aufruft. Nimm die Nutzer-ID aus deinem eigenen Nutzermodell, niemals aus den Argumenten des Modells.
- 04
Auf die Antwort reagieren
Gib für alles außer einem ausdrücklichen Ja „nicht genehmigt“ zurück. Bei Nein, abgelaufener Anfrage oder fehlender Antwort handelt der Agent nicht.
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 Hermes
- Eine Sitzung ist keine Person
- Im Gateway-Modus nutzen viele Nutzer denselben Agenten. Eine Sitzungs-ID bezeichnet ein Gespräch. Sie weicht von der Person ab, sobald jemand einen zweiten Tab öffnet oder morgen wiederkommt. Ordne jede Freigabe deiner eigenen Nutzer-ID zu. So bleibt sie an die für die Aktion verantwortliche Person gebunden.
- Hooks haben 30 Sekunden Zeit
- Fragst du aus einem pre_tool_call-Hook statt aus einem Tool, bricht Hermes den Hook nach plugins.hook_callback_timeout ab, standardmäßig nach 30 Sekunden, und sperrt den Aufruf. Halte die Wartezeit innerhalb dieses Limits oder erhöhe die Einstellung.
- Ein optionales Tool erzwingt keine Freigabe
- ask_human ist ein Tool, dessen Aufruf das Modell selbst wählt. Es ist daher optional. Ein Prompt mit „erst fragen“ verhindert keine Erstattung. Rufe decisions.ask() direkt im Handler des Erstattungs-Tools auf und führe die Erstattung nur aus, wenn approved true ist.
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 eigenes Pushary-Paket für Hermes?
Wie wartet der Agent auf die Antwort?
Kann jeder Endnutzer Freigaben auf seinem eigenen Handy erhalten?
Was sieht der Agent bei Ablehnung oder Zeitüberschreitung?
Kann eine Hermes-Installation Freigaben für viele Kunden abwickeln?
Lass deinen Hermes-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.