Telegramingizdagi raqamli xodimlar
Mila qanday qildi: tahlillar va yangiliklar
Milalar ortida kim turibdi va qanday qoʻshilish mumkin
Mijozlaringiz sirini saqlashni har qanday bot vaʼda qila oladi. Vaʼdani tekshirib boʻlmaydi, kod qatorini esa tekshirsa boʻladi. Milaning 10 ta qonundan iborat bitta konstitutsiyasi bor. Quyida har bir qonun uchun — oddiy soʻzlar bilan mazmuni, koddagi mexanizm va unga havola, kod yoʻq joyda esa ochiq belgi: 7 ta qonunni kod ushlab turadi, 10-qonunni — qisman, 8- va 9-qonunlar — faqat qoida.
Yordamchisi uning orqasidan nima qilmasligini bilmoqchi boʻlgan egaga.
Kod — harakatni oʻzi toʻxtatadigan hook yoki skript. Qoida — koʻnikmadagi qator: uni model ushlab turadi, tekshirish esa faqat Milaning ishlariga qarab mumkin. Qonunlar CONSTITUTION.md faylida — har bir Mila uni birinchi oʻqiydi. CONSTITUTION.md:15-24
| Qonun | Nima ushlab turadi | Turi |
|---|---|---|
| 1 · Odamning siri | Yuborish qoʻriqchisi: begona chatlar, begona @teglar va nomlar | Kod |
| 2 · Fakt va dalil | task.py: dalilsiz «bajarildi» yozilmaydi | Kod |
| 3 · Sizning nomingizdan | bot-send: ommaviy xabar — oldindan koʻrish va aynan shu matnga sizning bosishingiz | Kod |
| 4 · Pul va qaytarib boʻlmaydigan ishlar | spend: chegaradan yuqori — faqat sizning bosishingiz bilan | Kod |
| 5 · Shaxsiy maʼlumotlar | Xotirada yorliqlar, shifrlangan ombor, karta raqami niqobi | Kod |
| 6 · Rad va jimlik | Muddatgacha javob yoʻq — rad; «stop» — toʻxtatish roʻyxatiga | Kod |
| 7 · Uzrsiz | Qoʻriqchi «kechirasiz»ni oʻtkazmaydi | Kod |
| 8 · Ustoz | «Yoʻl» metodikasi | Qoida |
| 9 · Qoʻrquv va shubhalar | Mexanizm yoʻq | Qoida |
| 10 · Har kuni, meʼyorida | Kundalik vazifalar qayta ishga tushirishdan keyin ham yoʻqolmaydi; meʼyor hisoblagichi yoʻq | Qisman |
Odamning siri boshqaga na soʻz bilan, na xotira orqali oʻtadi. Qoʻriqchi har bir xabarni yuborishdan oldin tekshiradi: oluvchi — egasi yoki Mila ulangan chat boʻlishi kerak. Chatga u yerda boʻlmagan, lekin boshqa chatda bor odamning @tegi yoki chat nomi ketmaydi. Qoʻriqchi yiqilsa yoki qotib qolsa — xabar ketmaydi. send-guard.py:25-38 send-guard.py:118-177 install.sh:303-312
Cheklov: qulf teglar va nomlarni ushlaydi, oʻz soʻzlari bilan qayta aytib berishni emas. Xotirada chatlar orasida devor yoʻq — barcha chatlarga bitta sessiya, shuning uchun himoya chiqishda turadi. send-guard.py:119-121 send-guard.py:178-179
Fakt — xotiradan emas, vositadan. done buyrugʻi dalilsiz hech narsa yozmaydi. Dalilni — buyruq, manzil, xabar, kommitni — skript oʻzi va hozir bajaradi; oʻtmasa, vazifa yopilmaydi. Mijoz vazifasini faqat boshqa qoʻl yopadi: odamning soʻzi yoki uning xabari. Har bir javobdan keyin hook matndagi vaʼdalarni topadi va ularni muddat bilan yozib qoʻyadi. task.py:63 task.py:684-689 task.py:690-708 task-sent.py:1-10 task-open.py:1-3
Cheklov: skript chatni kuzatmaydi — done buyrugʻisiz aytilgan «tayyor» soʻzini kod toʻxtatmaydi. «Maʼlumot yoʻq — shunday deyman» faqat qoida bilan turadi. mila-tasks:9 mila-tasks:53
Hammaga ochiq botingizdan ommaviy xabar ikki qadamda ketadi: toʻliq matnli «N kishi» oldindan koʻrinishi, yuborish esa faqat siz ✅ ni bosganingizdan keyin. Oldindan koʻrinish bir soat yashaydi, ikkinchi bosish endi hech narsa yubormaydi. Faqat botga oʻzi yozgan odamlarga yozish mumkin. Telegram bir soatdan koʻproq kutishni aytsa, qolgani oʻz-oʻzidan ketmaydi: sizga oʻsha matn bilan yangi oldindan koʻrinish keladi, kechagi bosish hisobga olinmaydi. bot_send.py:131-144 bot_send.py:146-155 bot_send.py:22 bot_send.py:173-180 bot_send.py:117-118 bot-send:14-20
Cheklov: Mila ulangan chatdagi oddiy javob tugmani kutmaydi. Qoʻriqchi oluvchini, kalitlarni va ichki tafsilotlarni tekshiradi, sizning bosishingizni emas — READMEʼda shunday yozilgan. README.md:82
Pul, qaytarib boʻlmaydigan ishlar va sizning soʻzingiz — faqat siz oʻzingiz shunday qaror qilganda, tanlov esa jurnalga yoziladi. Pullik generatsiyadan oldin spend 10 % zaxira bilan taxmin beradi. Ogohlantirish chegarasidan yuqori boʻlsa — shu sarf belgisi bor kartochka keladi. Pulni faqat Telegram plagini yozib olgan bosish oʻtkazadi, Mila oʻzi yozadigan id emas. Bitta kartochka — bitta sarf. Egasidan byudjet olgan odam faqat oʻz sarfini va shu byudjet doirasida oʻtkazadi. Oylik toʻxtash chegarasi, byudjetlar va egalar roʻyxati ham faqat sizning bosishingiz bilan oʻzgaradi. Har bir sarf — jurnalda qator: kim bosdi, qaysi kartochka. spend.py:94-104 spend.py:51-74 spend.py:105-122 spend.py:134-146
Cheklov: chegaradan past sarf oʻzi oʻtadi — jurnalga qator boʻlib. Oʻchirish, eʼlon qilish, vaʼda berish uchun kodda umumiy qulf yoʻq: ularni koʻnikmalar va vositalar qoidalari ushlab turadi. 28.10 gacha sarfni Mila oʻzi yozadigan argumentdagi id oʻtkazardi; v1.6.4 dan boshlab — faqat bosish. spend.py:33 spend.py:99 permission_policy.ts:19-25 cards:34 topics:29 mila-update:89 spend.py:19-23 test_spend_tap.py:1-3
Xotira, jurnallar va kartochkalarga yozilgandan keyin hook telefonlar, pochta, karta raqamlari, pasport va JShShIRni qisqa yorliqlarga almashtiradi: maʼlumot turi va raqam. Qiymatlar shifrlangan omborda turadi (AES-256 va HMAC: almashtirilgan fayl ochilmaydi). Karta raqami guruhga ketmaydi, shaxsiy chatga — ****1234 niqobi bilan. Yadroning oʻz klonida id raqamlaringiz va ismlaringiz bor kommit yaratilmaydi. pd-mask.py:1-13 pd_vault.py:1-13 send-guard.py:51-85 send-guard.py:181-185 install_privacy_hook.sh:1-11
Cheklov: kiruvchi xabarni model toʻliq oʻqiydi — ombor Mila saqlaydigan va uzatadigan narsani himoya qiladi. Qiymatni faqat egasiga, uning shaxsiy chatida ochish mumkin, buni esa kod emas, koʻnikma hal qiladi. Niqobni PD_MASK=0 oʻchiradi. pd-vault:19-23 pd_vault.py:5-10 pd-mask.py:2-4
Vosita huquqi soʻralgan kartochkaga muddatgacha javob boʻlmasa — bu rad, va Mila buni qilmaganini aytishi shart. Yopilgan kartochkani qayta ochib boʻlmaydi; «Ertagacha» uni soat 9:00 da qaytaradi. Botda «stop» deyilsa, odam toʻxtatish roʻyxatiga tushadi, ommaviy xabar uni navbatdan ham oʻtkazib yuboradi. permission_policy.ts:14-15 REFERENCE.md:352-355 cards.py:251-255 cards.py:244-248 bot_send.py:211-214 bot_send.py:166
Cheklov: vazifalardagi muddati oʻtgan tanlov sukut boʻyicha variant bilan yopiladi — «N soat javob boʻlmadi» degan halol qator va bekor qilish yoʻli bilan. Orqaga qaytarish yoʻli va muddat boʻlmasa, bunday tanlov yaratilmaydi, xabar yetkazilmaguncha taymer turadi. task.py:833-853 mila-tasks:55
Qoʻriqchi chatga uzr va bahonalarni oʻtkazmaydi — kechirim soʻrovchi ruscha va inglizcha soʻzlarni (masalan, sorry) — na mijozga, na egasiga. Toʻxtatish sababida 7-qonunga havola bor. Istisno — nuqson raqami bor hisobot. send-guard.py:99-106 test_send_guard.py:25
Cheklov: qoʻriqchi ohangni emas, soʻzlarni ushlaydi. Javobda fakt, xulosa va qadam borligini kod tekshirmaydi.
Odamni u oʻzi aytgan maqsad sari olib borish va oʻzini uning natijasi bilan oʻlchash. Tayanch — «Yoʻl» metodikasi: bosqich botdagi bosish bilan emas, odamning hayotida voqea yuz berganda bosib oʻtiladi. Odamning maqsadi va natija oʻlchovi kodda yoʻq.
CONSTITUTION.md:22 mila-path:20-22Odam ikkilanib qolsa — baho emas, kichik qadam, fakt yoki misol. Kodda mexanizm yoʻq, koʻnikmalarda ham bu qonun alohida keltirilmagan.
CONSTITUTION.md:23Kod «har kuni»ni ushlab turadi: kundalik vazifalar jadvali sessiya qayta ishga tushganda yoʻqolmaydi, yetishmayotgan cronlar ishga tushishda qayta qoʻyiladi. Meʼyorni qoida ushlab turadi: odatiy holat — jimlik, kuniga uchtadan koʻp rejali murojaat yoʻq. «Kuniga oʻzidan yozilgan xabarlar» hisoblagichi yoʻq; shunga oʻxshash soatlik cheklov faqat Milalarning bir-biri bilan yozishmasida bor.
crons-keeper.py:1-7 CONSTITUTION.md:24 client-chat:105 companion-feeder.py:332-336Konstitutsiya — CONSTITUTION.md fayli: barcha Milalar uchun bitta, birinchi oʻqiladi. Uni oʻzgartirish huquqi egasida. CONSTITUTION.md:15-24
Yangi tahrir yangilanish bilan keladi. Yangilanish rejasi uni alohida qatorga chiqaradi — «Yangilash»dan oldin oʻqing — va xavfni oʻrtachadan past qoʻymaydi. update.py:782-791 update.py:827-832
Agar sizda oʻz tahriringiz boʻlsa, yangilanish uni yadro tahriri bilan almashtirishni maslahat bermaydi: sizniki yangiroq boʻlishi mumkin. 28.10 da yadrodagi 4-qonun egasi 20.09 da belgilagan matnga keltirildi. update.py:797-799 CONSTITUTION.md:18
| Fayl | Nima qiladi |
|---|---|
| CONSTITUTION.md | matn: muqaddima va 10 ta qonun |
| hooks/send-guard.py | yuborish qoʻriqchisi: oluvchi, begona ish, karta raqami, uzrlar — 1, 5, 7-qonunlar |
| skills/mila-tasks/task.py | faqat dalil bilan «bajarildi», muddatli tanlovlar — 2- va 6-qonunlar |
| skills/bot-send/bot_send.py | ommaviy xabar: oldindan koʻrish, bosish, toʻxtatish roʻyxati — 3- va 6-qonunlar |
| skills/spend/spend.py | sarflar: taxmin, chegara, egasining bosishi — 4-qonun |
| install/permission_policy.ts | vosita huquqlari: muddatgacha javob yoʻq — rad — 4- va 6-qonunlar |
| install/pd-mask.py | shaxsiy maʼlumotlar oʻrniga yorliqlar — 5-qonun |
| skills/pd-vault/pd_vault.py | shifrlangan ombor — 5-qonun |
| skills/cards/cards.py | kartochkalar: yopilgani qayta ochilmaydi — 6-qonun |
| install/crons-keeper.py | kundalik vazifalar qayta ishga tushirishdan keyin ham yoʻqolmaydi — 10-qonun |
Toʻplam ochiq: koʻnikmalar, hooklar, vositalar va shablonlar. Har bir pull requestni odam va Mila Sifat oʻqib chiqadi.
Sahifadagi faktlar: github.com/shakhruz/mila (main, 1d0a4c4), 28.10.2026 da tekshirildi. Telefondagi yozishma — tasvir uchun. «Mila», «MILAGPT» va logotip — MILAGPT tovar belgilari.