Claude Architect · Oppitunti

Paikallinen palautuminen ja eskalointi

Yritä uudelleen tilapäisten virheiden kohdalla ja eskaloi palautumattomat virheet.

Oppitunti 4/413 vaihetta

Paikallinen palautuminen ja eskalointi on ilmainen Claude Architect-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Claude Architect-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Claude Architect-kurssilla on yhteensä 4 oppituntia.

Kaksi tapaa, joilla vaihe voi epäonnistua

Agenttipohjaisessa järjestelmässä yksittäinen työkalukutsu tai alagentin vaihe voi epäonnistua hyvin eri syistä. Arkkitehdin tehtävä on luokitella virhe ennen reagointia.

  • Tilapäinen vika — hetkellinen, itsestään korjaantuva ongelma: verkkohäiriö, nopeusrajoitus tai lyhyt aikakatkaisu. Täsmälleen saman kutsun uudelleen yrittäminen saattaa onnistua.
  • Palautumaton virhe — rakenteellinen ongelma: virheelliset tunnistetiedot, puuttuva käyttöoikeus, virheellinen pyyntö tai liiketoimintasäännön rikkominen. Uudelleen yrittäminen ei muuta mitään.

Tämän oppitunnin perussääntö on: palauttakaa tilapäiset viat paikallisesti ja eskaloikaa palautumattomat viat.

Paikallinen palautuminen: pidä käsittely alagentissa

Keskitetyn koordinaattorin ja alagenttien muodostamassa monen agentin järjestelmässä koordinaattori delegoi työtä alagenteille. Kun alagentti kohtaa tilapäisen vian, sen pitäisi yrittää korjata se siellä, missä se tapahtui — ilman että häiriöitä välitetään koordinaattorille.

Näin koordinaattori voi keskittyä orkestrointiin matalan tason uudelleenyritysten sijaan, ja sen kontekstibudjetti säilyy. Paikallinen palautuminen on ensimmäinen puolustuslinja.

def run_tool_with_local_recovery(tool, args, max_attempts=3):
    for attempt in range(max_attempts):
        result = tool(**args)
        if not result.get("isError"):
            return result
        # Only retry faults the result says are retryable
        if result.get("isRetryable") and result.get("errorCategory") == "transient":
            continue
        break  # validation / business / permission -> stop, escalate
    return result  # hand the structured error upward

Anna virheen kertoa, mitä pitää tehdä

Voit reitittää tilanteen älykkäästi vain, jos virhe on jäsennelty. Yleinen "Operation failed" estää palautumisen — agentti ei pysty erottamaan nopeusrajoitusta käyttöoikeuden epäämisestä.

Hyvin suunniteltu MCP-työkalu palauttaa virhekuoren:

  • isError: true
  • errorCategory: transient / validation / business / permission
  • isRetryable: totuusarvo
  • message, attempted_query, partial_results

errorCategory ohjaa päätöstä: transient on ehdokas uudelleen yrittämiseen; validation-, business- ja permission-virheet eivät ole.

{
  "isError": true,
  "errorCategory": "transient",
  "isRetryable": true,
  "message": "Upstream timeout after 5s",
  "attempted_query": "SELECT * FROM orders WHERE customer_id = 4821",
  "partial_results": []
}

Virhe ja tyhjä tulos

Hienovarainen mutta kokeen kannalta olennainen erottelu: käyttöoikeusvirhe ei ole sama asia kuin kelvollinen tyhjä tulos.

  • Virhe — kysely ei valmistunut (aikakatkaisu tai todennusvirhe). Tiedot ovat tuntemattomat. Tämä saattaa olla yritettävissä uudelleen.
  • Tyhjä — kysely suoritettiin onnistuneesti eikä mitään löytynyt. 0 rows on oikea ja lopullinen vastaus. Uudelleen yrittäminen on turhaa ja harhaanjohtavaa.

Näiden sekoittaminen saa agentit yrittämään loputtomasti uudelleen tilanteissa, joissa osumia ei aidosti ole, tai ilmoittamaan todellisen käyttökatkon muodossa "tietoja ei löytynyt".

if result.get("isError"):
    handle_failure(result)          # access failure: maybe retry / escalate
elif len(result["rows"]) == 0:
    return "No matching records found."   # valid empty result, DONE
else:
    return result["rows"]

Milloin eskaloida

