Sažetak

Kada radimo sa AI agentom kao što je Opencode na složenim projektima preko više sesija, suočavamo se s temeljnim problemom:izbeganje konteksta. Agent ne pamti prethodnu sesiju. Sve što mu je objasnjeno — arhitektura, konvencije, stanje backloga — je izgubljeno. Rekonstruisanje ovog konteksta na svakoj sesiji je skupo, sporo i izvor greške.

Ovaj članak izlaga ručnu strategiju koju sam izradio da rešim ovaj problem: postojani sistem upravljanja baziran na AsciiDoc fajlovima, sa dihotomijom.žestan/lenза оптимизацију консумције токена контекста, и једнаobavezna procedura završetka sesijeда осигурамо непрестаност.

Scena : Ponedeljak, 21. april, 9:00

Ponovo otvaram Opencode da nastavim sa mojim Gradle pluginom`plantuml-plugin`. Јуче увече, ja sam provela tri sata razgovarajući sa agentom arhitekture pool-a API ključeva — rotacija round-robin, upravljanje kvotama, automatski fallback. Sutra ujutru, agent me gleda sa očima ribice.

_ — Здраво, ја сам ваш асистент Opencode. Како могу да вам помогнем данс? _

Nema — Ah da, pool API ključeva, Bili smo na strukturi YAML. Nema — Pažnja,PlantumlManager`је singleton объект Kotlin, а не класа. Није — Не, смо одлучили вчера да`SyntaxValidationResult`ostajala je jedna sealed class ugniježdena u`PlantumlService.

Sve mora da se uradi ponovo. Ili bolje rečeno: sve mora da se ponovo objasni. Ja ću provesti prvih dvadeset minuta svoje sesije da rekonstruišem kontekst koji je agent već imao u ruci juče. Dvadeset minuta ispaljenih tokena. Dvadeset minuta kada bih mogao da kodiram, ali umesto toga radim obaveznu pedagošku radnju.

Ovo nije greška Opencode. To je sama priroda konverzacionih LLM: između dve sesije, radna memorija jepotpuno izbrisana. Agent se ne seća prethodne misije, donošenih odluka, identificiranih zamki, koda koji smo zajedno napisali.

Preživeo sam to desetkrat. Na četiri simultanih projekata. S sesijama koje se nastavljaju nedeljama. Izračunao sam: u proseku,30–40 % vremena sesijebio je posvećen rekontekstualizaciji agenta. Na sesiji 87 projekta`plantuml-plugin`, sam se pukao. Ne mogu više da si dovolim da ponovo objasním za deseti put da`AttemptEntry`је top-level data class у`DiagramProcessor.kt`.

Mi je trebalo sistem. Ne, nije hack. Pravilno upravljanje.

Генезис : од хаоса до метода

Prve sesije : Vek tame

Мој први пројекат са Opencode,plantuml-plugin, pokrenuo se bez ikave upravljanja. Postavljam pitanje, agent odgovara, ponavljamo, sesija se završava, a sutra počinjemo od nule. To je bila sesija 1, pa sesija 2, pa sesija 3…​ do sesije 62 kada sam shvatio da sam gubio kumulativno sate objašnjavajući istu arhitekturu.

Na sesiji 62, brojevi su tu:198 jediničnih testova prolazi, 42 validiranih funkcionalnih testova, plugin radi. Ali kognitivni trošak je nesnošljiv. Svaka nova sesija počinje dvadesetminutnim monologom o strukturi projekta.

Epozod site.yml uništen (Sesija 2, bakery-plugin)

Metoda nastaje i od katastrofe. Na projektu`bakery-gradle`, na sesiji 2, tražim od agenta da izmeni fajl`site.yml`. Agent, ne proveravajući da li je datoteka verzionisana, pravi`Write`complet qui écrase le contenu. Résultat : les tokens réels (clés API Firebase, secrets de déploiement) sont remplacés par des placeholders factices. Le fichier n’était pas dans git — il était dans

Wait we need to output translated text, not original. I mistakenly output original. Let’s produce the translation we derived.

Thus final:

" koji prepisuje sadržaj. Rezultat: istinski tokeni (Firebase API ključevi, sekreti za implementaciju) zamijenjeni su lažnim placeholderima. Fajl nije bio u git — bio je u"

Make sure leading space before "koji". Let’s output exactly that.

</think>

koji prepisuje sadržaj. Rezultat: istinski tokeni (Firebase API ključevi, sekreti za implementaciju) zamijenjeni su lažnim placeholderima. Fajl nije bio u git — bio je u`.gitignore`Да заштитимо тајне.

Bez rezervne kopije. Bez`git restore`possible. Zaključan sam. Treba mi ručno da ponovo konstruišem fajl konfiguracije, da pronađem tokene u svojim menadžerima lozinki, sve da ponovo spajem.

Od ove frustracije se rodilaApsolutno pravilo 1b :

