Sari la conținut
Danube Labs

De ce se destramă romanele scrise cu AI la capitolul nouă

Ficțiunea lungă scrisă cu AI nu cedează din cauza unui prompt prost, ci când contextul este compactat și starea poveștii dispare. Fișierele, porțile și un script mic rezolvă asta.

De Alexandru Secureanu7 min de citit
O pagină de manuscris cu capitolul nouă încercuit și o linie ruptă care o traversează

Am încercat să scriem un roman într-o singură conversație cu modelul. Capitolele unu până la opt se citeau bine. La al nouălea s-a rupt. Un personaj care murise în capitolul șapte a intrat într-o cameră și a vorbit ca oricare altul. Altul a explicat un fapt pe care cititorul îl află abia patru capitole mai târziu. Proza era încă îngrijită, și tocmai asta înrăutățea lucrurile: nimic nu arăta stricat la nivel de frază.

Primul impuls a fost să reparăm promptul. Am adăugat un paragraf cu toate personajele, o regulă împotriva contradicțiilor, o instrucțiune să păstreze vocea. Capitolul zece a ieșit puțin mai bine, al unsprezecelea mai rău. Modelul nu uitase instrucțiunea. Nu mai avea povestea.

Ce se întâmplă de fapt pe la capitolul nouă

O conversație nu este un document. La fiecare tură, modelul primește din nou tot schimbul de mesaje, iar fereastra de context are o limită. Documentația Anthropic despre ferestrele de context spune că, pe măsură ce numărul de tokeni crește, acuratețea și capacitatea de a recupera informația scad, un fenomen numit context rot. Când conversația se apropie de limită, compactarea rezumă partea mai veche ca să poată continua. Claude Code face asta automat, iar documentația lui despre costuri descrie compactarea automată ca rezumarea istoricului atunci când sesiunea se apropie de fereastră.

Un rezumat este scris pentru un cititor generic al conversației, nu pentru capitolul următor. Păstrează ce s-a întâmplat și pierde ce conta. Capitolul nouă nu este un prag magic. Este aproximativ punctul în care un manuscris atinge limita unui flux care își ține starea în chat, iar cu cât încarci mai mult context la început, cu atât vine mai devreme.

Cum se strică, concret

Proza alunecă spre medie

Vocea unui text stă în exemple, nu în adjective. Când modelul nu mai vede narațiunea din capitolul doi, „scrie cu aceeași voce” devine o descriere, iar descrierile converg spre mijlocul statistic. Frazele se lungesc puțin, metaforele devin mai sigure, naratorul începe să explice sentimente care înainte erau arătate. Fiecare capitol devine o aproximare nouă a vocii, nu o continuare a ei.

Critica se scurge în redactare

Dacă o evaluare a capitolului patru stă în aceeași conversație, rămâne în context. Modelul care scrie capitolul cinci a citit „ritmul șchiopătează la mijloc” și scrie defensiv: scene mai scurte, mai multă acțiune, un paragraf care explică de ce scena contează. O observație despre o versiune devine o instrucțiune pentru următoarea. Un critic separat, cu context separat, nu este o formalitate. Este ce ține cele două meserii despărțite.

Continuitatea moare în rezumat

Compactarea păstrează intriga și pierde textura. „Mara se confruntă cu Ionescu în port” supraviețuiește. Faptul că Mara este stângace, că i-a promis fratelui că nu se mai întoarce în port și că portul se închide la apus nu supraviețuiește. Exact aceste detalii sunt necesare mai târziu. Modelul nu minte când scrie că portul e plin la miezul nopții. Lucrează cu un rezumat care nu a conținut niciodată constrângerea.

Un personaj mort reapare

Rezumatul spune că Mara moare în capitolul șapte, dar numele ei apare în continuare în lista de personaje și în referiri de tipul „apartamentul Marei”. Modelul o poate genera prezentă. Sau nu știe deloc de moarte, pentru că acel capitol a ieșit din fereastră. Nu există o căutare în memorie. Singura dovadă este ce a mai rămas în context.

Informația ajunge înaintea capitolului ei

Cine știe ce și când a aflat este stare, nu text. Un rezumat care spune „conspirația este dezvăluită” nu reține că în cameră erau doar două personaje. Așa că un al treilea reacționează la ea în capitolul zece. Cititorul simte greșeala imediat, chiar dacă nu poate arăta unde este.

De ce un prompt mai bun nu rezolvă problema