Eskalointi tarkoittaa ongelman siirtämistä ylemmälle tasolle — koordinaattorille tai viime kädessä ihmiselle. Hyvät eskalointiperusteet ovat objektiivisia:

  • Selkeä ihmisen pyyntö — eskaloi heti, älä yritä enää.
  • Käytäntöaukko — agentin säännöt eivät kata tilannetta.
  • Edistystä ei tapahdu yritysten jälkeen — paikallisen palautumisen keinot on käytetty loppuun.
  • Raja-arvon ylitys — esimerkiksi hyvitys ylittää sallitun enimmäismäärän.

Huomaa, että kaikki nämä voidaan havaita deterministisesti — kyse ei ole arvauksista käyttäjän mielialasta.

Huonot eskalointiperusteet

Yhtä tärkeää on tietää, minkä perusteella ei pidä eskaloida. Nämä perusteet vaikuttavat järkeviltä, mutta ovat epäluotettavia ja tyypillisiä kokeen harhaanjohtavia vaihtoehtoja:

  • Sentimenttianalyysi — eskalointi, koska viesti "kuulostaa vihaiselta".
  • Mallin itse arvioima varmuus — "Olen vain 4/10 varma, joten eskaloidaan." Itsearviot eivät ole kalibroituja.
  • Kouluttamattomat luokittelijat, jotka on liitetty portinvartijoiksi.

Toimikaa sen sijaan tutkitun mallin mukaan: tunnustakaa tunne, ehdottakaa konkreettista ratkaisua ja eskaloikaa vain, jos asiakas toistaa pyyntönsä. Käyttäytyminen — toistuva selkeä pyyntö — on paljon parempi signaali kuin päätelty tunne.

Eskaloi KONTEKSTIN KANSSA, älä vain kohauta olkapäitä

Kun alagentti eskaloi tilanteen, sen on välitettävä jäsennelty konteksti, jotta koordinaattori tai ihminen voi toimia tekemättä työtä uudelleen:

  • virheen tyyppi (errorCategory),
  • yritetty kysely tai toiminto,
  • jo kerätyt osittaiset tulokset,
  • ja toteuttamiskelpoiset vaihtoehdot.

Pelkkä "se epäonnistui" pakottaa koordinaattorin aloittamaan alusta. Osittaiset tulokset sisältävä eskalointi antaa työnkulun muun osan jatkua ja nopeuttaa ihmisen ratkaisua.

def escalate(coordinator, failure):
    coordinator.report(
        failure_type=failure["errorCategory"],
        attempted_query=failure["attempted_query"],
        partial_results=failure.get("partial_results", []),
        alternatives=["retry via read-replica", "ask user for order ID"],
    )

Älä keskeytä koko työnkulkua

Yhden epäonnistuneen haaran ei pitäisi romahduttaa koko työtä. Multi-agent-tutkimusjärjestelmässä koordinaattorin pitäisi yhden lähteen ollessa saavuttamattomissa silti koota onnistuneiden haarojen tulokset ja merkitä kattavuudessa oleva aukko selkeästi.

Vältettävät kaksi virhetilannetta:

  • Hiljainen sivuuttaminen — virheen nieleminen niin, että lopullinen vastaus näyttää täydelliseltä, vaikka se ei ole sitä. Tämä tuhoaa luottamuksen ja provenienssin.
  • Koko työnkulun keskeyttäminen — kaikkien muiden haarojen lopettaminen yhden epäonnistumisen vuoksi.

Kultainen keskitie: jatkakaa, toimittakaa osittaiset tulokset ja kertokaa puuttuvista asioista suoraan.

Rajat ovat turvaverkko, eivät suunnitelma

Uudelleenyrityslooppi tarvitsee rajan, mutta raja on turvaverkko — ei koskaan ensisijainen ohjausmekanismi. Sama periaate koskee koko agenttilooppia: lopettakaa, kun stop_reason saavuttaa arvon end_turn; iteraatiorajat vain estävät hallitsemattomat loopit.

Uudelleenyritysten osalta pysäyttäkää toiminta, koska rakenteinen virhe ilmoittaa isRetryable: false tai koska edistystä on tapahtunut — ei vain siksi, että yritysnumero 3 tuli vastaan. Raja on olemassa, jotta ohimenevältä vaikuttava mutta pysyvä virhe ei voisi pyöriä loputtomasti.

# Cap = backstop. The REAL stop signal is the error category.
for attempt in range(MAX_ATTEMPTS):   # safety net only
    res = call_tool(args)
    if not res["isError"]:
        return res
    if not res["isRetryable"]:        # primary, decision-driven stop
        return escalate(res)
    sleep(backoff(attempt))
return escalate(res)                  # exhausted -> escalate, never silent

Deterministiset suojaukset ehdottomille rajoille

