لماذا صممت OpenAI أداة Symphony ووفرتها مجاناً للجميع؟

BBetter Stack
Computing/SoftwareManagementInternet Technology

Transcript

00:00:00هذا هو Symphony من OpenAI، وهي أداة مفتوحة المصدر لتنسيق الوكلاء الذين يعملون لفترات طويلة باستخدام
00:00:05نظام تتبع مشكلات موجود مثل Linear لمساعدة وكيلك على إكمال المهام بشكل مستقل دون أي
00:00:10إشراف بشري. ولكن لماذا لا يتعين على الوكيل بناؤه من الصفر قبل أن تتمكن من استخدامه؟
00:00:14هل يدعم فقط Codex CLI؟ وهل هذه هي البداية لمزيد من
00:00:18الأدوات مفتوحة المصدر من OpenAI؟ اضغط على اشتراك ولنكتشف ذلك.
00:00:25وُجد Symphony فقط لأن OpenAI واجهت عنق زجاجة في الانتباه البشري، مما يعني أن المهندسين
00:00:30كان بإمكانهم الإشراف على 3-5 جلسات Codex فقط في وقت واحد قبل أن يبدأ تبديل السياق
00:00:35في التأثير سلباً على الإنتاجية. وبالطبع، لم يكن هذا ليتوسع. لذا خمن كيف حلت OpenAI
00:00:41مشكلة “الوكيل السريع والمدير البشري البطيء”؟ لقد تخلصوا من المديرين البشريين. نوعاً ما.
00:00:47لأنه مع Symphony، يضع البشر المهام على لوحة، ويتم تشغيل وكيل جديد لإكمال تلك المهمة،
00:00:52ولن يشرك الوكيل الإنسان إلا إذا كان هناك شيء يحتاج للمراجعة.
00:00:55ولكن كيف يقارن Symphony بأدوات مماثلة مثل Multica و Conductor؟ حسناً،
00:00:58شاهد العرض التوضيحي وسيصبح ذلك واضحاً تماماً. قبل أن نبدأ، أود فقط أن أقول
00:01:03إن لـ Symphony أغرب عملية تثبيت رأيتها في حياتي. أو قد تكون
00:01:07الطريقة الأكثر عبقرية لتثبيت شيء ما. سنصل إلى ذلك لاحقاً.
00:01:10أولاً، دعونا نمر بمثال أساسي. لدي Symphony قيد التشغيل الآن،
00:01:14وهو يفحص المهام في Linear للعمل عليها. وفي Linear، سأقوم بإنشاء مشكلة جديدة،
00:01:18والتي ستكون بناء تطبيق Hello World باستخدام TypeScript و BUN.
00:01:22حالياً، Symphony غير مهيأ للعمل على مهام المتأخرات. لذا سأغير الحالة إلى To-Do
00:01:27وأضغط على إنشاء مشكلة. تذكروا معرف المهمة، وهو SYN7.
00:01:31بعد فترة وجيزة، يلتقط Symphony معرف تلك المهمة. وبعد ثوانٍ قليلة،
00:01:36يظهر لنا خطأ في التحقق من GraphQL، وهو ليس أمراً جللاً ومن السهل جداً على Codex إصلاحه.
00:01:41ولكن بعد ذلك، يمكننا أن نرى أن Codex قد أكمل العمل، وغير حالة المشكلة
00:01:45من To-Do إلى Done، وترك تعليقاً هنا من Symphony. مما يعني أننا إذا ذهبنا إلى
00:01:49دليل مساحات عمل Symphony الخاص بنا، وسنتحدث عن ذلك لاحقاً، يمكننا أن نرى أن لدينا مساحة عمل
00:01:53جديدة بنفس معرف مشكلتنا. وإذا دخلنا إلى مساحة العمل تلك، سنجد قائمة
00:01:58بالملفات التي تم إنشاؤها لتطبيق Hello World TypeScript BUN. وإذا دخلنا إلى دليل المصدر،
00:02:04يمكننا رؤية كود التطبيق هنا. وهذا باختصار هو جوهر Symphony.
00:02:08الآن دعونا نستعرض كيفية إعداده. هناك طريقتان لتثبيت Symphony
00:02:12وفقاً لهذا المستودع. الخيار الثاني، وهو ما اعتدنا عليه، نقوم بإعداد Elixir،
00:02:16ونستنسخ المستودع، ثم نبني الكود ونقوم بتشغيله باستخدام ملف سير العمل الموجود.
00:02:20أما الخيار الأول، فهو ربما الطريقة الأغرب أو الأكثر تطلعاً للمستقبل لتثبيت شيء ما.
00:02:25ببساطة تعطي وكيل البرمجة الخاص بك هذا الأمر، وسيقوم بقراءة ملف المواصفات،
00:02:30الذي يزيد طوله عن 2000 سطر. لكنه يعطي وكيلك بشكل أساسي
00:02:34تعليمات مفصلة حول كيفية بناء Symphony، وهو أمر مذهل لأنه إذا سلك الجميع هذا الطريق،
00:02:39فلن تتشابه أي نسختين من Symphony. سيكون لدى البعض ميزات مختلفة
00:02:43بلغات مختلفة، مما سيشكل فوضى لـ OpenAI في الصيانة والدعم.
00:02:47ولكنه أيضاً نوع من العبقرية لأنك إذا بنيت نسختك الخاصة من Symphony،
00:02:51ستشعر بالمسؤولية تجاهها. ستقوم بإصلاح الأخطاء، وإضافة الميزات،
00:02:55وستقوم بصيانتها أساساً. وإذا كنت لا تريد أن يستخدم Symphony نظام Linear أو
00:02:59Codex، فالأمر يرجع إليك. قام شخص ما ببناء نسخة Go من Symphony تعمل على Charm CLI،
00:03:04وبنى شخص آخر نسخة مدعومة بـ Claude SDK. لم أكن بهذا القدر من الإبداع،
00:03:09لذا وضعت الأمر الافتراضي في Codex باستخدام GPT 5.5 Low Effort، وأعطاني نسخة Python
00:03:15من Symphony، وهو أمر منطقي لأن النماذج اللغوية جيدة جداً في Python. وبمجرد الانتهاء من ذلك،
00:03:19ستحتاج إلى مفتاح API شخصي لـ Linear، والذي يمكنك الحصول عليه من الأمان والوصول،
00:03:23ويمكنك إنشاء واحد بالضغط هنا. ثم سيتعين عليك إضافة هذا المفتاح إلى ملف تعريف العمل الخاص بك،
00:03:28وهو ملف يخبر Symphony بكيفية أداء وظيفته، ويحتوي على بعض بيانات YAML الأمامية،
00:03:32والتي تحتوي بالطبع على مفتاح API، والحالات النشطة ليعرف الوكيل متى يمكنه العمل على مهمة،
00:03:37بالإضافة إلى جذر مساحة العمل وأمر Codex، وهو أمر القشرة (shell) الذي يستخدمه Symphony
00:03:42لإطلاق وكيل برمجة. وتحت ذلك يوجد أمر markdown المرسل إلى وكيل البرمجة
00:03:46لكل مشكلة. يمكنك الوصول إلى سير عمل OpenAI في ملف D من مستودعهم إذا كنت مهتماً.
00:03:51ولكن حتى الآن، سير العمل هذا غير مناسب لمشروع حقيقي. لنفترض أنني أردت إجراء تغييرات على
00:03:56تطبيق محاكاة الأفلام الذي كنت أعمل عليه. سأحتاج إلى إضافة خطاف create-after، الذي يتم تشغيله
00:04:01بعد أن ينشئ Symphony مساحة عمل لمشكلة ما، وسيقوم هذا الخطاف أولاً باستنساخ المستودع إلى
00:04:06دليل مساحة العمل، ثم الانتقال إلى فرع جديد في ذلك المستودع. لقد أضفت أيضاً خطاف run-after،
00:04:10الذي يتم تشغيله بعد انتهاء Codex من العمل على المشكلة. لذا يقوم هذا الخطاف بتجهيز الملفات، ثم
00:04:15ينشئ التزاماً (commit) جديداً قبل دفع الفرع وإنشاء طلب سحب (PR) جديد بهذه القيم.
00:04:20الآن إذا قمت بتشغيل Symphony باستخدام UV، الذي استحوذت عليه OpenAI أيضاً، ولكن هذا موضوع
00:04:25لفيديو آخر، فإنه يبحث عن مشكلات جديدة. الآن إذا أنشأت مشكلة جديدة لتحديث ملف readme، فقط في
00:04:30القسم الذي يعرض المعالجة المجمعة، لاستخدام علامة شاملة بدلاً من عرض ملفات متعددة، مرة أخرى،
00:04:35سأغيرها من المتأخرات إلى To-Do، ثم أضغط على إنشاء مشكلة. الآن التقط Symphony تلك
00:04:40المشكلة. وإذا نظرت إلى دليل مساحات عمل Symphony، يمكننا رؤية مجلد جديد يطابق
00:04:45معرف مشكلتنا، ويحتوي على المشروع المستنسخ. والآن بعد أن انتهى Symphony من العمل على
00:04:49المشكلة، قام بتغيير الحالة إلى Done وأنشأ طلب سحب (PR) جديداً مع رابط لتذكرة Linear
00:04:54والتغيير الدقيق الذي طلبته. بالطبع، يمكنني تغيير كود Symphony الخاص بي لإضافة
00:04:59وصف أفضل لطلب السحب ووضع رابط له في التعليقات، لكنني متأكد من أن هذا سهل جداً على
00:05:04Codex القيام به. كانت هذه نظرة سريعة على Symphony. إذا كنت معتاداً بالفعل على أو تعمل في
00:05:08شركة تستخدم Linear، فستشعر بالراحة مع الواجهة. وإذا كنت من مستخدمي Codex،
00:05:13فيمكنك استخدام مهاراتك وأدوات MCP والإضافات التي قمت بتثبيتها بالفعل. أنا شخصياً
00:05:18لا أستخدم Codex، ولكن يمكنني بالتأكيد رؤية الرؤية التي كانت OpenAI تهدف إليها مع Symphony. تخيل
00:05:22لو كان لديك فريق من المطورين يعملون جميعاً على نفس المشروع مع الذكاء الاصطناعي. بدلاً من أن يكون لكل منهم
00:05:28نظامه الخاص وسير عمله الخاص، يمكن أن يكون هناك وكيل مركزي بمهارات مركزية، وأدوات
00:05:33مركزية، وسير عمل وإضافات مركزية. ويمكن لكل مطور التواصل مع ذلك من خلال إعطائه
00:05:37مهمة، ويمكنهم رؤية ما يعمل عليه المطورون الآخرون، وما هي الأوامر التي استخدموها ويمكنهم
00:05:41رؤية الميزات الأخرى التي قد تؤثر على الميزة التي يعملون عليها بلمحة واحدة. رغم أن
00:05:46من الصعب جداً ابتكار ميزة لن تلمس جزءاً آخر من الكود يعمل عليه شخص
00:05:49آخر. ولكن بقدر روعة Symphony، في رأيي، تقوم Multica بعمل أفضل لأنها
00:05:54أسهل في الإعداد والإنشاء وإضافة وكلاء مختلفين، ويمكنك حتى جدولة المهام. ومع ذلك،
00:05:59أرى تماماً مكاناً لـ Symphony. إنها تشبه النسخة الأساسية من Multica حيث يمكنك
00:06:04إضافة الميزات الدقيقة التي تريدها بدلاً من الحصول على منتج مبني مسبقاً لك. لذا فكر
00:06:08في Symphony مثل Pi harness والأدوات الأخرى مثل Multica أو Conductor كـ Claude Code. وإذا
00:06:13كنت لا تعرف شيئاً عن Multica، فراجع هذا الفيديو الذي يستعرض كل ما
00:06:18تحتاج لمعرفته عنها.

