ساخت پروتکل فانتوم: آنچه یاد گرفتم حمل و نقل اولین سیستم عامل مستقل من در Qwen Cloud

{“error”:”Error: Upstream error from Nvidia: ResourceExhausted: Worker local total request limit reached (33\/32) Code: 502″}
من میخواهم با مشکل اصلی شروع کنم، زیرا واقعاً کل این موضوع از آنجا شروع شد.
من برای جذب مشتری کار می کردم و نمی توانستم به طور مداوم این کار را انجام دهم. بعضی روزها هیچ سرنخ پیدا نمی کردم. بعضی روزها سرنخ پیدا میکردم، اما نمیتوانستم چیزی بفرستم. بعضی روزها همه چیز را آماده میکردم و فقط پنجره ارسال را از دست میدادم زیرا چیز دیگری پیش آمد. مشکل انگیزه نبود، مشکل ثبات بود. Outreach فقط در صورتی کار می کند که شما آن را هر روز انجام دهید، و من هر هفته به خودم ثابت می کردم که نمی توان به صورت دستی این کار را به من اعتماد کرد.
بنابراین فکر کردم، چرا چیزی نسازم که این کار را فقط برای من انجام دهد. به طور مداوم. به موقع هر روز این کل داستان منشا است. در ابتدا چشم انداز بزرگ تری وجود نداشت، فقط من می خواستم دلیلی برای عدم موفقیت خودم نباشم.
این ایده تبدیل به پروتکل فانتوم شد.
چیزی که من در واقع ساختم
فانتوم پروتکل یک سیستم چند عامله است که در آن هر عامل یک کار واضح دارد و نه بیشتر. یک استراتژیست رویکرد کمپین را مشخص می کند. یک شکارچی می رود و شرکت هایی را پیدا می کند که مطابقت دارند. یک محقق هر یک را بررسی می کند و مخاطب مناسب را پیدا می کند. یک Outreacher یک ایمیل شخصی می نویسد و آن را ارسال می کند. یک Reply Handler صندوق ورودی را تماشا می کند و معنی پاسخ را می فهمد. و یک نماینده یادگیری هر چند وقت یکبار به گذشته نگاه می کند و استراتژی را بر اساس آنچه واقعاً کار می کند تنظیم می کند.
هیچ یک از این عوامل مستقیماً با یکدیگر صحبت نمی کنند. همه آنها در MongoDB می خوانند و می نویسند و BullMQ صف کار بین آنها را مدیریت می کند. من این تصمیم را زود گرفتم و هنوز هم فکر می کنم درست بود. این بدان معناست که هر عاملی متمرکز میماند، سیستم میتواند از راهاندازی مجدد بدون از دست دادن جایگاه خود جان سالم به در ببرد، و من میتوانم در هر نقطه به پایگاه داده نگاه کنم و دقیقاً بدانم که هر لید در چه مرحلهای است.
همه چیز بر روی Qwen3.7 از طریق DashScope API Alibaba Cloud اجرا می شود، با سطوح مدل های مختلف بسته به اینکه یک کار واقعاً به چه مقدار استدلال نیاز دارد.
قسمت هایی که بدون مشکل پیش نمی رفت
من می خواهم در مورد این قسمت صادق باشم زیرا فکر می کنم مفیدتر از وانمود کردن همه چیز در جای خود است.
اولین غریزه من برای کشف سرب این بود که به طور مستقیم دایرکتوری ها را خراش دهم، از نوع سایت های فهرست بندی کسب و کار که شما انتظار دارید دقیقاً اطلاعات مورد نیاز من را داشته باشند. خوب کار نکرد داده ها متناقض بود، و من به جای سرنخ های واجد شرایط واقعی، مدام نویز دریافت می کردم. من به جای تلاش برای ساختن آن قسمت از ابتدا به یک ارائه دهنده داده مناسب، Hunter.io، برای یافتن تماس رفتم. آن لحظه ای بود که مجبور شدم اعتراف کنم چیزی که در ابتدا برنامه ریزی کرده بودم رویکرد درستی نبود و فقط به جای اجبار، مسیر را تغییر دادم.
چالش بزرگتر استقرار بود، صادقانه. این اولین بار بود که چیزی را روی یک VPS واقعی مستقر می کردم. بدون Vercel، بدون Render، بدون راه آهن، هیچ یک از سکوهایی که قطعات مزاحم را برای شما مدیریت می کنند. من مجبور شدم در واقع SSH را در یک سرور قرار دهم، Nginx را خودم راه اندازی کنم، همه چیز را با دست پیکربندی کنم.
در ابتدا به آرامی پیش نمی رفت. من کلاینت و سرور را هر دو در حال اجرا کردم، اما اصلاً نتوانستم وارد سیستم شوم. حل شد، و سپس میتوانم وارد سیستم شوم، اما هر بار که سعی میکردم به داشبورد برسم، مستقیماً به صفحه ورود هدایت میشدم. مشخص شد که یک مشکل دامنه کوکی همراه با یک مشکل CORS است، زیرا مشتری و سرور من در زیر دامنههای مختلف بودند و کوکی برای کار در هر دوی آنها تنظیم نشده بود. وقتی فیلد دامنه را به پیکربندی کوکی اضافه کردم و تنظیمات CORS را اصلاح کردم، کار کرد.
این اولین باری بود که از Redis و BullMQ در یک پروژه واقعی استفاده کردم. آموختن این موضوع در کنار اشکال زدایی یک استقرار VPS جدید برای چند روز بسیار شدید انجام شد، اما من متوجه شدم که در واقع زیرساخت هایی را که قبلاً در مورد آن خوانده بودم، درک کردم.
لحظه ای که واقعا کار کرد
افتخارآمیزترین لحظه برای من اتمام یک ویژگی یا رسیدن به نقطه عطفی که برنامه ریزی کرده بودم نبود. تماشای خط لوله بهطور واقعی و دیدن هانتر بود که سرنخهای واقعی را پیدا میکرد، آنها را تحویل میداد و مشاهده میکرد که محقق در زمینه کامل هر کدام را به درستی و با دادههای واقعی میکشد. دیدن این اتفاق از انتها به پایان، بدون اینکه من به صورت دستی هیچ کدام از آن ها را انجام دهم، لحظه ای بود که کل ایده دیگر تئوری نبود و تبدیل به چیزی شد که عملاً کار می کرد.
چیزی که من بعد از ساختن این باور دارم
هر ابزاری که در حین ساختن آن به آنها نگاه کردم، یک قسمت از پازل را به خوبی انجام می دهد و بقیه را به شما واگذار می کند تا با دست انجام دهید. یک ابزار سرنخ ها را پیدا می کند. یکی دیگر آنها را غنی می کند. یکی دیگر ایمیل می فرستد. هنوز هم شما هستید که همه چیز را به هم می چسبانید، هنوز کسی هستید که باید به یاد داشته باشید که در واقع هر روز این فرآیند را اجرا کنید.
این دقیقا همان مشکلی است که من از اول داشتم. ابزار وجود داشت. من فقط آنقدر سازگار نبودم که بتوانم همه آنها را خودم، هر روز، بدون شکست کار کنم. بنابراین ساختن چیزی که کل این حلقه را ببندد، کشف از طریق مدیریت پاسخ از طریق یادگیری، تنها راه حل واقعی به نظر می رسد. ابزار بهتری برای کار کردن نیست، اما چیزی است که اصلاً نیازی به کار کردن با آن را برطرف می کند.
بعدش چی
Phantom Protocol تحت AGPL v3 منبع باز است و در حال حاضر کاملاً خود میزبان است. از اینجا من در حال کار بر روی دسترسی چند کاناله فراتر از ایمیل، یک لایه یادگیری مناسب که کمپین ها را به طور خودکار در طول زمان بهبود می بخشد، و یک نسخه ابری مدیریت شده برای افرادی که می خواهند این کار را بدون راه اندازی زیرساخت خود اجرا کنند، کار می کنم.
اگر میخواهید کد را ببینید یا خودتان آن را اجرا کنید، همه چیز اینجاست:
Github Repo را ببینید



