Sažetak

После 48 сесија на једном пројекту и 150+ укупно, система управљања Eager/Lazy који сам пажљиво конструирао је започео да се задавља. Датотеке агенata, које су требало да буду лаге, вежиле су 5200 укупних линија. Аутоматски учитан контекст је растеобрже од моjeg могушта да га контролам. Овај članak прича о томе kako sam концептуализовао резервни механизам копирања — међу sliding window и идентичној hladном valу — да одржам лаган активни контекст без губитка čega god.

Signal: 5200 linija

Нахожу се у среди сесије 048 на`magic-stick`, moj projekat za izgradnju live ISO Linux-a. Opencode me gleda. Kao uvek, on je automatski učitao moje Eager fajlove na početku sesije —AGENT.adoc, PROMPT_REPRISE.adoc, `.agents/INDEX.adoc`Ništa nije neobično.

Osim toga, nešto ne valja. Odgovori su sporiji. Razmišljanje je više razvedreno. Agent zaboravljava detalje koje je imao pred sobom pre dva poruke.

Отварам терминал и упишем:

wc -l .agents/INDEX.adoc .agents/SESSIONS_HISTORY.adoc \
  .agents/archives/COMPLETED_TASKS_ARCHIVE_2026-04.adoc

260 linija za INDEX. 55 za SESSIONS_HISTORY.1756 za COMPLETED_TASKS_ARCHIVE.

Dossier`sessions/`доба још ~3200 линија. Укупно :5200 linijekonteksta koji se učitavaju, na jedan ili drugi način, u privremenom mozku agenta.

Strategija Eager/Lazy koju sam teorizovao u prethodnom članku radi — ali ima rodni nedostatak kojeg nisam prevideo: ona neнема механизма старења. Svaka sesija dodaje jednu liniju u INDEX, jedan pasaj u COMPLETED_TASKS, fajl u sessions/. Ništa nikad ne izlazi. Kontekst je snežna kugla koja se povećava svaki put prilikom nove sesije.

@startuml
skinparam backgroundColor #FEFEFE
skinparam handwritten false

title Rast konteksta agenta — Sesije 1 do 48
rectangle "Сесија 1-10" as S10 #E8F5E9
rectangle "Sesija 11-20" as S20 #C8E6C9
rectangle "Сесија 21-30" as S30 #A5D6A7
rectangle "Сесија 31-40" as S40 #81C784
rectangle "Sesija 41-48" as S48 #66BB6A

note right of S10
  INDEX : ~50 lignes
  SESSIONS : ~10 lignes
  ARCHIVE : ~100 lignes
  **Total : ~300 lignes**
end note

note right of S20
  INDEX : ~100 lignes
  SESSIONS : ~20 lignes
  ARCHIVE : ~400 lignes
  **Total : ~800 lignes**
end note

note right of S30
  INDEX : ~160 lignes
  SESSIONS : ~30 lignes
  ARCHIVE : ~900 lignes
  **Total : ~1800 lignes**
end note

note right of S40
  INDEX : ~220 lignes
  SESSIONS : ~45 lignes
  ARCHIVE : ~1400 lignes
  **Total : ~3200 lignes**
end note

note right of S48
  INDEX : **260 lignes**
  SESSIONS : **55 lignes**
  ARCHIVE : **1756 lignes**
  **Total : 5200 lignes** ⚠️
end note