Key Takeaway

تعمل أداة Symphony مفتوحة المصدر من OpenAI كإطار عمل مرن لأتمتة وكلاء البرمجة المستقلين عبر دمج مهام Linear مع نماذج الذكاء الاصطناعي لتقليل الحاجة للإشراف البشري المباشر.

Highlights

  • تسمح أداة Symphony للمهندسين بتجاوز عنق زجاجة الانتباه البشري الذي كان يحصر قدرتهم على الإشراف في 3 إلى 5 جلسات عمل فقط في وقت واحد.

  • تعتمد الأداة على تكامل مباشر مع نظام تتبع المشكلات Linear حيث يتم تشغيل وكلاء برمجة آليين بمجرد تحويل حالة المهمة إلى To-Do.

  • تتضمن عملية التثبيت خياراً مبتكراً يقوم فيه وكيل البرمجة بقراءة ملف مواصفات يتجاوز 2000 سطر لبناء نسخة مخصصة من الأداة.

  • يدعم Symphony استخدام خطافات برمجية مثل create-after و run-after لأتمتة عمليات استنساخ المستودعات وإنشاء طلبات السحب (PRs) تلقائياً.

  • تتيح الأداة بناء نسخ بلغات برمجة مختلفة مثل Python أو Go أو دمج نماذج ذكاء اصطناعي متنوعة مثل GPT-5.5 Low Effort أو Claude SDK.

  • يعمل المحرك الداخلي للأداة بالتنسيق مع وكلاء مثل Codex أو أدوات إدارة الحزم السريعة مثل UV التي استحوذت عليها OpenAI مؤخراً.