Jotkin eskaloinnit suojaavat taloudellisilta, juridisilta tai turvallisuuteen liittyviltä seurauksilta — esimerkiksi käytännön mukaisen rajan ylittävältä hyvitykseltä. Tällöin kehotteen ohjeistus (noin 90 %:n luotettavuus) ei riitä.

Käyttäkää hookia 100-prosenttisen deterministiseen valvontaan. PostToolUse- tai lähtevän kutsun hook voi estää käytännön vastaisen toiminnon ennen sen suorittamista ja pakottaa eskaloinnin ihmiselle. Kehotteet suostuttelevat, hookit takaavat.

# .claude hook: block refunds over $500 -> force escalation
def on_outgoing_call(call):
    if call.tool == "process_refund" and call.args["amount"] > 500:
        return {
            "block": True,
            "reason": "Refund exceeds $500 policy limit; escalate to human.",
        }
    return {"block": False}

Kokonaisuus: päätöksentekovirta

Käykää jokaisen epäonnistuneen vaiheen osalta läpi tämä virta:

  • 1. Tyhjä eikä epäonnistunut? Palauttakaa kelvollinen tyhjä tulos. Valmista.
  • 2. Ohimenevä ja uudelleen yritettävissä? Palautukaa paikallisesti rajoitetuilla uudelleenyrityksillä ja backoffilla.
  • 3. Palautuiko toiminta? Jatkakaa työnkulkua.
  • 4. Ei palautettavissa (validointi-, liiketoiminta- tai käyttöoikeusvirhe), nimenomainen ihmisen pyyntö, käytännön aukko, raja-arvon rikkominen tai uudelleenyritykset käytetty loppuun? Eskaloi rakenteisen kontekstin ja osittaisten tulosten kanssa.

Älkää koskaan sivuuttako virheitä hiljaisesti, keskeyttäkö koko työnkulkua tai eskaloiko tunteen tai itse arvioidun varmuuden perusteella.

Pikatarkistus

Aliagentin tietokantatyökalu palauttaa arvot isError: true, errorCategory: "permission" ja isRetryable: false. Mukana ovat yritetty kysely ja tyhjät osittaiset tulokset. Mitä aliagentin pitäisi tehdä?

Kertaus: palautukaa paikallisesti, eskaloikaa muu

Keskeiset opit:

  • Luokitelkaa ensin: ohimenevä (uudelleen yritettävissä) vai ei palautettavissa (validointi-, liiketoiminta- tai käyttöoikeusvirhe).
  • Palautukaa ohimenevistä virheistä paikallisesti aliagentissa rajoitetuilla uudelleenyrityksillä; raja on turvaverkko, mutta rakenteinen virhe on varsinainen pysäytyssignaali.
  • Erottakaa käyttöoikeusvirhe kelvollisesta tyhjästä tuloksesta — 0 riviä on lopullinen vastaus, ei uudelleenyrityksen laukaisin.
  • Eskaloi virhe, josta ei voi palautua, rakenteisen kontekstin kanssa: virhetyyppi, yritetty kysely, osittaiset tulokset ja vaihtoehdot.
  • Eskaloi objektiivisten laukaisinten (nimenomainen ihmisen pyyntö, käytännön aukko, edistyksen puuttuminen, raja-arvon rikkominen) perusteella — älä koskaan tunteen tai itse arvioidun varmuuden perusteella.
  • Valvo taloudellisia, juridisia ja turvallisuuteen liittyviä rajoja hookeilla, ei kehotteilla. Älä koskaan sivuuta virheitä hiljaisesti äläkä keskeytä koko työnkulkua yhden virheen vuoksi.
Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
26
Oppitunnit
104

Usein kysytyt kysymykset

Onko oppitunti ”Paikallinen palautuminen ja eskalointi” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Claude Architect-oppimispolun 3 oppituntia, myös oppitunnin “Paikallinen palautuminen ja eskalointi”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Claude Architect-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Paikallinen palautuminen ja eskalointi”?

Yritä uudelleen tilapäisten virheiden kohdalla ja eskaloi palautumattomat virheet. Harjoittelet Claude Architect-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Claude Architect-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Claude Architect-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Paikallinen palautuminen ja eskalointi”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Claude Architect-oppitunnilla?

Kyllä. Jokainen Claude Architect-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Selkeät eskalointiehdot
  2. Vastaesimerkki: tunne- ja luottamusarvot
  3. Rakenteinen virhekonteksti
  4. Paikallinen palautuminen ja eskalointi
← Takaisin: Claude Architect