# تطبيق Mac

> شغّل Skynet على جهاز Mac باستخدام وكيل البرمجة الخاص بك وDocker.

يشغّل تطبيق Skynet لنظام Mac منصة Skynet على حاسوبك. يرسل استدعاءات النماذج عبر أداة CLI للبرمجة مسجّلة الدخول على جهاز Mac الخاص بك، لذا تدفع خطة CLI الخاصة بك ثمن تلك الاستدعاءات. يمكنك أيضًا ربط التطبيق بحساب Skynet المستضاف الخاص بك.

## المتطلبات

- جهاز Mac بمعالج Apple silicon. توجد إصدارات Intel، لكن لم يختبرها أحد على أجهزة Intel.
- Docker Desktop قيد التشغيل، مع تفعيل **Use Rosetta for x86_64/amd64 emulation**.
- أداة CLI واحدة للبرمجة، مسجّلة الدخول:
  - Claude Code (`claude`) الإصدار 2.1.226 أو أحدث، أو
  - Codex (`codex`) الإصدار 0.160.0 أو أحدث.

> [!WARNING]
> يجب أن يستخدم Codex تسجيل الدخول عبر ChatGPT. تسجيل الدخول بمفتاح API لا يُحتسب. ولا يُحتسب أيضًا تسجيل الدخول المحفوظ في Keychain في macOS.

### إعداد Codex

يجب أن يحفظ Codex بيانات اعتماده في ملف. نفّذ هذه الخطوات قبل التشغيل الأول:

1. افتح `~/.codex/config.toml` وأضف هذا السطر:

```toml
cli_auth_credentials_store = "file"
```

2. سجّل الدخول بحساب ChatGPT الخاص بك:

```bash
codex login
```

## تثبيت التطبيق

الإصدارات موقّعة توقيعًا مخصصًا (ad hoc) وغير موثّقة من Apple. يحظرها macOS حتى تزيل علامة الحجر.

1. افتح ملف `.dmg`.
2. اسحب **Skynet** إلى **Applications**.
3. شغّل هذا الأمر في Terminal:

```bash
xattr -dr com.apple.quarantine /Applications/Skynet.app
```

4. افتح Skynet من **Applications**.

> [!NOTE]
> يستغرق التشغيل الأول عدة دقائق. يبني التطبيق صورة محلية لبيئة التشغيل المعزولة ويجهّز قاعدة بياناته.

## ما يحدث عند التشغيل

ينفّذ التطبيق هذه الخطوات بالترتيب:

1. يقرأ `PATH` من صدفة تسجيل الدخول، ليجد Docker وأداة CLI الخاصة بك.
2. يفحص Docker وأداة CLI للبرمجة.
3. يبدأ قاعدة بيانات Postgres محلية في Docker.
4. يبني صورة بيئة التشغيل `skynet-local-sandbox` لمعمارية `linux/amd64`. يشغّلها Docker تحت Rosetta.
5. يحدّث مخطط قاعدة البيانات.
6. يبدأ واجهة API المحلية وتطبيق الويب، ويعرض تطبيق الويب في النافذة.

### فحوص الإعداد الأولي

يعرض التطبيق قائمة بالفحوص: **Docker** و**Coding CLI** و**Signed in** و**Usage limit** و**Local services** و**Account**. إذا فشل فحص، يعرض التطبيق شاشة تخبرك بما يجب فعله:

| الشاشة                              | ما يجب فعله                                                            |
| ----------------------------------- | ---------------------------------------------------------------------- |
| **Install Docker Desktop**             | ثبّت Docker Desktop.                                                   |
| **Start Docker**                     | شغّل Docker Desktop.                                                   |
| **Install a coding CLI**           | ثبّت Claude Code أو Codex.                                             |
| **Update your coding CLI**           | حدّث أداة CLI إلى الإصدار الأدنى المذكور أعلاه.                        |
| **Sign in to your CLI**        | سجّل الدخول إلى أداة CLI في Terminal.                                  |
| **Usage limit reached**            | انتظر وقت إعادة الضبط. يمكن للمهام الجديدة أن تبدأ مجددًا بعد إعادة الضبط. |

انقر **Check again** بعد أن تصلح المشكلة. انقر **Open logs** لرؤية ملفات السجل. في شاشة **Usage limit reached**، يمكنك النقر على **Open Skynet anyway**.

## التشغيلات المحلية

في التطبيق، تمر استدعاءات النماذج عبر أداة CLI على جهاز Mac الخاص بك. تعرض قائمة النماذج هذا الوضع باسم **محلي**. يقول التلميح: "خطتك تدفع ثمن الاستدعاءات، لذا لا يضيف هذا النموذج شيئًا ($0) إلى التشغيل."

أسماء أدوات CLI في التطبيق هي **Claude Code** و**Codex**.

> [!NOTE]
> يزيل التطبيق مفاتيح API من بيئة العمليات التي يبدؤها. لذلك تستخدم أداة CLI اشتراكك، وليس مفتاح API.

