Agendi tsükkel (Mayros)

Agendi tsükkel on agendi täielik "reaalne" käitamine: sisend → konteksti kokkupanek → mudeli järeldus → tööriista täitmine → voogedastamise vastused → püsivus. See on autentne tee, mis muudab sõnumi toiminguteks ja lõplikuks vastuseks, hoides sessiooni oleku järjepidevana.

Mayros-is on tsükkel üks, seeriaviiseline käitamine sessiooni kohta, mis emiteerib elutsükli ja voo sündmusi, kui mudel mõtleb, kutsub tööriistu ja voogedastab väljundit. See dokument selgitab, kuidas see autentne tsükkel on ühendatud otsast otsani.

Sissepääsupunktid

  • Gateway RPC: agent ja agent.wait.
  • CLI: agent käsk.

Kuidas see toimib (kõrgel tasemel)

  1. agent RPC valideerib parameetreid, lahendab sessiooni (sessionKey/sessionId), säilitab sessiooni metaandmeid, tagastab { runId, acceptedAt } kohe.
  2. agentCommand käivitab agendi:
    • lahendab mudeli + thinking/verbose vaikeväärtused
    • laadib oskuste hetktõmmise
    • kutsub runEmbeddedPiAgent (pi-agent-core runtime)
    • emiteerib elutsükli end/error kui manustatud tsükkel seda ei emiteeri
  3. runEmbeddedPiAgent:
    • seeriavistab käitamisi sessiooni kohta + globaalsete järjekordade kaudu
    • lahendab mudeli + auth profiili ja ehitab pi sessiooni
    • tellib pi sündmusi ja voogedastab assistendi/tööriista deltasid
    • jõustab ajalõpu -> katkestab käitamise kui ületatud
    • tagastab kasulikud koormused + kasutuse metaandmed
  4. subscribeEmbeddedPiSession ühendab pi-agent-core sündmused Mayros agent vooga:
    • tööriista sündmused => stream: "tool"
    • assistendi deltad => stream: "assistant"
    • elutsükli sündmused => stream: "lifecycle" (phase: "start" | "end" | "error")
  5. agent.wait kasutab waitForAgentJob:
    • ootab elutsükli end/error runId jaoks
    • tagastab { status: ok|error|timeout, startedAt, endedAt, error? }

Järjekord + samaaegsus

  • Käitamised on seeriaviisistatud sessiooni võtme (sessiooni rada) ja valikuliselt globaalse raja kaudu.
  • See väldib tööriista/sessiooni võidujookse ja hoiab sessiooni ajaloo järjepidevana.
  • Sõnumivahetuse kanalid saavad valida järjekorra režiimid (collect/steer/followup), mis toidavad seda raja süsteemi. Vaata Käsujärjekord.

Sessioon + tööruumi ettevalmistus

  • Tööruum lahendatakse ja luuakse; liivakasti käitamised võivad ümber suunata liivakasti tööruumi juurde.
  • Oskused laetakse (või taaskasutatakse hetktõmmisest) ja süstitakse env ja viiba.
  • Bootstrap/konteksti failid lahendatakse ja süstitakse süsteemi viiba aruandesse.
  • Sessiooni kirjutuslukk omandatakse; SessionManager avatakse ja valmistatakse ette enne voogedastamist.

Viiba kokkupanek + süsteemi viip

  • Süsteemi viip ehitatakse Mayros baasviibast, oskuste viibast, bootstrap kontekstist ja käitamise kohta alistustest.
  • Mudelipõhised piirid ja kompakteerimise reservi tokenid jõustatakse.
  • Vaata Süsteemi viip, mida mudel näeb.

Konksupunktid (kus saad vahele sekkuda)

Mayros-il on kaks konksu süsteemi:

  • Sisemised konksud (Gateway konksud): sündmusepõhised skriptid käskude ja elutsükli sündmuste jaoks.
  • Plugina konksud: laienduspunktid agendi/tööriista elutsükli ja gateway torujuhtme sees.

Sisemised konksud (Gateway konksud)

  • agent:bootstrap: käib bootstrap failide ehitamise ajal enne süsteemi viiba lõpetamist. Kasuta seda bootstrap konteksti failide lisamiseks/eemaldamiseks.
  • Käsukonksud: /new, /reset, /stop ja teised käsu sündmused (vaata Hooks dok).

Vaata Konksud seadistuse ja näidete jaoks.

