প্রকল্প সম্পর্কে
tg-cli (কমান্ড নাম tg) হলো AI কোডিং এজেন্টদের জন্য একটি Telegram ব্রিজ। এর দুটি অংশ রয়েছে: একটি আউটবাউন্ড CLI যা এজেন্টরা আপডেট পাঠানোর জন্য ব্যবহার করে, এবং একটি ইনবাউন্ড ডেমন, tg-ctl, যা আপনার ফোনের উত্তরগুলোকে একটি চলমান এজেন্ট সেশনে ফিরিয়ে নিয়ে আসে।
আউটবাউন্ড: এজেন্টরা টেক্সট, HTML রিপোর্ট, ছবি এবং ফাইল পাঠায়। HTML ট্যাগগুলো স্বয়ংক্রিয়ভাবে শনাক্ত করা হয় এবং শনাক্তকৃত এজেন্টের জন্য একটি ব্র্যান্ডেড ইমোজি প্রিফিক্স যোগ করা হয়। Markdown ফাইলগুলো আপলোডের আগে pandoc এবং headless Chrome-এর মাধ্যমে PDF-এ রূপান্তরিত হয়; রূপান্তর ব্যর্থ হলে মূল ফাইলটি পাঠানো হয়। মেসেজ টেক্সটে উল্লিখিত ফাইল পাথগুলো ওয়ার্কট্রি জুড়ে রিকার্সিভ সার্চের মাধ্যমে স্বয়ংক্রিয়ভাবে শনাক্ত এবং সংযুক্ত করা হয়, এবং ক্যাপশনে পাথটি রাখা হয়।
পাঠানোর আগে বেশ কিছু গার্ড (guards) কাজ করে। কোনো মেসেজ যদি ছয়টির বেশি Telegram মেসেজে বিভক্ত হওয়ার মতো দীর্ঘ হয়, তবে তা ক্যারেক্টার এবং ফ্র্যাগমেন্ট কাউন্টসহ প্রত্যাখ্যাত হয়। গোপনীয় ফাইল যেমন .env, SSH প্রাইভেট কি, pem/key/p12/pfx/ppk, ক্রেডেনশিয়াল rc-ফাইল, শেল হিস্ট্রি, tfvars, credentials.json এবং kubeconfig কখনোই সংযুক্ত করা হয় না; স্বয়ংক্রিয়ভাবে শনাক্ত করা উল্লেখগুলো এড়িয়ে যাওয়া হয়, আর এক্সপ্লিসিট ফাইল আর্গুমেন্ট দিলে তা হার্ড এরর হিসেবে গণ্য হয়। একটি গার্বেলড-টোকেন গার্ড ল্যাটিন বা সিরিলিক শব্দের ভেতরে আটকে থাকা একক CJK কোডপয়েন্ট এবং যেসব টোকেনের স্ক্রিপ্ট দুইবার বা তার বেশি পরিবর্তিত হয় তা ব্লক করে, তবে প্রকৃত দ্বিভাষিক টেক্সট অনুমতি দেয়। একটি স্ক্রিনশট গার্ড ছবি সংযুক্ত না করে স্ক্রিনশটের কথা উল্লেখ করা মেসেজ প্রত্যাখ্যান করে। একটি ডিকশনারি গেট ব্যবহারকারী-পরিচালিত JSON ফাইল থেকে নিষিদ্ধ শব্দগুলো প্রতিটি মেসেজের টাইটেল, বডি এবং ক্যাপশনের সাথে মিলিয়ে দেখে; কোনো বাইপাস ফ্ল্যাগ নেই এবং ভুল ফরম্যাটের ফাইল থাকলে তা বন্ধ হয়ে যায়। অটোলিঙ্কগুলো linear CLI-এর মাধ্যমে Linear টিকেট আইডি এবং gh-এর মাধ্যমে GitHub PR/issue নম্বর রেজলভ করে, যা এক ঘণ্টার জন্য ক্যাশ করে রাখে এবং ব্যর্থ হলে প্লেইন টেক্সটে রূপান্তর করে। no-feature ফ্ল্যাগের মাধ্যমে ব্যক্তিগত ফিচারগুলো বন্ধ করা সম্ভব।
ইনবাউন্ড: একটি শনাক্তকৃত এজেন্টের tmux প্যানেল থেকে প্রথম আউটবাউন্ড মেসেজ পাঠানোর সাথে সাথে tg-ctl স্বয়ংক্রিয়ভাবে চালু হয়। Telegram থেকে আসা প্লেইন টেক্সট উত্তরগুলো ওই এজেন্টের প্যানেলে ইনজেক্ট করা হয়। কোনো মেসেজের কোট করে উত্তর দিলে একটি কোট অ্যাঙ্কর যুক্ত হয় যা উত্তর দেওয়া মেসেজটিকে চিহ্নিত করে, এবং tg replies কমান্ডের মাধ্যমে মূল মেসেজটি পুনরায় আনা যায়। /agent কমান্ড একটি নির্দিষ্ট এজেন্টের কাছে মেসেজ পাঠায়, যা উইন্ডো নামের সাথে ফাজি-ম্যাচিং (এবং সিরিলিক-সচেতন) করে; অস্পষ্টতার ক্ষেত্রে সেশন অনুযায়ী গ্রুপ করা সিলেকশন বাটন প্রদান করে এবং খালি ইনভোকেশনে এজেন্টদের তালিকা দেখায়।
tmux-এর বাইরে শুরু করা এজেন্টের কোনো প্যানেল থাকে না; সেটিকে কারণসহ 'unreachable' হিসেবে তালিকাভুক্ত করা হয় এবং পরিবর্তে একটি Stop-hook ইনবক্সের মাধ্যমে দ্বিতীয় একটি চ্যানেল পায়, যা প্রতিটি টার্ন শেষে পড়া হয়। README-তে এই সীমাবদ্ধতা স্পষ্টভাবে বলা আছে: একটি অলরেডি আইডল (idle) এজেন্ট কিউ করা মেসেজটি কেবল তার পরবর্তী টার্ন শেষ করার পর পায়। tg-ctl inbox কমান্ডের মাধ্যমে কিউতে কী আছে তা দেখা যায়।
Question-to-buttons ফিচারটি এজেন্টের প্রশ্ন এবং পারমিশন প্রম্পটগুলোকে Telegram-এ ইনলাইন বাটন হিসেবে পাঠায়, যাতে আপনি ট্যাপ করে উত্তর দিতে পারেন এবং সেই উত্তর সরাসরি প্যানেলে ইনজেক্ট হয়। এটি Claude Code-এর প্রশ্ন ও পারমিশন শেপ, Codex PermissionRequest এবং opencode question.asked ও permission.asked ইভেন্টগুলোকে কভার করে। এটি install-hooks কমান্ডের মাধ্যমে আইডেমপোটেন্টলি সেটআপ করা হয় যা বিদ্যমান সেটিংস ব্যাকআপ রাখে এবং সংরক্ষণ করে। প্রশ্ন পেন্ডিং থাকা অবস্থায় পাঠানো মেসেজগুলো প্রম্পটকে বাধা না দিয়ে ডিফার (defer) করা হয়, এবং টাইম-আউট হয়ে যাওয়া প্রশ্ন কার্ডেও প্লেইন টেক্সটের মাধ্যমে উত্তর দেওয়া সম্ভব।
কমান্ডগুলোর মধ্যে রয়েছে stop (বর্তমান টার্ন ইন্টারাপ্ট করে), kill, status, limit (প্রতি এজেন্টের সর্বশেষ ইউসেজ টেলিমট্রি), tasks (একটি ফিল্টারযোগ্য টাস্ক বোর্ড), agent, daily (শিপড-ওয়ার্ক রিপোর্ট) এবং spend (টোকেন এবং খরচ)। Telegram থেকে পাঠানো ছবি এবং ডকুমেন্টগুলো লোকাল ক্যাশ ডিরেক্টরিতে ডাউনলোড করা হয় এবং এজেন্টের পড়ার জন্য পাথটি ইনজেক্ট করা হয়। Claude Code statusLine, Codex টোকেন কাউন্ট এবং Pi সেশন স্ট্যাটস থেকে আসা ইউসেজ টেলিমট্রি লিমিটের ৯০ শতাংশে পৌঁছালে একটি ডি-ডুপ্লিকেটেড সতর্কবার্তা দিতে পারে। ফোরাম-টপিক রাউটিং অপশনাল এবং পরীক্ষামূলক, যেখানে টপিক তৈরি করলে এজেন্ট স্পন হওয়া এবং লাইভ টপিক পুনরায় খোলার সময় এজেন্টের সাথে পুনরায় সংযুক্ত না হওয়ার মতো কিছু সীমাবদ্ধতা রয়েছে। কনফিগ ফাইলের মাধ্যমে কন্ট্রোল ডিজেবল করা সম্ভব।
ইনস্টলেশন: একটি ওয়ান-লাইন ইনস্টল স্ক্রিপ্ট Bun-এর মাধ্যমে ডিপেন্ডেন্সি ইনস্টল করে, PATH-এ tg লিঙ্ক করে এবং এজেন্ট স্কিল রেজিস্টার করে; ম্যানুয়াল ক্লোন এবং সিমলিঙ্কও কাজ করে। কনফিগারেশনটি কনফিগ ডিরেক্টরির অধীনে একটি dotenv ফাইলে থাকে যেখানে বট টোকেন এবং চ্যাট আইডি থাকে। একটি install-skill সাবকমান্ড একটি স্কিল ফাইল লেখে এবং শনাক্তকৃত হারনেস ফাইলগুলোতে সংক্ষিপ্ত নির্দেশনা যুক্ত করে। যেহেতু চেক-আউট করা স্ক্রিপ্টটিই রানিং বাইনারি, তাই কোনো বিল্ড স্টেপ নেই, এবং একটি ডেপ্লয় স্ক্রিপ্ট দ্রুত চেক-আউট সম্পন্ন করে, তবে লোকাল চেঞ্জ থাকলে তা পুল করতে অস্বীকার করে। ডেমন কোড পরিবর্তনের জন্য রিস্টার্ট প্রয়োজন, যা স্ক্রিপ্টটি শনাক্ত করে এবং রিপোর্ট করে। প্রতি মেশিনে একটি বট টোকেন প্রয়োজন, কারণ Telegram প্রতি টোকেনে একটি মাত্র getUpdates কনজ্যুমার অনুমতি দেয়।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.