Install
git clone https://github.com/Dicklesworthstone/frankensonos
cd frankensonos
cargo build --releaseلمن هذه الأداة
تملك مكبرات صوت Sonos بالفعل وتريد إسناد صوت المنزل كله إلى طرفية أو واجهة HTTP أو وكيل ذكاء اصطناعي يتحدث MCP: FrankenSonos أداة تحكم وخادم خفي مكتوب بلغة Rust يوصف رسمياً بأنه آمن للذاكرة (memory-safe)، وملف ثنائي واحد يشغّل المنزل كله. لكل مدخل من المداخل الثلاثة جمهور مختلف: من يحب كتابة الأوامر يستخدم واجهة fsonos CLI، ومن يبني التكاملات يستخدم واجهة HTTP المرفقة بوثيقة OpenAPI، ومن يفضّل إنياب الذكاء الاصطناعي يستخدم خادم MCP. سيتحمس لها خصوصاً محبو الأتمتة المنزلية ممن يفضلون سطر الأوامر والسكربتات؛ فهي تخدم المكبرات التي تملكها فقط ولا تتطلب شراء عتاد جديد.
المتطلبات أولاً: المشروع في مرحلة ما قبل الإصدار (pre-release) ولا توجد ملفات ثنائية رسمية قابلة للتنزيل بعد، لذا يبدأ الاستخدام الأول بالبناء من المصدر (إصدار سلسلة أدوات Rust مثبّت في ملف rust-toolchain.toml). يجب أن يعمل الخادم الخفي على جهاز في الشبكة المحلية (LAN) نفسها التي فيها مكبراتك، وللوصول من أي مكان يجب أن ينضم هذا الجهاز أيضاً إلى tailnet لديك عبر Tailscale. من يتوقع تثبيتاً بأمر واحد وجاهزية فورية فلينتظر الإصدار الرسمي. هذان الشرطان يجعلانه أقرب إلى بنية تحتية ذاتية الاستضافة من تطبيق يُثبَّت ويُستخدم فوراً؛ فإن قبلت بهما تابع إلى التجربة الأولى.
غير مناسب أو يستحق الانتظار: بلا مكبرات Sonos، أو بلا استعداد لتثبيت سلسلة أدوات Rust، أو بلا جهاز يبقى باستمرار في الشبكة المحلية نفسها، يصعب تلبية هذه المتطلبات. أما تشغيله مع مكبرات من علامات أخرى فلم تذكره الأدلة، فلا تفترضه.
أول تجربة في 3 دقائق
المسار الرئيسي الموصى به هو المسار الرسمي: بناء من المصدر، ثم إتمام الإعداد الأول، ثم توجيه وكيل نحو الخادم الخفي. ولماذا لا التنزيل؟ تبني CI عند كل دفع إلى main مخرجات لـ Apple Silicon و x86_64 Linux، لكنها تنتهي صلاحيتها مع انتهاء خط المعالجة، وقد صرّحت الجهة الرسمية أن التنزيلات ستبدأ من 0.1.0. ولا يُثبَّت أي شيء على المكبرات طوال العملية.
المتطلبات: جهاز في الشبكة المحلية نفسها التي فيها المكبرات، مع سلسلة أدوات Rust جاهزة.
الخطوة الأولى، الاستنساخ والبناء:
git clone https://github.com/Dicklesworthstone/frankensonos
cd frankensonos
cargo build --release
الخطوة الثانية: نفّذ fsonos setup على هذا الجهاز؛ الجهة الرسمية تقول إنه يتولى الأمر ويكمل الإعداد الأول.
الخطوة الثالثة: وجّه الوكيل نحو الخادم الخفي من أي جهاز على tailnet:
claude mcp add --transport http fsonos https://<mac>.<tailnet>.ts.net:8443/mcp
للنداء الأول اختر أخف خطوة: قراءة مورد MCP المسمى sonos://zones لرؤية مناطق المكبرات والتأكد من أن المسار يعمل قبل لمس أي جهاز. أما إشارات النجاح فلم تصف الأدلة نص المخرجات الدقيق، والمؤكد فقط أن نقطة النهاية وأسماء الموارد مأخوذة حرفياً من النص الرسمي. إن أردت أن ينفّذ الوكيل أفعال التحكم فانتبه إلى أنها تؤثر في أجهزة حقيقية؛ الأدلة لا تقدم مساراً للتراجع، فلا تعتبرها قابلة للإلغاء. ضع نقطة التحقق قبل الفعل: انظر ماذا سيستدعي الوكيل وعلى أي منطقة سيؤثر، ثم اسمح به. وفصل التجربة الأولى للقراءة فقط عن التحكم الحقيقي هو الإيقاع الأريح.
حالات استخدام
الحالة الأولى: يجرد الوكيل مكبرات المنزل كله. المشهد: الوكيل متصل بالخادم الخفي عبر نقطة النهاية أعلاه، وتريد قبل الخروج أن تعرف سريعاً أي الغرف تشغّل الموسيقى. جرّب: قراءة مورد MCP المسمى sonos://zones. النتيجة المتوقعة: الحصول على معلومات مناطق المكبرات؛ أما الحقول والصيغة الدقيقة فغير مذكورة في الأدلة، والمرجع هو الاستجابة الفعلية. وعندما لا تكون على الشبكة نفسها يمكن لأي جهاز على tailnet أن ينفّذ القراءة ذاتها، وهذا أنفع لمن يقضي وقتاً طويلاً خارج المنزل؛ ويمكن على المدى الطويل اتخاذ هذه القراءة فحصاً يومياً روتينياً.
الحالة الثانية: من دون وسيط وكيل، تحكم بصوت المنزل مباشرة من الطرفية. المشهد: أنت على الجهاز الذي يشغّل الخادم الخفي نفسه. جرّب: استخدام واجهة fsonos CLI التي تدعم --json في كل مكان. النتيجة المتوقعة: مخرجات بصيغة JSON يسهل تحليلها في السكربتات ووصلها بأتمتتك القائمة؛ أما قائمة الأوامر الفرعية الدقيقة فغير مدرجة في الأدلة، فلا تختلق أمثلة واحداً واحداً. السكربتات تستدعي CLI والوكيل يمر عبر MCP، ويمكن الجمع بين الطريقتين حسب الموقف.
حدود الاستخدام
- طبيعة القراءة والكتابة: نداءات التحكم تؤثر فعلياً في المكبرات. لا توفر الأدلة وسم قراءة/كتابة ولا أسماء ولا معاملات لأدوات MCP، وتؤكد فقط وجود أدوات مع الموردَين
sonos://zonesوsonos://dj. - على المكبرات نفسها: الجهة الرسمية تقول حرفياً: «Nothing is installed on the speakers and nothing about them is changed»، أي لا يُثبَّت شيء على المكبرات ولا يُغيَّر فيها شيء؛ لكن هذا لا يعني خلو الأفعال من الآثار، فالتحكم بالتشغيل يبقى تغييراً حقيقياً على الجهاز. وهل تُقرأ أو تُكتب ملفات وبيانات محلية خارج المكبرات؟ الأدلة لم تذكر ذلك أيضاً.
- العملاء والمداخل: الأمر الرسمي الوحيد لربط الوكيل هو أمر claude، ونقل MCP يدعم streamable HTTP أو stdio؛ أما اتصال العملاء الآخرين فلم تذكره الأدلة.
- الشبكة والنشر: الشبكة المحلية نفسها شرط صارم؛ والوصول عبر الشبكات يعتمد على tailnet بنقطة نهاية بالشكل
https://<mac>.<tailnet>.ts.net:8443/mcp، مع استبدال العناصر النائبة في العنوان بنطاق tailnet الخاص بك. ومتطلبات المصادقة وبيانات الاعتماد لم تذكرها الأدلة. - حالة الإصدار: ما قبل الإصدار، لا تنزيل رسمي، مخرجات CI تنتهي صلاحيتها مع خط المعالجة، الإصدار الرسمي سيبدأ من 0.1.0، ومسار الترقية لم تذكره الأدلة.
- ما لم يُؤكد بعد: أسماء أدوات MCP ومعاملاتها، وآلية المصادقة، وهل قراءة الموارد تستدعي أفعالاً على الأجهزة، وآلية التراجع. هذه المجهولات لا تعني غياب الخطر؛ قبل أن تدع وكيلاً يعمل باستقلال أول مرة، قصر أفعاله على القراءة ثم وسّعها تدريجياً.