هذا الدليل لمالك Mac لديه إذن بتثبيت التطبيقات واستخدام ملف تجريبي يملكه ولا يتضمن معلومات حساسة. ستنزّل نموذجًا واحدًا في Ollama، وتربط دردشة Open WebUI الدائمة في المتصفح وإضافة Continue في VS Code بخدمة التشغيل نفسها، ثم تراجع اقتراح تعديل فعلي قبل تقرير الاحتفاظ به. تتبع الأوامر والفحوص أدناه وثائق المطورين الحالية؛ لم تشغّل BIG CHANGE هذه المنظومة أو تقس سرعتها أو تكلفتها أو حركة شبكتها.

التغيير الكبير

  • ما الذي يتغير: يمكن لنموذج Ollama منزّل أن يخدم دردشة المتصفح ومساعد التحرير في VS Code عبر API المحلي. يظل فحص اتصال كل عميل مطلوبًا على حدة.
  • لماذا يهم: يمكن لتثبيت نموذج واحد دعم محادثة وتغيير برمجي مُراجع على Mac نفسه، مع بقاء القرار النهائي بيد مالك الملف.
  • ما ينبغي مراقبته: اسم النموذج في قائمة لا يثبت أي خادم أجاب. افحص اتصال المزود والردود الفعلية، خصوصًا عند إعداد مزودين آخرين أو ميزات سحابية.

1. افحص Mac واختر نموذجًا

تحتاج إلى macOS 14 أو أحدث لتشغيل Ollama، Docker Desktop لأجهزة Mac، وVS Code مع إضافة Continue، وPython 3 لفحوص JSON والملفات الصغيرة أدناه. يدعم Ollama التنفيذ عبر CPU وGPU من سلسلة Apple M؛ وتسرد وثائقه CPU فقط لأجهزة Intel Mac. ثبّت Ollama من صفحة تنزيل Mac، وانقل التطبيق إلى Applications وافتحه واسمح بربط سطر الأوامر إذا طُلب ذلك. ثبّت Docker Desktop وشغّله، ثم Continue من عرض Extensions في VS Code. ثبّت Python 3 من Python.org إذا كان python3 غير متاح. لا يضيف VS Code على Mac تلقائيًا code إلى مسار بحث الصدفة. اتبع تعليمات الإعداد على Mac: افتح Command Palette باستخدام Cmd+Shift+P، وشغّل Shell Command: Install 'code' command in PATH، ثم أعد تشغيل Terminal. تحقق من توفر الأدوات المطلوبة:

Terminal
sw_vers -productVersion
ollama --version
docker version
code --version
python3 --version

سجّل الإصدارات المثبتة. توقف إذا لم يعمل أحد التطبيقين أو لم تتوفر مساحة للنموذج وبيانات Docker. تعرض صفحة نموذج qwen2.5-coder:7b حاليًا تنزيلًا بحجم 4.7 GB وترخيص Apache 2.0. حجم التنزيل ليس كامل الذاكرة المطلوبة للتشغيل. هذا مثال محدد، لا توصية لكل جهاز Mac. اختر عند الحاجة وسمًا محليًا أصغر موثقًا، واستبدل qwen2.5-coder:7b بهذا الوسم الدقيق في كل أمر واختيار متصفح وحقل YAML أدناه. تحقق أيضًا من ترخيص النموذج البديل.

نزّل النموذج وتحقق من ظهور الوسم الدقيق في Ollama:

Terminal
ollama pull qwen2.5-coder:7b
ollama list
curl --fail-with-body --silent --show-error http://127.0.0.1:11434/api/tags | python3 -c 'import json,sys; d=json.load(sys.stdin); print([m["name"] for m in d["models"]])'

يجب أن تتضمن القائمة qwen2.5-coder:7b. ثم اطلب من API الدردشة المحلي ردًا قصيرًا. يفشل الأمر عند خطأ HTTP ويتحقق من النموذج المُعاد ومحتوى المساعد غير الفارغ؛ لا تهم صياغة الرد المحددة. يحد خيار تشغيل Ollama num_predict هذا الفحص عند 64 توكن مولّدًا. قد تثبت الجملة المبتورة وصول محتوى؛ أما الرد الفارغ فيفشل الفحص ويتطلب التحقيق.