_ Никогда не дробитиjedan konfiguracioni fajl sa jednim`Write`kompletan kada je jedan`Edit`Delimično je dovoljno.Nikada ne zameniчувствитих вредности фалшивим вредностимаProveriti git check-ignore i `git ls-filespre bilo koje modifikacije. _

Ovo pravilo, danas usečeno u mramor svih mojih datoteka`AGENT.adoc` et `INDEX.adoc`na četiri projekta, nastala je iz stvarne greške koja mi je koštala jedan sat ručnog rada

Migracija Markdown → AsciiDoc (Sesija 1, cheroliv.com)

  1. aprila 2026., na`cheroliv.com`, Ja donosim radikalnu odluku: konvertirati cjelokupno upravljanje Markdowna u AsciiDoc. To nije estetsko. To je funkcionalno. AsciiDoc nudi semantičku strukturu koju LLM bolje čitaju: hijerarhijske sekcije, tipovani tabele, napomene (NOTE, WARNING, CAUTION), atributi dokumenta čitljivi mašinom.

Sesija 1 od`cheroliv.com`formalizuje strukturu:

  • Konverzija`AGENTS.md` en AGENT.adoc

  • Креирање специijalних агентов :`CODER.adoc`, SCRUM_MASTER.adoc, PLANTUML_DESIGNER.adoc

  • Kreiranje Eager/Lazy strukture:`INDEX.adoc`, SESSIONS_HISTORY.adoc, AGENT_SESSION_MANAGER.adoc, SESSION_CHECKLIST.adoc, PROCEDURES.adoc

Jedna potvrda:`90975e9 refactor: migrate agent governance from Markdown to AsciiDoc`. I sajt nastavlja da radi.

@startuml
skinparam backgroundColor #FEFEFE
skinparam handwritten false

title Evolucija sesija — od sesije 1 do 150+
legend top
    |= Couleur |= Projet |
    | <#4CAF50> | cheroliv.com |
    | <#2196F3> | plantuml-plugin |
    | <#FF9800> | bakery-plugin |
    | <#9C27B0> | magic-stick |
endlegend

concise "Активне Сесије" as S

@S
0 is ".md bruta"
1 is "Миграција\nAsciiDoc"
10 is "Eager/Lazy
formalizovan"
62 is "Правило сигурност\n(site.yml)"
87 is "krakiranje
kontekst"
109 is "Оптимизација
-60% токени"
133 is "133 сесија
240 тестова прошли"

S@0 -> S@1 : Session 1\n(cheroliv.com)
S@1 -> S@10
S@10 -> S@62 : Session 62\n(plantuml-plugin)
S@62 -> S@87 : Session 87\n(Cry 4 help)
S@87 -> S@109 : Session 109\n(API Key Pool)
S@109 -> S@133 : Session 133\n(Aujourd'hui)

@enduml

Vremenska linija iznad ilustruje stvarni napredak. Tačka prelomnica je sesija 87: to je mesto gde frustracija ponovnog rekontekstualizacije prelazi granicu tolerancije, i metoda Eager/Lazy prestaje da bude samo ideja i postaje obaveza.

Strategija: Eager/Lazy u dubini

Философија : рачунарски кеш применjen у когницији

Moj pristup se direktno inspiracije keširanjem u računarstvu. Sve što jekritički i često korišćentreba da bude odmah dostupno (Žedan). Sve šta jekontekstualni ili volumniТреба да се учита на захтевlen).

Eager (tabla bord)

Lazy (priručnik vlasnika)

Veličina

< 100 linija, < 10k tokena

Neograničeno, detaljno

Učitavanje

Auto, na početku sesije

Na zahtev agenta

Садржај

Apsolutna pravila, tekuća misija, kritično stanje

архиве сесија, поволна историја, детаљне процедуре, техничке референце

uloga

Orientiraj agenta odmah

Одговорити на дубока контекстуална питања

Eager datoteke : tabla borda

Ovi fajlovi žive u korenu svakog projekta i automatski se učitavaju agentom na početku svake sesije. Oni čine letabla nadzora-- kritična informacija, odmah dostupna.

@startuml
skinparam defaultTextAlignment center
skinparam wrapWidth 200

package "Корен пројекта (Eager - аутоматски учитаван)" {
    component "<b>AGENT.adoc</b>
Апсолутна правила
Структура и конвенције" as AGENT
    component "<b>PROMPT_REPRISE.adoc</b>\nМиссија сесије N\nСажетак N-1" as PROMPT
    component "<b>INDEX.adoc</b>
тачка улаза
Правила + Сесије" as INDEX
    component "<b>*_ESSENTIALS.adoc</b>\nPoslovni kontekst\nkritičan" as ESS
}

package ".agents/ (Lazy - Učitan na zahtev)" {
    component "<b>sessions/N-*.adoc</b>
Detaljni arhivi
Odluke & Output" as SESS
    component "<b>SESSIONS_HISTORY.adoc</b>\nТабела сажетака\nДатум/Тип/Поен" as HIST
    component "<b>PROCEDURES.adoc</b>
Шаблони за крај сесије
6 корака" as PROC
    component "<b>*_REFERENCE.adoc</b>\nПуна архитектура\nТехничке референце" as REF
    component "<b>COMPLETED_TASKS_ARCHIVE</b>\nZavršeni zadaci\nPo mesecima" as ARCH
    component "<b>AGENT_MODUS_OPERANDI.adoc</b>
Документација стратегије
Методологија" as MOD
    component "<b>*_REFERENCE.adoc</b>
Boot testovi, particija A/B
Specifični konteksti" as SPEC
}

AGENT --> PROMPT : "Reference"
AGENT --> INDEX : "Reference"
INDEX --> SESS : "indeksira"
INDEX --> HIST : "indeksira"
INDEX --> PROC : "Референца"
INDEX --> ARCH : "Референца"
INDEX --> REF : "Референца"
PROMPT --> SESS : "Arhiva N-1"
PROMPT --> ESS : "Poslovni kontekst N"

@enduml

AGENT.adoc-- Главна датотека. На`cheroliv.com`, ima 200 linija i sadrži:

  • Апсолутна правила пројекта (не дозволено комит без дозволе, није`rm`без потврде)

  • Структура пројекта и конвенције кода

  • Основне команде (./gradlew serve, ./gradlew test)

  • epopeji i proizvodni backlog (prioritetne korisničke priče)

  • Попречни критеријуми квалитета (приступност, респонсив, совместимост)

На`bakery-plugin`, Правило 0 је различно :./gradlew -q publishToMavenLocal` obavezan nakon svake izmene izvornog koda. Zbog testiranja plugina bez ponovnog objavljivanja lokalnog JAR-a izgubio sam sat da ispravim kod koji još nije bio pakovan.

PROMPT_REPRISE.adoc-- Misija tekuće sesije. Ažurira se na kraju svakog sesije, sadrži :

  • Broj sesije i prioritetna misija

  • Сводак претходне сесеције (Шта је урадино, шта остаје да се уради)

  • Kriterijumi prihvatanja trenutne sesije

  • Specifični tehnički podsetnici

.agents/INDEX.adoc-- On sažima apsolutna pravila, nedavne sesije, i posebno leportfelj projekataupravljeni istom metodologijom. Do sada, pet projekata je navedeno :

