Telegramingizdagi raqamli xodimlar
Mila qanday qildi: tahlillar va yangiliklar
Milalar ortida kim turibdi va qanday qoʻshilish mumkin
Telegramga har bir xabar ketishidan oldin Milaning matni qoʻriqchidan oʻtadi. Notoʻgʻri chat, kalit, karta raqami, boshqa mijoz chatining nomi — va xabar ketmaydi. Mila sababini oladi va qaytadan yozadi. Quyidagi har bir qatorda kodga havola bor.
Bitta Milada koʻp mijozi bor agentlik va maslahatchi uchun.
Qoʻriqchi — kichik skript. Mila Telegramga biror narsa yuborishidan oldin Claude Code uni ishga tushiradi. Promptdagi qoidani unutish mumkin, chiqishda turgan skriptni — yoʻq. send-guard.py:1-5 settings.json:35-46
Yangi xabarda ham, yuborilgan xabarni tahrirlashda ham ishga tushadi. Boshqa vositalarga tegmaydi.
send-guard.py:13-15Xabar qaysi chatga ketayotganini va matnning oʻzini koʻradi, ikkalasini oʻz qoidalari bilan solishtiradi.
send-guard.py:16-21Biror narsa notoʻgʻri boʻlsa, xabar qoladi. Mila «Yubormayman:» va hamma sabablarni oladi, matnni qaytadan yozadi.
send-guard.py:179-187Qoʻriqchida onFailure: block turadi: sozlamalar shablonida, oʻrnatuvchi yozuvida va yangilanishdan keyin allaqachon oʻrnatilgan hooklarda (Claude Code 2.1.295 va yangisi). U yiqilsa yoki qotib qolsa, xabar tekshiruvsiz ketmaydi. Qoʻriqchi testi repozitoriydagi har bir oʻzgarishda ishga tushadi.
Milada hamma chatlar uchun bitta seans, ular orasida ichki devor yoʻq. Shuning uchun qulf chiqishda turadi: tekshiruv yuborish paytida boʻladi. Bu uning konstitutsiyasidagi birinchi qonun: bir ishning tafsiloti boshqa ish haqidagi suhbatda tilga olinmaydi. send-guard.py:116-120 CONSTITUTION.md:15
Kim qayerdaligini qoʻriqchi kiruvchi xabarlar jurnalidan biladi: qaysi chatda kimlar yozgan va har bir chatning nomi qanday. send-guard.py:137-155
same-case-chats.json fayliga birga yozib qoʻyish mumkin; roʻyxat ichida «begona ish» yoʻq. send-guard.py:127-135 test_send_guard.py:38-42Xabar egasiga, egasi uni ulagan guruhlarga va ruxsat roʻyxatidagi odamlarning shaxsiy chatiga ketadi. Boshqa har qanday chatga — hech narsa: «faqat meni ulagan joyda gapiraman». send-guard.py:23-36 test_send_guard.py:23-24
Egasining id raqami berilmagan boʻlsa, ruxsat roʻyxati yetarli. Ikkalasi ham boʻlmasa — hali ulanmagan Milada boʻlgani kabi — qabul qiluvchi tekshirilmaydi. send-guard.py:33-35 test_send_guard.py:44-49
✓ egasi (OWNER_ID) ✓ access.json dagi guruhlar ✓ allowFrom dagi odamlar ✗ boshqa har qanday chat
Oʻsha qoʻriqchi xabar kimga boʻlishidan qatʼi nazar, chatda boʻlmasligi kerak narsani qidiradi.
Provayderlar kalitlari, Telegram-bot tokeni, AWS, GitHub va Slack kalitlari, API tokenlari. Xabar qoladi, maslahat esa — «kalitni qayta chiqaring».
send-guard.py:38-48 test_send_guard.py:26Karta raqami tekshiruvidan oʻtadigan 13–19 raqam guruhga hech qachon ketmaydi. Shaxsiy chatga raqam ****1234 niqobi bilan ketadi. Oʻz rekvizitlaringizga ruxsat berish mumkin; «+» bilan boshlangan telefon raqami — karta emas.
send-guard.py:49-83 send-guard.py:179-184 test_send_guard.py:59-75Server yoʻllari, konteyner buyruqlari, provayderning xom xatolari, hooklarning ichki qismi, -100… koʻrinishidagi chat id raqamlari. Ularning oʻrniga — natija oddiy odam tilida.
send-guard.py:84-95 test_send_guard.py:27Rus va ingliz tilidagi uzr iboralari — «kechirasiz», «mening xatom», «afsuski, ulgurmadim» maʼnosidagi soʻzlar va «sorry» — na mijozga, na egasiga ketadi (oʻzbekcha uzrni qoʻriqchi hozircha tanimaydi): ularning oʻrniga fakt, xulosa va keyingi qadam. Konstitutsiyaning yettinchi qonuni. Istisnolar — dasturchilar chati va nuqson raqami yozilgan hisobot.
send-guard.py:97-104 CONSTITUTION.md:21 test_send_guard.py:25Yana bir qoida: Telegram formatlashisiz qalin matn, roʻyxatlar yoki havolalar ham ketmaydi — hech kim xom yulduzchalarni koʻrmasin deb. Batafsil — Telegram haqidagi sahifada. send-guard.py:106-114
Oʻrnatuvchi send-guard.pyni hooklar papkasiga qoʻyadi va uni Claude Code sozlamalariga javob va tahrir uchun onFailure: block bilan yozadi. Qayta ishga tushirilganda uni ikkinchi marta qoʻshmaydi, kalitsiz yozuvlarga esa kalitni yozib qoʻyadi; test bularning hammasini tekshiradi. install/install.sh:116-121 install/install.sh:292-312 test_install_hooks.sh:24-27 test_install_hooks.sh:28-33
Egasining id raqami MILA_OWNER_IDdan olinadi va sozlamalarga tushadi — shunda qoʻriqchi qaysi shaxsiy chat kimniki ekanini biladi. install/install.sh:320-324
Yangilanishlar qoʻriqchining yangi kodini yadroning boshqa hooklari bilan birga olib keladi. Sozlamalar faylini yangilanish hech qachon almashtirmaydi; undagi yagona oʻzgartirish — qoʻriqchi hooklariga onFailure: blockni yozib qoʻyish, avval zaxira nusxa olib. release.json:41-49 release.json:71 update.py:363-366 update.py:386-396 update.py:418
$ python3 templates/home/.claude/hooks/test_send_guard.py ✅ begona chatga — toʻxta ✅ egasiga uzr — toʻxta (7-qonun) ✅ uchinchi mijoz — baribir begona ish: toʻxta ✅ guruhga karta (boʻsh joylar bilan) — toʻxta jami 24/24
mila update esa uni allaqachon oʻrnatilgan qoʻriqchi hooklariga yozib qoʻyadi. Claude Codeʼning eski yoki nomaʼlum versiyasida kalit yozilmaydi: oʻrnatuvchi bu haqda bir qator chiqaradi, yangilanish jurnalda qator qoldiradi, qoʻriqchi esa kalitsiz ishlaydi — u yiqilsa, xabar tekshiruvsiz ketadi. install/install.sh:295-302 update.py:347 update.py:363-373 test_install_hooks.sh:36 test_update.sh:83 CHANGELOG.md:15| Fayl | Nima qiladi |
|---|---|
| send-guard.py | qoʻriqchi: qabul qiluvchi, kalitlar, kartalar, ichki tafsilotlar, uzrlar, begona ish |
| test_send_guard.py | qoʻriqchining 24 ta tekshiruvi |
| settings.json | sozlamalar shabloni: javob va tahrirda qoʻriqchi, onFailure: block |
| install/install.sh | qoʻriqchini qoʻyadi va sozlamalarga onFailure: block bilan yozadi |
| test_install_hooks.sh | oʻrnatuvchi qoʻriqchini bir marta va onFailure: block bilan yozganini tekshiradi |
| release.json | yangilanishlar hooklarni olib keladi, sozlamalar faylini hech qachon almashtirmaydi |
| update.py | allaqachon oʻrnatilgan qoʻriqchi hooklariga onFailure: block ni yozib qoʻyadi |
| CONSTITUTION.md | 1-qonun (sir) va 7-qonun (uzrsiz) |
| SECURITY.md | qoʻriqchidagi teshik haqida qanday xabar berish (ingliz tilida) |
Toʻplam ochiq: koʻnikmalar, hooklar, vositalar va shablonlar. test_send_guard.pyni oʻzingiz ishga tushiring; qoʻriqchida teshik topsangiz, qanday xabar berish SECURITY.md faylida yozilgan.
Sahifadagi faktlar: github.com/shakhruz/mila (main, 1b7251c, v1.5.3), 26.10.2026 da tekshirildi; test_send_guard.py — 24 tadan 24 tasi, test_install_hooks.sh — 12 tadan 12 tasi, test_update.sh — 32 tadan 32 tasi. Telefondagi yozishma — illyustratsiya. «Mila», «MILAGPT» va logotip — MILAGPT tovar belgilari.