کدنویسی با ایجنتها، روی یک VPS
خلاصهٔ کاملتر
ماتیاس گنیار مینویسه چند ماهی بود که گلوگاه کارش نه CPU بود نه RAM، بلکه همین که ماشین کارکن یه لپتاپ بود. سشنهای طولانی Claude Code بیست دقیقه میچرخیدن و بستن در لپتاپ یعنی مرگشون؛ راهحل موقتش هم نگهداشتن مک بهصورت بیدار بود، که خودش میخکوبش میکرد پشت میز. حالا همهچی رفته روی یه VPS کوچیک: ایجنتها، کد، دیتابیسها و رابط ادیتور. لپتاپ فقط یه پنجرهست، نه موتور.
لایهٔ اول شبکهست. به گفتهٔ نویسنده اولین مشکلِ «سروری که از همهجا بهش وصل میشی» همون «از همهجا»ست: یه ادیتور با شل روی اینترنت باز، راه مستقیم به باتنت شدنه. Tailscale — یه VPN مِش روی WireGuard — همهٔ دستگاهها رو توی یک شبکهٔ خصوصی میذاره. سرور فقط یک پورت عمومی داره (SSH، اون هم فقط برای مواقع اضطراری) و بقیهٔ سرویسها به localhost بایند و صرفاً روی تِیلنت منتشر میشن. توصیهٔ خودش: اگه فقط یک چیز از این پست برداری، همینه.
خود سرور عمداً معمولیه: یه دراپلت اوبونتو ۲۶.۰۴ با ۲ vCPU و حدود ۸ گیگ رم. کارهای طولانی توی tmux میرن، هر پروژه یک سشن، که همیشه بهعنوان لایهٔ پشتیبان جواب میده حتی اگه رابط گرافیکی بمیره. جالبترین تصمیمش خاموشکردن آپدیت خودکار سیستمعامله: unattended-upgrades میتونه ساعت ۳ بامداد ریبوت کنه و هر سشن زنده رو با خودش ببره — دقیقاً همون چیزی که کل این ستآپ برای جلوگیری ازش ساخته شده.
بخش دیسک درسآموزترین قسمت پسته. ایمیجهای ابری پیشفرض ext4 میدن که نمیتونه بلاکها رو بین فایلها شریک کنه، پس هر ورکتری هزینهٔ کامل node_modules خودش رو داره؛ ده تا ورکتری در یک روز دیسک ۲۸ گیگی رو به ۶۸۷ مگابایت آزاد رسوند. حالا /home/dev روی یه ولوم ۱۰۰ گیگی btrfs نشسته: کپیآنرایت کلونکردن یک گیگ رو عملاً رایگان میکنه و فشردهسازی zstd، ۱۴ گیگ خانه رو تو ۸.۹ گیگ جا میده. /tmp هم از رم به همون ولوم منتقل شده، چون پر شدنش حافظه رو تا مرز خطای ENOMEM برده بود.
لایهٔ سوم یه ادیتور تحت وبه که روی سرور اجرا میشه — فعلاً T3 Code — و نویسنده تأکید میکنه این تیکه کاملاً قابلتعویضه و شکلِ ماجرا مهمه نه ابزارش. اعتراف جالبش اینه که ماههاست هیچ ادیتور واقعیای باز نکرده: حلقهٔ کارش شده توصیف خواسته، خوندن دیف، اجرای تست، گفتن اشکال و تکرار. برای پیشنمایش هم خبری از دامنه و DNS نیست؛ هر ورکتری یک پورت ثابت روی همون یک هاستنیم تِیلنت میگیره و با یک خط منتشر میشه:
tailscale serve --bg --https="$PORT" "127.0.0.1:$PORT"سرتیفیکیت Let's Encrypt رو خود Tailscale میگیره و تمدید میکنه، پس روی موبایل هم HTTPS معتبر و بدون هشداره. بقیهٔ چاشنیها هم همین شکلن: یه تایمر systemd هر روز ساعت ۵ صبح ایجنتها و T3 رو آپدیت میکنه و اگه نسخهٔ جدید بالا نیاد خودکار به قبلی برمیگرده، و یه اسکریپت newproject ریپو رو کلون، دیتابیسها رو بالا و پروژه رو ثبت میکنه.
نکات کلیدی:
- سرور رو روی تِیلنت بذار و از اینترنت عمومی دور نگه دار؛ فقط SSH بهعنوان در اضطراری
- کارهای طولانی توی tmux میمونن و قطعی اتصال یا سوییچ دستگاه بهشون آسیب نمیزنه
- آپدیت خودکار سیستمعامل روی چنین سروری خطرناکه، چون ریبوت سشنها رو میکشه
- btrfs با کپیآنرایت و فشردهسازی zstd مشکل مصرف دیسک ورکتریها رو حل میکنه
- /tmp روی tmpfs یعنی مصرف رم؛ منتقلکردنش به دیسک سقف رو از ۳.۹ گیگ به ۸۵ گیگ برد
- رابط گرافیکی قابلتعویضه؛ پایهها یعنی شبکه، سرور و گیت ثابت میمونن