### تشغيل المقترِح على أداة CLI الخاصة بك

يتحكم الإعداد **تشغيل المقترِح على أداة CLI الخاصة بي** في مكان تشغيل وكيل المقترِح. الخياران هما **محرك الوكيل (افتراضي)** و**متوقف (مقترِح معزول)**.

يحدّد **صلاحيات المقترِح** ما يمكن لأداة CLI الوصول إليه:

- **مساحة العمل فقط** هو الافتراضي. يعتمد على بيئة العزل الخاصة بكل أداة CLI.
- **وصول كامل** يشغّل أداة CLI بصلاحيات المستخدم الخاصة بك.

> [!WARNING]
> مع **وصول كامل**، يمكن لأداة CLI قراءة أي ملف يمكنك الوصول إليه وتغييره وحذفه، والوصول إلى الشبكة. لا يعزل وضع acceptEdits في Claude الشبكة، حتى مع **مساحة العمل فقط**.

### الوسم في التطبيق

يحتاج الوسم بالذكاء الاصطناعي في تطبيق Mac إلى مفتاح المزوّد الخاص بك. اختر نموذجًا تحت **مفتاحك الخاص**. راجع [تصنيف البيانات بأداة الوسم](/docs/ar/guides/tagger).

## الربط بحساب Skynet الخاص بك

يمكنك استخدام التطبيق بدون حساب. انقر **Use without signing in** لذلك. للمزامنة مع حسابك المستضاف، اربط التطبيق.

### ربط جهاز Mac هذا

1. في خطوة **Sign in to Skynet**، يفتح التطبيق صفحة **Link a Mac** في متصفحك الافتراضي.
2. سجّل الدخول إلى Skynet في المتصفح إذا طلب ذلك.
3. تحقّق من القائمة تحت **بعد الربط، يمكن لجهاز Mac هذا:**.
4. انقر **اربط جهاز Mac هذا**. تعرض الصفحة "جارٍ العودة إلى تطبيق Mac…".

إذا فشل تسجيل الدخول أو ألغيته، يعرض التطبيق **Try again** و**Use without signing in**.

بعد الربط، يمكن لجهاز Mac:

- رؤية اسمك وبريدك الإلكتروني.
- رؤية رصيدك.
- مزامنة تشغيلاتك مع حسابك.
- استخدام النماذج المستضافة، مدفوعة من رصيدك.
- استخدام مصادر البيانات المتصلة الخاصة بك.
- البحث في الويب وتصفّحه عبر Skynet.

يستخدم الربط مسار تسجيل دخول آمنًا (OAuth مع PKCE). يحفظ التطبيق رموزه مشفّرة على جهاز Mac الخاص بك. عندما تلغي الربط، يُبطل Skynet الرموز.

### حدود الربط

| الحد                                | القيمة                                    |
| ----------------------------------- | ----------------------------------------- |
| أجهزة Mac المرتبطة لكل حساب         | 10                                        |
| عمر رمز الوصول                      | ساعة واحدة، ثم يجدّده التطبيق             |
| مهلة خمول الربط                     | 30 يومًا بدون استخدام                     |
| أقصى عمر للربط                      | 365 يومًا                                 |

بعد مهلة الخمول أو أقصى عمر، اربط جهاز Mac مرة أخرى.

### حالة الربط

يعرض التطبيق إحدى هذه الحالات: **الوضع المحلي** أو **مرتبط بجهاز Mac هذا** أو **سجّل الدخول للمزامنة** أو **مرتبط (غير متصل)**.

## الخدمات والبيانات المحلية

تستمع جميع الخدمات المحلية على `127.0.0.1` فقط:

| الخدمة         | نطاق المنافذ    |
| -------------- | --------------- |
| API            | 48100 to 48119  |
| تطبيق الويب    | 48120 to 48139  |
| Postgres       | 48140 to 48159  |

يحفظ التطبيق بياناته في `~/Library/Application Support/Skynet`. يحتوي المجلد `logs/` على `desktop.log` و`api.log` و`frontend.log` و`migrate.log` و`sandbox-build.log`.

عندما تغلق التطبيق، يوقف تطبيق الويب وواجهة API وPostgres وكل حاويات المهام.

### إعادة ضبط التطبيق

> [!WARNING]
> تحذف هذه الأوامر كل البيانات المحلية، بما في ذلك تشغيلاتك ومجموعات بياناتك المحلية.

أغلق التطبيق أولًا. ثم شغّل:

```bash
docker volume rm skynet-local-pgdata
rm -rf ~/Library/Application\ Support/Skynet
```

## الخطوات التالية

- [أرسِل تشغيلًا](/docs/ar/guides/submit).
- اقرأ عن [الفوترة](/docs/ar/concepts/billing) للنماذج المستضافة.
- اقرأ [الأمان](/docs/ar/security).

---

Source: https://staging.skynetml.com/docs/ar/guides/mac-app