Un prompt este o regulă. Starea este date. „Nu contrazice niciodată un capitol anterior” este o regulă pe care modelul nu o poate respecta fără capitolele anterioare. Repetată mai apăsat, regula schimbă tonul eșecului, nu cauza. Prompturile mai lungi grăbesc și ele problema, pentru că un context inițial mai mare lasă mai puțin spațiu până la compactare. Când reglezi promptul, optimizezi lucrul greșit.

Starea stă în fișiere, nu în conversație

Mecanismul care funcționează este nespectaculos. Scoate din chat tot ce trebuie să supraviețuiască și pune în fișiere citite la începutul fiecărui capitol.

  • Canonul: personaje, locuri, cronologie, regulile lumii.
  • Starea personajelor: viu sau mort, unde se află, ce știe, ce vrea în capitolul curent.
  • Promisiunile deschise: fire narative plantate, cu capitolul în care au apărut și cel mai devreme capitol în care pot fi încheiate.
  • Vocea: un profil scurt măsurat din proza autorului, nu o listă de adjective.
  • Jurnalul capitolelor: o intrare pentru fiecare capitol terminat, cu ce s-a schimbat în lume și în cunoștințele fiecărui personaj.

O sesiune de capitol începe prin citirea fișei de stare, scrie, apoi scrie înapoi modificările. Conversația devine consumabilă. Dacă este compactată sau pierdută, sesiunea următoare se reconstruiește din fișiere. Aceasta este diferența dintre un model care își amintește și unul care poate fi reamintit.

Fișa trebuie să încapă pe un singur ecran. Un canon de patruzeci de pagini este doar o altă problemă de context. Încarcă puținele fapte de care depinde capitolul următor și ține restul în fișiere pe care poarta le deschide când are nevoie de ele.

Porți care citesc fișierele și refuză

O poartă este o verificare cu rezultat de tip trecut sau picat și cu o consecință. Nu este o sugestie într-un prompt. Trei porți acoperă aproape tot:

  • O schiță aprobată înainte de orice proză. Capitolul nu poate începe până când schița nu există și nu a fost acceptată.
  • O verificare de continuitate înainte ca o versiune să fie acceptată. Citește versiunea față de fișierele de stare și întoarce încălcări concrete, cu capitolul și pasajul.
  • O trecere prin ochii unui cititor înainte de export. Cineva care nu a văzut versiunea scriindu-se o citește după o grilă stabilită dinainte.

O încălcare trebuie să fie destul de concretă ca să poți acționa. „Problemă de continuitate în capitolul doisprezece” nu ajută. „Capitolul doisprezece, paragraful patru: Mara vorbește, dar fișa de stare notează moartea ei în capitolul șapte” ajută. La fel pentru cunoaștere: „Ionescu menționează registrul, pe care îl află abia în capitolul paisprezece” îi spune scriitorului exact ce să schimbe.

Proprietatea importantă este că o poartă picată oprește bucla. Un avertisment pe care modelul îl poate ignora nu este poartă, este decor. Când verificarea pică, versiunea se întoarce cu lista de încălcări, nu cu îndemnul de a se strădui mai mult.

Scriitorul și criticul nu împart contextul

Izolarea rolurilor înseamnă că scriitorul nu vede niciodată critica, iar criticul nu scrie proză. În practică asta cere contexte separate și fișiere de ieșire separate. Criticul citește capitolul și scrie un raport. Scriitorul citește raportul și fișierele de stare, nimic altceva din procesul criticului. Este și mai ieftin: analiza lungă a criticului nu trebuie să rămână în contextul scriitorului, unde ar devia proza și ar consuma fereastra.

Un script răspunde la întrebările mecanice

Unele întrebări nu au nevoie de model. Personajul este mort în acest moment din cronologie? Numele a mai apărut? Capitolul menționează un obiect care fusese distrus? Un fapt este invocat înainte de capitolul care îl stabilește? Un script mic peste fișiere text răspunde exact, în milisecunde, fără tokeni.

Îl ținem intenționat mic și simplu. Nu judecă proza. Verifică nume, date, numere de capitol și un registru al cunoașterii: fiecare fapt legat de capitolul în care fiecare personaj îl află. Un model poate face și el asta, dar costă tokeni și poate greși cu încredere. Stratul mecanic trebuie să fie determinist. Modelul rămâne pentru ce cere judecată.

Dacă o întrebare are un răspuns exact, nu cere unui model de limbaj să îl dea.

Este inginerie, nu un upgrade de model

