پرش به محتویات

mintbot چگونه با فایل‌ها کار می‌کند

وقتی از طریق Telegram، پنل وب یا API یک عکس، سند، پیام صوتی، صفحه‌گسترده، اسکرین‌شات یا PDF برای عامل mintbot خود می‌فرستید، فایل روی VPS اختصاصی عامل شما ذخیره می‌شود و در هیچ جای دیگری ذخیره نمی‌شود. تا هر زمان که بخواهید همان‌جا می‌ماند و LLM یک نسخهٔ کاری دریافت می‌کند که مخصوص خودش آماده شده است.

این یک تصمیم طراحی بی‌سروصداست، اما پیامدهای بزرگی دارد. ارزش دارد که آن را باز کنیم، چون یکی از جاهایی است که mintbot بیشترین تفاوت را با چت‌های هوش مصنوعی عمومی دارد.

نمودار: فایل بارگذاری‌شده به‌صورت نسخهٔ اصلی روی VPS عامل شما ذخیره می‌شود؛ آداپتوری که بر اساس نوع فایل انتخاب شده، یک نسخهٔ کاری برای LLM می‌سازد
نسخهٔ اصلی دست‌نخورده روی VPS شما می‌ماند — مدل همیشه فقط نسخهٔ کاری‌ای را می‌بیند که برای آن ساخته شده است.