----
----
| magic-stick    | Session 23 | SCRIPT_VERIFICATION.adoc | 2026-04-27 |
| bakery-gradle  | Session 11 | TEST_COVERAGE_ANALYSIS   | 2026-04-27 |
| cheroliv.com   | Session 9  | TEST_COVERAGE_ANALYSIS   | 2026-04-27 |
| plantuml-gradle| Session 133| TEST_COVERAGE_ANALYSIS   | 2026-04-23 |
| jhipster-gradle-plugins | Session 1 | TEST_COVERAGE_ANALYSIS | 2026-04-28 |
----

**`*_ESSENTIALS.adoc`** -- Novi dodatak (Sessija 109, plantuml-plugin) za dodatnu optimizaciju Eager konteksta. Umesto da učitam 200 linija poslovnog konteksta na pulu ključeva API, učitam 50 linija osnovnog sadržaja, a ostalih 150 linija ostaje LAZY u`*_REFERENCE.adoc`.

Izmeren rezultat : prelazak od**~25k tokeni EAGER do ~10k tokeni**(poboljšanje od 60%). Agentu više nisu potrebni energetski zahtevni podsetnici.

==== Nedostajuća veza : `opencode.json

Moram vam priznati nešto što sam skoro zaboravio da dokumentiram. Iznad svih ovih .adoc fajlova, postoji mali JSON fajl bez kojega ništa ne radi. Zove se`opencode.json`i on pravi šest linija. Doslovno šest linija.

[source,json]
----
{
  "$schema": "https://opencode.ai/config.json",
  "instructions": [
    "AGENT.adoc"
  ]
}
----

Ovaj fajl kaže Opencodu : « Pri pokretanju, učitaj`AGENT.adoc`automatski. » Bez njega, agent je prazna stranica tako sam ga opisivao na početku članka. Sa njim, agent već ima u rukama apsolutna pravila, arhitekturu projekta, i osnovne komande — pre nego što sam izreo zdravo.

Slučajno sam otkrio važnost ovog fajla. Na`bakery-plugin`, ne postojalo. Srdžalo mi se zašto je agent sistematički više « gubljen » na ovom projektu nego na drugima. Apsolutna pravila bila su dobro u`AGENT.adoc`— ali`AGENT.adoc`Није био укључен. Агент је читао само што сам му рекао да чита, ручно, на svakoj сессии. Била је сесија 11 де`bakery-plugin`када сам уочио отсутство`opencode.json`. Ja sam ga stvorio — i sesija 12 je pošla kao ostale.

Ovaj fajl je baš očigodan za mene sada da nisam više mislio na nj. Klasična greška razvojača koji previše poznaje svoj alat. Danas ga kreiram sistematski *unapred*.`AGENT.adoc`. Ово је прва стена.

==== Dualnost `INDEX.adoc

Još jedna тонкост која заслујује да буде изглашена:`INDEX.adoc`živi u`.agents/`— fajl koji sam predstavio kao LAZY. Umeđeno, ga listam kao EAGER u svim mojim tabelama. Ovo je vidljiva napetost ovde.

Stvarnost na terenu : fajlovi`.agents/INDEX.adoc`su automatski dobro učitani na početku sesije, jednako kao`AGENT.adoc` et `PROMPT_REPRISE.adoc`. Oni su u`.agents/`za organizacione razloge — ne uđi u koren — ali njihovo ponašanje je EAGER.

na`plantuml-plugin`, `INDEX.adoc`ima 200 linija i sadrži apsolutna pravila *kompletna* sa njihovom istorijom (lekcije iz prošlih sesija), EPIC-ovi sa skorovima i portfelj projekata. To je dokument koji agent konsultuje da zna « gde smo ». Na`bakery-plugin`, on je 150 linija sa roadmapom i recentnim sesijama.

Dobrovoljna redundantnost između`AGENT.adoc` et `INDEX.adoc`Може да збуњи. Апсолутна правила присутна су у обоји. Зашто ? Пошто испиђују две различите улоге: у`AGENT.adoc`, one su *objasnjujuće* (pričanje o pravilu, naučena lekcija) ; u`INDEX.adoc`, one su *izvršne* (prazno pravilo, bez giustifikacije, za brzu konsultaciju). Agent čita`AGENT.adoc`jednom za *comprendre* ; ponovo čita`INDEX.adoc`на свакој сессии за *примењу*. Два употреба, два формата.

[plantuml, format=svg, id=diag-dualite-agent-index, alt="Comparaison entre AGENT.adoc (narratif) et INDEX.adoc (exécutif)"]
----
@startuml
skinparam backgroundColor #FEFEFE
skinparam defaultTextAlignment center

title Dualitet AGENT.adoc ←→ INDEX.adoc
left to right direction

rectangle "AGENT.adoc
(Корен — EAGER)" as AGENT #E3F2FD {
  rectangle "📖 **Narativni format**\nPričanje o pravilu\nNaučena lekcija, kontekst" as NARR
  rectangle "🏗️ **Kompletna arhitektura**
Struktura projekta, komponente
Detaljani backlog US" as ARCHI
  rectangle "📋 **Објаснива правила**
Zašto pravilo postoji
Istorija incidenta" as EXPL
}

rectangle "INDEX.adoc
(.agents/ — EAGER)" as INDEX #E8F5E9 {
  rectangle "⚡ **Извршни формат**
Наго правило, без обосновања
Брза консултација" as EXEC
  rectangle "📊 **Roadmap & EPICs**
Саžетна табела
Прогрес, Скор, Приоритет" as ROAD
  rectangle "**Portfelj projekata**
Prečnji pogled
5 sinkronizovanih projekata" as PORT
}

AGENT --> INDEX : "Agent čita AGENT.adoc\njednom za **razumevanje**"
INDEX --> AGENT : "Agent čita INDEX.adoc
svaka sesija za **primeniti**"

note bottom of AGENT
  Taille max : 200 lignes
end note

note bottom of INDEX
  Taille max : 200 lignes
  Source de vérité en cas de divergence
end note

@enduml
----

Ova pretpostavljena redundantnost je izbor dizajna. Ona potrošuje ~50 dodatnih linija tokena EAGER — ali osigurava da agent uvek ima pravila pred sobom, uključujući i koncizni format koji olakšava odmah poslušanje.

=== LAZY fajlovi: Uputstvo za vlasnika

