Hoe voorkomt circuit breaking dat een falende externe tool een lokale agentworkflow verstoort?

Eva Wong is de Technisch Schrijver en en vaste knutselaar bij ZimaSpace. Een levenslange geek met een passie voor homelabs en open-source software, zij is gespecialiseerd in het vertalen van complexe technische concepten naar toegankelijke, praktische handleidingen. Eva gelooft dat zelf-hosting leuk moet zijn, niet intimiderend. Met haar tutorials stelt ze de community in staat om hardware-setup te ontrafelen, van het bouwen van hun eerste NAS tot het beheersen van Docker-containers.

Circuit breaking beperkt een falende externe tool door herhaalde aanroepen te stoppen, een gecontroleerd resultaat terug te geven en herstel te testen voordat normaal verkeer wordt hervat.

Een lokale agent kan afhankelijk zijn van een cloudmodel, zoek-API, meldingsservice of externe smart-homebridge, terwijl de rest van de workflow correct blijft werken. Zonder een isolatiegrens kan één trage afhankelijkheid de tijdslimiet van de agent opsouperen en meer nieuwe pogingen uitlokken. Een circuit breaker zet die onzekere externe toestand om in een expliciete lokale status waar de orchestrator rekening mee kan houden.

De circuit breaker bevindt zich tussen toolselectie en externe uitvoering

Een agent selecteert normaal gesproken een tool, valideert de argumenten en geeft de aanroep door aan een uitvoerder. Circuit breaking voegt aan die laatste grens een statusgebonden wrapper toe. De wrapper verandert niet wat het model heeft aangevraagd; hij bepaalt of de uitvoerder contact moet opnemen met de afhankelijkheid, de poging lokaal moet afwijzen of een beperkte hersteltest mag uitvoeren.

De wrapper observeert voltooide aanroepen en classificeert resultaten zoals succes, time-out, transportfout, rate limiting of een ander geconfigureerd foutsignaal. Een conventioneel circuit-breakerpatroon omhult externe aanroepen, houdt fouten bij, opent na het bereiken van een drempel en staat later testaanroepen toe, zodat de gezondheid van de afhankelijkheid buiten het oordeel van het model op promptniveau blijft.

De directe uitvoer is daarom niet slechts een tooluitzondering. Het is een gestructureerd orchestratorresultaat met de status van de circuit breaker, de informatie of uitvoering is geprobeerd en welke vervolgpaden nog zijn toegestaan.

Recente fouten worden samengevat in een statusovergang

Zolang de circuit breaker gesloten is, laat hij aanroepen door en registreert hij alleen resultaten die relevant zijn voor het beleid. Eén geïsoleerde time-out schakelt een nuttige tool dus niet noodzakelijk uit. Implementaties beoordelen doorgaans een recent aantal fouten, een foutpercentage of een tijdvenster en openen pas wanneer die lokale aanwijzingen de geconfigureerde drempel voor fouten of trage aanroepen overschrijden.

De drempel zet veel ruisende gebeurtenissen om in één stabiele regelbeslissing. Een drempel voor het foutenpercentage kan verbindingsproblemen tijdens een netwerkstoring beperken, in plaats van elke aangevraagde bewerking opnieuw een gedoemde verbinding te laten opzetten.

Wat als fout telt, moet aansluiten op het contract van de tool. Een geweigerde authenticatie, ongeldige argumenten en een permanent ontbrekende resource vereisen doorgaans een andere aanpak dan latentie, tijdelijke onbeschikbaarheid of rate limiting.

Ook een procentuele drempel heeft voldoende waarnemingen nodig om betekenisvol te zijn. Openen na één fout maakt een weinig gebruikte tool instabiel, terwijl wachten op een grote steekproef een vaak falende afhankelijkheid te lang actief kan houden. Daarom horen het meetvenster en het vereiste minimumaantal aanroepen bij het beleid van de circuit breaker, niet bij het taalmodel.

Een geopend circuit zet extern wachten om in een lokale fout

Nadat de circuit breaker is geopend, stopt de uitvoerder gedurende een expliciet afkoelinterval met contact opnemen met die afhankelijkheid. Nieuwe pogingen mislukken dan lokaal in plaats van opnieuw te wachten op een externe time-out. Gezonde lokale tools, ophaalstappen en redeneerstappen kunnen doorgaan zonder de latentie van de falende afhankelijkheid over te nemen.

Deze snelle afwijzingsroute beperkt zowel de druk op resources als de vertraging, omdat herhaalde externe aanroepen sockets, werkerslots, geheugen of taken in een wachtrij kunnen vasthouden terwijl ze wachten. Door bewerkingen af te wijzen voordat ze extra capaciteit voor externe aanroepen reserveren, wordt uitputting van resources tijdens een aanhoudende storing beperkt.

