
یک توسعهدهنده که بیشتر آزمایشهای خانگی خود را روی Proxmox اجرا میکند، تلاش کرده است یک محیط توسعه مرکزی برای عاملهای کدنویسی هوش مصنوعی بسازد؛ محیطی که از طریق مرورگر در دسترس باشد و بدون نیاز به راهاندازی مجدد روی هر دستگاه، وظایف کدنویسی را مدیریت کند. او برای این کار سراغ Jean رفته است؛ یک فضای کاری متنباز با مجوز Apache 2.0 از coolLabs، همان تیم پشت Coolify.
Jean چیست و چه مشکلی را حل میکند؟
Jean خودش مدل زبانی اجرا نمیکند، بلکه ابزارهای خط فرمان عاملمحور (Agent CLI) مانند Claude Code، Codex، OpenCode، Cursor، Pi، Grok، Kimi Code و Antigravity CLI را هدایت میکند. هر وظیفه درخت کاری (git worktree) و شاخه (branch) مستقل خود را دریافت میکند تا عاملها بهطور تصادفی روی شاخه اصلی (main branch) ننویسند.
یک سرویس پسزمینه بدون رابط گرافیکی (headless server daemon) نیز رابط کاربری کامل را در مرورگر ارائه میدهد و با توکن دسترسی (access token) امن میشود. بنابراین میتوان وظایف را از لپتاپ آغاز کرد، آن را بست و اجازه داد سرور بدون نیاز به حضور کاربر، اجرای طولانی عاملها را ادامه دهد. کاربر فقط هر چند وقت یکبار وارد رابط کاربری میشود تا پیشرفت کار را بررسی کند یا اجرای متوقفشده را تأیید کند.
- اجرای موازی وظایف کدنویسی عاملمحور
- اختصاص درخت کاری و شاخه جداگانه به هر وظیفه
- رابط وب امن با توکن دسترسی
- منوی Magic Menu با دستورهای آماده برای commit، review، PR و حل تعارض
- امکان ویرایش دستورهای آماده یا افزودن دستورهای سفارشی در تنظیمات
راهاندازی روی Proxmox و اتصال به مدلهای محلی
نویسنده برای حفظ حریم خصوصی و جلوگیری از خروج دادهها از شبکه خانگی، Jean را روی یک کانتینر لینوکسی (LXC) غیرروت (unprivileged) در Proxmox نصب کرده است. این کانتینر از Debian 13، چهار هسته پردازشی، ۸ گیگابایت رم و ۳۲ گیگابایت فضای ذخیرهسازی استفاده میکند. سپس Node LTS، کاربر غیرروت Jean، OpenCode و اتصال به GitHub با همان کاربر غیرروت راهاندازی شده و Lemonade بهعنوان ارائهدهنده (provider) مدل محلی به OpenCode متصل شده است.
نصب پیشفرض Jean به عاملها اجازه میداد با کاربر root اجرا شوند؛ اما با استفاده از گزینه --user jean یک کاربر غیرروت ایجاد شد تا امنیت نسبی برقرار شود. در ادامه با تنظیم Caddy، دامنه محلی و HTTPS برای کانتینر Jean فراهم شد. به گفته نویسنده، خود نصب Jean سادهترین بخش ماجرا بوده است.
چالشهای ابزارهای جانبی و مدلهای محلی
با این حال، مانند بسیاری از پروژههای عاملمحور، مشکلات اصلی در ابزارهای اطراف ظاهر شدهاند. در کانتینر Debian باید locale تنظیم میشد تا Perl خطا ندهد، ورود به GitHub باید با کاربر jean و نه root انجام میشد و محل ذخیره توکن API کلادفلر (Cloudflare API token) نیز باید اصلاح میشد تا Caddy با کانتینر جدید درست کار کند.
OpenCode و مشکل ورود پس از بهروزرسانی
در جریان آزمایش، Jean و OpenCode هر دو بهروزرسانی شدند. اما نسخه 2.0.32 از OpenCode باعث شد ورود بهدرستی انجام نشود و دسترسی به مدلهای محلی از دست برود. بازگشت به نسخه 1.19.3 مشکل را حل کرد و نسخه برنامه تثبیت (pin) شد تا بدون اطلاع کاربر ارتقا پیدا نکند.
Qwen3-Coder-Next و بازنویسی مسیر درخت کاری
مدل Qwen3-Coder-Next مسیر درخت کاری را بهصورت /home/jean/jean/jean-smoke/hello-script دید و آن را «اصلاح» کرد؛ یک بخش jean را از مسیر حذف کرد و کد را در مسیر اشتباه نوشت. این مدل همچنین دستور git init اجرا کرد، یک هویت جهانی جدید برای git ساخت و فایل را در مخزنی commit کرد که کاربر درخواست نکرده بود. با درج صریح ساختار دایرکتوری در دستور (prompt)، این مشکل در اجراهای بعدی برطرف شد.
gpt-oss-120b و ادعای انجام کار بدون اجرای آن
مدل gpt-oss-120b نیز در یک اجرا فقط برنامه نوشت و متوقف شد؛ بدون فراخوانی ابزار و بدون ساخت فایل. با این حال ادعا کرد فایل را ساخته، دسترسی chmod داده و hello.sh را commit کرده است، در حالی که هیچکدام انجام نشده بود. در اجرایی دیگر، این مدل از سرور MCP به نام agent-browser که Jean نصب کرده بود استفاده کرد و مسیر درخت کاری را بهعنوان دامنه مجاز افزود. خاموش کردن سرور MCP جلوی این مسیر را گرفت، اما مدل همچنان درخواست میکرد از درخت کاری خارج شود تا از پوشه موردنظرش استفاده کند.
نظارت انسانی و نتیجهگیری
نویسنده با فعال کردن حالت نظارتشده (Supervised) کاری کرد که عامل پیش از هر اقدام از کاربر اجازه بگیرد. او همچنین در دستور خود مسیر صریح درخت کاری را ذکر کرد و تأکید کرد فقط از همان پوشه استفاده شود. ترکیب این دو اقدام مؤثر بود و Qwen3-Coder-Next کد را در سه مرحله و مطابق درخواست نوشت و سپس آن را در git commit کرد.
Jean را میتوان روی یک دستگاه ویندوز نیز نصب کرد و نسخههای macOS و Linux هم وجود دارند، هرچند به گفته نویسنده این دو مورد کمتر آزمایش شدهاند. تجربه کلی نشان میدهد راهاندازی Jean ساده است و میتوان از هر صفحهای در خانه به آن دسترسی داشت؛ اما بهرهگیری مؤثر از مدلهای محلی نیازمند نظارت، تنظیم دقیق دستورها و برخورد محتاطانه با آنهاست. توصیه نویسنده این است که با مدلهای محلی مانند کارآموز (intern) رفتار شود، نه مانند یک توسعهدهنده کاملاً قابلاعتماد.