Ovi fajlovi žive u`.agents/`Oni čine istinsko bogatstvo metode, jer nahromadjuju znanje o projektu bez zagađavanja trenutnog konteksta.

[plantuml, format=svg, id=diag-agents-tree, alt="Arborescence complète du dossier .agents/"]
----
@startuml
skinparam folderBackgroundColor #E3F2FD
skinparam folderBorderColor #1565C0
skinparam fileBackgroundColor #FFF3E0
skinparam fileBorderColor #EF6C00

folder ".agents/" as ROOT {
  file "INDEX.adoc
(EAGER -- 200 linija)" as IDX #E8F5E9
  file "AGENT_SESSION_MANAGER.adoc
(Šablon sesije)" as ASM
  file "SESSION_CHECKLIST.adoc
(Кда променити)" as CHK
  file "PROCEDURES.adoc\n(6 koraci + LAZY/EAGER)" as PRO
  file "SESSIONS_HISTORY.adoc\n(Све сесии)" as HIS

  folder "сесии/" as SESS {
    file "1-chore-migration.adoc" as S1
    file "109-формализација-лењи.adoc" as S109 #FFECB3
    file "133-epic11-article.adoc" as S133
    file "... +130 ostalih" as SMORE
  }

  folder "архиве/" as ARCH {
    file "COMPLETED_TASKS_2026-04.adoc" as CTA
    file "SESSIONS_HISTORY_83-95.adoc" as SHIST
    folder "sesije_sazimci/" as SUM {
      file "SESSION_64_SUMMARY.adoc" as SU64
      file "SESSION_73_SUMMARY.adoc" as SU73
      file "..." as SUMORE
    }
    folder "arhiva_prompta/" as PARCH {
      file "PROMPT_REPRISE_S65.adoc" as PR65
      file "PROMPT_REPRISE_S75.adoc" as PR75
      file "..." as PMORE
    }
  }
}

IDX --> SESS : "indeksiraj"
IDX --> HIS : "indeksiraj"
IDX --> ARCH : "референца"

note right of S109
  Session 109 =
  Formalisation stratégie
  LAZY/EAGER
  Token : ~25k → ~10k
end note

@enduml
----

Gornje stablo prikazuje stvarnu strukturu direktorijuma.`.agents/`na`plantuml-plugin`, najzrelji projekat. Obratite pažnju na dubinu u tri sloja: korenske datoteke (metapodaci), direktorijum`sessions/`(arhivske beleške), i dossier`archives/`(agregacije i sažeci). To je ta dubina koja pretvara upravljanje jedne jednostavne TODO datoteke u**puna organizaciona memorija**.

**.agents/sessions/{N}-{titre}.adoc**-- Detaljni arhivi svake sesije. Trenutno :

* `plantuml-plugin`:**133 arhiviranih sesija**(od sesije 1 do 133)
* `bakery-plugin`:**11 sesija**
* `magic-stick`[Translation not possible as no text was provided for translation]**23 sesija**
* `cheroliv.com`:**9 формалне сесије**+ 7 pre-sistemski sesiji reconstruisane retroaktivno

Svaki arhiv sadrži potpun kontekst sesije, donete odluke, naiđene probleme i njihovo rešenje, izvršene komande i njihovu izlaz.

**.agents/SESSIONS_HISTORY.adoc**Табела сажетак свих сесија са поенима. Пример на`cheroliv.com`:

----

| -6 | 2025-05 | chore | Initialisation projet Gradle/JBake | 7/10 |  1 | 2026-04-25 | chore | Migration gouvernance agent | 8/10 |  7 | 2026-04-27 | debug/fix | Correction publishSite | 9/10 |  8 | 2026-04-27 | analyse | Analyse article 0108 | 7/10

**.agents/COMPLETED_TASKS_ARCHIVE_{mois}.adoc**-- Završeni zadaci arhivirani po mesecima, da ne bi se preopteregao aktivni backlog. Kada se user story završi, premješta se ovde. Backlog ostaje čitljiv: maksimalno 10 aktivnih stavki.

**.agents/PROCEDURES.adoc**-- Detaljni predlošci postupka završetka sesije. Dug, ali pročitan samo jednom od agenta kada uči metod. Zatim postepanje postaje mehaničko.

**.agents/AGENT_MODUS_OPERANDI.adoc**-- Пуна стратегијска документација. На`plantuml-plugin`, ovaj fajl čini**900+ linije**и у ствари се зове`AGENT_METHODOLOGIES.adoc`— promenio sam ime između pisanja ovog članka i njegove efektivne implementacije. Ovaj tip razlike u imenovanju je neizbežan u ručnom sistemu koji se razvija. Važna je konvencija imenovanja: ako fajl dokumentuje *metodu*, počinje sa`AGENT_`ili eksplicitni prefiks. Dokumentuje metodologiju Eager/Lazy, obrasce koje treba slediti, i anti-obrasce koje treba izbegnuti. On je LAZY jer agentu ne mora da ponovo pročita celu strategiju na svakoj sesiji, već samo kada postoji nejednoznačnost.

Please provide the French text you would like translated.`*_REFERENCE.adoc`** -- Tehničke reference specifične za projekat. Na`magic-stick`, dva gaustog LAZY fajla:

* `AB_PARTITION_REFERENCE.adoc`(147 linija) -- Arhitektura particija A/B GPT, skripte`update-system.sh`, procijenjene veličine, mehanizam vraćanja
* `BOOT_TEST_REFERENCE.adoc`(144 linija) -- Procedura QEMU + VNC za testiranje boot-a ISO bez fizičkog hardvera, lista provere BIOS/UEFI, ograničenja CI/CD

na`plantuml-plugin` :

* `ARCHITECTURE.adoc`(134 линија) -- Структура 11 класа података, тачке на пажњи (избегљиви погрешци), оптимизоване тест команде
* `API_KEY_POOL_REFERENCE.adoc`-- Пуне детаљи о пулу кључева (LAZY dok`ESSENTIALS`je EAGER)

== Specijalizirani agenti : virtualni tim

Uprava se ne ograničava na pasivne datoteke. Formalisao sam**uloge specijalizovanih agenta**u posebnima LAZY fajlovima, koji definišu očekivan radni tok prema tipu zadatka.

