اجرای امن دستورات محلی
در برنامه دسکتاپ، دستیار میتواند در پوشهٔ کاریِ چت شما دستورها و تستها را اجرا کند. اینکه این در چت چگونه کار میکند را در دسترسی محلی به فایلها میخوانید. در این صفحه تعیین میکنید چه زمانی این کار بدون پرسیدن اجازه انجام شود و دستورها با چه میزان ایزولهسازی اجرا شوند.
باز کردن تنظیمات دستورها
در یک چت، پنل دستورها را باز کنید و تنظیمات دستور برای این پوشه را انتخاب کنید. این تنظیمات برای هر پوشه جداگانه اعمال میشوند.
چه زمانی دستیار میتواند یک دستور را اجرا کند؟
یکی از این سه حالت را انتخاب کنید:
- همیشه بپرس: برای هر دستور باید آن را تأیید کنید.
- دستورهای مورداعتماد بهصورت خودکار: دستورهایی که ذخیره کردهاید بدون پرسیدن اجرا میشوند. سایر دستورها همچنان نیاز به اجازه دارند.
- اجرا بهصورت خودکار در sandbox: همهچیز بدون پرسیدن شروع میشود، اما در یک محیط ایزوله.
در هر حالت، این قوانین هم اعمال میشوند:
- دستورهای بیخطر بدون کارت اجرا میشوند:
mkdir،ls،cat،head،tail،wc،grep،find(بدون-execیا-delete)،touch،pwd،treeو بررسی نسخه (--version،-vیا-Vبرایnode،npm،npx،python،pipوaischool-python). اینها کاری بیش از ابزارهای داخلی فایل که بدون پرسیدن انجام میدهند، انجام نمیدهند. آنها در sandbox، بدون شبکه و فقط با مسیرهای داخل پوشهٔ کاری اجرا میشوند، حتی پس از دنبال کردن لینکها (بدون مسیرهای مطلق،~یا..). اگر یک لینک به بیرون از پوشه اشاره کند، کارت نمایش داده میشود. برای این کار sandbox (در macOS و Linux) و دستورهای محلی لازم است، اما اجازه دادن به اجرای خودکار از سوی مدیر لازم نیست. در پنل دستورها در این حالت خودکار (دستور بیخطر) نمایش داده میشود. یک فهرست داخل آکولادها، مثلmkdir -p src/{components,utils}، هم بدون کارت اجرا میشود: برنامه آن را به مسیرهای جداگانه تبدیل میکند و همه را بررسی میکند. - هر کارت، دستور دقیق و در صورت اقدام آنلاین، آدرس دقیق را نشان میدهد. زیر آن، توضیح دستیار با فونت کوچکتر نمایش داده میشود.
- اگر sandbox در دسترس باشد و مدیر شما اجازهٔ اجرای خودکار داده باشد، کارتِ یک دستوری که در sandbox اجرا میشود دکمهٔ از این پس بهصورت خودکار در sandbox در این پوشه را هم دارد. این گزینه پوشه را روی اجرا بهصورت خودکار در sandbox میگذارد تا دستورهای بعدی بدون کارت شروع شوند. دستورهایی که به شبکه نیاز دارند، یکبار دیگر درخواست میکنند، مگر اینکه نصب بستهها مجاز باشد.
- اولین کارتی که در یک پوشه برای دستورِ در حال اجرا در sandbox و بدون درخواست شبکه نمایش داده میشود، یکبار به این پروژه اعتماد کن را نشان میدهد. با این کار، دستور اجرا میشود، پوشه روی اجرا بهصورت خودکار در sandbox تنظیم میشود و اجازهٔ نصب بستهها بدون پرسیدن فعال میشود. بعد از آن، تستها و buildهایی مانند
npm test،npm run buildوnode --testبدون کارت، در sandbox و بدون شبکه اجرا میشوند. دستورهایی که همچنان به شبکه نیاز دارند یا خارج از sandbox اجرا میشوند، همچنان درخواست میکنند. پس از اجرا یا رد کردن، این پرسش در این پوشه دوباره نمایش داده نمیشود؛ حالت را از تنظیمات دستورها تغییر میدهید. اگر اجرای خودکار خاموش باشد، هر کارت مشخص میکند که این کار توسط مدیر شما یا سیاست مدیریتی این رایانه انجام میشود.
ذخیره کردن دستورهای مورداعتماد
برای یک دستور، همیشه در این پوشه اجازه بده و سپس دقیقاً همین دستور یا هر چیزی که با این شروع میشود را انتخاب کنید. دستورهای ذخیرهشده از این پس بدون پرسش اجرا میشوند. دستورهایی با نویسههای ویژه (مثل ; | > $) همیشه نیاز به اجازه دارند.
قوانین ذخیرهشده در تنظیمات دستورها زیر همیشه مجاز در این پوشه قرار دارند. آنجا میتوانید آنها را دوباره حذف کنید.
Sandbox و شبکه
- استفاده از sandbox: دستورها فقط میتوانند در این پوشه بنویسند. این گزینه بهصورت پیشفرض در macOS و Linux روشن است.
- اجازهٔ شبکه: تعیین میکند دستورها اینترنت داشته باشند یا نه. این گزینه بهصورت پیشفرض خاموش است. بدون sandbox، دستورها همیشه به شبکه دسترسی دارند.
هر کارت دستور نشان میدهد که sandbox و شبکه روشن هستند یا نه.
اگر اجازهٔ شبکه خاموش باشد و دستیار بخواهد چیزی دانلود کند، مثلاً با npm install، کارت دستور میپرسد که آیا میخواهید دقیقاً همان دستور با شبکه اجرا شود. بنابراین لازم نیست شبکه را برای کل پوشه روشن کنید.
در Windows هنوز sandbox در دسترس نیست.
نصب بستهها
برنامه یک Node.js داخلی با npm دارد. بنابراین دستورهایی مثل node، npm و npx حتی اگر Node.js روی رایانهٔ شما نصب نباشد هم کار میکنند. اگر خودتان Node.js را نصب کرده باشید، برنامه همان نسخه را استفاده میکند. استثنا: پروژهای که خودِ Electron را اجرا میکند (electron .)، به یک Node.js نیاز دارد که خودتان نصب کرده باشید.
اجازه دادن به نصب بستهها بدون پرسیدن
در تنظیمات دستور برای این پوشه، کلید اجازهٔ نصب بستهها بدون پرسیدن را روشن کنید. در این صورت نصب بستهها با نام، بدون کارت شروع میشود: npm install <نام> و npm install از package.json، و pnpm، yarn یا bun با install یا add، و pip install <نام> (همچنین از طریق uv). اینها همیشه در sandbox و با شبکه اجرا میشوند. سایر دستورها از حالتی پیروی میکنند که برای پوشه انتخاب کردهاید.
این نصبها هنوز هم در این موارد کارت نشان میدهند:
- آغازگرهای پروژه مثل
npm create vite@latestوnpx create-…، چون کد خودشان را اجرا میکنند؛ pip install .،pip install -r requirements.txt، نصب از یک رجیستری دیگر (--registry،-i،--index-url) و بستهها از آدرس git، URL یا مسیر.
این کلید فقط با sandbox (macOS و Linux) و وقتی مدیر شما اجرای خودکار را مجاز کرده باشد کار میکند. در غیر این صورت نمیتوانید آن را روشن کنید.
بستههایی که به این روش نصب میشوند، هرگز اسکریپتهای نصب خودشان را اجرا نمیکنند (npm با --ignore-scripts اجرا میشود). بستههای Python فقط بهصورت wheelهای آماده نصب میشوند.
سرورهای محلی و مرورگر داخلی
دستیار همچنین میتواند یک سرور توسعه را که در حال اجرا میماند، مثل npm run dev برای یک پروژهٔ کوچک React با Vite، راهاندازی کند. برای این کار همان قوانین سایر دستورها اعمال میشود: یا خودِ دستور دقیق را تأیید میکنید، یا از طریق یک قانون ذخیرهشده یا بهصورت خودکار در sandbox اجرا میشود. بهجای مدتزمان حداکثر اجرا، روی کارت نوشته میشود: «تا وقتی آن را متوقف نکنید بهعنوان سرور محلی در حال اجرا میماند.»
سرور پس از پاسخ دستیار همچنان اجرا میماند. در پنل دستورها، کارت وضعیت سرور در حال اجراست را نشان میدهد، همراه با دکمههای باز کردن در مرورگر و توقف. حداکثر ۴ سرور میتوانند همزمان اجرا شوند. سرورها وقتی آنها را متوقف کنید یا برنامه را ببندید، متوقف میشوند.
در sandbox بدون شبکه، یک سرور فقط میتواند روی همین رایانه (localhost) گوش بدهد. دربارهٔ اینکه دستیار بستهها را چگونه نصب میکند، در نصب بستهها بخوانید.
نمایش یک صفحهٔ وب ساده
برای یک صفحهٔ وب معمولی (یک index.html با CSS و JavaScript، بدون مرحلهٔ build) هیچ دستوری لازم نیست. در این صورت، دستیار از وبسرور داخلی برنامه استفاده میکند:
- پوشه فقط روی همین رایانه دیده میشود، در
http://127.0.0.1با یک پورت تصادفی. - فایلهای مخفی، مثل
.gitو.env، هرگز نمایش داده نمیشوند. - اگر فایلی تغییر کند، صفحه بهطور خودکار دوباره بارگذاری میشود.
برای این مورد هیچ کارت تأییدی نمایش داده نمیشود. سرور در پنل دستورها نمایش داده میشود، همراه با باز کردن در مرورگر و توقف، و در سقف ۴ سرور هم حساب میشود.
نتیجه را در مرورگر داخلی میبینید: دکمهٔ مرورگر (نماد کرهٔ زمین) در سمت راست نوار بالایی. پنل کنار چت باز میشود، با دکمههای بازگشت، جلو، بارگذاری مجدد (توقف هنگام بارگذاری)، نوار آدرس و باز کردن در مرورگر پیشفرض شما.
- دستیار خودش مرورگر را باز میکند تا نتیجهٔ یک سرور محلی را نشان دهد. این فقط برای آدرسهای محلی مانند
http://localhost:5173ممکن است. - اگر در یک پاسخ روی لینکی به localhost کلیک کنید، آن در مرورگر داخلی باز میشود. سایر لینکها در مرورگر پیشفرض شما باز میشوند.
- خودتان هم میتوانید هر آدرس وبی را تایپ کنید.
- مرورگر یک نشست جداگانه و مستقل دارد: در آن به AI-Public وارد نشدهاید، وبسایتها مجوزهایی مثل دوربین یا میکروفون ندارند و دانلود ممکن نیست.
- تا زمانی که یک منو یا پنجرهٔ محاورهای از برنامه باز باشد، صفحه موقتاً پنهان میشود.
مثال:
در این پوشه یک برنامهٔ کوچک React با Vite و یک شمارنده بساز. وابستگیها را نصب کن، سرور dev را راهاندازی کن و نتیجه را در مرورگر نشان بده.
واداشتن دستیار به مشاهده
اگر از دستیار بخواهید به صفحه در مرورگر داخلی نگاه کند، آدرس، عنوان، متن قابلمشاهده، یک تصویر صفحه و آخرین خطاهای صفحه را میخواند. اینها به مدل AI ارسال میشوند.
- یک صفحه روی همین رایانه (
localhostیا127.0.0.1) را دستیار بدون پرسش مشاهده میکند. - برای هر وبسایت دیگر، مثلاً صفحهای که در آن وارد شدهاید، ابتدا دستیار یک کارت نشان میدهد: «دستیار میخواهد در onedrive.live.com نگاه کند.» روی اجازهٔ مشاهده یا رد کردن کلیک کنید. این درخواست هر بار دوباره تکرار میشود.
- اگر صفحه پس از اجازهٔ شما به وبسایت دیگری برود، دستیار چیزی نمیخواند.
- فقط روی صفحهای در همین رایانه، دستیار خودش کلیک و تایپ میکند تا چیزی را که ساخته آزمایش کند. در وبسایتهای دیگر، او کلیک، تایپ و ناوبری انجام نمیدهد. به cookies یا گذرواژهها دسترسی ندارد.
- در حالت آفلاین، دستیار فقط صفحات روی همین رایانه را مشاهده میکند.
نسخهها و GitHub
دستیار یک git داخلی دارد. بنابراین لازم نیست git را نصب کنید، حتی روی Windows. دستیار میتواند نسخهها را ذخیره کند، تغییرات را نشان دهد، branch بسازد و یک پروژه را آنلاین کند.
- عملیات در این پوشه، مثل ذخیره کردن یک نسخه، بدون پرسش شروع میشوند. فایلهایی که شبیه راز هستند (مثل فایلهای
.env، کلیدها یا tokenها در کد، از جمله کلیدهای Google API که باAIzaشروع میشوند) هرگز در یک نسخه قرار نمیگیرند. دستیار اگر چیزی را رد کند، به شما اطلاع میدهد. - عملیات آنلاین (دانلود یک پروژه، گرفتن آخرین نسخه، آنلاین کردن و ساخت یک GitHub repository) ابتدا یک کارت با آدرس دقیق و برچسبهای ساختهشده در برنامه و شبکه روشن نشان میدهند. اگر آدرس github.com نباشد یا یک repository جدید عمومی شود، کارت هشدار میدهد. هنگام آنلاین کردن، کارت نشان میدهد کدام فایلها ارسال میشوند. اجرا یا رد کردن را انتخاب کنید.
- اتصال یک repository خارج از github.com هم ابتدا اجازه میخواهد.
دربارهٔ اینکه GitHub را چگونه متصل کنید و یک پروژه را آنلاین کنید، در Vibe code کردن میخوانید.
در حالت آفلاین، دستورها همیشه در sandbox و بدون شبکه اجرا میشوند. نصب بستهها با شبکه و عملیات آنلاین git داخلی (دانلود، گرفتن، آنلاین کردن و GitHub) در آن حالت کار نمیکنند. ذخیرهٔ نسخهها و نمایش یک صفحهٔ وب ساده همچنان کار میکنند.
تنظیمات برای مدیران
مدیران میتوانند دستورهای محلی یا اجرای خودکار را برای همه در محیط غیرفعال کنند. این کار را در محیط مدیریتی زیر ویژگیها (در سطح محیط)، در کارت برنامهٔ دسکتاپ انجام میدهند:
- اجازه دادن به دستورهای محلی: اگر این گزینه خاموش باشد، دستیار نمیتواند هیچ دستوری اجرا کند. عملیات آنلاین git داخلی هم در این حالت کار نمیکنند. ذخیرهٔ نسخهها و branchها همچنان کار میکنند: آنها فقط فایلهای داخل پوشه را تغییر میدهند، درست مثل ابزارهای فایل.
- اجازه دادن به اجرای خودکار: اگر این گزینه خاموش باشد، هر دستور برای اجرا اجازه میخواهد و نمیتوانید اجازهٔ نصب بستهها بدون پرسیدن را روشن کنید.
- اجازه دادن به Python برنامه برای فایلهای Office: برای قالبها، نمودارها و تحلیلها. این Python بدون اینترنت کار میکند، فقط در پوشهٔ کاری مینویسد و نمیتواند برنامههای دیگر را اجرا کند. اگر چیزی تنظیم نشده باشد، از اجازه دادن به دستورهای محلی پیروی میکند. بدون sandbox (Windows) فقط وقتی در دسترس است که دستورهای محلی روشن باشند، و هر بار اجازه میخواهد.