پرش به محتوای اصلی
پرش به محتوای مقاله

Juggler؛ میزکاری بصری برای کنترل دقیق عامل‌های کدنویس هوش مصنوعی

·۲۳ تیر ۱۴۰۵۶ دقیقه مطالعه
عامل کد Juggler: ابزار هوشمند خودکارسازی برنامه‌نویسی در گیت‌هاب
عامل کد Juggler: ابزار هوشمند خودکارسازی برنامه‌نویسی در گیت‌هاب
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

جایگزینی کامل رابط چت با یک میزکاری بصری درختی (Tree-based Workbench) برای مدیریت عامل‌های کدنویس؛ به جای اصلاح خطا با پیام جدید، کاربر می‌تواند شاخه‌های شکست‌خورده را هرس کرده و مسیر تفکر مدل را بازسازی کند.

تصور کنید محیط کدنویسی شما به‌جای یک تاریخچهٔ طولانی و خسته‌کننده از پیام‌ها (که به آن doom-scroll یا پیمایش بی‌پایان می‌گویند)، به یک درخت ساختاریافته از اجراها تبدیل شود که هر شاخه آن قابل ویرایش است. این تجربه، هستهٔ اصلی Juggler است؛ یک میزکاری بصری برای عامل‌های کدنویس که در ۱۲ ژوئیه ۲۰۲۶ عرضه شد. این ابزار به توسعه‌دهندگان اجازه می‌دهد تا در لحظه، مسیر تفکر هوش مصنوعی را تغییر دهند، به عقب برگردند (backtrack)، یا شاخه‌های جدیدی از ایده‌ها را در جریان اجرای زنده امتحان کنند.

بیشتر عامل‌های فعلی مانند جعبه‌های سیاهی عمل می‌کنند که تنها یک تاریخچهٔ خطی از تغییرات را ارائه می‌دهند. طبق گزارش‌های فنی، اگر مدل در یک نقطه مسیر اشتباهی را انتخاب کند، برنامه‌نویس مجبور است یا با پرامپت‌های جدید آن را اصلاح کند یا به‌صورت دستی فایل‌ها را به حالت قبل برگرداند. Juggler در بازاری که اشباع از ابزارهای خط فرمان (CLI) است، یک لایه گرافیکی ارائه می‌دهد که منطق داخلی عامل را قابل مشاهده و تغییر می‌کند. این ابزار یک رابط گرافیکی (GUI) واقعی است و نه یک اپلیکیشن کنسول ساده؛ تمرکز اصلی آن بر ناوبری بصری، بازرسی (inspection) و کنترل کامل بر روند اجرای مدل است.

ناوبری بصری و کنترل جلسه

به نقل از مستندات juggler.studio، این سیستم پنجرهٔ چت سنتی را با یک سند مبتنی بر Yjs جایگزین کرده است. این رویکرد در واقع تکامل یافته‌ی مفاهیمی است که در معماری پروژه y برای ایجاد پیوند میان عامل‌های هوشمند و رابط‌های کاربری پویا بررسی شده بود. کاربران در یک ساختار درختی حرکت می‌کنند که در آن هر نقطه از گفتگو می‌تواند به زیر-رشته‌های (sub-threads) متعددی تقسیم شود و این زیر-رشته‌ها خود می‌توانند دوباره شاخه بزنند. این قابلیت به توسعه‌دهندگان اجازه می‌دهد تا چندین مسیر پیاده‌سازی مختلف را به‌طور هم‌زمان بررسی کنند، در جزئیات عمیق شوند و بدون از دست دادن وضعیت (state) جلسهٔ اصلی، به مراحل قبلی بازگردند.

رابط کاربری این ابزار از «ستون‌های میلر» (Miller columns) استفاده می‌کند؛ سبکی از ناوبری که شبیه به Finder در سیستم‌عامل macOS است. در این ساختار، ریشهٔ جلسه در سمت چپ قرار دارد و با انتخاب هر آیتم، ویژگی‌های آن، فراخوانی ابزارها و فرزندان آن در سمت راست گسترش می‌یابند. این طراحی تضمین می‌کند که متون خام، ویژگی‌های آیتم و درخواست‌های تأیید هرگز در منوهای تاشو یا لایه‌های پنهان گم نشوند. همه چیزهای مهم، از فراخوانی ابزارها گرفته تا ساختار کلی رشته‌های گفتگو، همواره در معرض دید قرار دارند.

سازوکارهای دقیق پلتفرم