Nimic din toate acestea nu face proza mai bună. Oprește eșecuri concrete, iar asta este o altă meserie decât să faci proza bună. Un model mai puternic ridică plafonul pentru un singur capitol. Nu ține starea pe treizeci de capitole și nu ar trebui rugat s-o facă. Starea aparține undeva durabil. Disciplina este muncă reală: formate de fișiere, porți, un motor mic, obiceiul de a scrie starea înapoi după fiecare capitol. Dar munca se acumulează și face diferența dintre un demo și un manuscris.

O implementare care funcționează

Vellum este implementarea noastră pentru această abordare, la vellum.danubelabs.net. Este un plugin pentru Claude Code: o comandă rulează ciclul unui capitol, trei porți obligatorii decid dacă bucla continuă, șaisprezece agenți au roluri separate, iar un motor Python verifică continuitatea ca modelul să nu consume tokeni pe asta. Nu este un model și nu scrie fraze mai bune decât modelul dinăuntru. Este schela care ține starea și refuză să continue când starea lipsește.

De unde să începi

Dacă construiești un flux pentru text lung, începe cu fișierele de stare, nu cu promptul. Notează ce trebuie să fie adevărat la începutul fiecărui capitol. Apoi scrie poarta care verifică asta. Abia apoi lasă modelul să scrie. Promptul este ultimul lucru de reglat și de obicei cel mai puțin important.

Danube Labs construiește sisteme AI care trebuie să funcționeze luni întregi, nu doar cât un demo. Vezi serviciile noastre de sisteme AI sau programează o discuție introductivă gratuită.

Întrebări frecvente

De ce își pierd romanele scrise cu AI coerența pe la capitolul nouă?
În jurul acelui punct, o conversație lungă ajunge la fereastra de context a modelului. Capitolele anterioare sunt rezumate sau eliminate, așa că modelul păstrează instrucțiunile, dar pierde starea poveștii: cine e viu, cine știe ce și ce detalii au fost stabilite. Proza se citește în continuare curat, de aceea eșecul este ușor de ratat.
Poate un prompt mai bun să oprească erorile de continuitate în ficțiunea scrisă cu AI?
Nu. Un prompt este o regulă, iar continuitatea este date. Să îi spui modelului să nu contrazică un capitol anterior nu îi dă acele capitole. Un prompt mai lung face compactarea să vină mai repede. Soluția este să ții starea în afara conversației și să o încarci din nou pentru fiecare capitol.
Ce este compactarea contextului și de ce strică o poveste?
Compactarea rezumă partea mai veche a unei conversații ca modelul să poată lucra mai departe peste limita de context. Un rezumat păstrează evenimentele și pierde specificul: obiceiurile unui personaj, o promisiune din capitolul trei, ora la care se închide un loc. Capitolele următoare au nevoie exact de acel specific, așa că intră în contradicție cu o poveste pe care modelul nu o mai vede.
Cum păstrezi continuitatea când scrii un roman cu AI?
Ține canonul, starea personajelor, firele narative deschise și un jurnal al capitolelor în fișiere și citește-le la începutul fiecărui capitol. Scrie modificările înapoi când capitolul e gata. Conversația poate fi apoi aruncată sau compactată fără să pierzi povestea, pentru că starea durabilă trăiește în afara ei.
Ce este o poartă obligatorie într-un flux de scriere cu AI?
O poartă este o verificare care citește fișiere, întoarce trecut sau picat și oprește bucla când pică. O schiță aprobată înainte de proză, o verificare de continuitate înainte de acceptarea unei versiuni și o trecere prin ochii unui cititor înainte de export sunt trei care acoperă aproape tot. Un avertisment pe care modelul îl poate ignora nu este poartă.
Poate AI să scrie un roman întreg într-o singură sesiune?
Poate produce textul, dar nu poate ține starea suficient de mult ca să îl păstreze coerent. O singură sesiune funcționează pentru o povestire scurtă. Un roman are nevoie ca starea să supraviețuiască compactării, repornirilor de sesiune și schimbărilor de model, adică fișiere, verificări și o buclă de capitol repetabilă, nu un prompt foarte lung.
Distribuie

Articole similare

  • 8 min de citit

    Testul cititorului orb pentru texte scrise cu AI

    Nu poți judeca textul pe care l-ai văzut generându-se. Șterge semnele, scrie baremul de eșec înainte de lectură, folosește doi cititori și păstrează verdictul într-un fișier.

    • AI
    • Scriere
  • 9 min de citit

    Vocea unui autor, măsurată cu cod, nu din impresii

    „Scrie în stilul meu” este o instrucțiune pe care modelul nu o poate verifica. Măsoară vocea din proza autorului și notează fiecare variantă față de profil.

    • AI
    • Scriere