ساخت یک عامل کدنویسی هوش مصنوعی محلی و ایمن با Node.js

عامل‌های هوش مصنوعی (AI agents) پیچیده به نظر می‌رسند، اما این‌طور نیستند.

یک عامل (agent) صرفاً یک LLM است که به یک حلقه (loop)، ابزارها و قوانین ایمنی متصل شده است.

من یک عامل کدنویسی محلی با استفاده از Node.js و Mistral از طریق Ollama ساخته‌ام. نیازی به کلیدهای API پولی ندارید. همه چیز روی سیستم خودتان اجرا می‌شود.

این عامل به شما کمک می‌کند پروژه‌های JavaScript خود را درک کنید. این عامل می‌تواند: • لیست کردن فایل‌های پروژه • خواندن فایل‌های پروژه • جستجوی متن • توضیح کد • یافتن باگ‌ها • پیشنهاد تغییرات در کد

اصل اساسی، ایمنی است. عامل می‌تواند فایل‌ها را بررسی کند، اما نمی‌تواند آن‌ها را ویرایش کند. این عامل فقط یک پیشنهاد اصلاحیه (patch proposal) برای بررسی شما بازمی‌گرداند. این کار باعث می‌شود انسان همچنان در چرخه تصمیم‌گیری (human in the loop) باقی بماند.

نحوه عملکرد عامل: یک چت‌بات معمولی یک مسیر ساده را دنبال می‌کند: کاربر سوال می‌پرسد -> مدل پاسخ می‌دهد

یک عامل یک حلقه را دنبال می‌کند: کاربر سوال می‌پرسد -> مدل در مورد یک ابزار تصمیم می‌گیرد -> JavaScript ابزار را اجرا می‌کند -> مدل نتیجه را می‌بیند -> مدل پاسخ می‌دهد

الگوهای کلیدی استفاده شده در این پروژه: • حلقه عامل (Agent loop): فرآیند تا زمانی که مدل پاسخ نهایی را ارائه دهد، تکرار می‌شود. • فراخوانی ابزار (Tool calling): مدل توابع خاصی از JavaScript را درخواست می‌کند. • لیست سفید ابزارها (Tool allowlist): فقط ابزارهای تایید شده اجرا می‌شوند. • پرامپت سیستم (System prompt): قوانین به مدل می‌گویند چگونه رفتار کند. • پروتکل اقدام JSON (JSON action protocol): مدل با داده‌های ساختاریافته پاسخ می‌دهد. • مرز ایمنی (Safety boundary): دسترسی به فایل‌ها در محدوده ریشه (root) پروژه شما باقی می‌ماند.

ایمنی اولویت اصلی است. من از تابعی به نام safeResolve برای جلوگیری از حملات پیمایش مسیر (path traversal) استفاده کردم. این کار تضمین می‌کند که عامل نمی‌تواند به فایل‌های خارج از پوشه پروژه شما دسترسی داشته باشد. همچنین محدودیت‌هایی برای اندازه فایل‌ها تعیین کردم تا از بافت (context) مدل محافظت شود.

ساختار پروژه: • src/cli.js: نقطه ورود ترمینال. • src/agent.js: حلقه اصلی و مدیریت ابزارها. • src/ollama.js: کلاینت API محلی. • src/tools.js: ابزارهای ایمن سیستم فایل. • test/tools.test.js: تست‌های ایمنی و رفتار.

شما می‌توانید این پروژه را با Node.js و Ollama اجرا کنید. برای نتایج بهتر، از Mistral استفاده کنید یا مدل‌های مخصوص کدنویسی مانند Qwen2.5-Coder یا DeepSeek-Coder را امتحان کنید.

ابزارهای مفید بسازید. آن‌ها را محدود (narrow) نگه دارید. اجازه دهید کد شما مرزهای ایمنی را اعمال کند.

منبع: https://dev.to/gaurav101/building-a-safe-local-ai-coding-agent-with-nodejs-46ol