التثبيت
يعمل Control Center بطريقتين: تطبيق ويب على app.usectrl.dev بلا شيء تنزّله، أو تطبيق سطح المكتب تثبّته. هما التطبيق نفسه بالميزات نفسها. الفرق الوحيد أين يعمل الخادم — وتطبيق الويب لا يستطيع أن يشغّل واحدًا لك.
استخدمه في المتصفح
قسم بعنوان “استخدمه في المتصفح”app.usectrl.dev هو هذا التطبيق مُجمَّعًا للمتصفح. لا تثبيت، ولا تحديث. افتحه واتصل.
ما يعجز عنه لسان المتصفح هو أن يكون الخادم. كل عميل — سطح المكتب، والويب،
والهاتف — عارض رقيق فوق cc_server بلا واجهة يملك قاعدة البيانات ويقوم بالعمل،
فتطبيق الويب يتحدث دائمًا إلى خادم تشغّله أنت. طريقتان لتزويده بواحد:
خادم على جهازك. ابدأ cc_server محليًا ووجّه تطبيق الويب إلى
ws://localhost:9030. المتصفحات تعدّ localhost موثوقًا، فلا شهادة ولا نفق.
هذه أسرع طريقة لتجربة تطبيق الويب، وبياناتك لا تغادر جهازك.
خادم على جهاز آخر. لأن app.usectrl.dev يُقدَّم عبر HTTPS، لا بد لخادم
غير محلي أن يُبلَغ عبر wss:// بشهادة يثق بها المتصفح أصلًا. يرفض cc_server
ربط عنوان غير loopback من غير TLS، فاختر واحدًا مما يلي:
- أعطه شهادة مباشرة، عبر
--tls-certو--tls-key - ضعه خلف بروكسي عكسي ينهي TLS، وشغّله بـ
--insecure - اكشفه عبر نفق أو VPN يوفّر الشهادة — Tailscale أو cloudflared أو ما شابه. في الإعدادات ← الخادم ← الاتصال والحالة خيار تفعيل النفق المضمّن، تحت مشاركة هذا الخادم.
متى وقف الخادم خلف بروكسي أو NAT أو نفق، اضبط --public-url على العنوان الذي
ينبغي أن يتصل به العملاء فعلًا. افتراضه الربط المحلي، فمن دونه يحاول العملاء
المضيف الخطأ.
يبقى القليل لسطح المكتب وحده، لأنها تحتاج نافذة أصيلة أو أجهزة الصوت في الجهاز نفسه: كبسولة وضع التركيز العائمة، وإشعارات النظام المنبثقة (مركز الإشعارات داخل التطبيق يعمل في كل مكان)، و«بدء التسجيل والربط» من حدث في التقويم، وإعادة تشغيل ملخص اجتماع. كل ما عدا ذلك — المساحات، والوكلاء، ومراجعة طلبات السحب، وخطوط الأنابيب، والتذاكر، والذاكرة، وتسجيل الاجتماع نفسه — يسلك السلوك نفسه.
لوصل تطبيق الويب بخادم، اتبع الاتصال بخادم بعيد. لاستضافة الخادم، اتبع تشغيل خادم بلا واجهة.
متطلبات نظام سطح المكتب
قسم بعنوان “متطلبات نظام سطح المكتب”| المتطلب | macOS | Windows | Linux |
|---|---|---|---|
| إصدار النظام | macOS 13+ (Ventura) | Windows 10+ | Ubuntu 22.04+ أو توزيعة أخرى فيها glibc 2.35+ وGTK 3 |
| المعمارية | Apple Silicon (arm64) | x64, ARM64 | x86_64 |
| Git | مطلوب | مطلوب | مطلوب |
| مساحة القرص | نحو 200 MB للتطبيق، بالإضافة إلى دليل بيانات الخادم | نحو 200 MB | نحو 200 MB |
لا يتوفر لأجهزة Mac بمعالج Intel تنزيل مبني مسبقًا. البناء من المصدر هو السبيل.
يكبر دليل بيانات الخادم عن التطبيق. عند أول تشغيل يثبّت cc_server قسرًا
النماذج على الجهاز — تضمينات النص (نحو 90 MB)، وفصل المتحدثين (نحو 35 MB)،
ونموذج الكلام المختار (Parakeet TDT v3 افتراضيًا، نحو 600 MB؛ ومتغيرات Whisper
بين 198 و626 MB) — مع بناء code-server مضمّن، وتحصل كل محادثة وكيل على شجرة
عمل بالنسخ عند الكتابة للمستودعات التي تعمل عليها (git worktree العادي على
Windows). الكلام ليس اختياريًا: من غير نموذج ASR لا تُقدَّم عمليات الاجتماع ولا
الإملاء. والتنزيل الأول لنموذج الكلام يحتاج إعادة تشغيل واحدة قبل أن يصبح
التسجيل جاهزًا.
يوجّه سطح المكتب خادمه إلى دليل دعم التطبيقات لكل مستخدم في نظام التشغيل.
وcc_server الذي يُبدأ يدويًا بلا --data-dir يفترض
<application data>/control-center — ~/Library/Application Support/control-center
على macOS، و%APPDATA%\control-center على Windows،
و$XDG_DATA_HOME/control-center (أو ~/.local/share/control-center) على Linux.
التنزيل
قسم بعنوان “التنزيل”كل الملفات أدناه من إصدارات GitHub.
macOS (Apple Silicon)
قسم بعنوان “macOS (Apple Silicon)”نزّل Control-Center-<version>-arm64.dmg، وافتحه، واسحب Control Center إلى
مجلد Applications. البناء موقّع بـ Developer ID وموثّق من Apple، فيُفتح كالمعتاد.
Windows (x64, ARM64)
قسم بعنوان “Windows (x64, ARM64)”Control-Center-<version>-x64-setup.exe: مثبّت لكل مستخدم.Control-Center-<version>-windows-x64.zip: أرشيف zip محمول.Control-Center-<version>-arm64-setup.exe: مثبّت لكل مستخدم.Control-Center-<version>-windows-arm64.zip: أرشيف zip محمول.
يستخدم Windows git worktree لسحب المساحات (بلا نسخ عند الكتابة).
Linux (x86_64)
قسم بعنوان “Linux (x86_64)”Control-Center-<version>-x86_64.AppImageControl-Center-<version>-linux-x64.tar.gz
يحمل AppImage معلومات التحديث، فيستطيع AppImageUpdate أو appimaged رفعه إلى أحدث إصدار في مكانه، ولا ينزّل إلا ما تغيّر.
كلاهما مبني على Ubuntu 22.04، ويعمل عليها وعلى أي أحدث منها (Debian 12،
وFedora 36 وما بعدها): يربطان glibc 2.35 وlibstdc++ الخاص بـ GCC 12، ويأخذان
GTK 3 من النظام. المكتبات القليلة التي قد يخلو منها سطح مكتب اعتيادي تُشحَن
داخلهما، فلا حاجة لتثبيت شيء آخر. الصوت — تشغيل الاجتماع، والمشهد الصوتي، وصوت
المنصات، ونغمات الإشعارات — يمر عبر libmpv في النظام (libmpv1 على Ubuntu
22.04، وlibmpv2 على Ubuntu وDebian الأحدث، وmpv-libs على Fedora)؛ ومن دونه
يقلع التطبيق وتلك عناصر التحكم مخفية.
الخادم المستقل
قسم بعنوان “الخادم المستقل”يحمل كل إصدار الخادم بلا واجهة منفصلًا أيضًا —
cc_server-<version>-macos-arm64.tar.gz وcc_server-<version>-linux-x64.tar.gz وcc_server-<version>-windows-x64.zip
وcc_server-<version>-windows-arm64.zip — إلى جانب صور cc-server وcc-webapp
وcc-remote على GHCR. انظر
تشغيل خادم بلا واجهة.
أرشيف Linux مبني على Ubuntu 22.04، ومكتباته الأصيلة المضمّنة تربط glibc 2.35
وlibstdc++ الخاص بـ GCC 12، فيحتاج مضيفًا بهذه الحداثة على الأقل (Ubuntu 22.04،
أو Debian 12، أو Fedora 36 أو أحدث). على توزيعة أقدم شغّل صورة cc-server —
الحاوية تأتي بمساحة مستخدمها، فلا يلزمك إلا النواة.
خلفية الوكيل
قسم بعنوان “خلفية الوكيل”يرسل Control Center الوكلاء عبر المحوّلات. هما اثنان، والقائمة ثابتة، ويُكتشفان تلقائيًا — ولا سبيل لتسجيل محوّل آخر.
محوّل Control Center (built-in) لا يحتاج سطر أوامر خارجيًا: حلقة الوكيل
تعمل داخل الخادم وتخاطب مزوّدي النماذج عبر HTTP، فهو متاح دائمًا. اربط مزوّدًا
من الإعدادات ← الخادم ← مزوّدو النماذج. تتيح OpenAI وCodex وCursor وKimi
Code تسجيل الدخول من المتصفح، وتأخذ Anthropic وOpenRouter وGoogle Gemini
وDeepSeek وMistral وxAI وz.ai وMoonshot مفتاح API. Codex وCursor مزوّدان على هذا
المشعّل، وليسا سطرَي أوامر منفصلين. يُذكر z.ai مرتين عن قصد: z.ai المنصة
المفتوحة بالدفع حسب الاستخدام، وتُخصم من رصيد حسابك، أما z.ai GLM Coding
Plan فهو الاشتراك. مفتاح الحساب نفسه، لكن z.ai تقدّم الخطة من مضيف آخر — إن
لصقت مفتاح خطة البرمجة في بطاقة z.ai العادية عاد كل طلب بـ 429 … "Insufficient balance or no resource package"،
لأن الخطة بلا رصيد يُنفق. اشتراك Claude Pro/Max ليس تسجيل دخول إلى واجهة
Anthropic؛ وتُبلَغ تلك الخطة من محوّل Claude Code. ما تستطيع إضافته في تلك
الصفحة مزوّد مخصص — أي نقطة نهاية متوافقة مع OpenAI أو Anthropic (Ollama
أو LM Studio أو vLLM أو نشر خاص) من مزوّدون مخصصون ← إضافة مزود.
المحوّل الآخر يغلّف سطر أوامر خارجيًا:
- Claude Code (
claude):npm install -g @anthropic-ai/claude-code
يسبر الكشف PATH على الجهاز الذي يشغّل cc_server — الجهاز نفسه حين يشغّل
سطح المكتب خادمه، والمضيف البعيد في ما عدا ذلك. ثبّت سطر أوامر Claude Code
هناك، لا على العميل. زر تحديث في تلك الصفحة يعيد السبر.
تُقدَّم قوائم النماذج مباشرة من كل مزوّد متصل، ولا يوفّر models.dev إلا بيانات السعر ونافذة السياق. انظر إدارة المحوّلات والنماذج.
مصادقة GitHub
قسم بعنوان “مصادقة GitHub”اعتماد GitHub لك ويعيش على الخادم، ومفتاحه معرّف مستخدمك — لا في سلسلة مفاتيح نظام العميل. كل جهاز تسجّل الدخول منه يستخدم الاعتماد نفسه، ولا يقرؤه عضو آخر.
إن كان للخادم تطبيق GitHub مسجّل (إنشاء تطبيق GitHub)، تعرض الإعدادات ← مساحة العمل ← الملف الشخصي والهوية ← استضافة الكود زر تسجيل الدخول عبر GitHub (تدفق جهاز يشغّله الخادم). وإلا فالصق رمز وصول شخصي:
- كلاسيكي:
repoوread:org - دقيق الصلاحيات: المحتويات وطلبات السحب (قراءة وكتابة)، والفحوصات والإجراءات (قراءة)
أنشئه من GitHub ← الإعدادات ← إعدادات المطوّر ← رموز الوصول الشخصية. يسبر الخادم الرمز لاسم الحساب عند تخزينه، فيستطيع الصف أن يقول «تم تسجيل الدخول باسم …»؛ والسبر الفاشل يحفظ الرمز مع ذلك، ويظهر الخطأ الإملائي أو الصلاحية الناقصة لاحقًا في طلب فاشل.
الخطوة الأولى في الإعداد الأولي هي هذا الاتصال. وبعدها البطاقة نفسها موضع استبداله أو مسحه. ويستخدم GitLab وBitbucket البطاقة نفسها؛ انظر ربط مضيف شفرة.
اختر أين يعمل الخادم
قسم بعنوان “اختر أين يعمل الخادم”Control Center عميل خفيف فوق عملية cc_server بلا واجهة تملك قاعدة البيانات
وتقوم بكل العمل؛ ويشرح
النشر والعملاء
ما يعنيه هذا الفصل لسطح المكتب والويب والهاتف.
عند أول تشغيل يسأل سطح المكتب «كيف ينبغي أن يعمل Control Center؟»:
- التشغيل داخل هذا التطبيق: يطلق سطح المكتب
cc_serverعلى هذا الجهاز ويشرف عليه، ويخاطبه عبر loopback. لا شيء آخر يُضبط. هذا الإعداد الذي تفترضه بداية سريعة. - الاتصال بمثيل بعيد: وجّه سطح المكتب إلى
cc_serverيعمل في مكان آخر، بعنوان WebSocket، ومعرّف جهاز، وإما مفتاح اقتران أو رمز دعوة لمرة واحدة. ذلك الخادم يملك البيانات، وهذا التطبيق يرسمها فقط.
تضيف خادمًا أو تبدّله لاحقًا من الإعدادات ← الخادم ← الاتصال والحالة. التبديل يعيد الاتصال في مكانه — بلا إعادة تشغيل. المتصفح لا يشغّل خادمًا، فعميل الويب بعيد دائمًا؛ انظر الاتصال بخادم بعيد.
لاستضافة خادم بنفسك، اتبع
تشغيل خادم بلا واجهة.
يغطي بناء الثنائي، وصك مفتاح اقتران قبل أول تشغيل، وأعلام --data-dir
و--port و--bind.
تحقق من الإعداد
قسم بعنوان “تحقق من الإعداد”- يسرد الإعدادات ← الخادم ← مزوّدو النماذج المحوّلين. يُقرأ «Control Center (built-in)» موجودًا بالإصدار
built-in، ويُقرأ Claude Code موجودًا إن كان سطر أوامره علىPATHلمضيف الخادم. اضغط تحديث إن غاب. - يسرد الإعدادات ← مساحة العمل ← المستودعات مستودعات مساحة العمل هذه، وإضافة مستودع يتصفّح مجلدات مضيف الخادم.
- يسرد الإعدادات ← مساحة العمل ← الوكلاء الوكلاء الخمسة التي بذرتها مساحة عملك الأولى. كل واحد يحتاج ضبط المحوّل والنموذج قبل أن يعمل.
- يبلّغ الإعدادات ← الخادم ← التشخيص والخصوصية بخلفيات البيئة المعزولة التي يوفّرها هذا المضيف، وبحالة نموذج التضمين، وبالتسجيل.
البناء من المصدر
قسم بعنوان “البناء من المصدر”المكتبات الأصيلة مطلوبة، ولا وضع منقوص: غياب واحدة فشل إقلاع قاطع، لا مسار
أبطأ. جهّزها قبل أي شيء آخر. كل أمر Flutter وDart يمر بـ fvm، لأن المستودع
يثبّت إصدار SDK.
git clone https://github.com/SamuelAlev/control-center.gitcd control-centerscripts/natives/build_natives.shfvm flutter pub getfvm flutter pub run build_runner build --delete-conflicting-outputsfvm flutter gen-l10nfvm flutter run -d macos # or -d windows, -d linuxعلى macOS، التخزين الآمن (تسجيل الدخول إلى GitHub وLinear وGoogle) يحتاج توقيع التطبيق من فريق Apple — ويكفي Apple ID مجاني، وهو إعداد لمرة واحدة موصوف في توقيع التطوير المحلي. من دونه يقلع التطبيق، ويتعطل التخزين الآمن وحده. Windows وLinux لا يحتاجان توقيعًا.
لبناء ثنائي الخادم بلا واجهة، جهّز المكتبات الأصيلة بالطريقة نفسها أولًا، ثم:
cd apps/cc_serverfvm dart build cliينسخ خطاف البناء ما هو موجود في build/natives/ إلى الحزمة، فالبناء قبل
التجهيز يعطي حزمة بلا مكتبات أصيلة، وخادمًا يرفض الإقلاع.
لعميل الويب استخدم scripts/build_web.sh (--target remote لتطبيق الويب
التقدّمي للهاتف). هذا ما يشغّله CI: فـ flutter build web المجرّد يتخطى ختم
هوية البناء، وإعادة توليد Web Worker، وبيان النشر، وفحص ميزانية الأصول.