Terminal
set -o pipefail
curl --fail-with-body --silent --show-error http://127.0.0.1:11434/api/chat \
  -H 'Content-Type: application/json' \
  -d '{"model":"qwen2.5-coder:7b","messages":[{"role":"user","content":"Reply with one short sentence about checking a local connection."}],"stream":false,"options":{"num_predict":64}}' \
  | python3 -c 'import json,sys; d=json.load(sys.stdin); assert d.get("model")=="qwen2.5-coder:7b",d.get("model"); assert d.get("message",{}).get("content","").strip(); print("Model:",d["model"],"Reply:",d["message"]["content"])'

إذا غاب الوسم فأكمل التنزيل وأعد فحص القائمة. إذا تعذر الوصول إلى API فشغّل Ollama وافحص سجل الخادم على Mac في ~/.ollama/logs/server.log. يشكل الوسم المنزّل والرد المحلي الناجح أول الفحوص الثلاثة.

2. شغّل Open WebUI مع بيانات محلية دائمة

هذا دليل البدء السريع لـOpen WebUI يخزن الحسابات والإعدادات والمحادثات في /app/backend/data ويتطلب قيمة ثابتة لـ WEBUI_SECRET_KEY. نستخدم الإصدار المستقر v0.12.3 بدل الوسم المتجدد main . يختار Docker الصورة الملائمة لبنية Mac؛ سجّل هوية الصورة بعد تنزيلها.

افحص أولًا الأسماء المستخدمة هنا. إذا كان أحدها موجودًا فافحص الحاوية أو وحدة التخزين وحدد هل تنتمي إلى إعداد سابق. لا تستبدل حاوية قائمة أو تحذف وحدتها لمجرد تشغيل الأمر.

Terminal
docker ps -a --filter name=^/bc-open-webui$ 
docker volume inspect bc-open-webui-data

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

Terminal
mkdir -p "$HOME/.config/bc-open-webui"
chmod 700 "$HOME/.config/bc-open-webui"
umask 077
if [ ! -s "$HOME/.config/bc-open-webui/webui-secret" ]; then
  openssl rand -hex 32 > "$HOME/.config/bc-open-webui/webui-secret"
fi
chmod 600 "$HOME/.config/bc-open-webui/webui-secret"
export WEBUI_SECRET_KEY="$(cat "$HOME/.config/bc-open-webui/webui-secret")"
docker pull ghcr.io/open-webui/open-webui:v0.12.3
docker image inspect ghcr.io/open-webui/open-webui:v0.12.3 --format '{{json .RepoDigests}}'
docker volume create bc-open-webui-data
docker run -d --name bc-open-webui --restart unless-stopped \
  -p 127.0.0.1:3000:8080 \
  --add-host=host.docker.internal:host-gateway \
  -v bc-open-webui-data:/app/backend/data \
  -e WEBUI_SECRET_KEY \
  -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
  ghcr.io/open-webui/open-webui:v0.12.3
unset WEBUI_SECRET_KEY
docker ps --filter name=^/bc-open-webui$ --format 'table {{.Names}}\t{{.Image}}\t{{.Ports}}'

يجب أن يعرض ناتج المنافذ 127.0.0.1:3000->8080/tcp. تحتفظ وحدة التخزين المسماة بالمحادثات والإعدادات عند إعادة إنشاء الحاوية. يحمي المفتاح استمرارية الجلسات وقيم التطبيق المشفرة، فاحتفظ بنسخته الخاصة. يمكن لمن يملك وصول Docker رؤية قيم البيئة في إعداد الحاوية؛ هذه منظومة محلية لمستخدم واحد وليست خزنة أسرار لمضيف مشترك.

