منصوبے کے بارے میں
tg-cli (کمانڈ نام tg) AI کوڈنگ ایجنٹس کے لیے ایک Telegram برج ہے۔ اس کے دو حصے ہیں: ایک آؤٹ باؤنڈ CLI جسے ایجنٹس اپ ڈیٹس بھیجنے کے لیے استعمال کرتے ہیں، اور ایک ان باؤنڈ daemon، tg-ctl، جو آپ کے فون سے جوابات کو واپس چلتے ہوئے ایجنٹ سیشن میں منتقل کرتا ہے۔
آؤٹ باؤنڈ: ایجنٹس ٹیکسٹ، HTML رپورٹس، تصاویر اور فائلیں بھیجتے ہیں۔ HTML ٹیگز خود بخود ڈیٹیکٹ ہو جاتے ہیں، اور ڈیٹیکٹڈ ایجنٹ کے لیے ایک برانڈڈ emoji پری فکس شامل کیا جاتا ہے۔ Markdown فائلوں کو اپ لوڈ کرنے سے پہلے pandoc اور headless Chrome کے ذریعے PDF میں تبدیل کیا جاتا ہے، اور تبدیلی ناکام ہونے کی صورت میں اصل فائل بھیجی جاتی ہے۔ پیغام کے متن میں ذکر کردہ فائل پاتھز کو ورک ٹری میں ریکرسو سرچ کے ذریعے خود بخود ڈیٹیکٹ کر کے اٹیچ کر دیا جاتا ہے، جبکہ پاتھ کیپشن میں رہتا ہے۔
بھیجنے سے پہلے کئی حفاظتی فلٹرز (guards) چلتے ہیں۔ اگر پیغام اتنا طویل ہو کہ اسے چھ سے زیادہ Telegram پیغامات میں تقسیم کرنا پڑے تو اسے کرداروں اور ٹکڑوں کی تعداد کے ساتھ مسترد کر دیا جاتا ہے۔ خفیہ فائلیں کبھی اٹیچ نہیں کی جاتیں: جیسے .env فائلیں، SSH پرائیویٹ کیز، pem/key/p12/pfx/ppk، کریڈنشل rc-files، شیل ہسٹریز، tfvars، credentials.json اور kubeconfig؛ خود بخود ڈیٹیکٹ ہونے والے تذکرے چھوڑ دیے جاتے ہیں، جبکہ واضح فائل آرگیومنٹ ایک سخت ایرر (hard error) پیدا کرتا ہے۔ ایک garbled-token گارڈ لاطینی یا سیرلیک لفظ کے اندر پھنسے ہوئے اکیلے CJK کوڈ پوائنٹ اور ان ٹوکنز کو بلاک کرتا ہے جن کی اسکرپٹ دو یا زیادہ بار تبدیل ہوتی ہے، جبکہ حقیقی طور پر دو لسانی متن کی اجازت دیتا ہے۔ ایک اسکرین شاٹ گارڈ اس پیغام کو مسترد کرتا ہے جس میں اسکرین شاٹ کا ذکر ہو لیکن کوئی تصویر اٹیچ نہ ہو۔ ایک ڈکشنری گیٹ صارف کے تیار کردہ JSON فائل سے ممنوعہ الفاظ کو ہر پیغام کے عنوان، متن اور کیپشنز کے ساتھ میچ کرتا ہے، جس میں ڈیزائن کے مطابق کوئی بائی پاس جھنڈا نہیں ہے؛ ایک غلط فارمیٹڈ فائل سسٹم کو بند کر دیتی ہے۔ Autolinks linear CLI کے ذریعے Linear ٹکٹ آئی ڈیز اور gh کے ذریعے GitHub PR/issue نمبرز کو حل کرتے ہیں، نتائج کو ایک گھنٹے کے لیے کیش کرتے ہیں اور ناکامی کی صورت میں سادہ ٹیکسٹ پر واپس چلے جاتے ہیں۔ انفرادی فیچرز کو no-feature فلیگ کے ذریعے بند کیا جا سکتا ہے۔
ان باؤنڈ: tg-ctl خود بخود پہلے آؤٹ باؤنڈ پیغام پر شروع ہو جاتا ہے جو کسی ڈیٹیکٹڈ ایجنٹ والے tmux پین سے بھیجا گیا ہو۔ Telegram سے سادہ ٹیکسٹ جوابات اس ایجنٹ کے پین میں انجیکٹ کر دیے جاتے ہیں۔ کسی پیغام کا کوٹ (quote) کے ساتھ جواب دینے سے ایک کوٹ اینکر اٹیچ ہو جاتا ہے جو جواب دیے گئے پیغام کا نام بتاتا ہے، اور tg replies کمانڈ مکمل اصل پیغام واپس لا سکتی ہے۔ /agent کمانڈ ایک پیغام کو مخصوص ایجنٹ تک پہنچاتی ہے، جو ونڈو کے ناموں کے ساتھ fuzzy-matching (اور سیرلیک کے حوالے سے آگاہ) کرتی ہے، مبہم ہونے کی صورت میں سیشن کے لحاظ سے گروپ شدہ سلیکشن بٹنز پیش کرتی ہے، اور سادہ کال پر ایجنٹس کی فہرست فراہم کرتی ہے۔
tmux سے باہر شروع ہونے والے ایجنٹ کا کوئی پین نہیں ہوتا؛ اسے وجہ کے ساتھ ناقابل رسائی (unreachable) کے طور پر لسٹ کیا جاتا ہے اور اس کے بجائے اسے Stop-hook ان باکس کے ذریعے ایک دوسرا چینل ملتا ہے، جسے ہر ٹرن کے اختتام پر پڑھا جاتا ہے۔ README اس محدودیت کو واضح طور پر بیان کرتا ہے: ایک پہلے سے فارغ (idle) ایجنٹ کو قطار میں موجود پیغام صرف تب ملتا ہے جب وہ اگلی بار اپنا ٹرن مکمل کرتا ہے۔ tg-ctl inbox کمانڈ دکھاتی ہے کہ کیا قطار میں ہے۔
Question-to-buttons ایجنٹ کے سوالات اور اجازت کے پرامپٹس کو Telegram پر ان لائن بٹنز کے طور پر فارورڈ کرتا ہے، تاکہ آپ ٹیپ کر کے جواب دے سکیں اور جواب براہ راست پین میں انجیکٹ ہو جائے۔ یہ Claude Code کے سوالات اور اجازت کی شکلوں، Codex PermissionRequest اور opencode question.asked اور permission.asked ایونٹس کا احاطہ کرتا ہے، اور اسے install-hooks کمانڈ کے ذریعے idempotently وائر کیا جاتا ہے جو موجودہ سیٹنگز کا بیک اپ لیتا ہے اور انہیں محفوظ رکھتا ہے۔ جب کوئی سوال زیر التوا ہو تو بھیجے گئے پیغامات کو پرامپٹ میں مداخلت کرنے کے بجائے ملتوی کر دیا جاتا ہے، اور ٹائم آؤٹ ہو جانے والے سوال کارڈ کا جواب اب بھی سادہ ٹیکسٹ کے ذریعے دیا جا سکتا ہے۔
کمانڈز میں stop (موجودہ ٹرن کو روکتا ہے)، kill، status، limit (فی ایجنٹ تازہ ترین استعمال کی ٹیلی میٹری)، tasks (ایک فلٹر ایبل ٹاسک بورڈ)، agent، daily (بھیجے گئے کام کی رپورٹ) اور spend (ٹوکن اور لاگت کا استعمال) شامل ہیں۔ Telegram سے بھیجی گئی تصاویر اور دستاویزات ایک مقامی کیش ڈائریکٹری میں ڈاؤن لوڈ کی جاتی ہیں اور پاتھ ایجنٹ کے پڑھنے کے لیے انجیکٹ کیا جاتا ہے۔ Claude Code statusLine، Codex ٹوکن کاؤنٹس اور Pi سیشن اسٹیٹس سے آنے والی ٹیلی میٹری ایک ڈی-ڈپلیکیٹڈ وارننگ جاری کر سکتی ہے جب کوئی حد 90 فیصد تک پہنچ جائے۔ Forum-topic روٹنگ اختیاری اور تجرباتی ہے، جس میں ٹاپک کی تخلیق سے ایجنٹ کے بننے اور لائیو ٹاپک کو دوبارہ کھولنے سے ایجنٹ کے دوبارہ منسلک نہ ہونے کے بارے میں دستاویزات موجود ہیں۔ کنٹرول کو کنفیگ فائل میں غیر فعال کیا جا سکتا ہے۔
انسٹالیشن: ایک لائن کا انسٹال اسکرپٹ Bun کے ذریعے ڈیپینڈنسز انسٹال کرتا ہے، tg کو PATH میں لنک کرتا ہے اور ایجنٹ اسکل کو رجسٹر کرتا ہے؛ مینوئل کلون اور symlink بھی کام کرتا ہے۔ کنفیگریشن کنفیگ ڈائریکٹری کے تحت ایک dotenv فائل میں ہوتی ہے جس میں بوٹ ٹوکن اور چیٹ آئی ڈی ہوتی ہے۔ ایک install-skill سب کمانڈ ایک اسکل فائل لکھتی ہے اور ڈیٹیکٹڈ ہارنس فائلوں میں مختصر ہدایات شامل کرتی ہے۔ چونکہ چیک آؤٹ کیا گیا اسکرپٹ ہی رننگ بائنری ہے، اس لیے کوئی بلڈ اسٹیپ نہیں ہے، اور ایک ڈیپلائے اسکرپٹ چیک آؤٹ کو فاسٹ فارورڈ کرتا ہے، جو مقامی تبدیلیوں کے اوپر پل (pull) کرنے سے انکار کرتا ہے؛ daemon کوڈ کی تبدیلیوں کے لیے ری اسٹارٹ کی ضرورت ہوتی ہے، جسے اسکرپٹ ڈیٹیکٹ اور رپورٹ کرتا ہے۔ فی مشین ایک بوٹ ٹوکن درکار ہے، کیونکہ Telegram ایک ٹوکن کے لیے صرف ایک getUpdates کنزیومر کی اجازت دیتا ہے۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.