Timeline

حل مشكلة عنق الزجاجة في الإنتاجية البشرية

  • يحد تبديل السياق بين أكثر من 5 جلسات عمل من إنتاجية المهندس البشري بشكل كبير.
  • ينقل Symphony دور الإنسان من المدير المباشر للعمليات إلى واضع مهام على لوحة تحكم رقمية.
  • يتدخل العنصر البشري فقط في الحالات التي تتطلب مراجعة برمجية دقيقة أو استثنائية.

واجهت OpenAI تحدياً في توسيع نطاق العمليات بسبب قدرة المهندسين المحدودة على متابعة جلسات Codex المتعددة. صُممت Symphony لإزالة هذا العائق عبر السماح للوكلاء بالعمل بشكل مستقل تماماً على المهام الطويلة. يتم وضع المهام في نظام Linear، ويقوم الوكيل بتنفيذها دون إزعاج المبرمج إلا عند الضرورة القصوى.

آلية عمل الوكيل وتنسيق المهام عبر Linear

  • يراقب Symphony المهام الجديدة في Linear ويبدأ العمل عليها بمجرد تغيير حالتها البرمجية.
  • تنجح الأداة في إنشاء تطبيقات كاملة مثل Hello World باستخدام TypeScript و BUN بشكل آلي.
  • تنشئ الأداة مساحة عمل (Workspace) مخصصة لكل معرف مهمة (Issue ID) لضمان تنظيم الملفات.