عملکرد Juggler بر پایه فلسفهٔ «افزونه در تمام لایه‌ها» (extensions all the way down) بنا شده است. اپلیکیشن اصلی مدیریت سند و هماهنگی (orchestration) را بر عهده دارد، اما رفتار واقعی توسط افزونه‌های جاوااسکریپت هدایت می‌شود که می‌توان آن‌ها را بازرسی، فورک (fork) یا به‌طور کامل جایگزین کرد. این اجزا شامل موارد زیر هستند:

  • آیتم‌های زمینه (Context Items): هر نوع آیتم در گفتگو — مانند read-file برای خواندن فایل، replace-text برای جایگزینی متن یا bash برای اجرای دستورات ترمینال — تعیین می‌کند که ابزار چگونه با مدل زبانی بزرگ (LLM) صحبت کند و چگونه در رابط کاربری نمایش یابد. برای جلوگیری از خطاهای بحرانی در این فرایند، می‌توان از مکانیزم‌های سخت‌گیرانه‌تری استفاده کرد؛ مشابه آنچه در پروژه MakerChecker برای جلوگیری از تایید خودکار اقدامات خطرناک عامل‌ها پیاده شد.
  • استراتژی‌ها (Strategies): حلقه‌های هماهنگی سطح بالای مدل، از جمله استراتژی‌های برنامه‌ریزی یا پژوهش، به‌صورت پلاگین هستند. کاربران حتی می‌توانند ایده‌های جسورانه و «اختراعات رویایی» خود را به‌عنوان پلاگین‌های استراتژی پیاده‌سازی کنند.
  • دستورات (Commands): دستورات کاربردی که با علامت اسلش شروع می‌شوند، مانند /clear برای پاک‌سازی و /compact برای فشرده‌سازی، افزونه‌هایی هستند که برای دستکاری سند جلسه طراحی شده‌اند.

این طراحی تضمین می‌کند که اگر یک ایدهٔ هماهنگی به رابط کاربری خاص، کنترل‌های ویژه یا بصری‌سازی‌های متفاوتی نیاز داشته باشد، Juggler بستری برای ساخت آن فراهم می‌کند و کاربر را مجبور نمی‌کند ایده خود را در قالب یک اسکریپت پایتونی بدون رابط کاربری (headless) محدود کند.

استقرار محلی و دوردست

این سیستم از معماری چند-کلاینتی (multi-client) بهره می‌برد. یک سرور بدون رابط کاربری (Headless) مبتنی بر Go، جلسه را مدیریت کرده و رابط کاربری وب را از طریق Wails ارائه می‌دهد. این معماری به توسعه‌دهنده اجازه می‌دهد سرور را دقیقاً در جایی که کد قرار دارد — چه در ایستگاه کاری محلی، چه در یک باکس توسعه (dev box) یا یک مزرعه سرور (server farm) — اجرا کند و چندین کلاینت، از جمله اپلیکیشن دسکتاپ بومی و تب‌های مرورگر را به یک جلسه زنده متصل نماید.

برای نصب محلی، مسیرهای مشخصی تعریف شده است:

  • macOS: کاربران فایل .dmg را دانلود کرده، Juggler را به پوشه Applications منتقل می‌کنند و آن را اجرا می‌کنند. اگر سیستم Gatekeeper در macOS مانع از دانلود یا اجرا شود، کاربر باید روی اپلیکیشن راست‌کلیک (یا Control-click) کرده و گزینه Open را انتخاب نماید یا از مسیر Settings $\rightarrow$ Privacy & Security $\rightarrow$ "Open Anyway" اقدام کند.
  • Windows: توزیع از طریق فایل Juggler-<version>-setup.exe انجام می‌شود. این فایل هم اپلیکیشن دسکتاپ و هم سرور خط فرمان متناظر یعنی juggler.exe را در یک دایرکتوری نصب می‌کند تا از هرگونه تداخل نسخه‌ها (version drift) جلوگیری شود. همچنین این نصب‌کننده می‌تواند juggler را به PATH سیستم اضافه کند.
  • Linux: کاربران باینری سرور را دانلود کرده و آن را از ترمینال اجرا می‌کنند و سپس از طریق مرورگر یا اپلیکیشن دسکتاپ متصل می‌شوند. در این سیستم، اپلیکیشن و سرور به‌عنوان یک واحد عرضه می‌شوند.

دسترسی محلی به‌طور پیش‌فرض محدود به localhost است، اما کاربران می‌توانند با فشردن کلید 'p' در ترمینال یا استفاده از پرچم --public دسترسی LAN را فعال کنند. باید توجه داشت که دسترسی LAN رمز عبور ندارد و هر کسی در شبکه می‌تواند عامل را هدایت کند. برای دسترسی WAN (شبکه گسترده) از طریق اینترنت، کاربران باید حتماً از باینری‌های رسمی juggler.studio استفاده کنند، زیرا این قابلیت در مخزن متن‌باز (open-source) موجود نیست.

پشتیبانی از مدل‌ها و یکپارچگی

Juggler به «باغ مدل» (model zoo) گسترده‌ای از ارائه‌دهندگان متصل می‌شود. این ابزار از Claude Code (از طریق CLI یا API)، OpenAI (طرح codex یا API)، Gemini، Ollama، OpenRouter، Z.AI و Deepseek پشتیبانی می‌کند. به دلیل اینکه لایه ارائه‌دهنده (provider layer) ماژولار است و به‌راحتی گسترش می‌یابد، کاربران تشویق شده‌اند تا ارائه‌دهندگان غایب را از طریق ارسال Pull Request اضافه کنند.

