Sessiya jurnali — faqat qo‘shib boriladigan (append-only) fayl. Unga yozilgan narsa hech qachon o‘zgartirilmaydi. Va qolgan hamma narsa — aynan shu fayldan kelib chiqadi.
Bu qoidaning o‘zi kichik ko‘rinadi, lekin undan kutilgan va kutilmagan ko‘plab imkoniyatlar chiqadi.
Jurnaldan keladigan imkoniyatlar
| Imkoniyat | Nima beradi |
|---|---|
| Continuity — davom ettirish | Suhbatni qolgan joyidan tiklash |
| Branches — tarmoqlar | Eski nuqtadan ikkiga ajratish (fork) |
| Audit — qayta ijro | Bosqichma-bosqich, xuddi bo‘lganidek qayta o‘tish (replay) |
| Search — qidiruv | Sessiya ichidan biror narsani topish |
| Output — eksport | Ma’lumotni tizimdan tashqariga chiqarish |
| Accounting — hisob | Nimani, qayerda sarflanganini o‘lchash |
Bularning barchasi bitta event oqimidan kelib chiqadi — har biri uchun alohida mexanizm qurilmagan.
Deyarli hech kim tushuntirmaydigan nuans
Model log’ni o‘qimaydi. U log’dan qurilgan proyeksiyani (projection) o‘qiydi. Xom bo‘laklar (raw fragments) alohida saqlanadi — va aynan ular sessiyani faqat xulosalash o‘rniga sodiq qayta ijro qilish imkonini beradi.
Eslatma
Proyeksiya va xom bo‘laklar o‘rtasidagi farq muhim: proyeksiya — modelga ko‘rsatiladigan ko‘rinish, xom bo‘laklar — nima bo‘lganini qayta tiklash uchun kerak bo‘lgan to‘liq asl ma’lumot. Shuning uchun sessiyani «taxminan» emas, «aynan» qayta ijro qilish mumkin.
Asosiy qoida: model nima ko‘rsa, u log’da
Har qanday so‘rovga yetib boradigan narsa log’dan qayta tiklanishi shart. Bu yaxshi niyat emas — buni tekshiradigan runtime check bor. Plagin yozayotganlar uchun amaliy natija: kontekstga iz qoldirmasdan yashirincha biror narsa kiritishning imkoni yo‘q.
Bu qoidaga nima uchun ishonish mumkin?
Tekshiruv qanday qurilganini ko‘rsangiz — dizayn jiddiy ekani ko‘rinadi:
- Loyihadagi har bir paket o‘z tekshiruvlarini o‘z nomi ostida e’lon qiladi. Xatolik bo‘lsa, kim mas’ul ekani darhol ko‘rinadi.
- «Tekshiradigan hech narsamiz yo‘q» deb e’lon qilgan paketni avtomatik skript rad etadi — agar buning uchun aniq, qo‘lda yozilgan izoh bo‘lmasa.
Ma'lumot
Bu — hech kim audit qilmaydigan va’daga qilingan jiddiy intizom. Shuning uchun bu da’voga ishonch bor: bu «keyin qo‘shib qo‘yilgan» faollik jurnali emas, dizaynning o‘zidan keladigan kuzatiluvchanlik (traceability by design).
Amalda bu nima beradi?
Agar siz agentning infratuzilmangizda nima qilgani uchun javob berishingiz kerak bo‘lsa — bu har qanday ishlash ko‘rsatkichidan muhimroq. Sessiya jurnali bu ishni «nazariy imkoniyat» emas, «ishlatishga tayyor xususiyat» qiladi.
Sessiya jurnali yetti tayanch qismdan biri ekanini ham eslaylik — u kontekstda ctx.sessions nomi ostida ro‘yxatdan o‘tadi va turn darsida ko‘rganimizdek, turn, step, message va tool event’lari aynan unga yoziladi.
Amaliy maslahat
Agentni sinashda sessiya jurnalini eksport qilib qo‘yish odat qiling: bitta faylda butun jarayon — qaysi tool chaqirilgan, nima natija bergan, qayerda rad etilgan. Muammoni qayta ijro orqali aniqlash shu faylsiz ancha qiyin bo‘ladi.
Xulosa
Sessiya jurnali — append-only fayl, va qolgan hamma narsa undan kelib chiqadi: davom ettirish, tarmoqlar, audit, qidiruv, eksport va hisob. Model log’ni emas, undan qurilgan proyeksiyani o‘qiydi; xom bo‘laklar sodiq qayta ijroni ta’minlaydi. «Model nima ko‘rsa, u log’da» qoidasi runtime check bilan himoyalangan. Keyingi darsda bu bilimlarni ishga solamiz — birinchi plaginimizni yozamiz.