Gå til innholdet

Samtalehistorikk

En lang samtale treffer en hard vegg: modellens kontekstvindu. Alt på denne siden finnes på grunn av den veggen, og det interessante er hva som blir kastet, hva som blir beholdt, og hva som kan hentes tilbake.

De er ikke så mye alternativer som en stige, billigst først.

Mekanisme Kostnad Beholder Mister
Utelatelse Ingenting Hvert ord i narrativet Hendelsesløse, eldre verktøyresultater
Fjerning av bilder Ingenting Teksten rundt dem Gamle skjermbilder
Øyeblikksbilder Ingenting Hvert ord, som piksler Lesbarhet for en modell uten bildeforståelse
Sammendrag Ett modellkall Et narrativ Detaljene det ikke plukket med

Utelatelse og fjerning av bilder kjører først fordi de er gratis og tapsfrie på den måten som betyr noe: de dropper ballast ingen kom til å lese på nytt.

Et sammendrag er det eneste av de fire som bruker et modellkall, og det eneste som bestemmer for deg hva som betydde noe. Begge er reelle kostnader. Kallet er det mest interessante, på grunn av når det skjer.

Kompaktering kjører vanligvis i forkant av veggen, ved en terskel. Men den kjører også reaktivt, etter at leverandøren selv avviser en forespørsel som for stor – det heuristiske anslaget undervurderte det leverandøren faktisk målte. I den situasjonen må en oppsummerende kompaktering sende en forespørsel for å krympe konteksten, og forespørselen den lager, er den som nettopp gikk over grensen.

Øyeblikksbildekompaktering gjengir forkastet historikk på tette sider med pikselglyfer og gir dem tilbake som bilder.

Premisset er en særegenhet ved faktureringen: en modell med bildeforståelse tar betalt for et bilde med en flat sats eller en sats proporsjonal med arealet, som ikke har noe med hvor mange tegn bildet inneholder å gjøre. Tolv tusen tegn med forkastet samtale koster like mye i teksttokens som tolv tusen tegn. De samme tegnene gjengitt på én side koster ett bilde.

Det som gjør den verdt å ha, og ikke bare smart, er at den trenger verken modellkall, nøkkel eller nettverk. Det er den eneste strategien som alltid er tilgjengelig under gjenoppretting etter overflyt.

Formen på rekonstruksjonen er ordrett start, avbildet midte, ordrett slutt. Starten er oppgaven og begrensningene som alt nedstrøms viser tilbake til; slutten er der arbeidet befinner seg nå. Midten er det som leses på nytt minst og koster mest.

Øyeblikksbilder gjengis på nytt fra beholdt kildetekst ved hver runde, aldri fra forrige rundes piksler. Å avbilde et bilde forringer glyfene med én generasjon per kompaktering, til ingenting kan lese dem.

Historisk startet hver harness-kjøring fra en tom historikk og gjenoppbygde kontinuiteten fra en <context>-blokk i prompten – et sammendrag av samtalen i stedet for samtalen. Tre ting fulgte av det:

  • Gjenopptakelse var en gjenfortelling. Modellen så aldri sin egen tidligere resonnering eller de faktiske bytene verktøyene returnerte, bare en beskrivelse av dem.
  • Tilbakespoling døde med prosessen. Et checkpoint er en indeks inn i den aktive meldingslisten, så en omstart mistet hver etikett modellen hadde satt.
  • Forsøk på nytt kunne ikke skille «ingenting å prøve på nytt» fra «ingenting lastet inn». Etter en omstart er den mislykkede turen borte fra aktiv tilstand uansett.

Alle tre løses ved å lagre samtaleloggen varig. Den lagres ved hver turgrense og aldri midt i en tur: en historikk som fanges mellom et verktøykall og resultatet av det, er en ingen leverandør vil godta, så et krasj i det øyeblikket gjenoppretter turen før i stedet for en halv tur som ikke kan spilles av på nytt.

En gjenopptatt kjøring trimmes ned til de nyeste meldingene, og kuttes ved en grense som ikke er et foreldreløst verktøyresultat – et resultat der kallet er trimmet bort, er en forespørsel leverandører avviser blankt, og en samtalelogg som ikke kan sendes, er verre enn en kort en.

Hver melding registrerer hvilken melding den fortsetter fra, og hver samtale navngir sin gjeldende grenspiss. Den ene beslutningen er hele funksjonen.

Forgrening skriver ingenting. Den flytter pekeren. Stien du forlot, ligger fortsatt der, så å bytte tilbake er nok en pekerflytting i stedet for en gjenoppretting – og å redigere en prompt for å kjøre den på nytt slutter å koste deg svaret du sammenlignet mot.

Uten den må enhver form for tilbakegang skjule eller slette meldinger, og å skjule er en løgn den neste leseren ikke kan gjennomskue.

Gren Forgrening
Hva som skjer Pekeren flyttes Stien kopieres
Hvor det havner Samme samtale En ny samtale
Kostnad Ingenting Én kopi av grenen

En forgrening kopierer med ferske id-er i stedet for å dele rader. To samtaler som deler rader, ville vise hverandres senere meldinger, og det er det ene en forgrening ikke må gjøre.

Paret checkpoint / rewind i en kjøring markerer en ren turgrense og går tilbake til den etter en utforskning, og beholder et resymé. Fordi sjekkpunkter lagres sammen med samtaleloggen, lander en etikett modellen satte før en omstart, fortsatt der den ble satt. Et sjekkpunkt hvis mål ikke overlevde en trimming, blir droppet, og ikke klemt til nærmeste gyldige punkt – å spole tilbake «til etiketten» og lande et annet sted er nettopp feilen en etikett finnes for å forhindre.