Plugina konksud (agendi + gateway elutsükkel)

Need käivad agendi tsükli või gateway torujuhtme sees:

  • before_model_resolve: käib enne sessiooni (pole messages), et deterministlikult alistada pakkuja/mudel enne mudeli lahendamist.
  • before_prompt_build: käib pärast sessiooni laadimist (koos messages), et süstida prependContext/systemPrompt enne viiba esitamist.
  • before_agent_start: pärand ühilduvuse konks, mis võib käia mõlemas faasis; eelista ülaltoodud selgesõnalisi konkse.
  • agent_end: kontrolli lõplikku sõnumite loendit ja käitamise metaandmeid pärast lõpetamist.
  • before_compaction / after_compaction: jälgi või annoteeri kompakteerimise tsükleid.
  • before_tool_call / after_tool_call: vahele sekku tööriista parameetrite/tulemuste vahel.
  • tool_result_persist: sünkroonselt transforma tööriista tulemusi enne nende kirjutamist sessiooni transkripti.
  • message_received / message_sending / message_sent: sissetulevate + väljaminevate sõnumite konksud.
  • session_start / session_end: sessiooni elutsükli piirid.
  • **gateway_start / `gateway_stop``: gateway elutsükli sündmused.

Vaata Pluginad konksu API ja registreerimise üksikasjade jaoks.

Voogedastamine + osalised vastused

  • Assistendi deltad voogedastatakse pi-agent-core'st ja emiteeritakse assistant sündmustena.
  • Bloki voogedastamine saab emiteerida osalisi vastuseid kas text_end või message_end järel.
  • Arutluse voogedastamist saab emiteerida eraldi voona või bloki vastustena.
  • Vaata Voogedastamine tükeldamise ja bloki vastuse käitumise jaoks.

Tööriista täitmine + sõnumivahetuse tööriistad

  • Tööriista start/update/end sündmused emiteeritakse tool voos.
  • Tööriista tulemused saniteeritakse suuruse ja pildi kasulike koormuste suhtes enne logimist/emiteerimist.
  • Sõnumivahetuse tööriista saadised jälgitakse, et summutada topelt assistendi kinnitusi.

Vastuse kujundamine + summuteerimine

  • Lõplikud kasulikud koormused koostatakse:
    • assistendi tekst (ja valikuline arutlus)
    • sisestatud tööriista kokkuvõtted (kui verbose + lubatud)
    • assistendi vea tekst kui mudel vigastab
  • NO_REPLY käsitletakse vaikse tokenina ja filtreeritakse väljaminevatest kasulikkest koormustest.
  • Sõnumivahetuse tööriista duplikaadid eemaldatakse lõplikust kasulike koormuste loendist.
  • Kui renderdatavaid kasulikke koormusi ei jää ja tööriist vigastas, emiteeritakse tagavarauks tööriista vea vastus (välja arvatud juhul, kui sõnumivahetuse tööriist saatis juba kasutajale nähtava vastuse).

Kompakteerimine + kordamised

  • Automaatne kompakteerimine emiteerib compaction voo sündmusi ja võib käivitada kordamise.
  • Kordamisel lähtestatud mälu puhvrid ja tööriista kokkuvõtted, et vältida topelt väljundit.
  • Vaata Kompakteerimine kompakteerimise torujuhtme jaoks.

Sündmuste vood (täna)

  • lifecycle: emiteeritud subscribeEmbeddedPiSession poolt (ja tagavaraukse puhul agentCommand)
  • assistant: voogedastatud deltad pi-agent-core'st
  • tool: voogedastatud tööriista sündmused pi-agent-core'st

Vestluskanali käsitsemine

  • Assistendi deltad puhverdatakse vestluse delta sõnumitest.
  • Vestluse final emiteeritakse elutsükli end/error järel.

Ajalõpud

  • agent.wait vaikimisi: 30s (ainult ootamine). timeoutMs parameeter alistab.
  • Agendi runtime: agents.defaults.timeoutSeconds vaikimisi 600s; jõustatud runEmbeddedPiAgent katkestamise taimeris.

Kus asjad saavad vara lõppeda

  • Agendi ajalõpp (katkestamine)
  • AbortSignal (tühistamine)
  • Gateway lahtiühendamine või RPC ajalõpp
  • agent.wait ajalõpp (ainult ootamine, ei peata agenti)