Skip to main content

Konzept

Ein L402-Token (macaroon:preimage) ist ein portabler String — einmal bezahlt, kann er an jeden Sub-Agenten weitergegeben werden, der Zugriff auf dieselbe Ressource benötigt. Der Orchestrator hält die Wallet; Sub-Agenten erhalten nur einen Token.
Tokens laufen nach 1 Stunde ab. Jeder preimage kann pro Server nur einmal verwendet werden (Replay-Schutz). Für parallele Sub-Agenten, die denselben Endpunkt aufrufen, benötigt jeder eine eigene Zahlung.

Wann ein Token geteilt vs. unabhängig bezahlt werden sollte

Es gibt zwei Delegationsmuster, jeweils mit unterschiedlichen Kompromissen: Token-Sharing funktioniert, wenn Sub-Agenten auf denselben Endpunkt sequenziell zugreifen. Der Orchestrator zahlt einmal, extrahiert den Authorization-Header-Wert und übergibt ihn als String. Sub-Agenten rufen den Endpunkt direkt mit diesem Header auf — keine Wallet erforderlich. Dies minimiert die Kosten (eine Zahlung), ist aber nicht sicher für gleichzeitigen Zugriff — nur ein Agent kann einen bestimmten preimage halten, und Server lehnen Replays ab. Unabhängige Zahlung (jeder Sub-Agent hat seinen eigenen L402Client, der die Wallet des Orchestrators teilt) funktioniert für parallelen oder gleichzeitigen Zugriff. Jeder Agent zahlt seine eigene Invoice und speichert seinen eigenen Token im Cache. Dies kostet mehr sats, ist aber einfacher nachzuvollziehen und bei jedem Parallelitätsniveau sicher. Faustregel: Wenn Ihre Sub-Agenten parallel ausfächern, geben Sie jedem seinen eigenen L402Client. Wenn sie sequenziell laufen und denselben Endpunkt aufrufen, teilen Sie den Token-String.

Sicherheitsüberlegungen

  • Übergeben Sie niemals Wallet-Anmeldedaten an Sub-Agenten. Übergeben Sie nur den Token-String (L402 <macaroon>:<preimage>). Ein Token kann einen Endpunkt für bis zu eine Stunde aufrufen — ein privater Schlüssel kann eine Wallet leeren.
  • Tokens sind einmalig pro Server verwendbar. Nach der ersten akzeptierten Anfrage zeichnet der Server den preimage-Hash auf. Eine zweite Anfrage mit demselben preimage gibt 402 zurück. Dies verhindert Replay-Angriffe, bedeutet aber, dass Sie einen Token nicht über zwei gleichzeitige Sub-Agenten teilen können, die denselben Server aufrufen.
  • Budgetkontrolle erfolgt auf Wallet-Ebene. Setzen Sie budgetSats am L402Client des Orchestrators, um die Gesamtausgaben aller Sub-Agenten, die diese Wallet teilen, zu begrenzen. Siehe Budgetkontrolle.

TypeScript — Orchestrator zahlt, Sub-Agent verwendet Token

Python — Orchestrator zahlt, Sub-Agent verwendet Token

Multi-Agenten-Muster: eine Zahlung, parallele Lesezugriffe

Wenn mehrere Sub-Agenten dieselbe Ressource gleichzeitig benötigen, ist das sauberste Muster, dass jeder Sub-Agent unabhängig mit seinem eigenen L402Client und einer gemeinsamen Wallet zahlt:

Sicherheitseigenschaften

Geplant für eine zukünftige Version

Vollständige macaroon-Caveat-Delegation (Endpunkt-Scoping, Einweg-Tokens, maximale Nutzungslimits) ist geplant. Fortschritt verfolgen auf GitHub. Siehe Budgetkontrolle für sitzungsbasierte Ausgabenlimits.