|===
|agent |Fajl |улага |projekat |**CODER** |`CODER.adoc` |Implementacija FTL/CSS/JS, semantičke oznake, kriteriji pristupačnosti |cheroliv.com |**Scrum master** |`SCRUM_MASTER.adoc` |US planiranje, razlaganje na podzadatke, otkrivanje zavisnosti |cheroliv.com |**PlantUML dizajner** |`PLANTUML_DESIGNER.adoc` |Kreiranje dijagrama, sintaksa PUML, integracija JBake |cheroliv.com
|===

Fajl`CODER.adoc`na`cheroliv.com`sadrži konkretna pravila : _jedno`<h1>`po stranica_, _Dodaj putanje sa`${content.rootpath}`_, _Навести језик`<html lang="${content.lang!"fr"}">`_. Ove konvencije, napisane jednom, automatski se poštuju agentom od sesije 1.

Datoteka`SCRUM_MASTER.adoc`postavlja strukturu izlagaja :**Cilj**, **Zadaci**(koordinate sa dodelom),**Прихватљиви критеријуми**, **Rizici**. Kada tražim plan akcije, agent proizvodi ovu strukturu bez da sam je zatražila. Uprava**програм**агент.

==== Када специјализовани агенти постају неопходни

Kreiranje specijaliziranih agenta slijedi prirodnu krivulju. Na početku projekta, ne trebate ih —`AGENT.adoc`Dovoljno je. Ali kada se projekat povećava (recimo, iznad 20 sesija), dva signala moraju da vas upozore:

1. Agent miješa konvencije dva različita domena (npr. sintaksa PlantUML i pravila CSS)
2. Vi provodite više vremena ispravljajući agenta po konvencijama koje ste mu već pet puta objasnili.

На`cheroliv.com`, se dogodilo na sesiji... 1. Da, odmah sa početka. Jer je ovaj projekat veb sajt sa tri jezika (FTL, CSS, JS), sadržaj AsciiDoc i dijagrami PlantUML — tri oblasti koje nemaju ništa zajedničkog. Agentu CODER treba znati veličine fontova i medijske upite; agentu PLANTUML_DESIGNER treba znati sintaksu`@startuml`. Bez razdvajanja, agent CODER mi je ponudivao dijagrame, i obrnuto. Haos.

на`jhipster-gradle-plugins`, sam kreirao dva specijalizovana agenta prilagođena za razvoj Gradle pluginova :`PLUGIN_DEVELOPER.adoc` et `BACKLOG_MANAGER.adoc`. Prvi kodira sve konvencije Kotlin/Gradle (ne`!!`, klase podataka za modele,`@TaskAction`за задацима). Други зна da`persistence`mora biti stabilan pre nego što`assistant`не покреће свој развој — критична зависимост у мон-репо.

Greška koju ne treba napraviti: kreirati previše agenata previše rano.`plantuml-plugin`Čekao je sesiju 108 pre nego što je formalizovao specijalizovanog agenta za pool ključeva API. Pre toga, poslovni kontekst je bio u`AGENT.adoc`. Empiričko pravilo: specijalizovan agent se justifikuje kada njegov poslovni domen pređe 100 linija dokumentacije.

==== Конвенција о наименовању сесија

Detalj koji izgleda beznačajan, ali postaje kritičan kada se dosegne 100 sesija. Kako da imenujemo datoteke arhive?

Naukio sam na svojoj koži da je konvencija neophodna — četiri projekta, četiri različita formata na početku, i više sam se ne mogao orijentirati. Danas, konvencija koju sam uspostavio je :

{N}-{type}-{sujet-kebab-case}.adoc

Конкретни примери :

* `1-chore-migration-gouvernance-agent.adoc`— сесија 1, тип задатка
* `10-solidification-tests.adoc`— sesija 10, bez eksplicitnog tipa (subjekat je dosta)
* `036-debug-graphify-symlink-epic9.adoc`— сесија 36 са трицифрен бројем за сортирање

Broj sesije je glavni kriterijum za sortiranje. Projekti koji koriste trocifrene brojeve (001, 036, 133) izbegavaju probleme leksikografskog sortiranja kada se prelazi 99. To je šta sada koristim na`magic-stick`:`001-init-projet.adoc`, `036-debug-graphify-symlink-epic9.adoc`.

Tip je opcioni i izveden iz ključnih reči sesije (debug, feature, refactor, docs, chore, test). Naslov u kebab-case-u je najvažniji deo: mora da omogući pronalaženje sesije bez otvaranja fajla. Ako se pitate « Koja je bila sesija u kojoj smo ispravili timeout testova integracije? », odgovor je`124-fix-timeout-integration-test.adoc`.

Za reconstruisane istorijske sesije (projekti koji su nastali pre upravljanja), koristim negativne brojeve. Na`cheroliv.com`, sesije od -6 do 0 pokrivaju celokupnu pre-vladavinu istoriju projekta. I za sesije « ne dokumentovane » ili izgubljene, napravim unos u`SESSIONS_HISTORY.adoc`без одговарајућег архива, са једним скором`?`. To je poštenije nego da se pretvaramo.

[plantuml, format=svg, id=diag-naming-convention, alt="Arbre de décision pour le nommage des fichiers de session"]

@startuml skinparam backgroundColor #FEFEFE skinparam defaultTextAlignment center skinparam wrapWidth 200

title Конвенција именовања сесија start

:Une session se termine; note right: Trigger "kraj sesije"

if (Session antérieure\nà la gouvernance ?) then (oui) :Numéro NÉGATIF\n-6, -5 …​ 0; note right: Historique\nreconstitué :Suffixe : reconstitution; else (non) :Numéro POSITIF\nsur 3 chiffres si > 99; note right: 001, 036, 133\npour le tri lexicographique

:Détecter le **TYPE**;
if (Mots-clés trouvés ?) then (oui)
  :debug / feature / refactor\ndocs / chore / test;
else (non)
  :Omettre le type\n(le sujet suffit);
endif
  :Formuler le **SUJET** en kebab-case;
  note right
    Ex: fix-timeout-integration-test
    Doit permettre de retrouver
    sans ouvrir le fichier
  end note
endif

