CUGA؛ هارنس متنباز IBM که یه اپ ایجنتی رو تو یک فایل جا میده
خلاصهٔ کاملتر
به گفتهٔ نویسندههای IBM Research، ساخت یه اپ ایجنتی معمولاً با یه هفته لولهکشی شروع میشه: انتخاب فریمورک، وصلکردن کلاینت مدل، نوشتن آداپتور ابزارها و ساختن راهی برای استریمکردن state به UI — و کار جالب آخر از همه میرسه. CUGA (مخفف Configurable Generalist Agent) این ترتیب رو برعکس میکنه: پلانینگ، حلقهٔ اجرا، فراخوانی ابزار و مدیریت state با هارنسه و چیزی که تو مینویسی فقط دو تاست — ایجنت به چه ابزارهایی دسترسی داره، و بهش چی میگی.
کل تعریف یه ایجنت به همین چند خط خلاصه میشه؛ چهار آرگومان که دوتاشون بار اصلی رو میبرن: tools و special_instructions.
return CugaAgent(
model=create_llm(provider=os.getenv("LLM_PROVIDER"), model=os.getenv("LLM_MODEL")),
tools=_make_tools(),
special_instructions=_SYSTEM,
cuga_folder=str(_DIR / ".cuga"),
)مدل از یه فکتوری کوچیک میاد که با یه متغیر محیطی بین OpenAI، Anthropic، watsonx، LiteLLM یا Ollama سوییچ میکنه و هیچجای کد اپ نمیدونه پشتش چه مدلیه. ابزارها هم یه الگوی ثابت دارن: قابلیتهای عمومی و بدون state (وبسرچ، ویکیپدیا، arXiv، آبوهوا، دادههای مالی) از سرورهای مشترک MCP میان — ۷ سرور عمومی با ۳۶ ابزار روی IBM Code Engine و بدون نیاز به احراز هویت — و هر چیزی که مخصوص خود اپه بهشکل یه تابع پایتون معمولی inline تعریف میشه که داکاسترینگش همون توضیحیه که ایجنت میخونه.
نویسندهها میگن ارزش اصلی هارنس تو کارهای طولانیه: چیزی که بیشتر ایجنتها رو تو یه تسک بیستمرحلهای زمین میزنه، گمکردن نتایج میانی و بازتولید غلطشونه. CUGA این state رو نگه میداره و یه مرحلهٔ reflection داره که میتونه فراخوانی اشتباه رو بگیره و دوباره برنامهریزی کنه. همین باربرداری از دوش مدله که اجازه میده یه مدل باز کوچیکتر مثل gpt-oss-120b جواب بده، جایی که معمولاً یه مدل فرانتیر لازمه. سه حالت Fast، Balanced و Accurate هم توازن هزینه/تأخیر رو از کانفیگ تنظیم میکنه، نه از کد.
یه قرارداد بهظاهر پیشپاافتاده هم هست که به گفتهٔ نویسندهها بار اصلی رو میکشه: هر ابزار inline باید یه پاکت یکسان برگردونه — موفقیت {"ok": true, "data": {...}} و شکست {"ok": false, "code": "...", "error": "..."}. پلنر با خطای اعلامشده کنار میاد («ژئوکدینگ چیزی برنگردوند، اون بخش رو رد کن و ادامه بده») ولی با استکتریس خام وسط پلن به هم میریزه. اپهایی که پایدار بودن، دقیقاً همونهایی بودن که ابزارشون هیچوقت اکسپشن لخت به ایجنت پرت نمیکرد.
برای مهار ایجنت، سیستم policy مستقیم توی رانتایمه نه یه لایهٔ بعدی: شش نوع سیاست شامل Intent Guard (رد کردن درخواست)، Tool Approval (توقف برای تأیید انسان قبل از ابزار پرخطر)، Tool Guide، Playbook و Output Formatter، بهعلاوهٔ CustomPolicy بهعنوان راه فرار. تریگرها فقط کلیدواژهای نیستن؛ تو یه استور sqlite-vec نگهداری و بهشکل معنایی مچ میشن، پس سیاست بر اساس منظور کاربر فعال میشه. سیاستها هم کنار کد و توی همون پوشهٔ .cuga ورژن میخورن.
وقتی یه ایجنت از پس کارش برنمیاد، CugaSupervisor کار رو بین ایجنتهای متخصص (هرکدوم با ابزار، پرامپت و کانتکست جدا) پخش میکنه و سطح پلانینگ سوپروایزر کوچیک میمونه. Agent Skills هم دانش رو بستهبندی میکنه: یه پوشه با فایل SKILL.md که فقط وقتی تسک لازمش داشته باشه وارد کانتکست میشه. مجموعه اپها (cuga-apps) از پیشنهاددهندهٔ فیلم تا مشاور معماری IBM Cloud و یه سیستم هفتایجنتی لیدجن به اسم Ouroboros رو شامل میشه و برای همینه که بهجای یه دموی مهرومومشده، یه کتابخونهٔ نقطهشروعه.
نکات کلیدی:
- CUGA پلانینگ، اجرا، فراخوانی ابزار و state رو میگیره؛ تو فقط ابزار و پرامپت مینویسی
- ترکیب ابزارهای MCP مشترک با توابع inline مخصوص اپ؛ نصب با pip install cuga
- پاکت یکسان ok/data/error برای ابزارها، شرط اصلی پایداری اجراهای طولانی
- شش نوع policy با تطبیق معنایی، داخل خود رانتایم و ورژنشده کنار کد
- سوپروایزر چندایجنتی، پروتکل A2A و Agent Skills برای بزرگشدن اپ
- اپهای نمونه روی مدل باز gpt-oss-120b اجرا میشن؛ تعویض مدل فقط یه متغیر محیطیه