مسیر کامل، از ابتدا تا انتها

  1. فایل به VPS عامل می‌رسد. PDFی که در پنل وب می‌کشید و رها می‌کنید، مستقیم به VPS شما می‌رود. عکس یا فایلی را که در Telegram می‌فرستید، ربات mintbot از Telegram دریافت می‌کند و بلافاصله به VPS شما می‌سپارد — فایل فقط عبور می‌کند و هرگز به‌صورت متمرکز ذخیره نمی‌شود. API محلی عامل بایت‌های شناسایی ابتدای فایل (magic bytes) را بررسی می‌کند تا بفهمد فایل واقعاً از چه نوعی است (گوشی‌ها و مرورگرها به‌طرز شگفت‌آوری اغلب برچسب اشتباه می‌زنند)، هش SHA-256 آن را محاسبه می‌کند و فایل را در /var/lib/mintbot-agent/uploads/<shard>/<sha256>.<ext> می‌نویسد. یک ردیف در فهرست محلی ثبت می‌شود که منبع (telegram / panel / api)، شناسهٔ بارگذارکننده، نوع MIME و نام اصلی فایل را در خود دارد. اگر یک فایل را دو بار بفرستید، باز هم فقط یک بار ذخیره می‌شود.

    اگر گفتگو در یک پروژه انجام شود، عامل یک نسخه هم در پوشهٔ uploads/ همان پروژه می‌گذارد تا بتواند کنار بقیهٔ پروژه روی فایل کار کند.

  2. نسخهٔ اصلی دست‌نخوردنی است. از این لحظه به بعد هیچ چیز در mintbot فایل ذخیره‌شده را تغییر نمی‌دهد. آداپتورهایی که فایل را برای LLM آماده می‌کنند، فقط نسخه‌های کاری می‌سازند — JPEGهای کوچک‌شده، متن رمزگشایی‌شده. نسخهٔ اصلی، بایت به بایت یکسان، تا وقتی خودتان پاکش نکنید روی دیسک می‌ماند. نه فضای ذخیره‌سازی مرکزی در کار است، نه زمان‌سنج نگهداری، نه نشت میان عامل‌ها: VPS هر عامل فقط از فایل‌های مالک خودش خبر دارد.

  3. مدل نسخه‌ای می‌گیرد که برای خودش ساخته شده است. وقتی عامل فایل را به LLM نشان می‌دهد، یک توزیع‌کنندهٔ کوچک بر اساس نوع MIME و پسوند، آداپتور مناسب را انتخاب می‌کند:

    آداپتور چه چیزی را پوشش می‌دهد مدل چه می‌گیرد
    تصویر JPG, PNG, WebP, GIF, HEIC (iPhone), AVIF, TIFF, BMP ضلع بلندتر تا 1568 px کوچک می‌شود، دوباره با JPEG q85 کدگذاری می‌شود و مستقیم در درخواست گنجانده می‌شود. رمزگشایی در فرایندی جداگانه و کوتاه‌عمر با سقف حافظه‌ای متناسب با VPS شما انجام می‌شود، بنابراین حتی یک عکس بسیار بزرگ هم نمی‌تواند عامل را کند کند
    PDF .pdf تا 32 MB به‌صورت PDF واقعی گنجانده می‌شود — Claude متن و صفحه‌آرایی را مستقیم می‌خواند. PDF بزرگ‌تر روی دیسک می‌ماند و عامل خودش متن را بیرون می‌کشد (مثلاً با pdftotext)
    متن .txt, .md, .csv, .json, .yaml, .svg, کد منبع (.py, .js, .ts, .go, .rs, …), لاگ‌ها, diffها با UTF-8 رمزگشایی می‌شود (در صورت نیاز latin-1) و تا 500 KB گنجانده می‌شود؛ فایل طولانی‌تر همان‌جا بریده می‌شود و نسخهٔ اصلی کامل روی دیسک می‌ماند
    صدا .mp3, .ogg, .opus, .m4a, .wav, .flac, .aac پیام‌های صوتی Telegram و میکروفون پنل از پیش به متن تبدیل‌شده می‌رسند. فایل صوتی هنوز به‌طور خودکار رونویسی نمی‌شود — عامل محل فایل و دستورالعمل‌ها را دریافت می‌کند و هر وقت بخواهید آن را رونویسی می‌کند
    ویدیو .mp4, .mov, .webm, .mkv, .avi هنوز به‌طور خودکار پردازش نمی‌شود. اگر بخواهید، عامل ffmpeg را نصب می‌کند (و پیش از آن می‌گوید چقدر فضای دیسک می‌گیرد) و خودش فریم‌ها یا ترک صدا را بیرون می‌کشد
    اسناد Office .docx, .xlsx, .pptx, نسخه‌های قدیمی‌تر .doc / .xls / .ppt, .odt, .ods, .odp هنوز به‌طور خودکار پردازش نمی‌شوند. اگر بخواهید، عامل یک کتابخانهٔ کوچک خواندن نصب می‌کند و متن را بیرون می‌کشد
    ناشناخته هر چیز دیگر یادداشتی با نام، نوع، اندازه و محل فایل روی دیسک، به‌همراه چند بایت اول آن به‌صورت هگزادسیمال — همین کافی است تا مدل فایل را بشناسد و در صورت نیاز با ابزارهایش بازش کند

    هر نسخهٔ کاری کنار نسخهٔ اصلی با نام <sha256>.cache/v<N>.json در حافظهٔ نهان ذخیره می‌شود، بنابراین دفعهٔ بعد که مدل به آن فایل نیاز داشته باشد، فوراً بارگذاری می‌شود. هر وقت آداپتوری تغییر کند، حافظهٔ نهان خودبه‌خود از نو ساخته می‌شود.

  4. مدت نگهداری فایل با مدت اعتبار پیوند متفاوت است. تصاویر و PDFهای آماده‌شده برای LLM در خودِ درخواست گنجانده می‌شوند. فایل اصلی تا زمانی که آن را حذف نکنید روی VPS شما می‌ماند. خواندن از طریق HTTP به نشست معتبر پنل، درخواست ماشینی تأییدشده یا پیوند زمان‌داری نیاز دارد که فقط به همان فایل دسترسی می‌دهد. شناسهٔ فایل به‌تنهایی مجوز دسترسی نیست؛ ممکن است پیوند دانلود منقضی شود، درحالی‌که فایل اصلی همچنان روی دیسک است.

چرا این از چت‌های هوش مصنوعی عمومی بهتر است

وقتی عکسی را در ChatGPT یا PDFی را در Claude.ai بارگذاری می‌کنید، فایل به فضای ذخیره‌سازی ارائه‌دهنده می‌رود، به همان گفتگو گره می‌خورد و سیاست نگهداری ارائه‌دهنده تعیین می‌کند کی ناپدید شود. پس از مدتی فایل از بین رفته است، حتی اگر هنوز گفتگویی را که فایل در آن بود ببینید. رفتن سراغ ارائه‌دهندهٔ دیگر یعنی شروع از صفر.