پشته فنی و ساخت از منبع

Juggler یک اپلیکیشن بومی سبک است که برای حفظ سرعت و کارایی از Electron اجتناب کرده است. بک‌اند با زبان Go نوشته شده و از Wails برای مدیریت پنجره‌ها استفاده می‌کند. رابط کاربری شامل HTML/JS است که توسط بک‌اند Go سرو می‌شود و اسناد جلسه از طریق Yjs همگام‌سازی می‌شوند. فرانت‌اند از جاوااسکریپت با تایپ‌های JSDoc استفاده می‌کند که توسط لینترینگ استاتیک سخت‌گیرانه در CI کنترل می‌شود. این رویکرد نیاز به مرحله Build (کامپایل) بین کد منبع و عرضه نهایی را حذف می‌کند.

توسعه‌دهندگانی که می‌خواهند نرم‌افزار را از کد منبع (source) بسازند، باید مراحل زیر را طی کنند:
۱. اجرای دستور: git clone --recurse-submodules https://github.com/juggler-ai/juggler.git
۲. اجرای دستور: cd juggler && make build

اگر در هنگام کلون کردن، زیر-ماژول‌ها (submodules) دریافت نشده باشند، می‌توان آن‌ها را با دستور git submodule update --init --recursive فراخوانی کرد. در حالی که باینری‌های ویندوز را می‌توان از هر سیستمی با استفاده از دستور make build-windows کامپایل متقاطع (cross-compile) کرد، اما اپلیکیشن دسکتاپ لینوکس حتماً باید به‌صورت بومی (native) ساخته شود.

مجوزهای متن‌باز

کد اصلی اپلیکیشن تحت مجوز GNU Affero General Public License v3.0 (AGPLv3) منتشر شده است. طبق این مجوز، هر نسخه تغییریافته‌ای که توزیع شود یا به‌صورت یک سرویس (SaaS) میزبانی گردد، باید تحت همین مجوز AGPLv3 منتشر شود. برای کسانی که به دنبال نسخه با کد بسته (closed-source) برای هسته اپلیکیشن هستند، مجوزهای تجاری در دسترس است.

با این حال، SDK افزونه‌ها (web/sdk/) و افزونه‌های bundled (web/extensions/) از مجوز Apache-2.0 استفاده می‌کنند. این تصمیم استراتژیک تضمین می‌کند که توسعه‌دهندگان بتوانند افزونه‌های خود را — حتی اگر بسته-منبع باشند — بدون تعهدات copyleft بسازند و منتشر کنند.

این چرخش ساختاری از «چت با یک ربات» به «مدیریت درختی از وضعیت‌ها»، شیوه بنیادی کدنویسی با کمک هوش مصنوعی را تغییر می‌دهد. با تبدیل خط لوله «پرامپت به اقدام» به یک شیء بصری، Juggler توسعه‌دهنده را از نقش یک بازبین (reviewer) به یک ویراستار (editor) تبدیل می‌کند. اثر ثانویه این تغییر، کاهش شدید «جنگ با پرامپت» (prompt fighting) است، زیرا کاربر می‌تواند به‌سادگی یک شاخه شکست‌خورده یا ناکارآمد را هرس کند و از یک وضعیت سالم و شناخته‌شده دوباره شروع کند.

گام بعدی شما

  • اگر از عامل‌های کدنویسی استفاده می‌کنید، Juggler را برای جایگزینی چت‌های خطی با ساختار درختی امتحان کنید.
  • برای شخصی‌سازی رفتار عامل، مستندات SDK افزونه‌ها را بررسی کرده و استراتژی‌های خاص خود را بنویسید.
  • در صورت نیاز به همکاری تیمی، سرور را در یک محیط مشترک مستقر کرده و از طریق دسترسی LAN متصل شوید.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

این ابزار با حذف وابستگی به تاریخچهٔ خطی، نرخ خطای پذیرفته‌شده در توسعهٔ نرم‌افزار با AI را کاهش می‌دهد. اعتبار این رویکرد در استفاده از ساختارهای داده‌ای همگام‌ساز (Yjs) است که کنترل دقیق روی هر توکنِ اقدام را ممکن می‌سازد.

تأثیر برای ایران

به‌دلیل متن‌باز بودن هسته و پشتیبانی از Ollama، توسعه‌دهندگان ایرانی می‌توانند این ابزار را به‌صورت محلی و بدون نیاز به APIهای تحریمی روی سرورهای خود مستقر کنند.

·نگاه ما
تحریریه دات‌هوش

Juggler با تبدیل تاریخچهٔ خطی به یک گراف درختی، در واقع مفهوم «Undo» را به سطح تفکر مدل می‌برد. این رویکرد نشان می‌دهد که آیندهٔ تعامل با هوش مصنوعی نه در بهبود پرامپت‌ها، بلکه در ابزارهای مدیریت وضعیت (State Management) است که کاربر را از یک اپراتور به یک کارگردان تبدیل می‌کند.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.