De isolatie is selectief en niet globaal. Een circuit breaker hoort normaal gesproken aan één afhankelijkheid te worden gekoppeld en vaak ook aan één bewerkingsklasse, omdat lees- en schrijfbewerkingen verschillende foutkosten kunnen hebben.

Nieuwe pogingen en time-outs veranderen wat de circuit breaker waarneemt

Een nieuwe poging behandelt een fout die vermoedelijk tijdelijk is, terwijl een circuit breaker onthoudt dat fouten hardnekkig genoeg zijn geworden om verdere pogingen te stoppen. Daardoor verandert hun volgorde het bewijs dat de circuit breaker ziet. Nieuwe pogingen binnen één beschermde uitvoering kunnen als één logische aanroep worden geteld, terwijl nieuwe pogingen buiten de circuit breaker elk een extra foutwaarneming kunnen toevoegen.

Time-outs bepalen ook wanneer een trage aanroep als foutwaarneming geldt. Veerkrachtpatronen scheiden time-outs, nieuwe pogingen en circuit breakers, omdat elk mechanisme een andere foutgrens beheert.

Deze scheiding wordt cruciaal wanneer de tool niet-idempotente neveneffecten heeft. Dezelfde lussen met herhaalde toolaanroepen kunnen voortkomen uit modelbeslissingen of lagen voor nieuwe pogingen onder het model. Een circuit breaker kan niet bewijzen of een time-out bij een schrijfbewerking het externe systeem al heeft gewijzigd.

Een veilig uitvoeringspad registreert daarom het budget voor nieuwe pogingen en de status van de circuit breaker afzonderlijk, zodat de orchestrator kan uitleggen of een actie nooit is geprobeerd, één keer is geprobeerd of na herhaalde fouten bij de afhankelijkheid is geblokkeerd.

Fallbacks behouden de betekenis van de workflow zonder te doen alsof de tool werkte

Het openen van het circuit beantwoordt alleen de vraag of de primaire tool mag worden uitgevoerd. De orchestrator heeft daarnaast een vervolgregel nodig die de bedoeling van de gebruiker behoudt. Afhankelijk van de taak kan hij gedeeltelijke resultaten teruggeven, gegevens uit een cache gebruiken, van provider wisselen, de taak in een wachtrij plaatsen, menselijke beoordeling vragen of stoppen.

Een fallback moet metadata over de beperkte werking bevatten en mag zich niet voordoen als het oorspronkelijke resultaat. Vervolgstappen kunnen acties met grote impact beperken wanneer ze werken met verouderde gegevens uit een cache of vervangend bewijsmateriaal.

Sommige aanroepen hebben geen veilige fallback. Een melding kan in een wachtrij worden geplaatst, maar een deurbedieningscommando mag niet worden vervangen door een geraden status en het verwijderen van een back-up mag niet worden afgeleid uit een gecachte inventaris.

Halfopen tests herstellen toegang zonder een golf van nieuwe pogingen vrij te geven

Een geopend circuit kan niet voor altijd gesloten blijven voor verkeer, omdat de externe tool mogelijk herstelt. Daarom laat de circuit breaker na een afkoelinterval slechts een klein aantal testaanroepen toe. De normale werklast blijft geblokkeerd totdat deze tests aantonen dat de afhankelijkheid weer veilig verkeer kan verwerken.

Geslaagde tests brengen de circuit breaker richting gesloten, terwijl mislukte tests hem opnieuw openen en de wachttijd opnieuw laten beginnen. Door circuit-breakerstaten te monitoren, worden herhaald openen en lange herstelperioden zichtbaar in plaats van verborgen in toolfouten.

Een geslaagde gezondheidstest is niet automatisch een veilige herhaling van een eerdere schrijfbewerking. De afhankelijkheid kan een leescontrole beantwoorden terwijl een eerder neveneffect nog onduidelijk is. Daarom bepalen idempotentiesleutels, controlepunten, reconciliatie en goedkeuringsgrenzen nog steeds of onderbroken acties mogen worden hervat.

Toelating van tests is bewust beperkter dan normaal verkeer, omdat herstelbewijs minder bruikbaar wordt als honderden wachtende verzoeken tegelijk de afhankelijkheid belasten. Door gelijktijdige tests te beperken, voorkomt de circuit breaker dat hij zelf de piek veroorzaakt waardoor een pas herstelde tool opnieuw ongezond lijkt.

Tech & AI HUB

Meer om te lezen

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.