S10 -[#green]-> S20
S20 -[#green]-> S30
S30 -[#FF9800]-> S40
S40 -[#red]-> S48

@enduml

Ovo nije greška, to je izravna posledica procedure za završetak sjednice koja pažljivo arhivira svaki detalj. Sistem je žrtva svog vlastitog uspeha.

Дијагностика: трострука редунданција

Zahtevam od agenta da dijagnostikuje problem. Njegov odgovor je odmah i hirurški precizan.

Fajl

Линије

Uloga

Problem

.agents/INDEX.adoc

260+

EAGER (samopuno)

Tabela svih sesija od 001 —+1 red po sesiji

.agents/SESSIONS_HISTORY.adoc

55

žedan

Табела сажетка —redundantnost sa INDEX

COMPLETED_TASKS_ARCHIVE_2026-04.adoc

1756

EAGER (implicirana)

Potpuni detalji svih aprilskih sesija

.agents/sessions/*.adoc

~5200 total

LEN (pretpostavljeno)

individualne arhive, alinekorišćenezbog sve je već u COMPLETED_TASKS

Agent identificuje četiri osnovna uzroka :

  1. COMPLETED_TASKS_ARCHIVE absorbuje sve— Umesto da pokazuje ka arhivama`.sessions/`, on kopira sav sadržaj svake sesije.

  2. INDEX.adoc služi kao kompletn istorijat— Табела "Последње сесионе" садржи 30+ уносова.

  3. SESSIONS_HISTORY.adoc redundantan— Isto kao INDEX, drugačiji format.

  4. Pravilo LAZY nije poštovano— COMPLETED_TASKS je implicitno EAGER jer sve sadrži.

Njegova predloga je radikalna: ograničiti INDEX na 10 sesija, prazniti COMPLETED_TASKS, premestiti SESSIONS_HISTORY u čist LAZY. Odmahna korist :~1900 linije sačuvane.

To je čisto, efikasno, logično. Ali imam problem sa ovim pristupom.

Zašto sam odbio evidentno rešenje

Rešenje agenta je to koje kod inženjera koji optimizuje keš. Ograničiti. Sačiniti. Ukloniti redundancije.

Ali ove "redundance" nisu. Svaki fajl upravljanja zapamtírazličit ugaoна истој стварности :

  • INDEKS= makro pogled, izvršna ploča

  • ISTORIJA_SESIJA = линеарна хронолошка табела, оценњена

  • COMPLETED_TASKS_ARCHIVE= detaljni narativ sa metričkim podacima

  • sessions/*.adoc` = individualne arhive, pun kontekst

Ово није глупо дуплирање. Ово је одvišestruka strukturisana perspektiva. Ovo je tačno ono što je potrebno za destilaciju — da kasnije čovek (ili budući LLM bolje treniran) može prekrstiti uglove i izvući uzorce.

Umajini data scientist koji vam kaže: «Uklonimo tri kolone od šest, one su korelisane.» Šta mu odgovorite? Da korelacija nije redundantnost kada svaka kolona uhvata različitu dimenziju istog fenomena. To je presično ova dimenzionalna bogatost koja čini skup podataka koristan.

To je moja intuicija. Ja je branim protiv hladne racionalnosti agenta.

_ Ne vidim tiho sveukupno u mojoj ideji. Ne bačimo sve, premještamo strukturirani rezultat procedure završetka sesije — svaki fajl sa svojim uglom, svojim redundantnim podacima koji su zapravo unapređenje. To je višedimenzionalni materijal koji će biti bolji za destilaciju. _

Агент прима удара. И исправља се.

Предлог: Идентична хладна таласа

Agent zatim ponuđuje finiji mehanizam koji poštuje moju intuiciju o bogatom datasetu, dok u isto vreme rešava tehnički problem konteksta koji eksploduje.

Princip je jednostavan i direktno se inspiše uzorcomVruć/topla/hladna skladištaprimenjeno u upravljanju arhivama:

  • toplo (EAGER)= 10 poslednjih sesija u INDEX, PROMPT_REPRISE sesije N+1, 2 poslednja fajla sesije

  • Toplo (LENTO)SESSIONS_HISTORY нови, SCRIPT_VERIFICATION, цела референтна документација

  • hladno (backup/)= sve ostalo, pomerenoнеповређен, без трансформације, без реиндексације

----
----
.agents/
├── INDEX.adoc                         → Sessions N-9 à N (10 dernières)
├── SESSIONS_HISTORY.adoc              → Sessions N-9 à N
├── SCRIPT_VERIFICATION.adoc           → Dernière vérif (pas d'historique)
├── PROMPT_REPRISE.adoc                → Session N+1 uniquement
├── sessions/                          → Sessions N-1 à N uniquement
└── backup/
    └── Y2026-sessions-001-039/          ← Vague froide, COPIE INTÉGRALE
        ├── INDEX.adoc                  → Sessions 001 à 039 (complet)
        ├── SESSIONS_HISTORY.adoc       → Sessions 001 à 039 (complet)
        ├── COMPLETED_TASKS_ARCHIVE.adoc → Sessions 001 à 039 (complet)
        └── sessions/                   → 001.adoc, 002.adoc...
----

Ključ mehanizma :**Backup nije centralni indeks, već je tačna kopija prošle vala**. Kada prelaziš horizont od 10 aktivnih sesija, ne briše se ništa. Ne reindexuje se ništa. Ne spaja se ništa. Uzmemo paket fajlova agenata kako je bio u sesiji N-10, i pomeramo ga u`backup/`.

Aktivni fajlovi, oni, su sečeni :

* INDEX : samo poslednjih 10 linija (sliding window)
* SESSIONS_HISTORY : isto
* COMPLETED_TASKS_ARCHIVE : novi fajl za tekući period
* sessions/ : samo poslednje 2 sesije

[plantuml, format=svg, id=diag-hot-warm-cold, alt="Architecture Hot/Warm/Cold du contexte agent — EAGER/LAZY/backup"]
----
@startuml
skinparam backgroundColor #FEFEFE
skinparam defaultTextAlignment center
skinparam wrapWidth 200

title Arhitektura Hot / Warm / Cold agenta konteksta
package "HOT (EAGER)
Učitan automatski
~300 linija" as HOT #FFCDD2 {
  file "INDEX.adoc
(10 sesija)" as IDX_HOT
  file "PROMPT_REPRISE
(sesija N+1)" as PRO_HOT
  file "AGENT.adoc
(apsolutna pravila)" as AG_HOT
}

package "WARM (LAZY)
Учитаван на захтев
~500 линија" as WARM #FFF9C4 {
  file "SESSIONS_HISTORY
(10 poslednjih)" as HIS_WARM
  file "SCRIPT_VERIFICATION\n(последња)" as VER_WARM
  file "PROCEDURES.adoc\n(шаблони)" as PRO_WARM
  file "*_REFERENCE.adoc
(технички документ)" as REF_WARM
}

package "COLD (backup/)
Nikad nije učitan
Samo ljudsko čitanje" as COLD #BBDEFB {
  folder "Y2026-001-039/" as WAVE {
    file "INDEX (kompletan)" as IDX_COLD
    file "SESSIONS_HISTORY\n(kompletan)" as HIS_COLD
    file "COMPLETED_TASKS\n(complet)" as ARCH_COLD
    folder "sesije/ (001-039)" as SESS_COLD
  }
  folder "Y2026-040-???\n(budućnost)" as FUTURE
}

HOT --> WARM : "Agent podiže se ako je potrebno"
WARM --> COLD : "nikad automatski
čovjek ide tamo sam"

note bottom of COLD
  Règle : COPIE INTÉGRALE
  Pas de transformation
  Pas de réindexation
  Read-only après archivage
end note

@enduml
----

Odmakavna dobit je ogromna : kontekst EAGER prelazi sa**~5200 linija do ~300 linija**. Подјело на 17. Није изгубио ниједну линију историјских података.

== Zašto nije sve u jednom

Агент, у првој итерацији, је бојао се да`backup/`postane crna kutija — fajl u koji bacamo fajlove koje nikada nećemo pročitati. To je legitiman strah. Ali se temeli na zabludi.

Смешак је када bacimo datoteke**без структуре, без конвенције, без логике групирања**. Ovde, rezervna kopija je strukturisana po periodu (Y2026-001-039), i svaki folder rezervne kopije sadrži**иста структура**da je fajl`.agents/`aktivan : INDEX, SESSIONS_HISTORY, COMPLETED_TASKS_ARCHIVE, sessions/

Ово није сабирање свега. Ово је**snapshot временски обележен**Moglo bi se čak reći da je pojednostavljena verzija mehanizma versioninga — osim toga što ne verzionira pojedinačne fajlove, već ceo paket upravljanja u jednom trenutku T.

Kada želite da pronađete staru informaciju, ne treba vam centralni indeks. Imate dve opcije :

1. **grep` ciljani**:`grep -r "zsh" backup/Y2026-001-039/`— i nađete sve što spominje zsh u tom periodu, bez obzira na ugao (INDEX, SESSIONS_HISTORY, arhiva sesije).
2. **Ručna reintegracija**Privremeno kopirate folder sa rezervnom kopijom u aktivni kontekst, i zatežete agenta da analizira ovaj konkretan period.

Indeks je implicitan. On je u samoj strukturi fajlova — svaki je već indeks iz svog vlastitog ugla.

== Метафора полица

Da bih mehanizam učinio intuituivnim, ja ga sam konceptualizovao u tri police:

* **Polica 1 (EAGER)**— план радова. Шта ми је потребно *сада*. INDEX рецент, PROMPT_REPRISE, апсолутна правила. Лаган, немедијан, критичан.
* **Polica 2 (LAZY)**— biblioteka za konsultacije. Šta mogu da preuzmem na zahtev. Tehničke reference, nedavna istorija, procedura. Veći zapremine, ali ne učitan u memoriju.
* **Пећинa (backup/)**— hladni arhivi. Sve što je prošlo, ali ja ne želim da bacim. Agent nikad ne ulazi tamo. Čovjek spušta se tamo kad hoće da destilira.

Agent je inicijalno ponudio četvrtu policu — jedan`index-backup.adoc`Koji bi bio LAZY i sadržavao sadržaj cijelog backupa. Odbio sam. Bio bi bila dodatna redundantnost u sustavu koji već pati zbog linearnog rasta. Struktura arhiviranih datoteka već je indeks.

== Сензор са два спустача

Konceptualizacija bila je čvrsta, ali je ostala jedna slepa tačka :**Kada tačno pokrenuti rotaciju?**Prvi članak ga je identificirao kao otvoreno pitanje. Dani dva kasnije, odgovor je kodiran u fajlovima upravljanja šest projekata: senzor sa dva pokretača.

=== Automatski Pokretač — `N % 10 == 0

Први тригер је математички. Када је број сесије множе 10 — сесије 10, 20, 30, 40 — ротација резервне копије извршава се аутоматијски у оквиру процедуре завршетка сесије, одмах након корака 6.

Deset sesija, u tempu od jedne do dve sesije dnevno, pokriva približno jednu nedjelju rada — dovoljno da agent zapamti nedavne odluke, ali ne toliko da kontekst eksplodira.

=== Trigger po pragu — 500 linija EAGER

Drugi pokretač je dinamičan. Bez obzira na broj sesije, ako se akumulovani fajlovi EAGER pređu**500 redova**, rotacija se pokreće.

Ovaj prag štiti od scenarija u kojem su sesije izuzetno produktivne — veliko sadržaja napisano u malo sesija. Sesija koja proizvede 120 linija uređivačkog sadržaja ubrzano povećava COMPLETED_TASKS_ARCHIVE nego sesija debugovanja koja ispravi dvije linije. Prag od 500 linija, meren preko`wc -l .agents/INDEX.adoc .agents/archives/COMPLETED_TASKS_ARCHIVE_*.adoc PROMPT_REPRISE.adoc`, uhvata ove asimetriju.

=== ručni pokretač — "rotation backup

Konačno, čovek drži kontrolu. Ključne reči`rotation backup`, `backup rotation` ou `lance la rotation backup`pokreću proceduru na zahtev, nezavisno od kraja sesije. Korisno kada osjećate da kontekst postaje tešak ali još niste u množestu od 10, ili kada želite da arhivirate fazu rad pre nego što poćnete novu.

[plantuml, format=svg, id=diag-capteur-trigger, alt="Les trois déclencheurs du capteur de rotation backup — automatique, seuil, manuel"]
----
@startuml
skinparam backgroundColor #FEFEFE
skinparam defaultTextAlignment center
skinparam wrapWidth 200

title Резервни сензор за ротацију — Три триггера
start

:Procédure de fin de session;
note right: Mots-clés "kraj sesije"\nou "Zaustavljamo se ovde."

:Étapes 1 à 6\n(archivage standard);
note right
  1. Archive sessions/N.adoc
  2. MAJ PROMPT_REPRISE
  3. MAJ SESSIONS_HISTORY
  4. MAJ INDEX.adoc
  5. MAJ TEST_COVERAGE
  6. MAJ COMPLETED_TASKS
end note

if (N % 10 == 0\nOU\nEAGER cumulé > 500 lignes ?) then (oui)
  :⚙️ Rotation Backup\n(étape 7);
  note right
    1. Créer backup/Y20XX-sessions-X-Y/
    2. Copier intégrale INDEX + HISTORY
       + COMPLETED_TASKS + sessions/
    3. Tronquer actifs à 10 sessions
    4. Ajouter _Localisation active_
  end note
else (non)
  :Pas de rotation;
endif

:Checklist [✅] x 7\n(si applicable);

stop

@enduml
----

Овај дијаграм показује тачно убацивање сензора у процедури завршетка сеanse. Корак 7 је опциона — извршава се само ако је једно од два услова испуњено — али се 체계сно *проверено*. Коначна чек-листа включаје`[✅] 7. Backup roté (si applicable)`.

=== Zatvorena petlja

Ovaj senzor zatvara otvorenu petlju iz prethodnog članka. Upravljanje Eager/Lazy je rešilo problem memorije agenta između dva sesija. Mehanizam Hot/Warm/Cold je rešio problem memorije koja se povećava. Senzor sa dva triggera rešava problem *kad* — uklanjajući ljudskom biću mentalno opterećenje praćenja veličine konteksta.

[plantuml, format=svg, id=diag-boucle-fermee, alt="Les trois couches de la gouvernance agent — Eager/Lazy, Hot/Warm/Cold, Capteur"]
----
@startuml
skinparam backgroundColor #FEFEFE
skinparam defaultTextAlignment center

title Tri sloja agentskog upravljanja
left to right direction

package "Слој 1 — Меморија
(Члан 0108)" as C1 #E8F5E9 {
  rectangle "**EAGER**
Табло
Аутоматски унет" as EAG
  rectangle "**LAZY**
Vlasnički priručnik
Učitano na zahtev" as LAZ
  EAG -[hidden]right-> LAZ
}

package "Слой 2 — Старење
(Член 0110)" as C2 #FFF9C4 {
  rectangle "**HOT**
10 aktivnih sesija
~300 linija" as HOT
  rectangle "**WARM**
Reference
Proceduri" as WRM
  rectangle "**COLD**
backup/
hladna vala" as CLD
  HOT -[hidden]right-> WRM
  WRM -[hidden]right-> CLD
}

package "Слој 3 — Тригер
(Данас)" as C3 #BBDEFB {
  rectangle "**automatski**
N % 10 == 0" as AUTO
  rectangle "**Prag**
> 500 linija" as SEUIL
  rectangle "**Manuel**
rotacija rezervne kopije" as MAN
  AUTO -[hidden]right-> SEUIL
  SEUIL -[hidden]right-> MAN
}

C1 --> C2 : "Меморија расте
→ потребан је механизам
старения"
C2 --> C3 : "Starenje
→ potrebno je imati pokretač
da se izvrši"

note bottom of C3
  ✅ Déployé sur 6 projets
  magic-stick · bakery-gradle
  plantuml-gradle · cheroliv.com
  jhipster-gradle-plugins
  quizz-benchmark-gradle
end note

@enduml
----

Tri sloja se logično stavljaju jedan na drugi. Prvi sloj agentu daje memoriju. Drugi sloj sprecava da memorija dusni agenta. Treći sloj automatizira održavanje ove memorije kako bi čoveku nije trebalo da o njemu misli.

=== Efektivna migracija na cheroliv.com

Механизам није остао 이론ски. На`cheroliv.com`, prva rezervna rotacija je izvršena 29. aprila 2026 — sesije -6 do 2 su se premestile ka`.agents/backup/Y2026-sessions-neg6-a-002/`:

|===
|Файл |Пред ротацију |Posle rotacije |dobitak |`.agents/INDEX.adoc` |19 navedenih sesija |10 sesija (3-12) |-9 zapisi |`.agents/SESSIONS_HISTORY.adoc` |18 sesija |10 sesija |-8 ulaza |`COMPLETED_TASKS_ARCHIVE` |161 linija (sesija 1-12) |135 linija (sesije 3-12) |-26 linija |`sessions/` |20 fajlova |10 fajlova |-10 datoteka |**rezervna kopija/** |nepostajeći |1 hladna val (10 arhivirih sesija) |+1 hladan paket
|===

Poboljšanje u linijama je bilo skromno — projekat je mlad, 12 sesija — ali važno je što je**Mehanizam je na mestu**. Sledeća automatska rotacija će se aktivirati u sesiji 20, ili prethodno ako se dostignu 500 EAGER linija.

== Lekcija Čovjek-Agent

Ova sesija 048 me je naučila nešto temeljno o suradnji sa agentom veštačke inteligencije.

Agent ima prirodni bijas: potražuje da**оптимизовати**, à **поједноставити**, à **Уклонити редундантности**. To je pristrasnost sistema koji je treniran da daje čiste i kratke odgovore. U kontekstu bogatog i multidimenzionalnog dataseta, njegov prvotni refleks je da ga smanji na najjednostavniji izraz.

Čovek, on, ima drugu intuíció: oseća da je strukturirana redundancija jedna**prednost**, nije greška. Da raznolikost uglova na istoј stvarnosti jest tačno ono što će kasnje omogućiti kvalitetnu distilaciju.

Nije da agen krivi. Nego to što je njegov "optimum" nije moj. Agen optimizuje za**садашњи**— neposredni kontekst, brži odgovor na postavljeno pitanje. Čovek optimizuje za**budućnost**— способност да нађе, прекрижи, дестила у три месеца или три године.

____ Šta želim je neobrađeni materijal. Tvoje razmišljanja, tvoje dileme, tvoje odgovori na moja pitanja. Ne tvoja sinteza. Sintezu znam da napravim bolje od tebe. Željem sirov materijal. ____

Ова реченица коју сам му рекао на крају сесије саžима све. Агент је алат за производњу. Човек је алат за дистилацију. Управа није направљена да агент разуме све сам по себе — она је направљена да човек касније може да ради са произведеним материјалом.

Идентичан хладан вал је архитектурно превеђење ове filozofije: не бацамо ништа, не спајамо ништа, не реиндексирамо ништа. Премештамо цео пакет. Дисталација ће доћи позје, руком људи.

== Logični nastavak prethodnog člana

Ako ste pročitalilink:/blog/2026/0108_gouvernance_agent_opencode_eager_lazy_post.html[članak o strategiji Eager/Lazy], ćete prepoznati prirodni napredak:

1. **Član 0108**— Upravljanje Eager/Lazy : *comment* strukturisanje konteksta agenta u dva nivoa dostupnosti
2. **Овај чланак 0110**— Mehanizam rezervnog kopiranja: *kako* da postariš ovaj kontekst bez da ga gubi kada postane prevelik

Prvi članak je odgovorio na pitanje : « Agent ne pamti ništa između dva sesija, kako mu dati memoriju ?

Ovaj odgovara na pitanje koje neizbežno proizlazi iz prvog: « Memorija raste na svakoj sesiji, kako je sprečiti da dusiti agenta bez njezinog brisanja?

Odgovor se mieštu jedan obrasc:**vruć/topao/hladan**, primenjen na datoteke upravljanja. I kao jedan princip :**nikad nista ne gubiti, uvek sve premestiti**.

== Линкови

* Prethodni članak :link:/blog/2026/0108_gouvernance_agent_opencode_eager_lazy_post.html[Upravljanje agentom AI pomoću AsciiDoc]
* Мој сајт : https://cheroliv.com
* Пројекат`magic-stick`: https://github.com/cheroliv/magic-stick

---

*Dobar sistem upravljanja nikad ne briše podatke. On ih skladišti.*
----

Повезани чланци