اجرای Coding Agent روی VPS با Aider و Goose
راهنمای کامل اجرای Aider یا Goose روی VPS برای کدنویسی در ترمینال. نحوه اتصال به مدلهای Ollama، تنظیمات tmux برای پایداری جلسات و نکات امنیتی برای مدیریت مدلهای محلی.
چرا باید یک coding agent را روی VPS اجرا کرد
یک coding agent ابزاری است که کد منبع شما را میخواند، تغییرات را اعمال میکند و دستورات لازم برای تست آنها را اجرا میکند؛ همه این کارها از طریق ترمینال انجام میشود. اجرای این ابزار روی یک VPS نسبت به لپتاپ شما سه مزیت دارد: پس از قطع اتصال شما به کار خود ادامه میدهد، در کنار کد و ابزارهای build شما قرار دارد و میتواند با مدلی که خودتان میزبانی میکنید ارتباط برقرار کند. اگر آن را درون یک session از tmux اجرا کنید، میتوانید لپتاپ خود را ببندید و بعداً کار را از همانجا ادامه دهید؛ این همان الگویی است که در اجرای Claude Code روی VPS با استفاده از tmux توضیح داده شده است.
دو agent مبتنی بر ترمینال ارزش شناختن دارند. Aider گزینهای است که با ترمینال سازگار است و اولویت را به git میدهد: این ابزار هر تغییر را بهطور خودکار با یک پیام مناسب commit میکند تا تاریخچه پروژه شما تمیز بماند و هر ویرایش قابل بازگشت باشد. این ابزار یکی از قدیمیترین coding agentهای ترمینالی است، هرچند سرعت انتشار نسخههای جدید آن کاهش یافته است. Goose، محصول شرکت Block، دامنه کاربرد وسیعتری دارد: یک agent با مجوز Apache-2.0 که دارای اکوسیستم گستردهای از افزونههاست و از ارائهدهندگان بسیاری از جمله مدلهای محلی Ollama پشتیبانی میکند؛ این پروژه اکنون تحت نظر بنیاد Agentic AI Foundation (AAIF) از Linux Foundation توسعه مییابد. Aider برای یک گردشکار منظم و متمرکز بر git مناسب است؛ در حالی که Goose برای یک دستیار عمومیتر با مجموعهای متنوع از افزونهها گزینه بهتری است.
پیشنیازها
شما به یک VPS مجهز به git، tmux و نسخه جدیدی از Python برای Aider، یا نصبکننده Goose برای Goose نیاز دارید. همچنین به یک مدل نیاز خواهید داشت: یا یک API key از ارائهدهندگانی مانند Anthropic یا OpenAI، یا یک مدل محلی که توسط Ollama روی همان VPS سرویسدهی میشود. روش self-hosted کد شما را روی سرور شخصیتان نگه میدارد و هزینهای به ازای هر توکن ندارد، اما در مقابل، نیازمند حافظه کافی برای اجرای یک مدل توانمند است.
نصب و اجرای Aider
Aider را در یک محیط ایزوله با استفاده از pipx نصب کنید. این ابزار از طریق apt نصب میشود، زیرا Ubuntu 24.04 اجرای مستقیم pip install را خارج از محیط مجازی (طبق PEP 668) مسدود میکند. سپس Aider را درون پروژهٔ خود و در یک نشست tmux اجرا کنید تا با قطع اتصال، نشست بسته نشود:
sudo apt install pipx
pipx ensurepath
pipx install aider-chat
tmux new -s aider
cd ~/my-project
aiderیک نکته در مورد نسخه: این روش نصب روی Ubuntu 24.04 به همین شکل کار میکند. در Ubuntu 26.04 این نصب در حال حاضر با خطا مواجه میشود، زیرا وابستگیهای تعیینشده (pinned) در Aider شامل نسخهٔ قدیمیتری از numpy است که با Python 3.14 در نسخه 26.04 بیلد نمیشود. راهحل این است که به Aider یک مفسر Python 3.12 اختصاصی بدهید:
pipx install --python 3.12 --fetch-missing-python aider-chatابزار pipx یک مفسر مستقل فقط برای Aider دانلود میکند و نصب به پایان میرسد. این موضوع نشاندهندهٔ کند شدن روند انتشار نسخههای Aider است؛ اگر این مسئله برای شما آزاردهنده است، Goose گزینهٔ فعالتری از نظر نگهداری محسوب میشود.
پس از اجرا، با فشردن Ctrl-b و سپس d از نشست جدا شوید تا عامل (agent) حتی با بستن لپتاپ به کار خود ادامه دهد؛ بعداً با استفاده از tmux attach -t aider دوباره به نشست متصل شوید تا تغییرات انجامشده را مشاهده کنید. هیچ محدودیتی برای باز نگه داشتن یک پنجرهٔ دوم tmux برای یک عامل دیگر وجود ندارد، و اگر هر دو از نوع Claude Code باشند، دو نشست میتوانند کارها را بین خود رد و بدل کنند و نیازی نیست شما بهصورت دستی این کار را انجام دهید. Aider مخزن شما را میخواند، ویرایشها را پیشنهاد میدهد، آنها را اعمال میکند و هر کدام را commit میکند؛ همچنین میتواند فایلهای اضافی را برای درک بهتر زمینه (context) در مواردی که تغییرات چندین فایل را در بر میگیرد، فراخوانی کند. از آنجا که هر تغییر یک commit است، بازگرداندن تغییرات عامل با یک دستور سادهٔ git revert انجام میشود که همان شبکهٔ امنی است که استفاده از آن را راحت میکند. Goose با اسکریپت تکخطی مستندشدهاش نصب میشود و مشابه آن از طریق ترمینال اجرا میگردد و وظایف را با استفاده از افزونههای خود پیش میبرد:
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bashمدل میزبانیشده یا مدل خودمیزبان (self-hosted)
مدل میزبانیشده بهترین کیفیت را ارائه میدهد و نیازی به سختافزار محلی ندارد، اما به ازای هر توکن هزینه دارد و کد شما برای ارائهدهنده ارسال میشود. هزینههای مبتنی بر توکن سریعتر از آنچه اکثر افراد انتظار دارند افزایش مییابد، زیرا عامل (agent) در هر نوبت کل مکالمه را دوباره ارسال میکند. تحلیل Claude Code در مورد آنچه یک نشست طولانی عامل واقعاً صرف توکن میکند در اینجا نیز صدق میکند، زیرا Aider و Goose به همان شیوه صورتحساب صادر میکنند. یک مدل خودمیزبان از طریق Ollama همه چیز را روی سرور شما نگه میدارد و پس از پرداخت هزینه سختافزار، اجرای آن رایگان است، اما یک مدل کدنویسی که به اندازه کافی برای مفید بودن کارآمد باشد، به حافظه واقعی نیاز دارد. این همان موازنهای است که باید بسنجید: کیفیت و راحتی در برابر حریم خصوصی و هزینه.
اگر مسیر خودمیزبان را انتخاب میکنید، پرسش عملی این است که کدام مدل با سرور شما سازگار است. در حین انجام این کار، مراقب پنجره کانتکست (context window) باشید، زیرا Ollama بهطور پیشفرض از یک پنجره کوچک استفاده میکند و هر چیزی طولانیتر از آن را بدون اطلاع کوتاه میکند؛ این برای یک عامل کدنویسی به این معنی است که فایلهایی که بهتازگی خوانده است از پرامپت حذف میشوند: افزایش num_ctx این مشکل را حل میکند و حافظه کش KV بزرگتری که نیاز دارد، بخشی از حافظهای است که باید برای آن بودجهبندی کنید. پیش از دانلود یک مدل هشت گیگابایتی روی سیستمی که توانایی نگهداری آن را ندارد، اندازه آن را بسنجید:
ایمنی: ویرایش فایلها و اجرای دستورات
یک عامل کدنویسی (coding agent) غیرفعال نیست. این ابزار فایلها را بازنویسی میکند و میتواند دستورات build و test را اجرا کند؛ بنابراین، همان دقتی را که برای هر فرآیندی که قابلیت تغییر سیستم شما را دارد به کار میبرید، برای این عامل نیز لحاظ کنید. سه عادت، اکثر ریسکها را پوشش میدهد. در یک مخزن git کار کنید تا تمام تغییرات ثبت و قابل بازگشت باشند؛ کاری که Aider بهطور خودکار برای شما انجام میدهد. عامل را با کاربر معمولی و بدون دسترسی ویژه (unprivileged) اجرا کنید و هرگز از root استفاده نکنید؛ با پیروی از کاربران با حداقل دسترسی، یک دستور مخرب نمیتواند کل سیستم را تحت تأثیر قرار دهد. همچنین خودِ سرور را ایمن نگه دارید، زیرا یک VPS کدنویسی همچنان یک سرور عمومی است: استفاده از SSH فقط با کلید، فایروال با سیاست پیشفرضِ مسدودسازی (default-deny) و سایر موارد امنیتی. راهنمای ایمنسازی OpenClaw همین رویکرد را برای یک عامل خودمختارتر پیشنهاد میدهد و اصول آن در اینجا نیز صدق میکند.
برای ادغام یک عامل کدنویسی در گردش کار خود، ساخت یک عامل هوش مصنوعی با Claude نشان میدهد که چگونه یک مدل میتواند ابزارهای شما را هدایت کند؛ اجرای Gemini CLI گوگل روی یک VPS یک گزینه ترمینالی دیگر است و میزبانی شخصی OpenHands مسیر سنگینتر و خودمختارتر است. محبوبترین پروژه متنباز در این حوزه، راهنمای اختصاصی خود را دارد: اجرای OpenCode روی یک VPS آن را با همان الگوی tmux و کاربر بدون دسترسی ویژه راهاندازی میکند.
FAQ
آیا میتوانم یک coding agent را با مدل محلی بهجای API پولی اجرا کنم؟
بله. هم Aider و هم Goose با مدلهای محلی که توسط Ollama ارائه میشوند کار میکنند، بنابراین میتوانید یک coding agent را بهطور کامل بهصورت self-hosted اجرا کنید، بدون اینکه هزینهای برای هر توکن بپردازید یا کدی از سرور شما خارج شود. نکته مهم، حافظه است: مدلی که توانایی نوشتن کدهای مفید را داشته باشد، به مقدار قابلتوجهی RAM یا VRAM نیاز دارد؛ بنابراین پیش از شروع، سختافزار خود را متناسب با مدل انتخاب کنید.
Aider یا Goose، کدام را باید استفاده کنم؟
اگر گردش کار شما حول ترمینال و git میچرخد و به دنبال بالغترین گزینه با کمترین سربار هستید، Aider را انتخاب کنید؛ این ابزار هر تغییر را بهطور خودکار commit میکند تا تاریخچه شما همیشه قابل بازگشت باشد. اگر دستیاری جامعتر با اکوسیستم افزونههای بزرگ و پشتیبانی از ارائهدهندگان متعدد میخواهید، Goose را انتخاب کنید. هر دو از طریق ترمینال اجرا میشوند و با Ollama سازگارند، بنابراین هر دو برای VPS مناسب هستند.
برای یک مدل کدنویسی self-hosted به چه مقدار حافظه نیاز دارم؟
این موضوع به اندازه مدل و میزان quantization آن بستگی دارد. یک مدل کوچک و quantized میتواند با چند گیگابایت حافظه اجرا شود، در حالی که مدلهای قویتر به حافظه بسیار بیشتری نیاز دارند و پنجرههای context طولانی نیز مصرف حافظه را افزایش میدهند. پیش از دانلود مدل، از ابزار تخمین اندازه در بالا استفاده کنید تا میزان حافظه مورد نیاز برای مدل و طول context مشخص شود.
آیا اجازه دادن به یک AI agent برای ویرایش کد و اجرای دستورات امن است؟
با رعایت عادتهای درست، این کار قابل مدیریت است. کارهای خود را در یک مخزن git نگه دارید تا هر ویرایش یک commit قابل بازگشت باشد، agent را با یک کاربر فاقد دسترسیهای ویژه (unprivileged) به جای root اجرا کنید و VPS خود را مانند هر سرور عمومی دیگری امنسازی (harden) کنید. تغییراتی که agent اعمال میکند را بهجای اعتماد کورکورانه، بازبینی کنید؛ بهویژه دستوراتی که قصد دارد روی سیستم شما اجرا کند.