Hoppa till innehåll

Samtalshistorik

Ett långt samtal kör rakt in i en hård vägg: modellens kontextfönster. Allt på den här sidan finns till på grund av den väggen, och det intressanta är vad som kastas bort, vad som behålls och vad som går att få tillbaka.

De är inte så mycket alternativ som en stege, med det billigaste först.

Mekanism Kostnad Behåller Förlorar
Elision Ingenting Vartenda ord i berättelsen Händelselösa äldre verktygsresultat
Bildrensning Ingenting Texten runt dem Gamla skärmbilder
Ögonblicksbilder Ingenting Vartenda ord, som pixlar Läsbarhet för en modell utan bildseende
Sammanfattning Ett modellanrop En berättelse Detaljerna den inte valde

Elision och bildrensning körs först eftersom de är gratis och förlustfria på det sätt som spelar roll: de skalar bort massa som ingen ändå skulle läsa om.

En sammanfattning är den enda av de fyra som kostar ett modellanrop och den enda som bestämmer åt dig vad som spelade roll. Båda är verkliga kostnader. Anropet är den mer intressanta, på grund av när det sker.

Kompaktering körs vanligtvis före väggen, vid en tröskel. Men den körs också reaktivt, efter att leverantören själv har avvisat en förfrågan som för stor — den heuristiska uppskattningen underskattade det leverantören faktiskt mätte. I den situationen måste en sammanfattande kompaktor skicka en förfrågan för att krympa kontexten, och den förfrågan den skickar är den som just svämmade över.

Kompaktering med ögonblicksbilder renderar bortkastad historik till täta sidor av pixelglyfer och ger tillbaka dem som bilder.

Premissen är en faktureringsdetalj: en bildseende modell tar betalt för en bild till ett fast eller areaproportionellt pris som inte har något att göra med hur många tecken den innehåller. Tolvtusen tecken bortkastat samtal kostar texttokens motsvarande tolvtusen tecken. Samma tecken renderade på en enda sida kostar en bild.

Det som gör den värd att ha och inte bara fiffig är att den kräver inget modellanrop, ingen nyckel och inget nätverk. Det är den enda strategin som alltid är tillgänglig vid återhämtning efter överflöd.

Rekonstruktionens form är ordagrant huvud, avbildad mitt, ordagrann svans. Huvudet är uppgiften och de begränsningar som allt nedströms hänvisar tillbaka till; svansen är där arbetet befinner sig just nu. Mitten är det som läses om minst och kostar mest.

Ögonblicksbilder renderas på nytt från bibehållen källtext vid varje omgång, aldrig från föregående omgångs pixlar. Att avbilda en bild försämrar glyferna en generation per kompaktering tills ingenting kan läsa dem.

Historiskt startade varje harness-körning från en tom historik och byggde upp kontinuiteten igen från ett <context>-block i prompten — en sammanfattning av samtalet snarare än samtalet. Tre saker följde av det:

  • Återupptagning var en återberättelse. Modellen såg aldrig sitt eget tidigare resonemang eller de faktiska bytes som dess verktyg returnerade, bara en beskrivning av dem.
  • Tillbakaspolning dog med processen. En checkpoint är ett index in i den levande meddelandelistan, så en omstart förlorade varje etikett modellen hade satt.
  • Nytt försök kunde inte skilja på ”inget att försöka igen” och ”inget inläst”. Efter en omstart är den misslyckade turen borta från det levande tillståndet i båda fallen.

Alla tre åtgärdas genom att transkriptet bevaras. Det sparas vid varje turgräns och aldrig mitt i en tur: en historik som fångas mellan ett verktygsanrop och dess resultat är en som ingen leverantör accepterar, så en krasch i det ögonblicket återställer turen före i stället för en halv tur som inte kan spelas upp igen.

En återupptagen körning trimmas till sina nyaste meddelanden och skärs vid en gräns som inte är ett föräldralöst verktygsresultat — ett resultat vars anrop har trimmats bort är en förfrågan som leverantörer avvisar direkt, och ett transkript som inte kan skickas är värre än ett kort.

Varje meddelande registrerar vilket det fortsätter från, och varje samtal namnger sin aktuella grenspets. Det enda beslutet är hela funktionen.

Förgrening skriver ingenting. Den flyttar pekaren. Sökvägen du lämnade finns kvar, så att byta tillbaka är ännu en pekarflytt i stället för en återställning — och att redigera en prompt för att köra den igen slutar kosta dig svaret du jämförde med.

Utan den måste varje form av att gå tillbaka dölja eller radera meddelanden, och att dölja är en lögn som nästa läsare inte kan genomskåda.

Gren Fork
Vad som händer Pekaren flyttas Sökvägen kopieras
Vart den tar vägen Samma samtal Ett nytt samtal
Kostnad Ingenting En kopia av grenen

En fork kopierar med nya id:n i stället för att dela rader. Två samtal som delar rader skulle visa varandras senare meddelanden, vilket är det enda en fork inte får göra.

Paret checkpoint / rewind i körningen markerar en ren turgräns och återvänder till den efter en utforskning, och behåller en digest. Eftersom checkpoints bevaras tillsammans med transkriptet landar en etikett som modellen satte före en omstart fortfarande där den sattes. En checkpoint vars mål inte överlevde en trimning släpps, den kläms inte — att spola tillbaka ”till etiketten” och landa någon annanstans är precis det fel en etikett finns för att förhindra.