تصور کنید محیط کدنویسی شما بهجای یک تاریخچهٔ طولانی و خستهکننده از پیامها (که به آن 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 مراجعه کنید.




گفتگو