افتح http://127.0.0.1:3000 في المتصفح. أنشئ حساب المسؤول عند التشغيل الأول. افتح من قائمة الصورة الشخصية Settings → Admin → Connections. افحص Manage Ollama API Connections واترك اتصالًا واحدًا مفعّلًا إلى http://host.docker.internal:11434؛ أزل اتصالات المزودين غير المقصودة لهذا الفحص أو عطّلها. يستطيع Open WebUI توزيع الطلبات بين اتصالات Ollama متعددة، لذلك لا يكفي تطابق الاسم في القائمة. اختر qwen2.5-coder:7b في محادثة جديدة واسأل: «كيف أتحقق من أن نموذجًا محليًا أجاب؟» تأكد من ظهور رد غير فارغ، ثم أعد فتح المحادثة المحفوظة. سجّل النموذج المختار وURL الاتصال. هذا فحص المتصفح؛ لا توجد إجابة محددة مطلوبة.

إذا لم تُحمّل الصفحة فافحص docker logs bc-open-webui وربط المنفذ. إذا فرغت قائمة النماذج فتحقق من أن Ollama ما زال يجيب على /api/tags، وافحص اتصال Open WebUI المحفوظ، واختبر وصول إصدار Docker Desktop هذا إلى خدمة مضيف Mac. host.docker.internal هو عنوان المضيف في Docker Desktop، بينما يشير localhost داخل الحاوية إلى الحاوية نفسها. يرتبط Ollama افتراضيًا بـ127.0.0.1؛ وقد يختلف التوجيه بين المضيف والحاوية حسب الإعداد. لا تعتبر الاتصال الفاشل نجاحًا ولا تُتح Ollama على 0.0.0.0 بوصف ذلك إصلاحًا اعتياديًا. عالج المسار الشبكي المحلي وفق سياسة الأمان قبل المتابعة. احتفظ بوحدة التخزين والمحادثات الحالية أثناء التشخيص.

3. اربط Continue بوسم Ollama نفسه

يعمل Continue في VS Code على Mac، لذا عنوان Ollama API هو http://localhost:11434. افتح Continue، واستخدم قائمة الإعداد أعلى يمين حقل الدردشة، واضغط الترس بجانب Local Config. يفتح ذلك ~/.continue/config.yaml؛ ويستخدم مرجع Continue الحالي YAML. احتفظ بنسخة من الإعداد الحالي وبالنماذج والقواعد التي تحتاجها. هذا المحتوى الأدنى الكامل لإعداد محلي جديد:

YAML
name: Local Ollama check
version: 1.0.0
schema: v1
models:
  - name: Qwen2.5 Coder 7B local
    provider: ollama
    model: qwen2.5-coder:7b
    apiBase: http://localhost:11434
    roles:
      - chat
      - edit

في الملف القائم أضف هذا النموذج تحت قائمة models: واحتفظ بالإعداد الحالي ذي المستوى الأعلى. احفظ واختر Local Config والنموذج المحلي المسمى، ثم اطرح سؤالًا قصيرًا في Continue Chat. تأكد من عودة محتوى. يفحص ذلك اتصال الإضافة، لكن رد الدردشة ليس تعديل ملف. يتيح دورا chat و edit الإجراءين المستخدمين هنا؛ لا تعد هذه الوصفة بميزات Agent أو الإكمال التلقائي.

أنشئ دليلًا وملف اختبار تملكهما بسلوك بسيط يمكن فحصه مستقلًا. يحفظ الأمر الملف أو النسخة الأصلية الموجودة؛ افحصها أو اختر دليلًا جديدًا إذا استُخدم أي اسم سابقًا:

Terminal
mkdir -p "$HOME/continue-local-check"
if [ -e "$HOME/continue-local-check/greeting.py" ] || [ -e "$HOME/continue-local-check/greeting.original.py" ]; then
  printf '%s\n' 'Scratch file already exists; inspect it or choose a new directory.'
else
  cat > "$HOME/continue-local-check/greeting.py" <<'PY'
def greeting(name):
    return "Hello, " + name

if __name__ == "__main__":
    assert greeting("Ada") == "Hello, Ada"
    print(greeting("Ada"))