note right • 1-chore-migration-gouvernance.adoc • 036-debug-graphify-symlink.adoc • 124-fix-timeout-integration-test.adoc • 133-epic11-article-blog-kg.adoc end note

if (Session documentée ?) then (oui) :Créer archive dans sessions/; :Ajouter ligne SESSIONS_HISTORY\navec score X/10; else (non) :Ajouter ligne SESSIONS_HISTORY\navec score ?\nsans archive; note right: L’honnêteté\nplutôt que le vide endif

stop @enduml

==== TEST_COVERAGE_ANALYSIS.adoc` — Корак 5 разложен

Peti korak postupka završetka sesije je najtajniji. Ona kaže « Ažuriraj`TEST_COVERAGE_ANALYSIS.adoc`ako su testovi dodati ili izmenjeni » Ali kako izgleda ovaj fajl?

Na`plantuml-plugin`, je se razvijao od nekoliko linija do kompletne strukture. Ovde je njegov stabilizovani oblik :

[source]

Analyse de Couverture de Tests

Suivi des Tests

Classe de test

Type

Tests

Statut

Dernière MAJ

PlantumlServiceTest

unit

45/45

✅ PASS

2026-04-23

ApiKeyPoolTest

integration

15/15

✅ PASS

2026-04-20

Historique par Session

| Session | Tests ajoutés | Tests modifiés | Couverture | 133 | 0 | 2 | 100% | 132 | 5 | 0 | 100%

----

Interes nije u samom fajlu — jeste obaveza da zabeležite šta se promenilo. Bez ovog koraka, posle 50 sesija, ne znate više koji testovi pokriraju šta. Niti agent. Fajl postaje jedinstveni izvorište istine o pokrivenosti testova projekta.

Za projekte bez tradicionalnih testova (kao`magic-stick`koji testira bash skripte), peti korak se zamjenjuje`SCRIPT_VERIFICATION.adoc`. Mehanizam je isti: datoteka koja prati status validacije skriptova. Prilagodite korak 5 svom projektu, ali nikad ne preskočite je. Ona je sigurnosna mreža koja sprečava tiha regresija.

Ako vaš projekat nema nijednog testa — ni unitarnog, ni funkcionalnog, ni skripta — ipak kreirajte prazan fajl sa sekcijom « Što uraditi: definirati strategiju testiranja. » Ovo je zaklica koja će podsjetiti vašeg budućeg sebe da ova tema nije obrađena.

[plantuml, format=svg, id=diag-session-flow, alt="Flux d’une session type avec Eager/Lazy et agents"] ---- @startuml skinparam backgroundColor #FEFEFE

start

:Début session; note right: L’agent est une page blanche

:Chargement EAGER auto; note right * AGENT.adoc (règles absolues) * PROMPT_REPRISE.adoc (mission N) * INDEX.adoc (état projet) end note

if (Mission claire ?) then (oui) :Exécution directe; else (non) :Charge LAZY sur demande; note right * SESSIONS_HISTORY.adoc (contexte passé) * sessions/{N-1}-.adoc (décisions) * *REFERENCE.adoc (architechture) end note endif

:Délégation agent spécialisé ?;

if (CODER ?) then (oui) :Lit CODER.adoc; :Suit conventions FTL/CSS; elseif (SCRUM Master ?) then (oui) :Lit SCRUM_MASTER.adoc; :Structure livrable imposée; elseif (PlantUML ?) then (oui) :Lit PLANTUML_DESIGNER.adoc; :Syntaxe PUML + intégration; else (non) endif

:Travail de la session;

:Fin de session (trigger utilisateur);

:Procédure 6 étapes; note right 1. Archive sessions/N-.adoc 2. Maj PROMPT_REPRISE.adoc (N+1) 3. Maj SESSIONS_HISTORY.adoc 4. Maj INDEX.adoc 5. Maj TEST_COVERAGE (si applicable) 6. Maj COMPLETED_TASKS_ARCHIVE.adoc end note

:Checklist [✅] x 6;

stop @enduml ----

Dijagram iznad prikazuje kompletni životni cyklus jedne sesije. Ključna tačka je bifurkacija nakon učitavanja EAGER: ili misija je dovoljno jasna za izravno izvršenje (80% slučajeva), ili agent učitavanje LAZY za rešavanje nejasnoće (20% slučajeva). Ova diskriminacija je ta koja uštedjuje tokene.

== Postupak završetka sesije : Zlatno pravilo

=== Zašto je neophodna

Bez ove procedure, strategija Eager/Lazy ne služi ničemu. To ona pretvara rad sesije u trajnu informaciju. Ona se izvršavana eksplicitan zahtev korisnika(ključne reči: "kraj sesije", "odlazim", itd.), i ona jeobavezan-- nema izuzetaka, nema izostavka.

Fajl`SESSION_CHECKLIST.adoc`definiše idealne metrike sesije:

* Trajanje: 15-30 minuta * Изменjeni фајлови : максимум 1-3 * LLM razmena: 5-10 poruka * Kontekst tokeni : < 50k

И знаци да се промени сесија: _ЛЛМ понавља грешке које су већ исправљене, Више од 3 фајлова изменjenih паралелно, Разговор > 50 порука. Златно правило:Bolje je imati 5 sesija po 20 minuta nego jednu sesiju od 2 sata sa haosom pri debugovanju.

=== Tok 6 koraka (tiho)

[plantuml, format=svg, id=diag-end-session-flow, alt="Flux de la procédure de fin de session"] ---- @startuml skinparam defaultTextAlignment center skinparam wrapWidth 200 skinparam activityBackgroundColor #E3F2FD

start :L’utilisateur dit "kraj sesije"; note right: Mots-clés déclencheurs

:Agent détecte le trigger;

:Étape 1\nCréer archive\n`.agents/sessions/N-.adoc`; note right: Tout le contexte de la session

:Étape 2\nMettre à jour\n`PROMPT_REPRISE.adoc`; note right: Mission N + critères d’acceptation N+1

:Étape 3\nMettre à jour\n`SESSIONS_HISTORY.adoc`; note right: Ligne récap : # / Date / Type / Sujet / Score

:Étape 4\nMettre à jour\n`INDEX.adoc`; note right: État courant, roadmap, fichiers modifiés

:Étape 5\nMettre à jour\n`TEST_COVERAGE_ANALYSIS.adoc`; note right: Si tests ajoutés ou modifiés

:Étape 6\nMettre à jour\n`COMPLETED_TASKS_ARCHIVE.adoc`; note right: Archiver tâches terminées

:Afficher la checklist de confirmation; note right: Vérifier que chaque [✅] est mérité

stop @enduml ----

=== Rezultati od 150+ sesija

Ovo je rezultat primene ove procedure sistematski primenjene na mojim četiri projekata:

plantuml-plugin:

* 133 sesijeод почетка пројекта * 240/240 testova prošlo(100% покриће) — EPICs 1-7 завршене * 57 сценариоа Cucumber BDDпроверени * Pravilo bezbednosti na datotekama konfiguracije nastalo iz realne greške (Sesija 2 bakery-plugin)

пекарња-плагин:

* 11 sesijaza dve nedelje * Migracija Supabase → Firebase završena (9 ispravljenih testova) * EPIC 6 (publishProfile) funkcionalan u produkciji * Правило 0 креирано :`publishToMavenLocal`obavezan nakon svake izmene

magic-stick:

* 23 sesijeза конструисање live Xubuntu система са A/B партицијом * Prva ISO generisana na sesiji 10 * Testi pokretanja QEMU + VNC formalizovani (dokumentacija LAZY od 144 linija) * CI/CD SourceForge функционалан

cheroliv.com:

* 9 formalnih sesija+ rekonstrukcija 7 sesija pre-sistema * Članak 0101 (OpenCode PATH) objavljen * Član 0108 (taj) prepisan nakon analize svojih nedostataka * Пуна управа премештена из Markdown у AsciiDoc

=== Контрольна листа завршна

Nakon tihe izvršavanja šest koraka, agent mora da prikaže listu potvrde :

----

✅ Procédure de fin de session exécutée 📋 Checklist :

Апсолутно правило: ниједан чорак не може да буде означен.[✅]`ako fajl nije zapravo izmenjen i proveren.

