PyQt6’da UI thread’ni bloklamasdan streaming javob ko’rsatish eng katta muammo bo’ldi. QThread va signal/slot orqali Gemini’dan kelayotgan token’larni asosiy thread’ga uzatish kerak edi.

Ovozli kirish

speech_recognition kutubxonasi bilan boshladim, lekin lokal noise’ga sezgirligi tufayli keyinchalik push-to-talk rejimiga o’tdim — bu ancha barqaror ishladi.

Nima yaxshi ishladi

Chat tarixini SQLite’da saqlash va context window’ni oxirgi N xabar bilan cheklash — bu javob tezligini sezilarli oshirdi.