<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Orchestration | The .NET Blog</title><link>https://thedotnetblog.com/ar/tags/orchestration/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>ar</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Mon, 01 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/ar/tags/orchestration/index.xml" rel="self" type="application/rss+xml"/><item><title>نمط Handoff: عندما لا يكفي وكيل واحد</title><link>https://thedotnetblog.com/ar/news/emiliano-montesdeoca/maf-handoff-orchestration-pattern-tour/</link><pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/news/emiliano-montesdeoca/maf-handoff-orchestration-pattern-tour/</guid><description>يتيح نمط تنسيق Handoff في Microsoft Agent Framework للوكلاء تحديد من يتولى الدور التالي — دون فقدان سياق المحادثة أو انتهاك قواعد الطوبولوجيا.</description><content:encoded>&lt;p&gt;في مرحلة ما، يتجاوز كل نظام متعدد الوكلاء جهاز التوجيه البسيط. تكون العلامة الأولى عادةً عندما يحتاج وكيل متخصص إلى طرح سؤال متابعة، أو يدرك في منتصف الدور أن وكيلاً آخر يجب أن يستمر. تفشل خطوط الأنابيب الثابتة هناك. يفشل الموجِّه ذو المرور الواحد هناك.&lt;/p&gt;
&lt;p&gt;هذه هي بالضبط المشكلة التي صُمم نمط تنسيق Handoff في Microsoft Agent Framework لمعالجتها.&lt;/p&gt;
&lt;h2 id="كيف-يعمل-handoff"&gt;كيف يعمل Handoff&lt;/h2&gt;
&lt;p&gt;يعلن المطور عن رسم بياني: هؤلاء هم الوكلاء، وهذه هي الحواف بينهم. يقوم الإطار بالباقي — يُركّب أداة handoff لكل حافة خروج ويحقنها في كل وكيل. عندما يقرر وكيل تسليم التحكم، يستدعي الأداة. يُطبِّق الإطار الطوبولوجيا.&lt;/p&gt;
&lt;p&gt;ثلاثة أشياء تجعل هذا مختلفاً عن مجرد جعل الوكلاء يستدعون بعضهم:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;نسخة مشتركة&lt;/strong&gt; — يرى الوكيل المتلقي سجل المحادثة الكامل. بدون البدء من الصفر.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;تطبيق الطوبولوجيا&lt;/strong&gt; — يمكن للوكيل فقط التسليم إلى الوجهات المُعلنة. تُكتشف أخطاء التوجيه وقت الإنشاء، وليس في الإنتاج.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;الإنهاء الطبيعي&lt;/strong&gt; — عندما ينتهي الوكيل النشط من دوره دون استدعاء أداة handoff، يتنازل سير العمل للمستخدم. لا استطلاع، ولا شروط خروج صريحة.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="مثال-أدنى"&gt;مثال أدنى&lt;/h2&gt;
&lt;p&gt;في .NET، بناء سير عمل handoff يبدو هكذا:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Agents.AI&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Agents.AI.Workflows&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;AIAgent&lt;/span&gt; &lt;span class="n"&gt;triage&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;chatClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AsAIAgent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;instructions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Route to the right specialist.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Triage&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;AIAgent&lt;/span&gt; &lt;span class="n"&gt;billing&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;chatClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AsAIAgent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;instructions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Handle billing questions.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Billing&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;AIAgent&lt;/span&gt; &lt;span class="n"&gt;tech&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;chatClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AsAIAgent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;instructions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Handle technical support.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Tech&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;workflow&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;HandoffWorkflow&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Create&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;triage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;targets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;billing&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tech&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;billing&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;targets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;triage&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tech&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;targets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;triage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;billing&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;يمكن لـ Triage الإرسال إلى أي من المتخصصين. يمكن لكلا المتخصصين الإرسال مرة أخرى إلى triage. الرسم البياني متوافق مع اللاحلقي لكنه يدعم الحواف الخلفية عند الحاجة (&amp;ldquo;أحتاج إلى مزيد من المعلومات&amp;rdquo; → العودة إلى البحث).&lt;/p&gt;
&lt;h2 id="متى-تستخدم-handoff-ومتى-لا"&gt;متى تستخدم Handoff (ومتى لا)&lt;/h2&gt;
&lt;p&gt;Handoff خيار جيد عندما:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;يمكن أن تتغير الملكية في منتصف المحادثة&lt;/strong&gt; — قد يدرك وكيل أنه المتخصص الخاطئ&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;الحواف الخلفية مهمة&lt;/strong&gt; — قد تحتاج إلى العودة إلى خطوة سابقة دون إعادة التشغيل&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;قرارات التوجيه دقيقة&lt;/strong&gt; — قرار التسليم سياقي وأفضل اتخاذه من قِبَل النموذج بدلاً من المسندات المُكتَّبة&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;ليس&lt;/em&gt; الاختيار الصحيح عندما:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;خط الأنابيب ثابت وتسلسلي — استخدم سير عمل &lt;code&gt;Sequential&lt;/code&gt; لذلك&lt;/li&gt;
&lt;li&gt;كل خطوة مستقلة — مشاركة الوكلاء لنسخة احتاج إليها واحد منهم فقط مجرد ضوضاء&lt;/li&gt;
&lt;li&gt;تحتاج إلى ضمانات معالجة صارمة — عدم الحتمية في التوجيه المدفوع بالنموذج ليس ما تريده&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="الحواف-الخلفية-و-human-in-the-loop"&gt;الحواف الخلفية و Human-in-the-Loop&lt;/h2&gt;
&lt;p&gt;إحدى الأشكال الأكثر إثارةً للاهتمام التي يتيحها Handoff هي الحواف الخلفية الحقيقية. يمكن للوكيل أن يقرر &amp;ldquo;ليس لديّ معلومات كافية&amp;rdquo; ويوجه مرة أخرى إلى خطوة بحثية — ليس بحلقة مُشفَّرة ثابتة، بل لأن النموذج يقرر أنه القرار الصحيح.&lt;/p&gt;
&lt;p&gt;تتكامل تفاعلات human-in-the-loop بشكل طبيعي أيضاً. عندما يحتاج متخصص إلى مدخلات المستخدم، يتنازل سير العمل للمستخدم عبر حلقة الدور الافتراضية، ويجمع الاستجابة، ويستأنف بالسياق الكامل. لم يفقد الوكيل المحادثة قط.&lt;/p&gt;
&lt;h2 id="الخلاصة"&gt;الخلاصة&lt;/h2&gt;
&lt;p&gt;Handoff هو أحد تلك الأنماط التي تبدو بسيطة لكنها تتيح الكثير بمجرد استيعابها: توجيه لامركزي، سياق مشترك، طوبولوجيا مُطبَّقة، إنهاء طبيعي. إنها الخطوة التالية الصحيحة عندما يبدأ وكلاؤك في قول &amp;ldquo;في الواقع، يجب أن يتولى شخص آخر هذا.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;اقرأ الجولة الكاملة في المنشور الأصلي: &lt;a href="https://devblogs.microsoft.com/agent-framework/a-tour-of-handoff-orchestration-pattern/"&gt;A Tour of the Handoff Orchestration Pattern&lt;/a&gt;&lt;/p&gt;</content:encoded></item></channel></rss>