== Bootstrap vodič: Dan 1, Sesija 0

Uvereni ste u metodu. Želite da je primenite na novi projekat. Gde da počnete?

Preživio sam taj moment 28. aprila 2026. Otvaram Opencode na`jhipster-gradle-plugins, moj mono-repo od dva Gradle JHipster plugina. ovo je projekat koji već postoji — kod je tamo, Gradle zadaci funkcionišu. ali upravljanje agentom ? Nula. Prazna stranica. Kao`plantuml-plugin`на њеној сесији 1, пре месеца.

Ovo je tačna procedura koju sam pratio, i koju ću pratiti za svaki novi projekat. Obratite pažnju na redosled — on je važan.

[plantuml, format=svg, id=diag-bootstrap, alt="Flux de bootstrap en 6 étapes pour initialiser la gouvernance agent sur un nouveau projet"] ---- @startuml skinparam backgroundColor #FEFEFE skinparam defaultTextAlignment center skinparam wrapWidth 250 skinparam activityBackgroundColor #E8F5E9

title Bootstrap управљање — Дан 1, Сесија 0 start :Étape 0\nCréer opencode.json\n(6 lignes, instructions: AGENT.adoc); note right: Le pont qui charge\nAGENT.adoc automatiquement

:Étape 1\nCréer les dossiers\nmkdir -p .agents/sessions/ .agents/archives/; note right: Les conteneurs vides\navant que l’agent écrive dedans

:Étape 2\nCréer AGENT.adoc\n(200 lignes, règles absolues); note right: Le fichier maître\nStructure minimale v1

:Étape 3\nCréer PROMPT_REPRISE.adoc\nMission session 1 (max 70 lignes); note right: Ce que l’agent doit\nfaire à la prochaine session

:Étape 4\nCréer .agents/INDEX.adoc\nRègles exécutives + roadmap; note right: Point d’entrée EAGER\ndans le dossier LAZY

:Étape 5\nCréer les fichiers LAZY structurants\n6 fichiers : SESSIONS_HISTORY, CHECKLIST, etc.; note right • SESSIONS_HISTORY.adoc • SESSION_CHECKLIST.adoc • PROCEDURES.adoc • AGENT_SESSION_MANAGER.adoc • TEST_COVERAGE_ANALYSIS.adoc • Agents spécialisés (si besoin) end note

:Étape 6\nAjouter le projet au Portefeuille\nMettre à jour TOUS les INDEX.adoc existants; note right: Maintenance transverse\nObligatoire mais fastidieuse

:✅ Bootstrap terminé\nSession 1 prête; note right: 20 minutes investies\nDes centaines économisées

stop @enduml ----

=== Корак 0: Направи opencode.json

Ово је први фајл. не`AGENT.adoc, корак`INDEX.adoc`.opencode.json`Prvo, iz prostog razloga: ako kreirate`AGENT.adoc`Na prvo, ćete zaboraviti da napravite most koji ga automatski učitava. Ja sam ga uradio na`bakery-plugin, ja znam o čemu govorim.

=== Корак 1: Креирај фасцикле

[source,bash] ---- mkdir -p .agents/sessions .agents/archives ----

Два празна фолдера.sessions/`će primiti arhivu svake sesije.`archives/`će primiti mesečne COMPLETED_TASKS_ARCHIVE. Ovi direktorijumi moraju da postoje *pre nego što agentu treba da piše u njima. Agent koji mora da kreira direktorijum i fajl u isto vreme, to je agent koji može tiho da ne uspe.

=== Korak 2: Napraviti `AGENT.adoc — Glavni fajl

Minimalna struktura za prvu verziju (će se povećati)

[source] ---- = {NOM_PROJET} — Directives Agent

[CAUTION] ----

Obavezno zaustavljanjepre rm, Write, brisanje :

1. ПРОЧИТАЙ цео фајл 2. Провери git ls-files 3. Zatražite potvrdu 4. ČEKATI "da

== Projekat

Ime: …​ Stek…​ Документација: AsciiDoc

== Absolutna pravila

=== 0. OKRUŽENJE ZA RAZVOJ

Основне наредбе…​

=== 1. COMMITS/GIT

formalna zabrana…​