یک دام رایج در ربات‌های Telegram این تفاوت را ملموس می‌کند. Telegram برای هر عکس یک file_id دائمی نگه می‌دارد، اما پیوند دانلودی که ربات برای آن می‌گیرد فقط حدود یک ساعت به‌طور تضمین‌شده کار می‌کند. ربات‌هایی که فقط همین پیوند را نگه می‌دارند، برای عکس دیروز خطای 404 برمی‌گردانند. mintbot همان لحظه‌ای که فایل می‌رسد آن را در بایگانی عامل شما کپی می‌کند — و اگر به عکس قدیمی‌تری پاسخ دهید، دوباره از طریق file_id دائمی آن را می‌گیرد. از آن به بعد، عکس مال شماست.

از این طراحی سه نتیجه به دست می‌آید:

  • فایل‌ها مال شما هستند، نه ارائه‌دهندهٔ LLM. اگر ماه بعد از Claude به GPT بروید، تاریخچهٔ فایل‌هایتان دست‌نخورده همراهتان می‌آید، چون روی VPS شماست — نه در فضای ذخیره‌سازی یک فروشنده.
  • می‌توانید بعداً دوباره بپرسید. «سه ماه پیش یک قرارداد را برایم بررسی کردی — می‌توانی آن را با این پیش‌نویس جدید مقایسه کنی؟» جواب می‌دهد، چون نسخهٔ اصلی هنوز روی دیسک است. در چت‌های عمومی، فایل قدیمی معمولاً مدت‌هاست از بین رفته است.
  • مدل همیشه نسخه‌ای را می‌گیرد که بهتر از همه می‌تواند از آن استفاده کند. مدل‌های بینایی JPEG کوچک‌شده را می‌گیرند، مدل‌های متنی UTF-8 را و مدل‌هایی که PDF می‌خوانند PDF واقعی را. از گوشی می‌شود HEIC بارگذاری کرد و بی‌دردسر کار می‌کند — رمزگشای تصویر افزونهٔ HEIF کتابخانهٔ Pillow را بارگذاری می‌کند و بررسی بایت‌های شناسایی، گوشی‌هایی را که فایل را به اشتباه application/octet-stream برچسب می‌زنند، تشخیص می‌دهد.

فایل‌هایتان را کجا مدیریت کنید

پنل وب عامل در تنظیمات → مدیریت فایل‌ها یک مدیر فایل دارد. با آن می‌توانید کل VPS عامل را مرور کنید؛ بایگانی بارگذاری‌ها در /var/lib/mintbot-agent/uploads/ بخشی است که گفتگوهای شما پرش می‌کنند. از آنجا می‌توانید:

  • پوشه‌ها را مرور کنید و فایل‌ها را دانلود، تغییر نام، جابه‌جا یا حذف کنید
  • پوشه بسازید
  • فایل‌های تازه را بکشید و رها کنید — به‌صورت تکه‌تکه بارگذاری می‌شوند، تا 4 GB برای هر فایل
  • فایل‌های متنی کوچک (تا 1 MB) را مستقیم در مرورگر ویرایش کنید

محدودیت‌های اندازه: فایلی که در چت پیوست می‌کنید می‌تواند تا 500 MB باشد؛ Telegram به ربات‌ها فقط اجازهٔ دریافت فایل‌های تا 20 MB را می‌دهد؛ مدیریت فایل‌ها برای هر فایل تا 4 GB می‌پذیرد. فراتر از این، تنها سقف دیسک شماست — mintbot همیشه کمی فضای خالی نگه می‌دارد تا سرور به کارش ادامه دهد. اگر دیسک پر شود، عامل به شما خبر می‌دهد و پیوند مستقیم مدیریت فایل‌ها را می‌دهد تا فضا آزاد کنید — یا کافی است از عامل بخواهید فایل‌های قدیمی را حذف کند.

حذف یک فایل در مدیریت فایل‌ها آن را از دیسک پاک می‌کند و عامل دیگر نمی‌تواند آن را به LLM نشان دهد. همین است که نسخهٔ اصلی را «مال شما» می‌کند: فقط شما اختیار حذفش را دارید.

جمع‌بندی

بیشتر محصولات چت هوش مصنوعی فایل‌های بارگذاری‌شدهٔ شما را زمینهٔ یک‌بارمصرف گفتگو می‌دانند. mintbot با آن‌ها مثل داده‌های شما رفتار می‌کند — روی VPS شما ذخیره می‌شوند، مال خودتان هستند و هر وقت لازم باشد دقیقاً به شکلی درمی‌آیند که مدل در آن لحظه نیاز دارد. بسیاری از قابلیت‌های جالب‌تر mintbot روی همین پایه بنا شده‌اند.