يوضح المثال العملي قدرة الوكيل على التقاط المهمة SYN7 وبدء تنفيذها في غضون ثوانٍ. يتجاوز الوكيل أخطاء التحقق البسيطة مثل GraphQL ويقوم بتعديل حالة المهمة إلى Done تلقائياً. يتم تخزين جميع النتائج والكود المصدري في مجلدات منظمة تحمل نفس معرف المهمة لسهولة الوصول إليها.

هندسة التثبيت وبناء النسخ المخصصة

  • يتطلب المسار التقليدي للتثبيت إعداد بيئة Elixir واستنساخ مستودع الكود الأصلي.
  • يعتمد المسار المستقبلي على تزويد وكيل البرمجة بملف مواصفات لبناء الأداة بنفسه.
  • يسمح ملف تعريف العمل (Profile) بتخصيص مفاتيح API وحالات العمل النشطة وأوامر القشرة المستخدمة.

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

أتمتة سير العمل في المشاريع الحقيقية

  • يؤدي خطاف create-after وظيفة استنساخ المستودع وفتح فرع برمجي جديد تلقائياً.
  • يتولى خطاف run-after عمليات الالتزام (commit) ودفع الكود لإنشاء طلب سحب (PR) مفصل.
  • يوفر دمج أداة UV سرعة إضافية في تشغيل المهام وإدارة البيئات البرمجية.

في بيئات التطوير الفعلية، يتم توسيع وظائف Symphony لاستخدام خطافات برمجية تدير دورة حياة الكود. عند طلب تحديث لملف Readme، يقوم الوكيل باستنساخ المشروع، إجراء التعديل الدقيق، ثم رفع طلب سحب يتضمن رابطاً للمهمة الأصلية. هذه العملية تلغي المهام الروتينية التي يستهلكها المطور في إدارة Git.

الرؤية المستقبلية والمقارنة مع الأدوات المنافسة

  • يهدف Symphony لإنشاء مركزية للوكلاء تتيح لفريق المطورين رؤية عمل بعضهم البعض بوضوح.
  • تتفوق أدوات مثل Multica في سهولة الإعداد وجدولة المهام المعقدة.
  • تعتبر Symphony بمثابة Pi harness (إطار أساسي) يمنح المطورين حرية بناء ميزاتهم الخاصة.

تتمثل الرؤية في وجود وكيل مركزي يمتلك كافة الأدوات والمهارات اللازمة للفريق البرمجي بالكامل. رغم أن أدوات مثل Multica أو Conductor توفر تجربة مستخدم أكثر جاهزية، إلا أن Symphony تبرز كخيار مثالي لمن يرغب في تخصيص كل تفصيلة في سير العمل الآلي. تظل الأداة قوية جداً لمستخدمي Codex و Linear الحاليين.

Community Posts

View all posts