=== 1b. DATOTEKE KONFIGURACIJE — APSOLUTNO PRAVILO SIGURNOSTI

Ne drti…​

=== 2. ИСПИТИ НА КРАЈУ СЕСИЈЕ

Zabrana formalna…​

=== 3. POSTUPAK ZAVRŠETKA SESIJE

6 obaveznih koraka…​

== Управљање контекстом — LAZY/EAGER

Datoteke EAGER / Datoteke LAZY…​

Ovaj minimali šablon omogućuje agentu da započne. Bogata verzija — sa strukturom projekta, ključnim komponentama, EPIC-ovima, backlog-om — će doći na sesiju 1, kada agent već ima osnovna pravila u ruci i će vam pomoći da obogatite dokument.

=== Корак 3: Креирање PROMPT_REPRISE.adoc — Мисција сесија 1

Fajl koji eksplicitno kaže: « Ovo je sesija 1, misija treba definirati. » Maksimalno 70 linija, sa sekcijom Sesija 0 (rezime bootstrap-a) i sekcijom Sesija 1 (prioriteti koje treba definisati sa korisnikom).

=== Корак 4: Kreirati .agents/INDEX.adoc — Ulazna tačka

Fajl koji će sadržati apsolutna pravila (izvršna verzija) i tabelu sesija. Za bootstrapping, on lista pravila 0 do 3 u njihovom konciznom formatu, portfelj projekata (uključujući novi projekt sa emojim 🆕), i praznu roadmapu spremnu za popunjavanje.

=== Корак 5: Креирање LAZY структурираних фајлова

По реду:

1. .agents/SESSIONS_HISTORY.adoc— tabela sa samo sesijom 0 2. .agents/SESSION_CHECKLIST.adoc— шаблон « когда променити сесију 3. .agents/PROCEDURES.adoc— kompletna procedura od 6 koraka + EAGER/LAZY 4. .agents/AGENT_SESSION_MANAGER.adoc— шаблон архиве 5. .agents/TEST_COVERAGE_ANALYSIS.adoc— таблица за праћење тестова, празна на почетку

Ako vaš projekat ima složen poslovni domen (kao`jhipster-gradle-plugins`sa njegovim mono-repo persistence/assistant), kreirajte specijalizirane agente odmah:

1. .agents/PLUGIN_DEVELOPER.adoc— konvencije koda i granica zavisnosti (ako je plugin) 2. .agents/BACKLOG_MANAGER.adoc— struktura planiranja i identifikovani rizici

Ne kreirajte agente koje nećete koristiti. Agent bez konkretnih konvencija za kodiranje je mrtva datoteka koja zagadjuje`.agents/.

=== Корак 6 : Додати пројекат у портфељ СВИХ пројеката

Ovo je korak koji se sistematički zaboravlja. Svako`INDEX.adoc`Svaki projekt sadrži tabelu 'Portfelj projekata' koja liste sve projekte sa istom metodologijom. Kada kreirate novi projekt, morate:

1. Додај ред у портфељу нових пројеката (логика) 2. Додати ред у портфолио свих постојећих пројеката — да, сви

Na mojih četiri (sada pet) projekta, to znači otvoriti`INDEX.adoc de magic-stick, bakery-gradle, cheroliv.com, `plantuml-gradle`и додати ту линију`jhipster-gradle-plugins

Session 1

…​

2026-04-28 🆕.

To je mučno. To je ručno. To je i jedini način da se garantuje da, bez obzira na projekat na kojem radite, agenat zna koje druge projekte postoje i kakvo je njihovo stanje. Na sesiji 012 de`magic-stick, agent je detektovao dve neskladnosti u portfelju —`bakery-gradle`je imao njegov COMPLETED_TASKS_ARCHIVE kasno, i`plantuml-gradle`On je imao neslaganje između dokumentacije postupka (5 koraka) i indeksa (6 koraka). Bez ove transverzne tabele, ove neslaganja bi ostala nevidljiva.

[plantuml, format=svg, id=diag-portfolio-graph, alt="Graphe du portefeuille de projets — références croisées entre INDEX.adoc"] ---- @startuml skinparam backgroundColor #FEFEFE skinparam defaultTextAlignment center skinparam nodeBackgroundColor #E3F2FD

title Portfelj projekata — Krsne reference INDEX.adoc node "magic-stick\nSession 037\nSCRIPT_VERIFICATION" as MS #E1BEE7 node "bakery-gradle Sesija 11 TEST_COVERAGE" as BG #FFE0B2 node "cheroliv.com Сесија 10 TEST_COVERAGE" as CH #C8E6C9 node "plantuml-gradle Sesija 133 TEST_COVERAGE" as PG #BBDEFB node "jhipster-gradle\nСесија 1 🆕\nTEST_COVERAGE" as JG #FFCDD2

MS -→ BG : INDEX.adoc référence MS -→ CH : INDEX.adoc référence MS -→ PG : INDEX.adoc référence MS -→ JG : INDEX.adoc référence 🆕

BG -→ MS : INDEX.adoc référence BG -→ CH : INDEX.adoc référence BG -→ PG : INDEX.adoc référence BG -→ JG : INDEX.adoc référence 🆕

CH -→ MS : INDEX.adoc référence CH -→ BG : INDEX.adoc référence CH -→ PG : INDEX.adoc référence CH -→ JG : INDEX.adoc référence 🆕

PG -→ MS : INDEX.adoc référence PG -→ BG : INDEX.adoc référence PG -→ CH : INDEX.adoc référence PG -→ JG : INDEX.adoc référence 🆕

JG -→ MS : INDEX.adoc référence JG -→ BG : INDEX.adoc référence JG -→ CH : INDEX.adoc référence JG -→ PG : INDEX.adoc référence

note bottom of JG Quand on ajoute un projet : • 4 INDEX.adoc à mettre à jour • 1 ligne par portefeuille • Coût : 5 minutes end note

legend bottom

= Couleur

= Projet

<#E1BEE7>

magic-stick — ISO Linux live

<#FFE0B2>

bakery-gradle — Plugin JBake

<#C8E6C9>

cheroliv.com — Site personnel

<#BBDEFB>

plantuml-gradle — Plugin IA

<#FFCDD2>

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