𝗜 𝗕𝘂𝗶𝗹𝘁 𝗔 𝗟𝗼𝗰𝗮𝗹 𝗖𝗼𝗻𝘁𝗿𝗼𝗹 𝗣𝗹𝗮𝗻𝗲 𝗙𝗼𝗿 𝗠𝘆 𝗖𝗼𝗱𝗶𝗻𝗴 𝗔𝗴𝗲𝗻𝘁𝘀

استفاده از ایجنت‌های مختلف هوش مصنوعی قبلاً یک آشفتگی تمام‌عیار بود.

من از Copilot، Claude Code و OpenCode استفاده می‌کردم. هر ابزار دایرکتوری اصلی (home directory)، تنظیمات و حافظه مخصوص به خود را داشت. هر بار که مهارت یا قانون جدیدی اضافه می‌کردم، باید می‌پرسیدم: این ابزار انتظار کجای سیستم را دارد؟

دایرکتوری اصلی من به یک کشوی پر از زباله از پوشه‌های هوش مصنوعی تبدیل شده بود.

سعی کردم از فایل‌های Markdown برای انتقال برنامه‌ها بین ایجنت‌ها استفاده کنم. کمک می‌کرد، اما شکست خورد. یک ایجنت ممکن بود یک فرض را نادیده بگیرد و ایجنت بعدی نتیجه اشتباهی تولید کند. فایل‌ها داده‌ها را فراهم می‌کردند، اما بافت (context) مشترک را ارائه نمی‌دادند.

من به راهی نیاز داشتم تا:

  • قوانین سطح بالا را تنها برای یک بار بنویسم.
  • قوانین دسترسی را در یک مکان واحد نگه دارم.
  • کپی کردن دستی مهارت‌ها را متوقف کنم.
  • حافظه را در پروژه‌ها و نشست‌های (sessions) مختلف به اشتراک بگذارم.

من برای حل این مشکل، یک کنترل‌پلن (control plane) محلی ساختم.

هسته اصلی تنظیمات من یک دایرکتوری واحد است: ~/.ai.

به جای پوشه‌های پراکنده، از symlinkها استفاده می‌کنم. ابزارها تصور می‌کنند در فضای خودشان هستند، اما ساختار واقعی در یک مکان قرار دارد. من تمام ترافیک مدل را از طریق یک پروکسی محلی هدایت می‌کنم و از یک پایگاه داده SQLite مشترک برای حافظه از طریق MCP استفاده می‌کنم.

این کار دو وظیفه متفاوت را از هم جدا می‌کند:

  1. مسیریابی (Routing): درخواست‌های مدل قبل از رسیدن به ارائه‌دهنده (provider)، از یک پروکسی محلی عبور می‌کنند.
  2. حافظه (Memory): حقایق ماندگار در یک ذخیره‌ساز محلی قرار دارند.

اگر مدلی رفتار عجیبی داشت، پروکسی را بررسی می‌کنم. اگر ایجنتی جزئیاتی را فراموش کرد، حافظه را چک می‌کنم. این کار عیب‌یابی (debugging) را آسان می‌کند.

حافظه مشترک من چیزهایی را ذخیره می‌کند که بازکشف آن‌ها هزینه‌بر است:

  • تصمیمات پروژه.
  • یادداشت‌های معماری.
  • ترجیحات گردش کار (workflow).
  • باگ‌های تکراری.

من همچنین امنیت خود را متمرکز کردم. از فایل‌های مشترک برای استانداردهای کدنویسی و دستورات ممنوعه استفاده می‌کنم. این کار تضمین می‌کند که سوئیچ کردن از یک ایجنت به ایجنت دیگر، سطح امنیت محیط را تغییر نمی‌دهد.

هدف پیدا کردن یک ایجنت بی‌نقص نیست؛ بلکه هدف این است که مطمئن شوم ایجنت‌های من بافت (context) کافی را با هم به اشتراک می‌گذارند تا سوئیچ کردن بین آن‌ها مانند شروع دوباره از صفر نباشد.

Source: https://dev.to/sperekrestova/i-built-a-local-control-plane-for-my-coding-agents-1bf7

Optional learning community: https://t.me/GyaanSetuAi