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 denAuthorization-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
budgetSatsamL402Clientdes 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 eigenenL402Client und einer gemeinsamen Wallet zahlt:
Sicherheitseigenschaften
| Eigenschaft | Funktionsweise heute |
|---|---|
| Wallet-Isolation | Sub-Agenten erhalten einen Token-String, niemals private Schlüssel |
| Zeitgebunden | Macaroons laufen nach 1 Stunde ab |
| Replay-sicher | Jeder preimage kann vom Server nur einmal akzeptiert werden |
| Budgetkontrolle | budgetSats am Orchestrator-L402Client setzen |