۶ اکتبر، تلگرام Serverless، پلتفرم خود برای کد رباتها را بهروزرسانی کرد. اکنون این پلتفرم فرانتاند مینیاپلیکیشنها را نیز میزبانی میکند: خروجی بیلد (build output) با یک دستور همراه ربات آپلود میشود و از آدرسی شبیه app<id>.tgcloud.ai قابل دسترسی است. مینیاپلیکیشن اکنون دارای توابع سمت سرور است که از telegram-web-app.js فراخوانی میشوند. این بهروزرسانی شامل تمام کسانی میشود که بکاند ربات یا مینیاپلیکیشن خود را روی سرور شخصی خود نگه میدارند، و همچنین کسانی که قبلاً ربات خود را در ماه جولای به Serverless منتقل کردهاند: پروژه قدیمی باید یک بار به ساختار پوشههای جدید منتقل شود.

Serverless یک بکاند برای رباتها است که تلگرام آن را روی سرورهای خود اجرا میکند. کد با ماژولهای معمولی JavaScript نوشته میشود و در ایزولههای V8 اجرا میگردد، یعنی در محیطهای سندباکس سبک درون یک فرآیند واحد، در کنار Bot API. یک پایگاه داده SQLite و HTTP خروجی همراه کد ارائه میشود. نیازی به سرورها، کانتینرها و وبهوکهای شخصی نیست. اولین نسخه از ابزار خط فرمان @tgcloud/cli در ۱۲ جولای در npm منتشر شد، و صفحه مستندات آن در ۱۳ جولای در آرشیو وب ظاهر شد. در آن زمان، پلتفرم تنها قادر به پاسخگویی به بهروزرسانیهای ربات بود: در نسخه جولای مستندات، نه بخشی در مورد فرانتاند وجود داشت و نه کلمه «endpoint».
تغییرات ۶ اکتبر
| چه چیزی | نحوه عملکرد |
|---|---|
| میزبانی مینیاپلیکیشن | پوشه خروجی بیلد (مانند dist در Vite) همراه با کد ربات آپلود میشود و از https://app<app_id>.tgcloud.ai/ ارائه میگردد |
| نقاط پایانی (Endpoints) | فایل tgcloud/endpoints/<name>.js به تابعی تبدیل میشود که مینیاپلیکیشن آن را با نام فراخوانی میکند |
| ابزار خط فرمان 0.2.0 | در ۶ اکتبر ساعت ۱۰:۵۲ UTC در npm منتشر شد |
tgcloud.jsonc | فایل پیکربندی پروژه در ریشه: پوشه خروجی بیلد، حالت SPA، کش، هدرها، ریدایرکتها |
| ایمپورت با مسیر نسبی | ../schema.js به جای نام ماژول، با پسوند .js اجباری، بنابراین ویرایشگر میتواند به تعاریف پرش کند |
پوشه tgcloud/ | schema.js، lib/، handlers/ و endpoints/ از ریشه به این پوشه منتقل شدند، ریشه برای فرانتاند آزاد است |
مینیاپلیکیشن دیگر نیازی به میزبانی جداگانه، گواهی و سرور با API ندارد. فرانتاند با هر باندلری ساخته میشود، ابزار خط فرمان فایلها را بر اساس هش مقایسه کرده و فقط تغییریافتهها را آپلود میکند. آدرسی که push چاپ میکند، به عنوان آدرس مینیاپلیکیشن در @BotFather وارد میشود.
با پروژه نسخه 0.1 چه کنیم؟
ابزار خط فرمان 0.2.0 از کار با ساختار قدیمی پوشهها خودداری میکند تا زمانی که پروژه به ساختار جدید منتقل شود. انتقال با یک دستور:
npx tgcloud upgradeفایلهایschema.js،lib/وhandlers/را به پوشهtgcloud/منتقل میکند. نام ماژولها (lib/cart,handlers/message) تغییر نمیکنند.- ایمپورتها بر اساس نام ماژول همچنان کار میکنند، اما مستندات توصیه میکند به مسیرهای نسبی با
.jsتغییر دهید.
برای کسانی که مینیاپلیکیشن را متصل میکنند:
pushپوشه خروجی بیلد را همانطور که هست آپلود میکند و خودش چیزی را بیلد نمیکند. اگر پس از ویرایش فرانتاند بدون بیلد کردن آن را اجرا کنید، نسخه قبلی به محیط پروداکشن میرود. اسکریپتnpm run deployکه توسط قالب پروژه اضافه میشود، ابتدا بیلد میکند و سپس آپلود میکند.- Telegram Web مینیاپلیکیشنها را در یک فریم باز میکند، بنابراین نمیتوان هدر
X-Frame-Optionsوframe-ancestorsسختگیرانه را تنظیم کرد. - مسیر
/api/در همان آدرس توسط نقاط پایانی (endpoints) اشغال شده است، نباید فایلهای خود را در آنجا قرار دهید. immutableدر پیکربندی فقط برای فایلهایی با هش در نامشان است. مرورگر بقیه را به مدت یک سال در کش نگه میدارد و راهی برای لغو آنها وجود نخواهد داشت.- ابزار خط فرمان Next.js، Nuxt، SvelteKit و Angular را به طور خودکار تشخیص نمیدهد: ابتدا باید خروجی استاتیک را پیکربندی کرده و پوشه آن را به صورت دستی در
"source"وارد کنید.
چگونه مینیاپلیکیشن بکاند خود را فراخوانی میکند؟
در همان روز، در ساعت ۰۹:۲۷ UTC، تلگرام telegram-web-app.js، اسکریپتی که هر مینیاپلیکیشن را متصل میکند، بهروزرسانی کرد. در آن، شیء Telegram.WebApp.Serverless با تنها یک متد call ظاهر شد. این متد یک درخواست POST به آدرس نسبی /api/<name>، یعنی به همان هاستی که اپلیکیشن از آن باز شده است، ارسال میکند. بنابراین، این فراخوانی فقط برای مینیاپلیکیشنی که در tgcloud.ai میزبانی میشود کار میکند: از دامنه شخصی، درخواست به سرور شخصی ارسال خواهد شد.
اسکریپت در هدر Authorization رشته TMA و initData را به صورت base64 قرار میدهد. initData مجموعهای از فیلدها درباره کاربر و چت است که توسط تلگرام امضا شده و کلاینت با آن مینیاپلیکیشن را باز میکند. پلتفرم امضا را قبل از اجرای کد بررسی میکند و بدون آن، درخواست کد ۴۰۱ دریافت میکند. نقطه پایانی (endpoint) کاربر از پیش تأیید شده را در ctx.initData.user دریافت میکند. دیگر نیازی به بررسی دستی امضای initData، آنطور که در سرور شخصی لازم است، نیست و چنین بکاندی API باز ندارد که نیاز به محافظت داشته باشد.
خطاها به دو نوع تقسیم میشوند. EndpointError که عمداً توسط کد پرتاب میشود، با متن و پارامترهایی به کلاینت میرسد که فرانتاند میتواند بر اساس آنها شاخهبندی کند. هر استثنای دیگری توسط کلاینت به عنوان خطای داخلی دیده میشود و متن واقعی در لاگها باقی میماند تا ساختار بکاند به بیرون درز نکند.
سرور بدون توکن چه اطلاعاتی از خود میدهد؟
ابزار خط فرمان با API در cloud.telegram.org ارتباط برقرار میکند. یکی از متدهای آن، /capabilities، بدون احراز هویت پاسخ میدهد: این متد ساختار پروژه، الگوهای AGENTS.md و docs/tgcloud-sdk.md و لیستی از انواع بهروزرسانیها را که میتوان برای آنها هندلر تنظیم کرد، توصیف میکند. این انواع ۲۷ عدد هستند. ابزار خط فرمان شماره طرح پروژه را با این پاسخ مقایسه میکند و در صورتی که سرور از پوشههایی اطلاع داشته باشد که ابزار هنوز نمیداند، هشدار میدهد. در کد ابزار خط فرمان، یک سوئیچ TGCLOUD_BETA=1 نیز وجود دارد که درخواستها را به /beta هدایت میکند. در ۶ اکتبر، پاسخ بتا با پاسخ اصلی یکسان است.
چرا دامنه .ai نامیده میشود؟
دامنه tgcloud.ai در ۱۱ سپتامبر ۲۰۲۶ از طریق GoDaddy ثبت شده است. در همان روز، گواهی *.tgcloud.ai برای آن صادر شد، یک گواهی برای تمام زیردامنههایی شبیه app<id>. آدرس دامنه، 149.154.166.100، در شبکه Telegram_Messenger_Network (AS62041) قرار دارد. ریشه دامنه یک خطای ۴۰۴ خالی برمیگرداند: این پلتفرم ویترین ندارد، فقط زیردامنههای اپلیکیشنها.
خود پسوند دامنه هنوز چیزی را ثابت نمیکند: .ai دامنه ملی آنگویلا است که مدتهاست توسط پروژههای فناوری استفاده میشود. و tgcloud.com از سال ۲۰۱۱ توسط یک مالک غیرمرتبط اشغال شده است، بنابراین انتخاب ممکن است صرفاً به دلیل در دسترس بودن نام بوده باشد.
اما این پلتفرم از روز اول حول عوامل هوش مصنوعی که کد مینویسند و رباتهایی که پاسخ تولید میکنند، ساخته شده است.
- کد را عامل مینویسد. بخش «Building with AI» از جولای در مستندات وجود دارد. هر پروژه جدید
AGENTS.mdرا دریافت میکند که به گفته خود الگو، به طور خودکار توسط Claude Code، Cursor و ابزارهای مشابه خوانده میشود، و یک مرجع SDK درdocs/. مستندات پیشنهاد میکند پروژه را در عامل باز کنید و ربات را با کلمات توصیف کنید، و این مرحله را اولین گام مینامد. - محیط برای کد تولید شده طراحی شده است. هیچ بسته npm، فقط یک SDK، قوانین سختگیرانه مانند یک فایل برای هر نوع بهروزرسانی. هرچه گزینهها کمتر باشد، عامل کمتر اشتباه میکند، و مستندات به صراحت توافقنامههایی را که «تولید کد معمولی» از دست میدهد، فهرست میکند.
- رباتی که پاسخ تولید میکند. از میان ۲۷ نوع بهروزرسانی که Serverless میپذیرد،
stopped_message_generationوguest_messageوجود دارند. هر دو در بهار و تابستان همراه با سایر قابلیتها برای رباتهای مبتنی بر مدلهای زبانی در Bot API ظاهر شدند.
| تاریخ | نسخه Bot API | چه چیزی ظاهر شد |
|---|---|---|
| ۳۱ دسامبر ۲۰۲۵ | 9.3 | sendMessageDraft: پاسخ در حین تولید به کاربر نمایش داده میشود |
| ۸ مه ۲۰۲۶ | 10.0 | حالت مهمان: در یک پیام میتوان تا سه ربات را که در چت نیستند دعوت کرد |
| ۲۴ اوت ۲۰۲۶ | 10.3 | کاربر میتواند تولید را متوقف کند، ربات بهروزرسانی مربوط به آن را دریافت میکند |
| ۶ اکتبر ۲۰۲۶ | Serverless | مینیاپلیکیشن و بکاند آن در یک پلتفرم، AGENTS.md در هر پروژه |
آنچه Serverless هنوز ندارد، خود مدل است. SDK از سه بخش تشکیل شده است: پایگاه داده (sdk/db)، Bot API (sdk/api) و fetch. برای اینکه ربات در Serverless با متنی از یک مدل زبانی پاسخ دهد، از طریق fetch با کلید خود به یک API خارجی متصل میشود. مستندات fetch به طور جداگانه به خواندن جریانی پاسخ به عنوان راهی برای دریافت خروجی API هوش مصنوعی به صورت توکن به توکن اشاره میکند.
تلگرام ظرفیتهای خودش را برای شبکههای عصبی دارد. Cocoon، یک شبکه محاسبات محرمانه بر پایه GPU با پرداخت از طریق TON، توسط Durov در Blockchain Life 2025 معرفی شد و وبسایت آن از همان آدرس در شبکه Telegram که telegram.org نیز از آن استفاده میکند، میزبانی میشود. از اینجا یک فرضیه مطرح میشود: بخش بعدی SDK میتواند شامل فراخوانی مدل به صورت داخلی، بدون نیاز به کلید خارجی و با پرداخت از طریق Telegram باشد. فرضیه دوم مربوط به @BotFather است: ویرایشگر هندلرها (پردازشگرها)، پایگاه داده و فایلهای Mini App در حال حاضر در آن روی تلفن وجود دارد و به نظر میرسد توصیف ربات با کلمات به جای کد، گام بعدی برای چنین ویرایشگری باشد. هیچ یک از این فرضیهها، به جز دامنه و جهتگیری بهروزرسانیهای اخیر، تاکنون تأیید نشدهاند: در مستندات، ابزار CLI و پاسخ /capabilities مورخ 6 اکتبر، هیچ ماژولی برای شبکههای عصبی وجود ندارد.