PY
  if python3 "$HOME/continue-local-check/greeting.py"; then
    cp "$HOME/continue-local-check/greeting.py" "$HOME/continue-local-check/greeting.original.py"
  else
    printf '%s\n' 'Original check failed; inspect the file before requesting an edit.'
  fi
fi

يجب أن يطبع الاختبار الأصلي Hello, Ada بعد نجاح التأكيد. افتح greeting.py في VS Code، وحدد الدالة فقط واضغط Cmd+I لاستخدام Continue Edit. اطلب إضافة docstring قصيرة دون تغيير النص المُعاد. قارن الفروق المضمنة المعروضة تدريجيًا مع greeting.original.py؛ قد يجلب Edit للكود المحدد الملف كاملًا إلى السياق، فاستخدم فقط ملفًا غير حساس تملكه. قد يغيّر النموذج أكثر من المطلوب. افحص كل سطر تغير واقبل اقتراحًا مناسبًا باستخدام Cmd+Opt+Y، أو ارفضه باستخدام Cmd+Opt+N. يتيح Continue قبول الكل أو رفض الكل، لكن الفروق الصغيرة أسهل للفحص تغييرًا تغييرًا.

بعد القبول احفظ الملف وشغّل:

Terminal
diff -u "$HOME/continue-local-check/greeting.original.py" "$HOME/continue-local-check/greeting.py" || true
python3 "$HOME/continue-local-check/greeting.py"

تأكد أن الفروق تتضمن التغيير المقصود فقط وأن التأكيد الأصلي ما زال ينجح. إذا رفضت الاقتراح فتحقق من تطابق الملف مع الأصل وسجّل الرفض؛ لا تدّع اكتمال التعديل. يبين الملف والفروق واختبار Python المستقل النتيجة بموثوقية أكبر من وصف النموذج لعمله.

4. أبقِ الحدود واضحة

لكل من Ollama وOpen WebUI وContinue إعدادات مستقلة. لتعطيل سحابة Ollama وحدها أضف الحقل التالي إلى ~/.ollama/server.jsonالخاص بالحساب الذي يشغّل خادم Ollama، مع إبقاء حقول JSON الموجودة. هذا المحتوى الكامل لملف جديد:

JSON
{
  "disable_ollama_cloud": true
}

أعد تشغيل تطبيق Ollama وافحص سجل الخادم:

Terminal
grep 'Ollama cloud disabled: true' "$HOME/.ollama/logs/server.log"

هذا Ollama FAQ يوثق سطر السجل. إن غاب فراجع حساب Mac المشغّل وJSON وإعادة التشغيل قبل الجزم بتعطيل السحابة. لا يفحص هذا الإعداد مزودي Open WebUI الآخرين أو ميزاته الاختيارية المتصلة بالإنترنت أو حركة Continue. يوصي دليل العمل دون اتصال لـContinue بتعطيل Allow Anonymous Telemetryواستخدام نماذج محلية وإعادة تشغيل VS Code. راجع اتصالات كل تطبيق قبل استخدام معلومات حساسة. عنوان loopback وحده ليس تدقيقًا للشبكة.

راجع ترخيص Docker Desktop لاستخدامك الفعلي. هو مجاني للاستخدام الشخصي والتعليمي والمفتوح المصدر غير التجاري وللشركات الصغيرة التي لديها أقل من 250 موظفًا وإيراد سنوي أقل من 10 ملايين دولار أمريكي. يحتاج الاستخدام المهني في المؤسسات الأكبر والجهات الحكومية اشتراكًا مدفوعًا. ترخيص النموذج Apache 2.0 منفصل. تظل مساحة القرص والذاكرة وعرض نطاق التنزيل والكهرباء مطلوبة؛ لم تُقَس تكاليف أو نتائج أداء لهذا الدليل.

لدليل أضيق يقتصر على طرفية Ollama وAPI، راجع تشغيل نموذج Ollama محلي والتحقق من API الدردشة. ويشرح تنفيذ تغيير واحد مفحوص في Claude Code بنموذج Ollama محلي عميل برمجة آخر.

المصادر والقراءات الإضافية