<?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>Developer-Tools | The .NET Blog</title><link>https://thedotnetblog.com/ar/tags/developer-tools/</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>Sat, 25 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/ar/tags/developer-tools/index.xml" rel="self" type="application/rss+xml"/><item><title>Azure MCP Server الآن .mcpb — ثبّته بدون أي Runtime</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/azure-mcp-server-mcpb-no-runtime-install/</link><pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/azure-mcp-server-mcpb-no-runtime-install/</guid><description>Azure MCP Server متاح الآن كـ MCP Bundle (.mcpb) — نزّله، اسحبه إلى Claude Desktop وانتهى الأمر. لا Node.js ولا Python ولا .NET مطلوبة.</description><content:encoded>&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائيًا. للاطلاع على النسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/azure-mcp-server-mcpb-no-runtime-install/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;هل تعرف ما الذي كان مزعجًا في إعداد خوادم MCP؟ كنت بحاجة إلى runtime. Node.js لنسخة npm، وPython لـ pip/uvx، و.NET SDK لمتغير dotnet.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-mcp-server-mcpb-support/"&gt;غيّر Azure MCP Server كل ذلك للتو&lt;/a&gt;. أصبح متاحًا الآن كـ &lt;code&gt;.mcpb&lt;/code&gt; — MCP Bundle — والإعداد بالسحب والإفلات.&lt;/p&gt;
&lt;h2 id="ما-هو-mcp-bundle"&gt;ما هو MCP Bundle؟&lt;/h2&gt;
&lt;p&gt;فكّر فيه كامتداد VS Code (&lt;code&gt;.vsix&lt;/code&gt;) أو امتداد متصفح (&lt;code&gt;.crx&lt;/code&gt;)، ولكن لخوادم MCP. ملف &lt;code&gt;.mcpb&lt;/code&gt; هو أرشيف ZIP مكتفٍ بذاته يتضمن الملف الثنائي للخادم وجميع تبعياته.&lt;/p&gt;
&lt;h2 id="كيفية-التثبيت"&gt;كيفية التثبيت&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1. نزّل الحزمة لمنصتك&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;انتقل إلى &lt;a href="https://github.com/microsoft/mcp/releases?q=Azure.Mcp.Server"&gt;صفحة GitHub Releases&lt;/a&gt; ونزّل ملف &lt;code&gt;.mcpb&lt;/code&gt; لنظام تشغيلك ومعماريتك.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. ثبّت في Claude Desktop&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;الطريقة الأسهل: اسحب ملف &lt;code&gt;.mcpb&lt;/code&gt; وأفلته في نافذة Claude Desktop بينما تكون على صفحة إعدادات الامتدادات (&lt;code&gt;☰ → ملف → الإعدادات → الامتدادات&lt;/code&gt;). راجع تفاصيل الخادم، انقر تثبيت، وأكّد.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. المصادقة على Azure&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;az login
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;هذا كل شيء. يستخدم Azure MCP Server بيانات اعتماد Azure الموجودة لديك.&lt;/p&gt;
&lt;h2 id="للبدء"&gt;للبدء&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;التنزيل&lt;/strong&gt;: &lt;a href="https://github.com/microsoft/mcp/releases?q=Azure.Mcp.Server-"&gt;GitHub Releases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;المستودع&lt;/strong&gt;: &lt;a href="https://aka.ms/azmcp"&gt;aka.ms/azmcp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;التوثيق&lt;/strong&gt;: &lt;a href="https://aka.ms/azmcp/docs"&gt;aka.ms/azmcp/docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;اطلع على &lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-mcp-server-mcpb-support/"&gt;المقال الكامل&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>VS Code 1.118: يحصل Copilot CLI على أسماء الجلسات وشارات النماذج وـ TypeScript 7.0 Nightly</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/vscode-1-118-copilot-cli-session-names-model-badge/</link><pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/vscode-1-118-copilot-cli-session-names-model-badge/</guid><description>Visual Studio Code 1.118 إصدار مركّز على تحسينات Copilot CLI — تسمية الجلسات، شارات النماذج، الاختيار التلقائي للنموذج، والانضمام إلى TypeScript 7.0 Nightly.</description><content:encoded>&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المنشور تلقائيًا. للاطلاع على النسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/vscode-1-118-copilot-cli-session-names-model-badge/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://code.visualstudio.com/updates/v1_118"&gt;Visual Studio Code 1.118&lt;/a&gt; إصدار أصغر ومركّز — يتضمن في معظمه تحسينات على Copilot CLI.&lt;/p&gt;
&lt;h2 id="copilot-cli-الجلسات-تحصل-على-أسماء-حقيقية"&gt;Copilot CLI: الجلسات تحصل على أسماء حقيقية&lt;/h2&gt;
&lt;p&gt;تُستخدم الآن واجهات برمجة تطبيقات عناوين الجلسات في SDK الخاص بـ Copilot CLI كمصدر للحقيقة لأسماء الجلسات. بدلاً من التسميات المولّدة تلقائيًا، تعرض الجلسات الاسم الحقيقي من SDK.&lt;/p&gt;
&lt;h2 id="التبديل-بين-الجلسات-بشكل-أسرع"&gt;التبديل بين الجلسات بشكل أسرع&lt;/h2&gt;
&lt;p&gt;تمتلك تطبيق Agents الآن اختصارات &lt;code&gt;Ctrl+1&lt;/code&gt; و&lt;code&gt;Ctrl+2&lt;/code&gt; وما إلى ذلك للتبديل السريع بين الجلسات.&lt;/p&gt;
&lt;h2 id="شارات-النماذج-في-المحادثة"&gt;شارات النماذج في المحادثة&lt;/h2&gt;
&lt;p&gt;تعرض ردود Copilot CLI في لوحة المحادثة الآن شارة النموذج — يمكنك رؤية أي نموذج تعامل مع كل طلب بلمحة واحدة.&lt;/p&gt;
&lt;h2 id="الاختيار-التلقائي-للنموذج-في-copilot-cli"&gt;الاختيار التلقائي للنموذج في Copilot CLI&lt;/h2&gt;
&lt;p&gt;تعمل ميزة الاختيار التلقائي للنموذج الآن أيضًا في وكيل Copilot CLI.&lt;/p&gt;
&lt;h2 id="الانضمام-إلى-typescript-70-nightly"&gt;الانضمام إلى TypeScript 7.0 Nightly&lt;/h2&gt;
&lt;p&gt;يمكنك الآن الانضمام لاختبار الإصدارات الليلية من TypeScript 7.0 مباشرةً من إعدادات VS Code. TypeScript 7.0 إصدار مهم (&lt;a href="https://devblogs.microsoft.com/typescript/announcing-typescript-7-0-beta/"&gt;صدر الإصدار التجريبي منذ أيام&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;راجع &lt;a href="https://code.visualstudio.com/updates/v1_118"&gt;ملاحظات الإصدار الكاملة&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Foundry Toolboxes: نقطة نهاية واحدة لجميع أدوات وكلاء الذكاء الاصطناعي</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/foundry-toolboxes-curate-manage-tools-ai-agents/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/foundry-toolboxes-curate-manage-tools-ai-agents/</guid><description>أطلقت Microsoft Foundry ميزة Toolboxes في معاينة عامة — طريقة لإدارة أدوات وكلاء الذكاء الاصطناعي وعرضها عبر نقطة نهاية واحدة متوافقة مع MCP.</description><content:encoded>&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المنشور تلقائيًا. للاطلاع على النسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/foundry-toolboxes-curate-manage-tools-ai-agents/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;ثمة مشكلة تبدو عادية حتى تواجهها بنفسك: تبني المؤسسة وكلاء ذكاء اصطناعي متعددة، كل منها يحتاج أدوات، وكل فريق يُهيؤها من الصفر. نفس تكامل البحث على الويب، نفس إعداد Azure AI Search، نفس اتصال خادم GitHub MCP — لكن في مستودع مختلف، من فريق مختلف، ببيانات اعتماد مختلفة، ودون أي حوكمة مشتركة.&lt;/p&gt;
&lt;p&gt;أطلقت Microsoft Foundry للتو &lt;a href="https://devblogs.microsoft.com/foundry/introducing-toolboxes-in-foundry/"&gt;Toolboxes&lt;/a&gt; في معاينة عامة، وهو إجابة مباشرة على هذه المشكلة.&lt;/p&gt;
&lt;h2 id="ما-هو-toolbox"&gt;ما هو Toolbox؟&lt;/h2&gt;
&lt;p&gt;Toolbox هو حزمة أدوات مُسمّاة وقابلة لإعادة الاستخدام، تُعرَّف مرة واحدة في Foundry وتُعرض عبر نقطة نهاية واحدة متوافقة مع MCP. أي بيئة تشغيل وكيل تتحدث MCP يمكنها استهلاكه — دون قيد على Foundry Agents.&lt;/p&gt;
&lt;p&gt;الوعد بسيط: &lt;strong&gt;build once, consume anywhere&lt;/strong&gt;. عرِّف الأدوات، هيِّئ المصادقة مركزيًا (OAuth passthrough، الهوية المُدارة في Entra)، انشر نقطة النهاية. كل وكيل يحتاج تلك الأدوات يتصل بنقطة النهاية ويحصل عليها جميعًا.&lt;/p&gt;
&lt;h2 id="الأركان-الأربعة-اثنان-متاحان-اليوم"&gt;الأركان الأربعة (اثنان متاحان اليوم)&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;الركن&lt;/th&gt;
&lt;th&gt;الحالة&lt;/th&gt;
&lt;th&gt;ما يفعله&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Discover&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;قريبًا&lt;/td&gt;
&lt;td&gt;إيجاد الأدوات المعتمدة دون بحث يدوي&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Build&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;متاح&lt;/td&gt;
&lt;td&gt;تجميع الأدوات في حزمة قابلة لإعادة الاستخدام&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Consume&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;متاح&lt;/td&gt;
&lt;td&gt;نقطة نهاية MCP واحدة تعرض جميع الأدوات&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Govern&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;قريبًا&lt;/td&gt;
&lt;td&gt;مصادقة مركزية + إمكانية مراقبة جميع استدعاءات الأدوات&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="مثال-عملي"&gt;مثال عملي&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;azure.identity&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;DefaultAzureCredential&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;azure.ai.projects&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AIProjectClient&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;os&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;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AIProjectClient&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;endpoint&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;FOUNDRY_PROJECT_ENDPOINT&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;credential&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;DefaultAzureCredential&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&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;toolbox_version&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;toolboxes&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create_toolbox_version&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;toolbox_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;customer-feedback-triaging-toolbox&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;description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;البحث في الوثائق والرد على issues في GitHub&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;tools&lt;/span&gt;&lt;span class="o"&gt;=&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="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;web_search&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;البحث في الوثائق العامة&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="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;azure_ai_search&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;index_name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;internal-docs&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="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;mcp_server&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;server_url&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://your-github-mcp-server.com&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="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&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;بعد النشر، تُوفر Foundry نقطة نهاية موحدة. اتصال واحد، جميع الأدوات.&lt;/p&gt;
&lt;h2 id="لا-قيد-على-foundry-agents"&gt;لا قيد على Foundry Agents&lt;/h2&gt;
&lt;p&gt;تُنشأ Toolboxes وتُدار في Foundry، لكن سطح الاستهلاك هو بروتوكول MCP المفتوح. يمكن استخدامها من وكلاء مخصصة (Microsoft Agent Framework، LangGraph)، وGitHub Copilot وبيئات IDE الأخرى المتوافقة مع MCP.&lt;/p&gt;
&lt;h2 id="لماذا-يهم-هذا-الآن"&gt;لماذا يهم هذا الآن&lt;/h2&gt;
&lt;p&gt;موجة الوكلاء المتعددة تصل إلى الإنتاج. كل وكيل جديد هو سطح جديد للإعداد المكرر والبيانات الاعتمادية القديمة والسلوك غير المتسق. أساس Build + Consume كافٍ للبدء في المركزة. حين يصل ركن Govern، ستتوفر طبقة أدوات قابلة للمراقبة الكاملة ومُتحكَّم بها مركزيًا لكامل أسطول الوكلاء.&lt;/p&gt;
&lt;h2 id="خلاصة"&gt;خلاصة&lt;/h2&gt;
&lt;p&gt;لا يزال مبكرًا — معاينة عامة، Python SDK أولًا، مع Discover وGovern في الطريق. لكن النموذج راسخ والتصميم الأصيل لـ MCP يعني أنه يعمل مع الأدوات التي تُبنى بالفعل. جميع التفاصيل في &lt;a href="https://devblogs.microsoft.com/foundry/introducing-toolboxes-in-foundry/"&gt;الإعلان الرسمي&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Windows App Dev CLI v0.3: تشغيل F5 من الطرفية وأتمتة واجهة المستخدم للوكلاء الذكيين</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/windows-app-dev-cli-v03-run-ui-automation/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/windows-app-dev-cli-v03-run-ui-automation/</guid><description>يُقدّم Windows App Development CLI v0.3 أمر winapp run لتشغيل التطبيقات وتنقيحها من الطرفية، وأمر winapp ui لأتمتة الواجهة، وحزمة NuGet جديدة تتيح dotnet run مع التطبيقات المُحزَّمة.</description><content:encoded>&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المنشور تلقائيًا. للاطلاع على النص الأصلي، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/windows-app-dev-cli-v03-run-ui-automation/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;تجربة F5 في Visual Studio رائعة. لكن فتح VS لمجرد تشغيل تطبيق Windows مُحزَّم وتنقيحه — سواء في خط أنابيب CI، أو سير عمل آلي، أو عندما يُجري وكيل ذكاء اصطناعي الاختبارات — يُشكّل عبئًا زائدًا.&lt;/p&gt;
&lt;p&gt;صدر الإصدار v0.3 من Windows App Development CLI &lt;a href="https://devblogs.microsoft.com/ifdef-windows/windows-app-development-cli-v0-3-new-run-and-ui-commands-plus-dotnet-run-support-for-packaged-apps/"&gt;للتو&lt;/a&gt;، ويعالج هذا الأمر مباشرةً بميزتين رئيسيتين: &lt;code&gt;winapp run&lt;/code&gt; و&lt;code&gt;winapp ui&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="winapp-run-f5-من-أي-مكان"&gt;winapp run: F5 من أي مكان&lt;/h2&gt;
&lt;p&gt;يستقبل &lt;code&gt;winapp run&lt;/code&gt; مجلد تطبيق غير مُحزَّم وملف manifest، وينفّذ كل ما يفعله VS عند تشغيل التنقيح: تسجيل حزمة loose، وتشغيل التطبيق، والحفاظ على &lt;code&gt;LocalState&lt;/code&gt; بين عمليات إعادة النشر.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# قم ببناء التطبيق، ثم شغّله كتطبيق مُحزَّم&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;winapp run ./bin/Debug
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;يعمل مع WinUI وWPF وWinForms وConsole وAvalonia والمزيد. صُمِّمت الأوضاع للمطورين وسير العمل الآلي على حد سواء:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--detach&lt;/code&gt;&lt;/strong&gt;: يُشغَّل التطبيق ويُعاد التحكم فورًا إلى الطرفية. مثالي لـ CI.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--unregister-on-exit&lt;/code&gt;&lt;/strong&gt;: يُزيل الحزمة المُسجَّلة عند إغلاق التطبيق.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--debug-output&lt;/code&gt;&lt;/strong&gt;: يلتقط رسائل &lt;code&gt;OutputDebugString&lt;/code&gt; والاستثناءات في الوقت الفعلي.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="حزمة-nuget-جديدة-dotnet-run-للتطبيقات-المحزمة"&gt;حزمة NuGet جديدة: dotnet run للتطبيقات المُحزَّمة&lt;/h2&gt;
&lt;p&gt;يتوفر للمطورين العاملين بـ .NET حزمة NuGet جديدة: &lt;code&gt;Microsoft.Windows.SDK.BuildTools.WinApp&lt;/code&gt;. بعد التثبيت، يتولى &lt;code&gt;dotnet run&lt;/code&gt; إدارة الحلقة الداخلية بأكملها: البناء، وتحضير حزمة loose-layout، والتسجيل في Windows، والتشغيل — كل ذلك في خطوة واحدة.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;winapp init
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# أو&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dotnet add package Microsoft.Windows.SDK.BuildTools.WinApp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="winapp-ui-أتمتة-واجهة-المستخدم-من-سطر-الأوامر"&gt;winapp ui: أتمتة واجهة المستخدم من سطر الأوامر&lt;/h2&gt;
&lt;p&gt;هذه هي الميزة التي تفتح سيناريوهات الوكلاء الذكيين. يوفر &lt;code&gt;winapp ui&lt;/code&gt; وصولًا كاملًا عبر UI Automation لأي تطبيق Windows قيد التشغيل — WPF وWinForms وWin32 وElectron وWinUI3 — مباشرةً من الطرفية.&lt;/p&gt;
&lt;p&gt;ما يمكن تحقيقه:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;سرد جميع النوافذ على المستوى الأعلى&lt;/li&gt;
&lt;li&gt;التنقل في شجرة UI Automation الكاملة لأي نافذة&lt;/li&gt;
&lt;li&gt;البحث عن عناصر بالاسم أو النوع أو معرّف الأتمتة&lt;/li&gt;
&lt;li&gt;النقر والاستدعاء وتعيين القيم&lt;/li&gt;
&lt;li&gt;التقاط لقطات الشاشة&lt;/li&gt;
&lt;li&gt;انتظار ظهور العناصر — مثالي لمزامنة الاختبارات&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;يُتيح الجمع بين &lt;code&gt;winapp ui&lt;/code&gt; و&lt;code&gt;winapp run&lt;/code&gt; سير عملًا كاملًا من الطرفية: بناء ← تشغيل ← تحقق. يمكن للوكيل تشغيل التطبيق، وفحص حالة الواجهة، والتفاعل برمجيًا، والتحقق من النتيجة.&lt;/p&gt;
&lt;h2 id="مستجدات-أخرى"&gt;مستجدات أخرى&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;winapp unregister&lt;/code&gt;&lt;/strong&gt;: يحذف حزمة sideloaded عند الانتهاء.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;winapp manifest add-alias&lt;/code&gt;&lt;/strong&gt;: يُضيف اسمًا مستعارًا لتشغيل التطبيق بالاسم من الطرفية.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;إكمال تلقائي بـ Tab&lt;/strong&gt;: تهيئة إكمال PowerShell بأمر واحد.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="كيفية-التثبيت"&gt;كيفية التثبيت&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;winget install Microsoft.WinAppCli
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# أو&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install -g @microsoft/winappcli
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;الأداة في معاينة عامة. راجع &lt;a href="https://github.com/microsoft/WinAppCli"&gt;مستودع GitHub&lt;/a&gt; للتوثيق الكامل، و&lt;a href="https://devblogs.microsoft.com/ifdef-windows/windows-app-development-cli-v0-3-new-run-and-ui-commands-plus-dotnet-run-support-for-packaged-apps/"&gt;الإعلان الأصلي&lt;/a&gt; لجميع التفاصيل.&lt;/p&gt;</content:encoded></item><item><title>كتابة Hooks في azd بـ Python وTypeScript و.NET: وداعًا لسكريبتات Shell</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/azd-hooks-python-javascript-typescript-dotnet/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/azd-hooks-python-javascript-typescript-dotnet/</guid><description>تدعم Azure Developer CLI الآن كتابة hooks بـ Python وJavaScript وTypeScript و.NET. لا مزيد من التبديل إلى Bash من أجل سكريبت migration واحد.</description><content:encoded>&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المنشور تلقائيًا. للاطلاع على النسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/azd-hooks-python-javascript-typescript-dotnet/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;إن كنت قد امتلكت مشروعًا بالكامل بـ .NET واضطررت رغم ذلك إلى كتابة سكريبتات Bash لـ hooks في azd، فأنت تعرف هذا الألم. لماذا التبديل إلى صياخة shell في خطوة pre-provisioning بينما كل شيء آخر في المشروع مكتوب بـ C#؟&lt;/p&gt;
&lt;p&gt;هذا الإحباط لديه الآن حل رسمي. أطلقت Azure Developer CLI &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-multi-language-hooks/"&gt;دعم متعدد اللغات لـ hooks&lt;/a&gt;، وهو بالضبط بقدر ما يبدو جيدًا.&lt;/p&gt;
&lt;h2 id="ما-هي-الـ-hooks"&gt;ما هي الـ Hooks&lt;/h2&gt;
&lt;p&gt;الـ Hooks هي سكريبتات تعمل في نقاط حيوية من دورة حياة &lt;code&gt;azd&lt;/code&gt; — قبل provisioning، وبعد deployment، والمزيد. تُعرَّف في &lt;code&gt;azure.yaml&lt;/code&gt; وتتيح حقن منطق مخصص دون تعديل الـ CLI.&lt;/p&gt;
&lt;p&gt;في السابق، دُعم فقط Bash وPowerShell. الآن يمكن استخدام &lt;strong&gt;Python أو JavaScript أو TypeScript أو .NET&lt;/strong&gt; — ويتولى &lt;code&gt;azd&lt;/code&gt; الباقي تلقائيًا.&lt;/p&gt;
&lt;h2 id="كيف-يعمل-الاستدلال"&gt;كيف يعمل الاستدلال&lt;/h2&gt;
&lt;p&gt;ما عليك سوى الإشارة إلى ملف وسيستنتج &lt;code&gt;azd&lt;/code&gt; اللغة من الامتداد:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;hooks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;preprovision&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./hooks/setup.py&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;postdeploy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./hooks/seed.ts&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;postprovision&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./hooks/migrate.cs&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;لا إعداد إضافي. إذا كان الامتداد غامضًا، يمكنك إضافة &lt;code&gt;kind: python&lt;/code&gt; (أو اللغة المناسبة) صراحةً.&lt;/p&gt;
&lt;h2 id="تفاصيل-مهمة-حسب-اللغة"&gt;تفاصيل مهمة حسب اللغة&lt;/h2&gt;
&lt;h3 id="python"&gt;Python&lt;/h3&gt;
&lt;p&gt;ضع &lt;code&gt;requirements.txt&lt;/code&gt; أو &lt;code&gt;pyproject.toml&lt;/code&gt; بجانب السكريبت (أو في أي دليل أعلى). سينشئ &lt;code&gt;azd&lt;/code&gt; بيئة افتراضية تلقائيًا، ويثبت التبعيات، ويشغل السكريبت.&lt;/p&gt;
&lt;h3 id="javascript-وtypescript"&gt;JavaScript وTypeScript&lt;/h3&gt;
&lt;p&gt;نفس النمط — ضع &lt;code&gt;package.json&lt;/code&gt; بالقرب من السكريبت وسيشغل &lt;code&gt;azd&lt;/code&gt; أولاً &lt;code&gt;npm install&lt;/code&gt;. بالنسبة لـ TypeScript يستخدم &lt;code&gt;npx tsx&lt;/code&gt; دون خطوة تجميع ودون &lt;code&gt;tsconfig.json&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="net"&gt;.NET&lt;/h3&gt;
&lt;p&gt;وضعان متاحان:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;وضع المشروع&lt;/strong&gt;: إذا كان هناك &lt;code&gt;.csproj&lt;/code&gt; بجانب السكريبت، سيشغل &lt;code&gt;azd&lt;/code&gt; تلقائيًا &lt;code&gt;dotnet restore&lt;/code&gt; و&lt;code&gt;dotnet build&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;وضع الملف الواحد&lt;/strong&gt;: في .NET 10+ يمكن تشغيل ملفات &lt;code&gt;.cs&lt;/code&gt; المستقلة مباشرةً عبر &lt;code&gt;dotnet run script.cs&lt;/code&gt;. لا حاجة لملف مشروع.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="إعداد-خاص-بكل-منفذ"&gt;إعداد خاص بكل منفذ&lt;/h2&gt;
&lt;p&gt;تدعم كل لغة كتلة &lt;code&gt;config&lt;/code&gt; اختيارية:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;hooks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;preprovision&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./hooks/setup.ts&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;packageManager&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;pnpm&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;postprovision&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./hooks/migrate.cs&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;configuration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Release&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;framework&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;net10.0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="لماذا-يهم-هذا-لمطوري-net"&gt;لماذا يهم هذا لمطوري .NET&lt;/h2&gt;
&lt;p&gt;كانت الـ hooks آخر مكان في مشروع قائم على azd يجبر على تغيير اللغة. الآن يمكن لكامل pipeline النشر — من كود التطبيق إلى lifecycle hooks — أن يعيش في لغة واحدة. يمكنك إعادة استخدام أدوات .NET الموجودة في hooks، والإشارة إلى مكتبات مشتركة، والتخلص من صيانة سكريبتات shell.&lt;/p&gt;
&lt;h2 id="خلاصة"&gt;خلاصة&lt;/h2&gt;
&lt;p&gt;أحد تلك التغييرات التي تبدو صغيرة لكنها تزيل الكثير من الاحتكاك اليومي مع azd. دعم متعدد اللغات لـ hooks متاح الآن — تحقق من &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-multi-language-hooks/"&gt;المنشور الرسمي&lt;/a&gt; للحصول على التوثيق الكامل.&lt;/p&gt;</content:encoded></item><item><title>VS Code 1.117: الوكلاء يحصلون على فروع Git الخاصة بهم وهذا رائع</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/vscode-1-117-agents-autopilot-worktrees/</link><pubDate>Sun, 19 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/vscode-1-117-agents-autopilot-worktrees/</guid><description>يأتي VS Code 1.117 بعزل worktree لجلسات الوكلاء، ووضع Autopilot الدائم، ودعم الوكلاء الفرعيين. سير عمل الترميز الآلي أصبح أكثر واقعية.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/vscode-1-117-agents-autopilot-worktrees/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;يستمر الخط الفاصل بين &amp;ldquo;مساعد الذكاء الاصطناعي&amp;rdquo; و&amp;quot;زميل الذكاء الاصطناعي&amp;quot; في التلاشي. وصل VS Code 1.117 للتو و&lt;a href="https://code.visualstudio.com/updates/v1_117"&gt;ملاحظات الإصدار الكاملة&lt;/a&gt; مليئة بالمحتوى، لكن القصة هنا واضحة: يصبح الوكلاء مواطنين من الدرجة الأولى في سير عملك التطويري.&lt;/p&gt;
&lt;p&gt;إليك ما يهم فعلاً.&lt;/p&gt;
&lt;h2 id="وضع-autopilot-يتذكر-أخيرا-تفضيلاتك"&gt;وضع Autopilot يتذكر أخيراً تفضيلاتك&lt;/h2&gt;
&lt;p&gt;في السابق، كان عليك إعادة تمكين Autopilot في كل مرة تبدأ فيها جلسة جديدة. أمر مزعج. الآن يستمر وضع الأذونات عبر الجلسات ويمكنك تكوين الوضع الافتراضي.&lt;/p&gt;
&lt;p&gt;يدعم مضيف الوكيل ثلاث تكوينات للجلسة:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Default&lt;/strong&gt; — تطلب الأدوات التأكيد قبل التشغيل&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bypass&lt;/strong&gt; — يوافق تلقائياً على كل شيء&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autopilot&lt;/strong&gt; — استقلالية كاملة، يجيب على أسئلته الخاصة ويستمر&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;إذا كنت تُنشئ سقالة لمشروع .NET جديد مع الترحيلات وDocker وCI — اضبطه على Autopilot مرة واحدة وانسَ الأمر. يبقى هذا التفضيل.&lt;/p&gt;
&lt;h2 id="عزل-worktree-وgit-لجلسات-الوكيل"&gt;عزل Worktree وGit لجلسات الوكيل&lt;/h2&gt;
&lt;p&gt;هذه هي الميزة الكبرى. تدعم جلسات الوكيل الآن عزل worktree وgit الكامل. هذا يعني أنه عندما يعمل الوكيل على مهمة، يحصل على فرعه الخاص ودليل عمله. يبقى فرعك الرئيسي دون مساس.&lt;/p&gt;
&lt;p&gt;والأفضل من ذلك — يولّد Copilot CLI أسماء فروع ذات معنى لجلسات worktree هذه. لا مزيد من &lt;code&gt;agent-session-abc123&lt;/code&gt;. تحصل على شيء يصف فعلاً ما يفعله الوكيل.&lt;/p&gt;
&lt;p&gt;لمطوري .NET الذين يديرون فروع ميزات متعددة أو يصلحون أخطاء بينما تعمل مهمة بناء سقالة طويلة، هذا تغيير جذري. يمكنك أن تجعل وكيلاً يبني وحدات تحكم API الخاصة بك في worktree واحدة بينما تُصحّح مشكلة في طبقة الخدمة في أخرى. لا تعارضات. لا تخزين مؤقت. لا فوضى.&lt;/p&gt;
&lt;h2 id="الوكلاء-الفرعيون-وفرق-الوكلاء"&gt;الوكلاء الفرعيون وفرق الوكلاء&lt;/h2&gt;
&lt;p&gt;يدعم بروتوكول مضيف الوكيل الآن الوكلاء الفرعيين. يمكن للوكيل تشغيل وكلاء أخرى للتعامل مع أجزاء من مهمة ما. فكّر في الأمر كتفويض — الوكيل الرئيسي ينسّق، والوكلاء المتخصصة تتولى الأجزاء.&lt;/p&gt;
&lt;p&gt;هذا في مرحلة مبكرة، لكن الإمكانات لسير عمل .NET واضحة. تخيّل وكيلاً يتعامل مع ترحيلات EF Core بينما يُعدّ آخر اختبارات التكامل. لم نصل بالكامل إلى هناك بعد، لكن وصول دعم البروتوكول الآن يعني أن الأدوات ستتبع بسرعة.&lt;/p&gt;
&lt;h2 id="مخرجات-الطرفية-تدرج-تلقائيا-عندما-يرسل-الوكلاء-مدخلات"&gt;مخرجات الطرفية تُدرج تلقائياً عندما يرسل الوكلاء مدخلات&lt;/h2&gt;
&lt;p&gt;أمر بسيط لكن ذو معنى. عندما يرسل الوكيل مدخلات إلى الطرفية، تُدرج مخرجات الطرفية الآن تلقائياً في السياق. في السابق، كان الوكيل يحتاج إلى دورة إضافية فقط لقراءة ما حدث.&lt;/p&gt;
&lt;p&gt;إذا سبق لك مشاهدة وكيل يشغّل &lt;code&gt;dotnet build&lt;/code&gt; ويفشل، ثم يحتاج إلى جولة انتقالية أخرى فقط لرؤية الخطأ — هذا الاحتكاك اختفى. يرى المخرجات فوراً ويتفاعل معها.&lt;/p&gt;
&lt;h2 id="تطبيق-agents-يحدث-نفسه-على-macos"&gt;تطبيق Agents يُحدّث نفسه على macOS&lt;/h2&gt;
&lt;p&gt;يقوم تطبيق Agents المستقل على macOS الآن بالتحديث الذاتي. لا مزيد من التنزيل اليدوي للإصدارات الجديدة. يبقى محدّثاً تلقائياً.&lt;/p&gt;
&lt;h2 id="الأشياء-الأصغر-التي-تستحق-المعرفة"&gt;الأشياء الأصغر التي تستحق المعرفة&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;التحويم فوق package.json&lt;/strong&gt; يعرض الآن كلاً من الإصدار المثبّت وأحدث إصدار متاح. مفيد إذا كنت تدير أدوات npm إلى جانب مشاريع .NET.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;الصور في تعليقات JSDoc&lt;/strong&gt; تُعرض بشكل صحيح في التحويم والإكمالات.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;جلسات Copilot CLI&lt;/strong&gt; تُشير الآن إلى ما إذا كانت أُنشئت بواسطة VS Code أو خارجياً — مفيد عند القفز بين الطرفيات.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copilot CLI وClaude Code وGemini CLI&lt;/strong&gt; معترف بها كأنواع shell. يعرف المحرر ما تشغّله.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="الخلاصة"&gt;الخلاصة&lt;/h2&gt;
&lt;p&gt;VS Code 1.117 ليس إضافة ميزات مبهرجة. إنه بنية تحتية. عزل Worktree، وأذونات دائمة، وبروتوكولات وكلاء فرعيين — هذه هي اللبنات الأساسية لسير عمل يتولى فيه الوكلاء مهام حقيقية ومتوازية دون المساس بكودك.&lt;/p&gt;
&lt;p&gt;إذا كنت تبني باستخدام .NET ولم تتعمق بعد في سير العمل الآلي، بصراحة، الآن هو الوقت المناسب للبدء.&lt;/p&gt;</content:encoded></item><item><title>Docker Sandbox يسمح لوكلاء Copilot بإعادة هيكلة كودك دون تعريض جهازك للخطر</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/copilot-docker-sandbox-agentic-refactoring/</link><pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/copilot-docker-sandbox-agentic-refactoring/</guid><description>يمنح Docker Sandbox وكلاء GitHub Copilot بيئة microVM آمنة لتنفيذ عمليات إعادة الهيكلة بحرية — دون مطالبات بالإذن، ودون خطر على جهازك المضيف. إليك لماذا يُغير ذلك كل شيء في عمليات تحديث .NET واسعة النطاق.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/copilot-docker-sandbox-agentic-refactoring/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;إذا استخدمت وضع الوكيل في Copilot لأي شيء يتجاوز التعديلات الصغيرة، فأنت تعرف المعاناة. كل كتابة ملف، كل أمر في الطرفية — مطالبة أخرى بالإذن. الآن تخيّل تشغيل ذلك عبر 50 مشروعًا. ليس ممتعًا.&lt;/p&gt;
&lt;p&gt;نشر فريق Azure للتو مقالًا حول &lt;a href="https://devblogs.microsoft.com/all-things-azure/best-of-both-worlds-for-agentic-refactoring-github-copilot-microvms-via-docker-sandbox/"&gt;Docker Sandbox لوكلاء GitHub Copilot&lt;/a&gt;، وصراحةً، هذا أحد أكثر التحسينات العملية في أدوات الوكلاء التي رأيتها. يستخدم microVMs لمنح Copilot بيئة معزولة تمامًا حيث يمكنه العمل بحرية — تثبيت الحزم، وتشغيل عمليات البناء، وتنفيذ الاختبارات — دون لمس جهازك المضيف.&lt;/p&gt;
&lt;h2 id="ما-الذي-يمنحك-إياه-docker-sandbox-فعليا"&gt;ما الذي يمنحك إياه Docker Sandbox فعليًا&lt;/h2&gt;
&lt;p&gt;الفكرة الأساسية بسيطة: تشغيل microVM خفيفة الوزن ببيئة Linux كاملة، ومزامنة مساحة عملك إليها، والسماح لوكيل Copilot بالعمل بحرية بداخلها. عند الانتهاء، تُزامَن التغييرات للخارج.&lt;/p&gt;
&lt;p&gt;إليك ما يجعلها أكثر من مجرد &amp;ldquo;تشغيل الأشياء في حاوية&amp;rdquo;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;مزامنة مساحة العمل ثنائية الاتجاه&lt;/strong&gt; التي تحافظ على المسارات المطلقة. هيكل مشروعك يبدو متطابقًا داخل وضع الحماية. لا أعطال بناء مرتبطة بالمسارات.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker daemon خاص&lt;/strong&gt; يعمل داخل microVM. يمكن للوكيل بناء الحاويات وتشغيلها دون تركيب مقبس Docker الخاص بجهازك المضيف أبدًا. هذا أمر بالغ الأهمية من ناحية الأمان.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;وكلاء تصفية HTTP/HTTPS&lt;/strong&gt; تتحكم في ما يمكن للوكيل الوصول إليه على الشبكة. أنت تحدد السجلات ونقاط النهاية المسموح بها. هجمات سلسلة التوريد من &lt;code&gt;npm install&lt;/code&gt; مارق داخل وضع الحماية؟ محجوبة.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;وضع YOLO&lt;/strong&gt; — نعم، هذا ما يسمونه. يعمل الوكيل دون مطالبات بالإذن لأنه حرفيًا لا يستطيع إلحاق الضرر بجهازك المضيف. كل إجراء تدميري محصور.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="لماذا-يجب-أن-يهتم-مطورو-net"&gt;لماذا يجب أن يهتم مطورو .NET&lt;/h2&gt;
&lt;p&gt;فكّر في أعمال التحديث التي تواجهها كثير من الفرق الآن. لديك حل .NET Framework يضم 30 مشروعًا، وتحتاج إلى نقله إلى .NET 9. هذا مئات من تغييرات الملفات — ملفات المشاريع، وتحديثات مساحات الأسماء، واستبدالات الـ API، وترحيلات NuGet.&lt;/p&gt;
&lt;p&gt;مع Docker Sandbox، يمكنك توجيه وكيل Copilot نحو مشروع، والسماح له بإعادة الهيكلة بحرية داخل microVM، وتشغيل &lt;code&gt;dotnet build&lt;/code&gt; و&lt;code&gt;dotnet test&lt;/code&gt; للتحقق، وقبول التغييرات التي تعمل فعليًا فحسب. لا خطر في تدمير بيئة التطوير المحلية لديك أثناء التجريب.&lt;/p&gt;
&lt;p&gt;يصف المقال أيضًا تشغيل &lt;strong&gt;أسطول من الوكلاء المتوازيين&lt;/strong&gt; — كل منهم في وضع الحماية الخاص به — للتعامل مع مشاريع مختلفة في آنٍ واحد. بالنسبة لحلول .NET الكبيرة أو معماريات الخدمات المصغّرة، هذا توفير هائل للوقت. وكيل واحد لكل خدمة، جميعهم يعملون بعزل، وجميعهم يُتحقق منهم بشكل مستقل.&lt;/p&gt;
&lt;h2 id="زاوية-الأمان-مهمة"&gt;زاوية الأمان مهمة&lt;/h2&gt;
&lt;p&gt;إليك الأمر الذي يتخطاه معظم الناس: حين تسمح لوكيل ذكاء اصطناعي بتنفيذ أوامر اعتباطية، فأنت تثق به بجهازك بالكامل. يعكس Docker Sandbox هذا النموذج. يحصل الوكيل على استقلالية كاملة داخل بيئة قابلة للرمي. يضمن وكيل الشبكة أنه لا يسحب إلا من المصادر المعتمدة. يظل نظام ملفاتك المضيف وDocker daemon وبيانات اعتمادك بمنأى عن اللمس.&lt;/p&gt;
&lt;p&gt;بالنسبة للفرق التي لديها متطلبات امتثال — وهذا ينطبق على معظم بيئات .NET المؤسسية — هذا هو الفرق بين &amp;ldquo;لا يمكننا استخدام الذكاء الاصطناعي الوكيل&amp;rdquo; و&amp;quot;يمكننا تبنّيه بأمان.&amp;quot;&lt;/p&gt;
&lt;h2 id="الخلاصة"&gt;الخلاصة&lt;/h2&gt;
&lt;p&gt;يحل Docker Sandbox التوتر الجوهري في برمجة الوكلاء: الوكلاء يحتاجون إلى حرية ليكونوا مفيدين، لكن الحرية على جهازك المضيف خطيرة. تمنحك microVMs الأمرين معًا. إذا كنت تخطط لأي عملية إعادة هيكلة أو تحديث .NET واسعة النطاق، فهذا يستحق الإعداد الآن. إن الجمع بين ذكاء الكود في Copilot وبيئة تنفيذ آمنة هو بالضبط ما كانت فرق الإنتاج تنتظره.&lt;/p&gt;</content:encoded></item><item><title>توقف عن حراسة طرفيتك: الوضع المنفصل في Aspire يغير سير العمل</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/</link><pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/</guid><description>يتيح لك Aspire 13.2 تشغيل AppHost في الخلفية واسترداد طرفيتك. مقرون بأوامر CLI الجديدة ودعم الوكلاء، هذا أمر أكبر مما يبدو.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;في كل مرة تشغّل فيها Aspire AppHost، تختفي طرفيتك. مقفلة. مشغولة حتى Ctrl+C. تريد تشغيل أمر سريع؟ افتح تبويبًا جديدًا. تريد التحقق من السجلات؟ تبويب آخر. هذا الاحتكاك الصغير يتراكم بسرعة.&lt;/p&gt;
&lt;p&gt;يحل Aspire 13.2 هذا. كتب James Newton-King &lt;a href="https://devblogs.microsoft.com/aspire/aspire-detached-mode-and-process-management/"&gt;تفاصيل كاملة&lt;/a&gt;، وبصراحة، هذه إحدى تلك الميزات التي تُغيّر طريقة عملك فوراً.&lt;/p&gt;
&lt;h2 id="الوضع-المنفصل-أمر-واحد-الطرفية-تعود"&gt;الوضع المنفصل: أمر واحد، الطرفية تعود&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;هذا اختصار لـ &lt;code&gt;aspire run --detach&lt;/code&gt;. يعمل AppHost الخاص بك في الخلفية وتستعيد طرفيتك فوراً.&lt;/p&gt;
&lt;h2 id="إدارة-ما-يعمل"&gt;إدارة ما يعمل&lt;/h2&gt;
&lt;p&gt;التشغيل في الخلفية مفيد فقط إذا كنت تستطيع إدارة ما هو جارٍ. يأتي Aspire 13.2 بمجموعة كاملة من أوامر CLI:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# قائمة جميع AppHost العاملة&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire ps
&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="c1"&gt;# فحص حالة AppHost محدد&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire describe
&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="c1"&gt;# بث السجلات من AppHost العامل&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire logs
&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="c1"&gt;# إيقاف AppHost محدد&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire stop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="دمجه-مع-الوضع-المعزول"&gt;دمجه مع الوضع المعزول&lt;/h2&gt;
&lt;p&gt;الوضع المنفصل يتزاوج طبيعياً مع الوضع المعزول:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire start --isolated
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire start --isolated
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;كل مثيل يحصل على منافذ عشوائية وأسرار منفصلة ودورة حياة خاصة به.&lt;/p&gt;
&lt;h2 id="لماذا-هذا-ضخم-لوكلاء-البرمجة"&gt;لماذا هذا ضخم لوكلاء البرمجة&lt;/h2&gt;
&lt;p&gt;وكيل البرمجة الذي يعمل في طرفيتك يمكنه الآن:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;تشغيل التطبيق بـ &lt;code&gt;aspire start&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;الاستعلام عن حالته بـ &lt;code&gt;aspire describe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;التحقق من السجلات بـ &lt;code&gt;aspire logs&lt;/code&gt; لتشخيص المشكلات&lt;/li&gt;
&lt;li&gt;إيقافه بـ &lt;code&gt;aspire stop&lt;/code&gt; عند الانتهاء&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;تشغيل &lt;code&gt;aspire agent init&lt;/code&gt; يهيّئ ملف مهارات Aspire الذي يعلّم الوكلاء هذه الأوامر.&lt;/p&gt;
&lt;h2 id="خلاصة"&gt;خلاصة&lt;/h2&gt;
&lt;p&gt;الوضع المنفصل هو ترقية لسير العمل متنكرة كعلامة بسيطة. اقرأ &lt;a href="https://devblogs.microsoft.com/aspire/aspire-detached-mode-and-process-management/"&gt;المقال كاملاً&lt;/a&gt; واحصل على Aspire 13.2 مع &lt;code&gt;aspire update --self&lt;/code&gt;.&lt;/p&gt;</content:encoded></item><item><title>أدوات Azure MCP مدمجة الآن في Visual Studio 2022 — لا حاجة إلى امتداد</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/azure-mcp-tools-built-into-visual-studio-2022/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/azure-mcp-tools-built-into-visual-studio-2022/</guid><description>تُشحن أدوات Azure MCP كجزء من حمل عمل تطوير Azure في Visual Studio 2022. أكثر من 230 أداة، و45 خدمة Azure، وصفر امتدادات للتثبيت.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/azure-mcp-tools-built-into-visual-studio-2022/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;إذا كنت تستخدم أدوات Azure MCP في Visual Studio من خلال الامتداد المنفصل، فأنت تعرف العملية — تثبيت VSIX، إعادة التشغيل، والأمل ألا ينكسر، وإدارة تعارضات الإصدارات. لقد اختفى هذا الاحتكاك.&lt;/p&gt;
&lt;p&gt;أعلنت Yun Jung Choi &lt;a href="https://devblogs.microsoft.com/visualstudio/azure-mcp-tools-now-ship-built-into-visual-studio-2022-no-extension-required/"&gt;أن أدوات Azure MCP تُشحن الآن مباشرةً&lt;/a&gt; كجزء من حمل عمل تطوير Azure في Visual Studio 2022. بدون امتداد. بدون VSIX. بدون رقصة إعادة التشغيل.&lt;/p&gt;
&lt;h2 id="ما-الذي-يعنيه-هذا-فعلا"&gt;ما الذي يعنيه هذا فعلاً&lt;/h2&gt;
&lt;p&gt;ابتداءً من Visual Studio 2022 الإصدار 17.14.30، يأتي Azure MCP Server مجمّعاً مع حمل عمل تطوير Azure. إذا كان حمل العمل هذا مثبتاً بالفعل، فتحتاج فقط إلى تفعيله في GitHub Copilot Chat وستنتهي.&lt;/p&gt;
&lt;p&gt;أكثر من 230 أداة عبر 45 خدمة Azure — متاحة مباشرةً من نافذة الدردشة. سرّد حسابات التخزين لديك، انشر تطبيق ASP.NET Core، شخّص مشاكل App Service، استعلم Log Analytics — كل ذلك دون فتح أي علامة تبويب في المتصفح.&lt;/p&gt;
&lt;h2 id="لماذا-هذا-أهم-مما-يبدو"&gt;لماذا هذا أهم مما يبدو&lt;/h2&gt;
&lt;p&gt;إليك الأمر في أدوات المطورين: كل خطوة إضافية هي احتكاك، والاحتكاك يقتل الاستخدام. وجود MCP كامتداد منفصل كان يعني تعارض الإصدارات وفشل التثبيت وشيء آخر لتبقيه محدثاً. إدماجه في نظام حمل العمل يعني:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;مسار تحديث واحد&lt;/strong&gt; عبر Visual Studio Installer&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;لا انجراف في الإصدارات&lt;/strong&gt; بين الامتداد وبيئة التطوير المتكاملة&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;دائماً حديث&lt;/strong&gt; — يتحدث MCP Server مع إصدارات VS المنتظمة&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;بالنسبة للفرق التي تعتمد معياراً على Azure، هذا أمر مهم. تثبّت حمل العمل مرة واحدة، تفعّل الأدوات، وتكون موجودة في كل جلسة.&lt;/p&gt;
&lt;h2 id="ما-الذي-يمكنك-فعله-به"&gt;ما الذي يمكنك فعله به&lt;/h2&gt;
&lt;p&gt;تغطي الأدوات دورة التطوير الكاملة من خلال Copilot Chat:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;التعلم&lt;/strong&gt; — اسأل عن خدمات Azure وأفضل الممارسات وأنماط البنية&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;li&gt;&lt;strong&gt;استكشاف الأخطاء&lt;/strong&gt; — استعلم السجلات وتحقق من صحة الموارد وشخّص مشاكل الإنتاج&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;مثال سريع — اكتب هذا في Copilot Chat:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;List my storage accounts in my current subscription.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;يستدعي Copilot أدوات Azure MCP في الخلفية، ويستعلم اشتراكاتك، ويعيد قائمة منسقة بالأسماء والمواقع وحيازات SKU. لا حاجة إلى البوابة الإلكترونية.&lt;/p&gt;
&lt;h2 id="كيفية-التفعيل"&gt;كيفية التفعيل&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;حدّث إلى Visual Studio 2022 &lt;strong&gt;17.14.30&lt;/strong&gt; أو أحدث&lt;/li&gt;
&lt;li&gt;تأكد من تثبيت حمل عمل &lt;strong&gt;Azure development&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;افتح GitHub Copilot Chat&lt;/li&gt;
&lt;li&gt;انقر على زر &lt;strong&gt;Select tools&lt;/strong&gt; (أيقونة المفكَّين)&lt;/li&gt;
&lt;li&gt;فعّل &lt;strong&gt;Azure MCP Server&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;هذا كل شيء. يبقى مفعّلاً عبر الجلسات.&lt;/p&gt;
&lt;h2 id="تحفظ-واحد"&gt;تحفظ واحد&lt;/h2&gt;
&lt;p&gt;الأدوات معطلة افتراضياً — تحتاج إلى الاشتراك الصريح. والأدوات الخاصة بـ VS 2026 غير متاحة في VS 2022. كما يعتمد توافر الأدوات على أذونات اشتراك Azure لديك، تماماً كما في البوابة الإلكترونية.&lt;/p&gt;
&lt;h2 id="الصورة-الأكبر"&gt;الصورة الأكبر&lt;/h2&gt;
&lt;p&gt;هذا جزء من اتجاه واضح: يصبح MCP الطريقة المعيارية لعرض أدوات السحابة في بيئات تطوير المطورين. رأينا بالفعل &lt;a href="https://devblogs.microsoft.com/azure-sdk/announcing-azure-mcp-server-2-0-stable-release/"&gt;إصدار Azure MCP Server 2.0 المستقر&lt;/a&gt; وتكاملات MCP عبر VS Code والمحررات الأخرى. دمجه في نظام حمل العمل في Visual Studio هو التطور الطبيعي.&lt;/p&gt;
&lt;p&gt;بالنسبة لنا كمطوري .NET الذين يعيشون داخل Visual Studio، يزيل هذا سبباً آخر للتحول إلى بوابة Azure. وبصراحة، كلما قل التبديل بين علامات التبويب، كان ذلك أفضل.&lt;/p&gt;</content:encoded></item><item><title>azd update — أمر واحد يتحكّم في جميع مديري الحزم</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/azd-update-universal-upgrade-command/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/azd-update-universal-upgrade-command/</guid><description>يمتلك Azure Developer CLI الآن أمر تحديث عالمياً يعمل بصرف النظر عن طريقة التثبيت — winget أو Homebrew أو Chocolatey أو سكريبت التثبيت.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/azd-update-universal-upgrade-command/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;هل تعرف رسالة &amp;ldquo;إصدار جديد من azd متاح&amp;rdquo; التي تظهر كل أسابيع قليلة؟ تلك التي تتجاهلها لأنك لا تتذكر إن كنت قد ثبّتت &lt;code&gt;azd&lt;/code&gt; عبر winget أو Homebrew أو ذلك السكريبت curl الذي شغّلته قبل ستة أشهر؟ نعم، تمّ حلّ هذا الأمر أخيراً.&lt;/p&gt;
&lt;p&gt;شحنت Microsoft للتو &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-update/"&gt;&lt;code&gt;azd update&lt;/code&gt;&lt;/a&gt; — أمر واحد يُحدّث Azure Developer CLI إلى أحدث إصدار بصرف النظر عن طريقة تثبيتك الأصلية. Windows، macOS، Linux — لا يهم. أمر واحد.&lt;/p&gt;
&lt;h2 id="كيف-يعمل"&gt;كيف يعمل&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;هذا كل شيء. إن أردت الوصول المبكر إلى الميزات الجديدة، يمكنك التبديل إلى بناء الـ insiders اليومي:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd update --channel daily
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd update --channel stable
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;يكتشف الأمر طريقة التثبيت الحالية لديك ويستخدم آلية التحديث المناسبة داخلياً. لا مزيد من &amp;ldquo;انتظر، هل استخدمت winget أم choco على هذا الجهاز؟&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="التحفظ-الصغير"&gt;التحفّظ الصغير&lt;/h2&gt;
&lt;p&gt;يأتي &lt;code&gt;azd update&lt;/code&gt; ابتداءً من الإصدار 1.23.x. إن كنت على إصدار أقدم، ستحتاج إلى إجراء تحديث يدوي أخير باستخدام طريقة تثبيتك الأصلية. بعد ذلك، &lt;code&gt;azd update&lt;/code&gt; يتولى كل شيء من الآن فصاعداً.&lt;/p&gt;
&lt;p&gt;تحقق من إصدارك الحالي بـ &lt;code&gt;azd version&lt;/code&gt;. إن احتجت تثبيتاً جديداً، &lt;a href="https://learn.microsoft.com/azure/developer/azure-developer-cli/install-azd"&gt;وثائق التثبيت&lt;/a&gt; ستُرشدك.&lt;/p&gt;
&lt;h2 id="لماذا-هذا-مهم"&gt;لماذا هذا مهم&lt;/h2&gt;
&lt;p&gt;هذا تحسين صغير لجودة الحياة، لكن بالنسبة لأولئك منّا الذين يستخدمون &lt;code&gt;azd&lt;/code&gt; يومياً لنشر وكلاء الذكاء الاصطناعي وتطبيقات Aspire إلى Azure، البقاء محدّثاً يعني حالات أقل من &amp;ldquo;هذه الخطأ تمّ إصلاحها بالفعل في الإصدار الأخير&amp;rdquo;. شيء واحد أقل يجب التفكير فيه.&lt;/p&gt;
&lt;p&gt;اقرأ &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-update/"&gt;الإعلان الكامل&lt;/a&gt; والغوص العميق لـ Jon Gallant &lt;a href="https://blog.jongallant.com/2026/04/azd-update"&gt;هنا&lt;/a&gt; لمزيد من السياق.&lt;/p&gt;</content:encoded></item><item><title>.NET Aspire 13.2 يريد أن يكون أفضل صديق لوكيل الذكاء الاصطناعي</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/</guid><description>يُركّز Aspire 13.2 كلياً على التطوير الوكيلي — مخرجات CLI منظّمة، وتشغيل معزول، وبيئات ذاتية الإصلاح، وبيانات OpenTelemetry كاملة حتى تتمكن وكلاء الذكاء الاصطناعي من بناء تطبيقاتك وتشغيلها ومراقبتها فعلاً.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;هل تعرف تلك اللحظة التي يكتب فيها وكيل البرمجة بالذكاء الاصطناعي كوداً رائعاً فتشعر بالحماس، ثم ينهار كل شيء عند محاولة &lt;em&gt;تشغيله&lt;/em&gt; فعلياً؟ تعارضات في المنافذ، وعمليات وهمية، ومتغيرات بيئة خاطئة — وفجأة يُنفق الوكيل رصيده من التوكن في استكشاف مشكلات الإطلاق عوضاً عن بناء الميزات.&lt;/p&gt;
&lt;p&gt;نشر فريق Aspire للتو &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;منشوراً متأنياً للغاية&lt;/a&gt; حول هذه المشكلة بالضبط، وإجابتهم مقنعة: صُمِّم Aspire 13.2 ليس للبشر وحدهم، بل لوكلاء الذكاء الاصطناعي أيضاً.&lt;/p&gt;
&lt;h2 id="المشكلة-حقيقية"&gt;المشكلة حقيقية&lt;/h2&gt;
&lt;p&gt;وكلاء الذكاء الاصطناعي بارعون بشكل لافت في كتابة الكود. لكن شحن تطبيق متكامل يعمل بشكل صحيح يتطلب أكثر بكثير من مجرد توليد ملفات. تحتاج إلى تشغيل الخدمات بالترتيب الصحيح، وإدارة المنافذ، وضبط متغيرات البيئة، وتوصيل قواعد البيانات، والحصول على تغذية راجعة حين تسوء الأمور. في الوقت الراهن، تتعامل معظم الوكلاء مع كل هذا بأسلوب التجربة والخطأ — تشغيل الأوامر، وقراءة مخرجات الأخطاء، والمحاولة مجدداً.&lt;/p&gt;
&lt;p&gt;نضيف تعليمات Markdown ومهارات مخصصة وإرشادات محددة لتوجيهها، غير أن كل ذلك غير موثوق، ولا يمكن تصريفه، ويكلف رصيداً من التوكن لمجرد تحليله. أصاب فريق Aspire جوهر المسألة: تحتاج الوكلاء إلى &lt;strong&gt;مصرِّفات وواجهات برمجية منظّمة&lt;/strong&gt;، لا إلى مزيد من Markdown.&lt;/p&gt;
&lt;h2 id="aspire-بوصفه-بنية-تحتية-للوكلاء"&gt;Aspire بوصفه بنية تحتية للوكلاء&lt;/h2&gt;
&lt;p&gt;إليك ما يُقدّمه Aspire 13.2 في مجال التطوير الوكيلي:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;مكدّسك البرمجي بالكامل في كود موجَّه بالأنواع.&lt;/strong&gt; يُعرِّف AppHost طوبولوجيا تطبيقك الكاملة — واجهة برمجية، وواجهة أمامية، وقاعدة بيانات، وذاكرة تخزين مؤقت — في TypeScript أو C# قابل للتصريف:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createBuilder&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="kr"&gt;from&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;./.modules/aspire.js&amp;#39;&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="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;createBuilder&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="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;postgres&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addPostgres&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;pg&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;addDatabase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;catalog&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="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cache&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addRedis&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;cache&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="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;api&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&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="nx"&gt;addNodeApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;api&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;./api&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;src/index.ts&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="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;withHttpEndpoint&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;PORT&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="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;withReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;postgres&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="nx"&gt;withReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cache&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="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&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="nx"&gt;addViteApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;frontend&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;./frontend&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="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;withReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;api&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="nx"&gt;waitFor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;api&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="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;build&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;run&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;يستطيع الوكيل قراءة هذا الكود لفهم طوبولوجيا التطبيق، وإضافة موارد، وتوصيل الاتصالات، ثم &lt;em&gt;التصريف للتحقق&lt;/em&gt;. يخبره المصرِّف على الفور إن كان ثمة خطأ. لا تخمين، ولا تجربة وخطأ مع ملفات الإعداد.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;أمر واحد يتحكم في الجميع.&lt;/strong&gt; بدلاً من إدارة الوكيل لـ &lt;code&gt;docker compose up&lt;/code&gt; و&lt;code&gt;npm run dev&lt;/code&gt; وسكريبتات تشغيل قاعدة البيانات بشكل منفصل، كل شيء يكون ببساطة &lt;code&gt;aspire start&lt;/code&gt;. تنطلق جميع الموارد بالترتيب الصحيح، على المنافذ الصحيحة، بالإعداد الصحيح. العمليات طويلة الأمد لن تعلّق الوكيل أيضاً — Aspire يتولى إدارتها.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;الوضع المعزول للوكلاء المتوازية.&lt;/strong&gt; مع &lt;code&gt;--isolated&lt;/code&gt;، تحصل كل عملية تشغيل في Aspire على منافذ عشوائية خاصة بها وأسرار مستخدم منفصلة. هل لديك عدة وكلاء تعمل عبر worktrees مختلفة في Git؟ لن تتعارض. هذا أمر بالغ الأهمية لأدوات مثل وكلاء الخلفية في VS Code التي تُطلق بيئات متوازية.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;عيون الوكيل من خلال التتبع التشخيصي.&lt;/strong&gt; هنا يصبح الأمر قوياً حقاً. تكشف واجهة Aspire CLI عن بيانات OpenTelemetry كاملة أثناء التطوير — التتبعات، والمقاييس، والسجلات المنظّمة. لا يقتصر الوكيل على قراءة مخرجات وحدة التحكم وتأمّل الخير. يستطيع تتبّع طلب فاشل عبر الخدمات، وتحديد نقاط الاختناق في النقاط الطرفية البطيئة، وتحديد موضع الخلل بدقة. هذه إمكانية مراقبة بجودة الإنتاج في حلقة التطوير.&lt;/p&gt;
&lt;h2 id="تشبيه-حواجز-مضمار-البولينغ"&gt;تشبيه حواجز مضمار البولينغ&lt;/h2&gt;
&lt;p&gt;يستخدم فريق Aspire تشبيهاً رائعاً: فكّر في Aspire بوصفه حواجز مضمار البولينغ لوكلاء الذكاء الاصطناعي. إن لم يكن الوكيل مثالياً — وهو لن يكون — فالحواجز تمنعه من الانحراف نحو الحواف. تعريف المكدّس يمنع سوء الإعداد، والمصرِّف يلتقط الأخطاء، وواجهة CLI تتولى إدارة العمليات، والتتبع التشخيصي يُوفّر حلقة التغذية الراجعة.&lt;/p&gt;
&lt;p&gt;اقرن هذا بشيء مثل Playwright CLI، وسيتمكن وكيلك من &lt;em&gt;استخدام&lt;/em&gt; تطبيقك فعلاً — النقر خلال مسارات التدفق، وفحص DOM، ورؤية المشكلات في بيانات التتبع، وإصلاح الكود، وإعادة التشغيل، والاختبار مجدداً. بناء، تشغيل، مراقبة، إصلاح. هذه هي حلقة التطوير الذاتي التي كنا نسعى إليها.&lt;/p&gt;
&lt;h2 id="البدء"&gt;البدء&lt;/h2&gt;
&lt;p&gt;جديد على Aspire؟ ثبِّت واجهة CLI من &lt;a href="https://get.aspire.dev"&gt;get.aspire.dev&lt;/a&gt; واتبع &lt;a href="https://aspire.dev/get-started/first-app"&gt;دليل البدء السريع&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;تستخدم Aspire بالفعل؟ شغِّل &lt;code&gt;aspire update --self&lt;/code&gt; للحصول على الإصدار 13.2، ثم وجِّه وكيل البرمجة المفضّل لديك نحو مستودعك. قد تتفاجأ بمدى تقدّمه مع الحواجز الواقية التي يُوفّرها Aspire.&lt;/p&gt;
&lt;h2 id="خلاصة-القول"&gt;خلاصة القول&lt;/h2&gt;
&lt;p&gt;لم يعد Aspire 13.2 مجرد إطار للتطبيقات الموزّعة — إنه يتحوّل إلى بنية تحتية أساسية للوكلاء. تعريفات المكدّس المنظّمة، والإطلاق بأمر واحد، والتشغيل المتوازي المعزول، وبيانات التتبع التشخيصي في الوقت الفعلي، كل ذلك يمنح وكلاء الذكاء الاصطناعي تحديداً ما يحتاجونه للانتقال من كتابة الكود إلى شحن التطبيقات.&lt;/p&gt;
&lt;p&gt;اقرأ &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;المنشور الكامل&lt;/a&gt; من فريق Aspire للاطلاع على كل التفاصيل ومقاطع الفيديو التوضيحية.&lt;/p&gt;</content:encoded></item><item><title>VS Code 1.116 — تطبيق Agents يحصل على التنقل بلوحة المفاتيح وإكمالات سياق الملفات</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/vscode-1-116-agents-app-updates/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/vscode-1-116-agents-app-updates/</guid><description>يركّز VS Code 1.116 على صقل تطبيق Agents — اختصارات لوحة مفاتيح مخصصة، وتحسينات إمكانية الوصول، وإكمالات سياق الملفات، وحل روابط CSS @import.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/vscode-1-116-agents-app-updates/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;VS Code 1.116 هو إصدار أبريل 2026، وبينما يكون أخف من بعض التحديثات الأخيرة، فإن التغييرات مركّزة وذات معنى — خاصةً إذا كنت تستخدم تطبيق Agents يومياً.&lt;/p&gt;
&lt;p&gt;إليك ما وصل، استناداً إلى &lt;a href="https://code.visualstudio.com/updates/v1_116"&gt;ملاحظات الإصدار الرسمية&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="تحسينات-تطبيق-agents"&gt;تحسينات تطبيق Agents&lt;/h2&gt;
&lt;p&gt;يستمر تطبيق Agents في النضج مع صقل لقابلية الاستخدام يُحدث فارقاً حقيقياً في سير العمل اليومي:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;اختصارات لوحة مفاتيح مخصصة&lt;/strong&gt; — يمكنك الآن التركيز على عرض Changes، وشجرة الملفات داخل Changes، وعرض Chat Customizations باستخدام أوامر واختصارات لوحة مفاتيح مخصصة. إذا كنت تنقر في تطبيق Agents للتنقل بين العناصر، فهذا يجلب سير عمل كامل بلوحة المفاتيح.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;مربع حوار المساعدة لإمكانية الوصول&lt;/strong&gt; — يؤدي الضغط على &lt;code&gt;Alt+F1&lt;/code&gt; في مربع إدخال المحادثة الآن إلى فتح مربع حوار مساعدة يُظهر الأوامر المتاحة واختصارات لوحة المفاتيح. يمكن لمستخدمي قارئات الشاشة أيضاً التحكم في مستوى التفصيل في الإعلانات. إمكانية الوصول الجيدة تفيد الجميع.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;إكمالات سياق الملفات&lt;/strong&gt; — اكتب &lt;code&gt;#&lt;/code&gt; في محادثة تطبيق Agents لتشغيل إكمالات سياق الملفات المحدودة بمساحة عملك الحالية. هذا أحد تلك التحسينات الصغيرة لجودة الحياة التي تُسرّع كل تفاعل — لا مزيد من كتابة مسارات الملفات الكاملة عند الإشارة إلى الكود.&lt;/p&gt;
&lt;h2 id="حل-روابط-css-import"&gt;حل روابط CSS &lt;code&gt;@import&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;ميزة لطيفة لمطوري الواجهة الأمامية: يحل VS Code الآن مراجع CSS &lt;code&gt;@import&lt;/code&gt; التي تستخدم مسارات node_modules. يمكنك &lt;code&gt;Ctrl+النقر&lt;/code&gt; خلال عمليات الاستيراد مثل &lt;code&gt;@import &amp;quot;some-module/style.css&amp;quot;&lt;/code&gt; عند استخدام المُجمِّعات. بسيطة لكنها تُزيل نقطة احتكاك في سير عمل CSS.&lt;/p&gt;
&lt;h2 id="خلاصة-القول"&gt;خلاصة القول&lt;/h2&gt;
&lt;p&gt;VS Code 1.116 يدور حول الصقل — يجعل تطبيق Agents أكثر قابلية للتنقل وأسهل في الوصول وأكثر ملاءمة للوحة المفاتيح. إذا كنت تقضي وقتاً كبيراً في تطبيق Agents (وأظن أن كثيراً منا يفعل)، فإن هذه التغييرات تتراكم لتُحسّن تجربتك.&lt;/p&gt;
&lt;p&gt;اطلع على &lt;a href="https://code.visualstudio.com/updates/v1_116"&gt;ملاحظات الإصدار الكاملة&lt;/a&gt; للقائمة الشاملة.&lt;/p&gt;</content:encoded></item><item><title>إعداد النوافذ العائمة في Visual Studio الذي لم تكن تعرفه (لكنك يجب أن تعرفه)</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/visual-studio-floating-windows-powertoys/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/visual-studio-floating-windows-powertoys/</guid><description>إعداد خفي في Visual Studio يمنحك تحكماً كاملاً في النوافذ العائمة — إدخالات مستقلة في شريط المهام، وسلوك صحيح مع الشاشات المتعددة، وتكامل مثالي مع FancyZones. قائمة منسدلة واحدة تغير كل شيء.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/visual-studio-floating-windows-powertoys/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;إذا كنت تستخدم شاشات متعددة مع Visual Studio (وصراحةً، من لا يفعل ذلك في هذه الأيام)، فقد اختبرت على الأرجح هذا الإزعاج: نوافذ الأدوات العائمة تختفي عند تصغير بيئة التطوير الرئيسية، وتظل دائماً فوق كل شيء آخر، ولا تظهر كأزرار منفصلة في شريط المهام. يناسب هذا بعض سير العمل، لكنه محبط مع إعدادات الشاشات المتعددة.&lt;/p&gt;
&lt;p&gt;شارك Mads Kristensen من فريق Visual Studio &lt;a href="https://devblogs.microsoft.com/visualstudio/take-full-control-of-your-floating-windows-in-visual-studio/"&gt;إعداداً غير معروف&lt;/a&gt; يغير كلياً طريقة تصرف النوافذ العائمة. قائمة منسدلة واحدة. هذا كل شيء.&lt;/p&gt;
&lt;h2 id="الإعداد"&gt;الإعداد&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Tools &amp;gt; Options &amp;gt; Environment &amp;gt; Windows &amp;gt; Floating Windows&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;تحتوي القائمة المنسدلة &amp;ldquo;These floating windows are owned by the main window&amp;rdquo; على ثلاثة خيارات:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;None&lt;/strong&gt; — استقلالية كاملة. كل نافذة عائمة تحصل على إدخالها الخاص في شريط المهام وتتصرف كنافذة Windows عادية.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tool Windows&lt;/strong&gt; (الافتراضي) — تطفو المستندات بحرية، وتظل نوافذ الأدوات مرتبطة ببيئة التطوير.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documents and Tool Windows&lt;/strong&gt; — السلوك الكلاسيكي لـ Visual Studio، كل شيء مرتبط بالنافذة الرئيسية.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="لماذا-يعد-none-الخيار-الأمثل-مع-الشاشات-المتعددة"&gt;لماذا يُعدّ &amp;ldquo;None&amp;rdquo; الخيار الأمثل مع الشاشات المتعددة&lt;/h2&gt;
&lt;p&gt;اضبطه على &lt;strong&gt;None&lt;/strong&gt; وستتصرف جميع نوافذ الأدوات العائمة والمستندات فجأة كتطبيقات Windows حقيقية. تظهر في شريط المهام، وتبقى مرئية عند تصغير نافذة Visual Studio الرئيسية، وتتوقف عن إجبار نفسها إلى مقدمة كل شيء.&lt;/p&gt;
&lt;p&gt;ادمج هذا مع &lt;strong&gt;PowerToys FancyZones&lt;/strong&gt; ويصبح الأمر مغيّراً لقواعد اللعبة. أنشئ تخطيطات مخصصة عبر شاشاتك، وثبّت Solution Explorer في منطقة، ومنقّح الأخطاء في أخرى، وملفات الكود أينما تريد. كل شيء يبقى في مكانه، وكل شيء يمكن الوصول إليه باستقلالية، ويشعر مساحة عملك بالتنظيم بدلاً من الفوضى.&lt;/p&gt;
&lt;h2 id="توصيات-سريعة"&gt;توصيات سريعة&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;مستخدمو الشاشات المتعددة&lt;/strong&gt;: اضبط على &lt;strong&gt;None&lt;/strong&gt;، وادمجه مع FancyZones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;المستخدمون العرضيون للنوافذ العائمة&lt;/strong&gt;: &lt;strong&gt;Tool Windows&lt;/strong&gt; (الافتراضي) خيار وسط جيد&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;سير العمل التقليدي&lt;/strong&gt;: &lt;strong&gt;Documents and Tool Windows&lt;/strong&gt; يحافظ على كل شيء كلاسيكياً&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;نصيحة احترافية: &lt;strong&gt;Ctrl + نقر مزدوج&lt;/strong&gt; على شريط عنوان أي نافذة أداة لتعويمها أو إرسائها فوراً. لا يلزم إعادة تشغيل بعد تغيير الإعداد.&lt;/p&gt;
&lt;h2 id="خلاصة-القول"&gt;خلاصة القول&lt;/h2&gt;
&lt;p&gt;إنه أحد تلك الإعدادات التي تجعلك تفكر &amp;ldquo;لا أصدق أنني لم أكن أعرف عن هذا&amp;rdquo;. إذا كانت النوافذ العائمة في Visual Studio قد أزعجتك يوماً، فاذهب وغيّر هذا الإعداد الآن.&lt;/p&gt;
&lt;p&gt;اقرأ &lt;a href="https://devblogs.microsoft.com/visualstudio/take-full-control-of-your-floating-windows-in-visual-studio/"&gt;المقال الكامل&lt;/a&gt; للتفاصيل ولقطات الشاشة.&lt;/p&gt;</content:encoded></item><item><title>الوضع المعزول في Aspire يحلّ كابوس تعارض المنافذ في التطوير المتوازي</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/</guid><description>يُقدّم Aspire 13.2 وضع --isolated: منافذ عشوائية، وأسرار منفصلة، وانعدام كامل للتعارضات عند تشغيل نسخ متعددة من AppHost. مثالي للوكلاء والـ worktrees والسير المتوازية.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;إن سبق لك أن حاولت تشغيل نسختين من المشروع ذاته في الوقت نفسه، فأنت تعرف معاناة ذلك. المنفذ 8080 مشغول بالفعل. المنفذ 17370 محجوز. أوقف شيئاً، وأعد التشغيل، وتعامل مع متغيرات البيئة — إنه مُدمِّر للإنتاجية.&lt;/p&gt;
&lt;p&gt;هذه المشكلة تزداد سوءاً لا تحسّناً. وكلاء الذكاء الاصطناعي تُنشئ worktrees في Git للعمل بشكل مستقل. وكلاء الخلفية تُطلق بيئات منفصلة. المطورون يستنسخون المستودع ذاته مرتين لفروع الميزات. كل هذه السيناريوهات تصطدم بالحائط نفسه: نسختان من التطبيق ذاته تتصارعان على المنافذ ذاتها.&lt;/p&gt;
&lt;p&gt;يُعالج Aspire 13.2 هذا بخيار واحد. كتب James Newton-King من فريق Aspire &lt;a href="https://devblogs.microsoft.com/aspire/aspire-isolated-mode-parallel-development/"&gt;التفاصيل الكاملة&lt;/a&gt;، وهي إحدى تلك الميزات التي تجعلك تتساءل &amp;ldquo;لماذا لم يكن هذا موجوداً من قبل؟&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="الحل---isolated"&gt;الحل: &lt;code&gt;--isolated&lt;/code&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire run --isolated
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;هذا كل شيء. تحصل كل عملية تشغيل على:&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; — سلاسل الاتصال ومفاتيح API تبقى منفصلة لكل نسخة&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;لا إعادة تعيين يدوية للمنافذ. لا تعامل مع متغيرات البيئة. تحصل كل عملية تشغيل على بيئة نظيفة خالية من التعارضات تلقائياً.&lt;/p&gt;
&lt;h2 id="سيناريوهات-حقيقية-تبرز-فيها-هذه-الميزة"&gt;سيناريوهات حقيقية تبرز فيها هذه الميزة&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;نسخ متعددة.&lt;/strong&gt; لديك فرع ميزة في دليل ما وإصلاح خطأ في آخر:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# الطرفية 1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/projects/my-app-feature
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire run --isolated
&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="c1"&gt;# الطرفية 2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/projects/my-app-bugfix
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire run --isolated
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;يعمل كلاهما دون تعارضات. تُظهر لوحة التحكم ما يعمل وأين.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;وكلاء الخلفية في VS Code.&lt;/strong&gt; حين ينشئ وكيل الخلفية في Copilot Chat worktree في Git للعمل على كودك بشكل مستقل، قد يحتاج إلى تشغيل AppHost في Aspire. دون &lt;code&gt;--isolated&lt;/code&gt;، سيحدث تعارض في المنافذ مع worktree الرئيسية. معه، تعمل كلتا النسختين ببساطة.&lt;/p&gt;
&lt;p&gt;مهارة Aspire التي تشحن مع &lt;code&gt;aspire agent init&lt;/code&gt; تُوجّه الوكلاء تلقائياً لاستخدام &lt;code&gt;--isolated&lt;/code&gt; عند العمل في worktrees. لذا يجب أن يتعامل وكيل الخلفية في Copilot مع هذا مباشرةً.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;اختبارات التكامل جنباً إلى جنب مع التطوير.&lt;/strong&gt; تحتاج إلى تشغيل الاختبارات مقابل AppHost حيّ أثناء مواصلة بناء الميزات؟ الوضع المعزول يمنح كل سياق منافذه وإعداداته الخاصة.&lt;/p&gt;
&lt;h2 id="كيف-يعمل-داخليا"&gt;كيف يعمل داخلياً&lt;/h2&gt;
&lt;p&gt;حين تُمرّر &lt;code&gt;--isolated&lt;/code&gt;، تُولّد واجهة CLI مُعرِّفاً فريداً للنسخة. يُشغّل هذا سلوكين:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;عشوائية المنافذ&lt;/strong&gt; — بدلاً من الارتباط بمنافذ محددة مسبقاً في إعداد AppHost، يختار الوضع المعزول منافذ عشوائية متاحة لكل شيء — لوحة التحكم، ونقاط نهاية الخدمة، وكل ذلك. يتكيّف اكتشاف الخدمات تلقائياً، فتجد الخدمات بعضها بصرف النظر عن المنافذ المخصصة.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;عزل الأسرار&lt;/strong&gt; — تحصل كل نسخة معزولة على مخزن أسرار مستخدم خاص بها، مُفهرس بالمُعرِّف الفريد للنسخة. سلاسل الاتصال ومفاتيح API من نسخة ما لا تتسرّب إلى أخرى.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;لا يحتاج كودك إلى أي تغييرات. اكتشاف خدمات Aspire يحلّ نقاط النهاية في وقت التشغيل، لذا يتصل كل شيء بشكل صحيح بصرف النظر عن تعيين المنافذ.&lt;/p&gt;
&lt;h2 id="متى-تستخدمه"&gt;متى تستخدمه&lt;/h2&gt;
&lt;p&gt;استخدم &lt;code&gt;--isolated&lt;/code&gt; عند تشغيل نسخ متعددة من AppHost ذاته في الوقت نفسه — سواء كان ذلك تطويراً متوازياً، أو اختبارات آلية، أو وكلاء ذكاء اصطناعي، أو worktrees في Git. للتطوير بنسخة واحدة حيث تفضّل منافذ محددة، يظل &lt;code&gt;aspire run&lt;/code&gt; العادي يعمل بشكل جيد.&lt;/p&gt;
&lt;h2 id="خلاصة-القول"&gt;خلاصة القول&lt;/h2&gt;
&lt;p&gt;الوضع المعزول ميزة صغيرة تحلّ مشكلة حقيقية ومتزايدة الشيوع. مع دفع التطوير بمساعدة الذكاء الاصطناعي نحو سير عمل أكثر توازياً — وكلاء متعددة، وworktrees متعددة، وسياقات متعددة — أصبحت القدرة على تشغيل نسخة أخرى ببساطة دون التصارع على المنافذ أمراً ضرورياً.&lt;/p&gt;
&lt;p&gt;اقرأ &lt;a href="https://devblogs.microsoft.com/aspire/aspire-isolated-mode-parallel-development/"&gt;المنشور الكامل&lt;/a&gt; للاطلاع على جميع التفاصيل التقنية وجرّبه بـ &lt;code&gt;aspire update --self&lt;/code&gt; للحصول على الإصدار 13.2.&lt;/p&gt;</content:encoded></item><item><title>VS Code 1.115 — إشعارات الطرفيات الخلفية، واستضافة وكلاء SSH، والمزيد</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/vscode-1-115-agent-improvements/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/vscode-1-115-agent-improvements/</guid><description>يجلب VS Code 1.115 إشعارات الطرفيات الخلفية للوكلاء، واستضافة وكلاء SSH عن بُعد، ولصق الملفات في الطرفيات، وتتبع التعديلات المرتبط بالجلسات. إليك ما يهم مطوري .NET.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/vscode-1-115-agent-improvements/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;وصل VS Code 1.115 للتو، وبينما يكون إصداراً أخف من حيث الميزات الرئيسية، فإن التحسينات المتعلقة بالوكيل مفيدة حقاً إذا كنت تعمل مع مساعدي الترميز بالذكاء الاصطناعي يومياً.&lt;/p&gt;
&lt;p&gt;دعني أسلط الضوء على ما يستحق المعرفة فعلاً.&lt;/p&gt;
&lt;h2 id="الطرفيات-الخلفية-تبلغ-الوكلاء-الآن"&gt;الطرفيات الخلفية تُبلّغ الوكلاء الآن&lt;/h2&gt;
&lt;p&gt;هذه الميزة البارزة. تُشعر الطرفيات الخلفية الآن الوكلاءَ تلقائياً عند اكتمال الأوامر، بما في ذلك رمز الخروج ومخرجات الطرفية. كما يتم الكشف عن مطالبات الإدخال في الطرفيات الخلفية وعرضها على المستخدم.&lt;/p&gt;
&lt;p&gt;لماذا يهم هذا؟ إذا استخدمت وضع وكيل Copilot لتشغيل أوامر البناء أو مجموعات الاختبار في الخلفية، فأنت تعرف ألم سؤال &amp;ldquo;هل انتهى ذلك بعد؟&amp;rdquo; — كانت الطرفيات الخلفية أساساً نهج &amp;ldquo;أطلق وانسَ&amp;rdquo;. الآن يتلقى الوكيل إشعاراً عند اكتمال &lt;code&gt;dotnet build&lt;/code&gt; أو &lt;code&gt;dotnet test&lt;/code&gt;، يرى المخرجات، ويمكنه الاستجابة وفقاً لذلك. تغيير بسيط يجعل سير العمل المدفوع بالوكلاء أكثر موثوقية بشكل ملحوظ.&lt;/p&gt;
&lt;p&gt;يوجد أيضاً أداة &lt;code&gt;send_to_terminal&lt;/code&gt; جديدة تتيح للوكلاء إرسال أوامر إلى الطرفيات الخلفية مع تأكيد المستخدم، مما يحل مشكلة كون &lt;code&gt;run_in_terminal&lt;/code&gt; مع مهلة ينقل الطرفيات إلى الخلفية ويجعلها للقراءة فقط.&lt;/p&gt;
&lt;h2 id="استضافة-الوكيل-عن-بعد-عبر-ssh"&gt;استضافة الوكيل عن بُعد عبر SSH&lt;/h2&gt;
&lt;p&gt;يدعم VS Code الآن الاتصال بالأجهزة البعيدة عبر SSH، وتثبيت CLI تلقائياً وتشغيله في وضع مضيف الوكيل. هذا يعني أن جلسات الوكيل الذكي لديك يمكن أن تستهدف البيئات البعيدة مباشرة — مفيد لمطوري .NET الذين يبنون ويختبرون على خوادم Linux أو الأجهزة الافتراضية السحابية.&lt;/p&gt;
&lt;h2 id="تتبع-التعديلات-في-جلسات-الوكيل"&gt;تتبع التعديلات في جلسات الوكيل&lt;/h2&gt;
&lt;p&gt;يتم الآن تتبع تعديلات الملفات التي تتم خلال جلسات الوكيل واستعادتها، مع عرض الفروقات والتراجع/الإعادة واستعادة الحالة. إذا أجرى وكيل تغييرات على كودك وحدث خطأ ما، يمكنك رؤية ما تغيّر بالضبط والتراجع عنه. راحة بال حقيقية عند السماح للوكلاء بتعديل قاعدة الكود.&lt;/p&gt;
&lt;h2 id="وعي-علامات-تبويب-المتصفح-وتحسينات-أخرى"&gt;وعي علامات تبويب المتصفح وتحسينات أخرى&lt;/h2&gt;
&lt;p&gt;بعض الإضافات الإضافية لجودة الحياة:&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; — الصق الملفات (بما في ذلك الصور) في الطرفية بـ Ctrl+V أو السحب والإفلات أو النقر الأيمن&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;تغطية الاختبار في الخريطة المصغرة&lt;/strong&gt; — تظهر مؤشرات تغطية الاختبار الآن في الخريطة المصغرة لنظرة عامة بصرية سريعة&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;الضغط للتكبير على Mac&lt;/strong&gt; — يدعم المتصفح المدمج إيماءات الضغط للتكبير&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;حصص Copilot في Sessions&lt;/strong&gt; — يعرض شريط الحالة معلومات الاستخدام في عرض Sessions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;الأيقونات المفضلة في Go to File&lt;/strong&gt; — صفحات الويب المفتوحة تعرض أيقوناتها المفضلة في قائمة الاختيار السريع&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="خلاصة-القول"&gt;خلاصة القول&lt;/h2&gt;
&lt;p&gt;VS Code 1.115 إصدار تدريجي، لكن تحسينات الوكيل — إشعارات الطرفيات الخلفية واستضافة وكيل SSH وتتبع التعديلات — تتجمع لتعطي تجربة أكثر سلاسة ملحوظة للتطوير المدعوم بالذكاء الاصطناعي. إذا كنت تستخدم وضع وكيل Copilot لمشاريع .NET، فهذه هي إصلاحات جودة الحياة التي تقلل الاحتكاك اليومي.&lt;/p&gt;
&lt;p&gt;اطلع على &lt;a href="https://code.visualstudio.com/updates/v1_115"&gt;ملاحظات الإصدار الكاملة&lt;/a&gt; لكل التفاصيل.&lt;/p&gt;</content:encoded></item><item><title>Aspire 13.2 يُقدّم CLI للوثائق — ويمكن لوكيل الذكاء الاصطناعي استخدامه أيضاً</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-docs-cli-ai-skills/</link><pubDate>Sat, 04 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-docs-cli-ai-skills/</guid><description>يُضيف .NET Aspire 13.2 أمر aspire docs — واجهة CLI للبحث عن الوثائق الرسمية وتصفّحها وقراءتها دون مغادرة الطرفية. كما يعمل أداةً لوكلاء الذكاء الاصطناعي. إليك سبب أهميّته.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-docs-cli-ai-skills/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;هل تعرف تلك اللحظة التي تكون فيها غارقاً في AppHost في Aspire، تربط التكاملات ببعضها، ثم تحتاج إلى التحقق من المعاملات التي يتوقعها تكامل Redis بالضبط؟ تنتقل إلى المتصفح، وتبحث في aspire.dev، وتُحدّق في وثائق الواجهة البرمجية، ثم تعود إلى محررك. السياق ضائع. الإيقاع مقطوع.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/aspire/aspire-docs-in-your-terminal/"&gt;وصل حلٌّ لهذا&lt;/a&gt; في Aspire 13.2. تتيح لك واجهة &lt;code&gt;aspire docs&lt;/code&gt; CLI البحث عن الوثائق الرسمية لـ Aspire وتصفّحها وقراءتها مباشرةً من طرفيّتك. وبما أنها مدعومة بخدمات قابلة لإعادة الاستخدام، يمكن لوكلاء الذكاء الاصطناعي والمهارات استخدام الأوامر ذاتها للبحث في الوثائق بدلاً من ابتكار واجهات برمجية غير موجودة.&lt;/p&gt;
&lt;h2 id="المشكلة-التي-يحلها-فعلا"&gt;المشكلة التي يحلّها فعلاً&lt;/h2&gt;
&lt;p&gt;يُصيب David Pine كبد الحقيقة في منشوره الأصلي: كانت وكلاء الذكاء الاصطناعي &lt;em&gt;سيئة للغاية&lt;/em&gt; في مساعدة المطورين على بناء تطبيقات Aspire. كانت توصي بـ &lt;code&gt;dotnet run&lt;/code&gt; عوضاً عن &lt;code&gt;aspire run&lt;/code&gt;، وتُحيل إلى learn.microsoft.com للوثائق التي تعيش على aspire.dev، وتقترح حزم NuGet قديمة، وابتكار واجهات برمجية غير موجودة — وهذه أكثر ما يزعجني.&lt;/p&gt;
&lt;p&gt;لماذا؟ لأن Aspire كان مخصصاً لـ .NET فقط لفترة أطول مما كونه متعدد اللغات، وتعمل نماذج اللغة الكبيرة من بيانات تدريب سابقة للميزات الأحدث. حين تمنح وكيل الذكاء الاصطناعي القدرة على البحث الفعلي في الوثائق الحالية، يتوقف عن التخمين ويبدأ في أن يكون مفيداً.&lt;/p&gt;
&lt;h2 id="ثلاثة-أوامر-صفر-تبويبات-في-المتصفح"&gt;ثلاثة أوامر، صفر تبويبات في المتصفح&lt;/h2&gt;
&lt;p&gt;الواجهة بسيطة بشكل منعش:&lt;/p&gt;
&lt;h3 id="عرض-قائمة-بجميع-الوثائق"&gt;عرض قائمة بجميع الوثائق&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;يُعيد كل صفحة وثائق متاحة على aspire.dev. تحتاج مخرجات قابلة للقراءة آلياً؟ أضف &lt;code&gt;--format Json&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="البحث-عن-موضوع"&gt;البحث عن موضوع&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs search &lt;span class="s2"&gt;&amp;#34;redis&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;يبحث في العناوين والمحتوى مع ترتيب النتائج حسب الصلة. نفس محرك البحث الذي يُشغّل أدوات التوثيق داخلياً. تحصل على نتائج مرتّبة مع العناوين، والمسارات المختصرة، ودرجات الصلة.&lt;/p&gt;
&lt;h3 id="قراءة-صفحة-كاملة-أو-قسم-واحد-فقط"&gt;قراءة صفحة كاملة (أو قسم واحد فقط)&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs get redis-integration
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;يبثّ الصفحة كاملةً بتنسيق Markdown إلى طرفيّتك. تحتاج قسماً واحداً فقط؟&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs get redis-integration --section &lt;span class="s2"&gt;&amp;#34;Add Redis resource&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;دقة جراحية. لا تمرير عبر 500 سطر. فقط الجزء الذي تحتاجه.&lt;/p&gt;
&lt;h2 id="زاوية-وكيل-الذكاء-الاصطناعي"&gt;زاوية وكيل الذكاء الاصطناعي&lt;/h2&gt;
&lt;p&gt;هنا يصبح الأمر مثيراً للاهتمام للمطورين الذين يبنون بأدوات الذكاء الاصطناعي. تعمل أوامر &lt;code&gt;aspire docs&lt;/code&gt; ذاتها أدواتٍ لوكلاء الذكاء الاصطناعي — عبر المهارات، وخوادم MCP، أو مجمّعات CLI البسيطة.&lt;/p&gt;
&lt;p&gt;بدلاً من أن يخترع مساعد الذكاء الاصطناعي واجهات Aspire البرمجية بناءً على بيانات تدريب قديمة، يمكنه استدعاء &lt;code&gt;aspire docs search &amp;quot;postgres&amp;quot;&lt;/code&gt;، والعثور على وثائق التكامل الرسمية، وقراءة الصفحة المناسبة، وتزويدك بالنهج الموثّق. توثيق حيّ ومحدَّث — لا ما حفظه النموذج قبل ستة أشهر.&lt;/p&gt;
&lt;p&gt;البنية التحتية وراء هذا مقصودة. بنى فريق Aspire خدمات قابلة لإعادة الاستخدام (&lt;code&gt;IDocsIndexService&lt;/code&gt;، &lt;code&gt;IDocsSearchService&lt;/code&gt;، &lt;code&gt;IDocsFetcher&lt;/code&gt;، &lt;code&gt;IDocsCache&lt;/code&gt;) بدلاً من تكامل وحيد الغرض. هذا يعني أن محرك البحث ذاته يعمل للبشر في الطرفية، ولوكلاء الذكاء الاصطناعي في محررك، وللأتمتة في خط أنابيب CI.&lt;/p&gt;
&lt;h2 id="سيناريوهات-واقعية"&gt;سيناريوهات واقعية&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;بحث سريع في الطرفية:&lt;/strong&gt; أنت في عمق ثلاثة ملفات وتحتاج معاملات إعداد Redis. أمران، تسعون ثانية، والعودة إلى العمل:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs search &lt;span class="s2"&gt;&amp;#34;redis&amp;#34;&lt;/span&gt; --limit &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs get redis-integration --section &lt;span class="s2"&gt;&amp;#34;Configuration&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;التطوير بمساعدة الذكاء الاصطناعي:&lt;/strong&gt; مهارة VS Code الخاصة بك تُجمّع أوامر CLI. تسأل &amp;ldquo;أضف قاعدة بيانات PostgreSQL إلى AppHost&amp;rdquo; فيبحث الوكيل في الوثائق الحقيقية قبل الإجابة. لا ابتكار واجهات وهمية.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;التحقق في CI/CD:&lt;/strong&gt; يتحقق خط أنابيبك من إعدادات AppHost مقابل الوثائق الرسمية برمجياً. مخرجات &lt;code&gt;--format Json&lt;/code&gt; تنساب بسلاسة إلى &lt;code&gt;jq&lt;/code&gt; وأدوات أخرى.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;قواعد معرفة مخصصة:&lt;/strong&gt; هل تبني أدوات ذكاء اصطناعي خاصة بك؟ أرسل مخرجات JSON المنظّمة مباشرةً إلى قاعدة معرفتك:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs search &lt;span class="s2"&gt;&amp;#34;monitoring&amp;#34;&lt;/span&gt; --format Json &lt;span class="p"&gt;|&lt;/span&gt; jq &lt;span class="s1"&gt;&amp;#39;[.[] | {slug, title, summary}]&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;لا استخلاص من الويب. لا مفاتيح API. نفس البيانات المنظّمة التي تستخدمها أدوات التوثيق داخلياً.&lt;/p&gt;
&lt;h2 id="الوثائق-دائما-حية"&gt;الوثائق دائماً حيّة&lt;/h2&gt;
&lt;p&gt;هذا هو الجانب الذي أقدّره أكثر من غيره. لا تُنزّل واجهة CLI لقطة ثابتة — بل تستعلم من aspire.dev مع تخزين مؤقت يستند إلى ETag. في اللحظة التي تتحدث فيها الوثائق، تعكس واجهتك وأي مهارة مبنية عليها ذلك التحديث. لا نسخ قديمة، لا لحظات &amp;ldquo;لكن الويكي قال&amp;hellip;&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="خلاصة-القول"&gt;خلاصة القول&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;aspire docs&lt;/code&gt; هي إحدى تلك الميزات الصغيرة التي تحلّ مشكلة حقيقية بنظافة. البشر يحصلون على وصول للوثائق من الطرفية مباشرةً. وكلاء الذكاء الاصطناعي يحصلون على طريقة للتوقف عن التخمين والبدء في الرجوع إلى الوثائق الفعلية. وكل ذلك مدعوم بمصدر حقيقة واحد.&lt;/p&gt;
&lt;p&gt;إذا كنت تبني بـ .NET Aspire ولم تجرب واجهة CLI بعد، شغِّل &lt;code&gt;aspire docs search &amp;quot;your-topic-here&amp;quot;&lt;/code&gt; وتحقق من شعورك. ثم فكّر في تغليف تلك الأوامر في أي مهارة ذكاء اصطناعي أو إعداد أتمتة تستخدمه — وكلاؤك سيشكرونك.&lt;/p&gt;
&lt;p&gt;اطّلع على &lt;a href="https://davidpine.dev/posts/aspire-docs-mcp-tools/"&gt;تحليل David Pine المعمّق&lt;/a&gt; حول كيفية تطور أدوات التوثيق، و&lt;a href="https://aspire.dev/reference/cli/commands/aspire-docs/"&gt;مرجع CLI الرسمي&lt;/a&gt; للاطلاع على كل التفاصيل.&lt;/p&gt;</content:encoded></item><item><title>azd يتيح الآن تشغيل وكلاء الذكاء الاصطناعي وتصحيح أخطائها محلياً — إليك ما تغيّر في مارس 2026</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/azd-march-2026-local-ai-agent-debugging/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/azd-march-2026-local-ai-agent-debugging/</guid><description>شحنت واجهة Azure Developer CLI سبعة إصدارات في مارس 2026. أبرزها: حلقة تشغيل وتصحيح محلية لوكلاء الذكاء الاصطناعي، وتكامل GitHub Copilot في إعداد المشاريع، ودعم Container App Jobs.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/azd-march-2026-local-ai-agent-debugging/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;سبعة إصدارات في شهر واحد. هذا ما دفعه فريق Azure Developer CLI (&lt;code&gt;azd&lt;/code&gt;) في مارس 2026، والميزة الرئيسية هي التي كنت أنتظرها: &lt;strong&gt;حلقة تشغيل وتصحيح محلية لوكلاء الذكاء الاصطناعي&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;نشر PC Chan &lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-developer-cli-azd-march-2026/"&gt;الملخص الكامل&lt;/a&gt;، ومع أن المحتوى غزير، دعني أُصفّيه إلى ما يهم فعلاً مطوّري .NET الذين يبنون تطبيقات مدعومة بالذكاء الاصطناعي.&lt;/p&gt;
&lt;h2 id="تشغيل-وكلاء-الذكاء-الاصطناعي-وتصحيح-أخطائها-دون-نشر"&gt;تشغيل وكلاء الذكاء الاصطناعي وتصحيح أخطائها دون نشر&lt;/h2&gt;
&lt;p&gt;هذه هي الكبرى. تُضيف إضافة &lt;code&gt;azure.ai.agents&lt;/code&gt; الجديدة مجموعة من الأوامر التي توفّر لك تجربة حلقة داخلية حقيقية لوكلاء الذكاء الاصطناعي:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;azd ai agent run&lt;/code&gt; — يُشغّل وكيلك محلياً&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent invoke&lt;/code&gt; — يُرسل رسائل إليه (محلياً أو بعد النشر)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent show&lt;/code&gt; — يعرض حالة الحاوية وسلامتها&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent monitor&lt;/code&gt; — يبثّ سجلات الحاوية في الوقت الفعلي&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;قبل هذا، كان اختبار وكيل ذكاء اصطناعي يعني النشر إلى Microsoft Foundry في كل مرة تُجري فيها تغييراً. الآن يمكنك التكرار محلياً، واختبار سلوك وكيلك، والنشر فقط حين تكون مستعداً. إن كنت تبني وكلاء باستخدام Microsoft Agent Framework أو Semantic Kernel، فهذا يُغيّر سير عملك اليومي.&lt;/p&gt;
&lt;p&gt;يعمل أمر invoke مقابل الوكلاء المحليين والمنشورين على حدٍّ سواء، مما يعني أنك تستطيع استخدام سير عمل الاختبار ذاته بصرف النظر عن مكان تشغيل الوكيل. هذا هو النوع من التفاصيل التي تُوفّر عليك الحاجة إلى صيانة مجموعتين من نصوص الاختبار.&lt;/p&gt;
&lt;h2 id="github-copilot-ينشئ-السقالات-لمشروع-azd-الخاص-بك"&gt;GitHub Copilot يُنشئ السقالات لمشروع azd الخاص بك&lt;/h2&gt;
&lt;p&gt;بات &lt;code&gt;azd init&lt;/code&gt; يُقدّم خياراً &amp;ldquo;إعداد مع GitHub Copilot (معاينة)&amp;rdquo;. بدلاً من الإجابة يدوياً على الأسئلة حول بنية مشروعك، يُهيّئ وكيل Copilot الإعداد نيابةً عنك. يتحقق من وجود دليل عمل غير نظيف قبل تعديل أي شيء، ويطلب موافقة على أدوات خادم MCP مسبقاً.&lt;/p&gt;
&lt;p&gt;حين يفشل أمر ما، يُقدّم &lt;code&gt;azd&lt;/code&gt; الآن استكشاف أخطاء بمساعدة الذكاء الاصطناعي: اختر فئة (شرح، توجيه، استكشاف أخطاء، أو تخطّي)، ودع الوكيل يقترح حلاً، ثم أعد المحاولة — كل ذلك دون مغادرة الطرفية. لإعدادات البنية التحتية المعقدة، هذا توفير حقيقي للوقت.&lt;/p&gt;
&lt;h2 id="container-app-jobs-وتحسينات-النشر"&gt;Container App Jobs وتحسينات النشر&lt;/h2&gt;
&lt;p&gt;بعض ميزات النشر الجديرة بالإشارة:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Container App Jobs&lt;/strong&gt;: يُنشر &lt;code&gt;azd&lt;/code&gt; الآن &lt;code&gt;Microsoft.App/jobs&lt;/code&gt; من خلال إعداد &lt;code&gt;host: containerapp&lt;/code&gt; الموجود. يُحدّد قالب Bicep الخاص بك ما إذا كان الهدف Container App أم Job — لا إعداد إضافي.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;مهل نشر قابلة للتهيئة&lt;/strong&gt;: خيار &lt;code&gt;--timeout&lt;/code&gt; الجديد في &lt;code&gt;azd deploy&lt;/code&gt; وحقل &lt;code&gt;deployTimeout&lt;/code&gt; في &lt;code&gt;azure.yaml&lt;/code&gt;. لا مزيد من التخمين حول الحد الافتراضي البالغ 1200 ثانية.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;احتياطي البناء المحلي&lt;/strong&gt;: حين يفشل البناء عن بُعد في ACR، ينتقل &lt;code&gt;azd&lt;/code&gt; تلقائياً إلى البناء المحلي باستخدام Docker/Podman.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;التحقق المحلي المسبق للنشر&lt;/strong&gt;: يتم التحقق من معاملات Bicep محلياً قبل النشر، مما يكتشف المعاملات المفقودة دون رحلة ذهاب وإياب إلى Azure.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="تحسينات-تجربة-المطور"&gt;تحسينات تجربة المطوّر&lt;/h2&gt;
&lt;p&gt;بعض التحسينات الأصغر التي تتراكم لتُحدث فارقاً:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;الكشف التلقائي عن pnpm/yarn&lt;/strong&gt; لمشاريع JS/TS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;دعم pyproject.toml&lt;/strong&gt; لتعبئة Python&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;أدلة قوالب محلية&lt;/strong&gt; — يقبل &lt;code&gt;azd init --template&lt;/code&gt; الآن مسارات نظام الملفات للتكرار دون اتصال&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;رسائل خطأ أفضل&lt;/strong&gt; في وضع &lt;code&gt;--no-prompt&lt;/code&gt; — تُبلَّغ جميع القيم المفقودة دفعة واحدة مع أوامر الحل&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;متغيرات بيئة البناء&lt;/strong&gt; مُحقونة في جميع العمليات الفرعية لبناء الأطر (.NET، Node.js، Java، Python)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;هذه الأخيرة دقيقة لكنها مهمة: بناء .NET الخاص بك لديه الآن وصول إلى متغيرات بيئة &lt;code&gt;azd&lt;/code&gt;، مما يعني أنك تستطيع إجراء حقن إعداد وقت البناء دون نصوص إضافية.&lt;/p&gt;
&lt;h2 id="خلاصة-القول"&gt;خلاصة القول&lt;/h2&gt;
&lt;p&gt;حلقة تصحيح أخطاء وكيل الذكاء الاصطناعي المحلية هي نجمة هذا الإصدار، لكن تراكم تحسينات النشر وصقل تجربة المطوّر يجعل &lt;code&gt;azd&lt;/code&gt; يبدو أكثر نضجاً من أي وقت مضى. إن كنت تنشر تطبيقات .NET إلى Azure — خاصةً وكلاء الذكاء الاصطناعي — فهذا التحديث يستحق التثبيت.&lt;/p&gt;
&lt;p&gt;تحقق من &lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-developer-cli-azd-march-2026/"&gt;ملاحظات الإصدار الكاملة&lt;/a&gt; لكل التفاصيل، أو ابدأ بـ &lt;a href="https://learn.microsoft.com/azure/developer/azure-developer-cli/install-azd"&gt;تثبيت azd&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Azure DevOps يُصلح أخيراً تجربة مستخدم محرر Markdown التي اشتكى منها الجميع</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/azure-devops-markdown-editor-work-items/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/azure-devops-markdown-editor-work-items/</guid><description>يحصل محرر Markdown في Azure DevOps لعناصر العمل على تمييز أوضح بين وضعَي المعاينة والتحرير. إنه تغيير صغير يحل مشكلة حقيقية ومزعجة في سير العمل.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/azure-devops-markdown-editor-work-items/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;إذا كنت تستخدم Azure Boards، فمن المرجح أنك مررت بهذا الموقف: تقرأ وصف عنصر عمل، ربما تراجع معايير القبول، ثم تنقر نقراً مزدوجاً عن طريق الخطأ. فجأة — أنت في وضع التحرير. لم تكن تريد تحرير أي شيء. كنت فقط تقرأ.&lt;/p&gt;
&lt;p&gt;أعلن Dan Hellem عن &lt;a href="https://devblogs.microsoft.com/devops/improving-the-markdown-editor-for-work-items/"&gt;هذا الإصلاح&lt;/a&gt;، وهو من التغييرات التي تبدو صغيرة لكنها تزيل احتكاكاً حقيقياً من سير عملك اليومي.&lt;/p&gt;
&lt;h2 id="ما-الذي-تغير"&gt;ما الذي تغيّر&lt;/h2&gt;
&lt;p&gt;يفتح محرر Markdown لحقول نص عناصر العمل الآن في &lt;strong&gt;وضع المعاينة افتراضياً&lt;/strong&gt;. يمكنك قراءة المحتوى والتفاعل معه — اتباع الروابط ومراجعة التنسيق — دون القلق من الدخول إلى وضع التحرير عن طريق الخطأ.&lt;/p&gt;
&lt;p&gt;عندما تريد فعلاً التحرير، تنقر على أيقونة التحرير في أعلى الحقل. وعند الانتهاء، تخرج صراحةً إلى وضع المعاينة. بسيط، مقصود، يمكن التنبؤ به.&lt;/p&gt;
&lt;p&gt;هذا هو التغيير. هذا كل شيء.&lt;/p&gt;
&lt;h2 id="لماذا-هذا-أهم-مما-يبدو"&gt;لماذا هذا أهم مما يبدو&lt;/h2&gt;
&lt;p&gt;كان &lt;a href="https://developercommunity.visualstudio.com/t/Markdown-editor-for-work-item-multi-line/10935496"&gt;سلسلة ملاحظات المجتمع&lt;/a&gt; حول هذا الأمر طويلاً. جرى تقديم سلوك النقر المزدوج للتحرير مع محرر Markdown في يوليو 2025، وبدأت الشكاوى فوراً تقريباً. لم تكن المشكلة مجرد تعديلات غير مقصودة — بل كان التفاعل كله يبدو غير قابل للتنبؤ. لم تكن تعرف أبداً إذا كان النقر سيضعك في وضع القراءة أم التحرير.&lt;/p&gt;
&lt;p&gt;بالنسبة للفرق التي تُجري تخطيط السبرينت، أو تنقية قائمة المهام المتراكمة، أو مراجعة الكود باستخدام Azure Boards، يتراكم هذا الاحتكاك الصغير. كل دخول غير مقصود إلى وضع التحرير يعني تحولاً في السياق. وكل لحظة &amp;ldquo;انتظر، هل غيّرت شيئاً؟&amp;rdquo; هي انتباه مُهدَر.&lt;/p&gt;
&lt;p&gt;السلوك الافتراضي الجديد يحترم نمط التفاعل الأكثر شيوعاً: فأنت تقرأ عناصر العمل أكثر بكثير مما تحررها.&lt;/p&gt;
&lt;h2 id="حالة-الإطلاق"&gt;حالة الإطلاق&lt;/h2&gt;
&lt;p&gt;هذا التغيير بدأ بالانتشار لدى مجموعة من المستخدمين ويتوسع ليشمل الجميع خلال الأسبوعين إلى الثلاثة أسابيع القادمة. إذا لم تكن قد رأيته بعد، فستراه قريباً.&lt;/p&gt;
&lt;h2 id="خلاصة-القول"&gt;خلاصة القول&lt;/h2&gt;
&lt;p&gt;لا تحتاج كل تحسينات البرامج إلى أن تكون ميزة بارزة في العناوين. أحياناً أفضل تحديث هو إزالة شيء مزعج. هذا واحد منها — إصلاح صغير لتجربة المستخدم يجعل Azure Boards أقل إزعاجاً للأشخاص الذين يريدون فقط قراءة عناصر عملهم بهدوء.&lt;/p&gt;</content:encoded></item><item><title>Bookmark Studio يُضيف نظام التنقل بالفتحات والمشاركة إلى إشارات Visual Studio المرجعية</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/bookmark-studio-visual-studio-extension/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/bookmark-studio-visual-studio-extension/</guid><description>إضافة Bookmark Studio الجديدة من Mads Kristensen تضيف التنقل بلوحة المفاتيح عبر الفتحات، ومدير الإشارات المرجعية، والألوان، والتسميات، وإمكانيات التصدير والمشاركة إلى إشارات Visual Studio المرجعية.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/bookmark-studio-visual-studio-extension/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;الإشارات المرجعية في Visual Studio كانت دومًا&amp;hellip; مقبولة. تضع إشارة، تنتقل إلى التالية، ثم تنسى أيها أيها. تؤدي وظيفتها، لكنها لم تكن يومًا الميزة التي تصفها بالقوية.&lt;/p&gt;
&lt;p&gt;أصدر Mads Kristensen للتو &lt;a href="https://devblogs.microsoft.com/visualstudio/bookmark-studio-evolving-bookmarks-in-visual-studio/"&gt;Bookmark Studio&lt;/a&gt;، وهي إضافة تجريبية تسد بالضبط الفجوات التي ربما اصطدمت بها إذا كنت تستخدم الإشارات المرجعية بانتظام.&lt;/p&gt;
&lt;h2 id="التنقل-بالفتحات"&gt;التنقل بالفتحات&lt;/h2&gt;
&lt;p&gt;الإضافة الأساسية: يمكن الآن تعيين الإشارات المرجعية إلى فتحات من 1 إلى 9 والقفز إليها مباشرةً بـ &lt;code&gt;Alt+Shift+1&lt;/code&gt; حتى &lt;code&gt;Alt+Shift+9&lt;/code&gt;. تحصل الإشارات الجديدة تلقائيًا على الفتحة المتاحة التالية، لذا يعمل التنقل السريع في معظم الحالات دون أي إعداد.&lt;/p&gt;
&lt;p&gt;قد يبدو هذا بسيطًا، لكنه يحوّل الإشارات المرجعية من &amp;ldquo;لديّ بعض الإشارات في مكان ما&amp;rdquo; إلى &amp;ldquo;الفتحة 3 هي وحدة التحكم API، الفتحة 5 هي طبقة الخدمة، الفتحة 7 هي الاختبار.&amp;rdquo; هذا النوع من التنظيم المكاني يجعل التنقل شبه فوري خلال جلسات العمل المركّز.&lt;/p&gt;
&lt;h2 id="مدير-الإشارات-المرجعية"&gt;مدير الإشارات المرجعية&lt;/h2&gt;
&lt;p&gt;نافذة أداة جديدة تعرض جميع إشاراتك المرجعية في مكان واحد مع إمكانية التصفية بالاسم أو الملف أو الموقع أو اللون أو الفتحة. انقر نقرًا مزدوجًا أو تنقل بلوحة المفاتيح للقفز إلى أي إشارة.&lt;/p&gt;
&lt;p&gt;إذا كان لديك يومًا ما خمس أو ست إشارات مرجعية أو أكثر وعجزت عن تحديد أيها أيها، فهذا وحده يستحق تثبيت الإضافة.&lt;/p&gt;
&lt;h2 id="التنظيم-بالتسميات-والألوان-والمجلدات"&gt;التنظيم بالتسميات والألوان والمجلدات&lt;/h2&gt;
&lt;p&gt;يمكن اختياريًا إضافة تسميات وألوان للإشارات المرجعية وتجميعها في مجلدات. لا شيء من هذا إلزامي — سير العمل الحالي الخاص بك يبقى كما هو. لكن عندما تكون في مرحلة تصحيح مشكلة معقدة أو استكشاف قاعدة كود غير مألوفة، فإن ترميز إشاراتك بالألوان والتسميات يضيف سياقًا مفيدًا.&lt;/p&gt;
&lt;p&gt;جميع البيانات الوصفية تُخزَّن لكل حل (solution)، لذا يظل تنظيم إشاراتك المرجعية محفوظًا عبر الجلسات.&lt;/p&gt;
&lt;h2 id="التصدير-والمشاركة"&gt;التصدير والمشاركة&lt;/h2&gt;
&lt;p&gt;هذه هي الميزة التي لم أكن أعلم أنني أريدها. يتيح لك Bookmark Studio تصدير الإشارات المرجعية كنص عادي أو Markdown أو CSV. هذا يعني أنك تستطيع:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;تضمين مسارات الإشارات في أوصاف طلبات السحب&lt;/li&gt;
&lt;li&gt;مشاركة مسارات التحقيق مع زملاء الفريق&lt;/li&gt;
&lt;li&gt;نقل مجموعات الإشارات بين المستودعات أو الفروع&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;تتحول الإشارات المرجعية من أداة تنقل فردية إلى وسيلة للتواصل قائلًا &amp;ldquo;إليك المسار عبر هذا الكود.&amp;rdquo;&lt;/p&gt;
&lt;h2 id="إشارات-مرجعية-تتتبع-حركة-الكود"&gt;إشارات مرجعية تتتبع حركة الكود&lt;/h2&gt;
&lt;p&gt;يتتبع Bookmark Studio الإشارات المرجعية بالنسبة للنص المرتبطة به، لذا لا تنزلق إلى سطور خاطئة بينما تُحرِّر الكود. إذا سبق لك أن وضعت إشارات خلال جلسة تصحيح أخطاء ثم وجدتها كلها تشير إلى سطور خاطئة بعد عملية إعادة هيكلة — هذا يحل تلك المشكلة.&lt;/p&gt;
&lt;h2 id="خلاصة"&gt;خلاصة&lt;/h2&gt;
&lt;p&gt;لا يُعيد Bookmark Studio اختراع أي شيء. بل يأخذ ميزة كانت &amp;ldquo;كافية&amp;rdquo; لسنوات ويجعلها مفيدة حقًا للتطوير المركّز. التنقل بالفتحات ومدير الإشارات المرجعية وإمكانيات التصدير هي أبرز ما يقدمه.&lt;/p&gt;
&lt;p&gt;احصل عليه من &lt;a href="https://marketplace.visualstudio.com/items?itemName=MadsKristensen.BookmarkStudio"&gt;Visual Studio Marketplace&lt;/a&gt; وجرّبه.&lt;/p&gt;</content:encoded></item><item><title>تحديث Visual Studio لشهر مارس يتيح لك بناء وكلاء Copilot مخصصين — وأداة find_symbol تستحق الاهتمام</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/visual-studio-march-2026-custom-copilot-agents/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/visual-studio-march-2026-custom-copilot-agents/</guid><description>يأتي تحديث Visual Studio لشهر مارس 2026 بوكلاء Copilot مخصصين، ومهارات وكلاء قابلة لإعادة الاستخدام، وأداة find_symbol تدرك لغات البرمجة، وتحليل أداء مدعوم بـ Copilot من Test Explorer. إليك ما يستحق الاهتمام.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/visual-studio-march-2026-custom-copilot-agents/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;حصل Visual Studio للتو على أهم تحديث لـ Copilot حتى الآن. أعلن Mark Downie عن &lt;a href="https://devblogs.microsoft.com/visualstudio/visual-studio-march-update-build-your-own-custom-agents/"&gt;إصدار مارس&lt;/a&gt;، والعنوان الرئيسي هو الوكلاء المخصصون — لكن بصراحة، أداة &lt;code&gt;find_symbol&lt;/code&gt; المدفونة في منتصف القائمة قد تكون الميزة التي ستغير سير عملك أكثر من أي شيء آخر.&lt;/p&gt;
&lt;p&gt;دعني أشرح ما هو موجود فعلاً.&lt;/p&gt;
&lt;h2 id="وكلاء-copilot-مخصصون-في-مستودعك"&gt;وكلاء Copilot مخصصون في مستودعك&lt;/h2&gt;
&lt;p&gt;هل تريد أن يتبع Copilot معايير ترميز فريقك، أو يشغّل خط أنابيب البناء، أو يستعلم وثائقك الداخلية؟ يمكنك الآن بناء ذلك بالضبط.&lt;/p&gt;
&lt;p&gt;يُعرَّف الوكلاء المخصصون كملفات &lt;code&gt;.agent.md&lt;/code&gt; تضعها في &lt;code&gt;.github/agents/&lt;/code&gt; في مستودعك. يتمتع كل وكيل بوصول كامل إلى الوعي بمساحة العمل، وفهم الكود، والأدوات، ونموذجك المفضل، واتصالات MCP بالخدمات الخارجية. تظهر هذه الوكلاء في منتقي الوكلاء إلى جانب الوكلاء المدمجين.&lt;/p&gt;
&lt;p&gt;هذا النمط ذاته الذي كان VS Code يدعمه — ومن الجيد رؤية Visual Studio يلحق به. إذا كانت فرقتك قد بنت وكلاء لـ VS Code، فينبغي أن تعمل ملفات &lt;code&gt;.agent.md&lt;/code&gt; عبر كلا بيئتَي التطوير (مع ذلك، قد تتباين أسماء الأدوات، لذا اختبرها).&lt;/p&gt;
&lt;p&gt;يحتوي مستودع &lt;a href="https://github.com/github/awesome-copilot"&gt;awesome-copilot&lt;/a&gt; على إعدادات وكلاء يُسهم بها المجتمع يمكنك استخدامها نقطة انطلاق.&lt;/p&gt;
&lt;h2 id="مهارات-الوكيل-حزم-تعليمات-قابلة-لإعادة-الاستخدام"&gt;مهارات الوكيل: حزم تعليمات قابلة لإعادة الاستخدام&lt;/h2&gt;
&lt;p&gt;يتم التقاط المهارات تلقائياً من &lt;code&gt;.github/skills/&lt;/code&gt; في مستودعك أو &lt;code&gt;~/.copilot/skills/&lt;/code&gt; في ملفك الشخصي. كل مهارة هي ملف &lt;code&gt;SKILL.md&lt;/code&gt; يتبع &lt;a href="https://agentskills.io/specification"&gt;مواصفات Agent Skills&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;فكّر في المهارات كخبرات معيارية يمكنك دمجها وتبديلها. قد تكون لديك مهارة لاصطلاحات API الخاصة بك، وأخرى لأنماط الاختبار، وأخرى لسير عمل النشر. عندما تنشط مهارة، تظهر في المحادثة حتى تعرف أنها مُطبَّقة.&lt;/p&gt;
&lt;p&gt;إذا كنت تستخدم المهارات في VS Code، فهي تعمل بالطريقة ذاتها في Visual Studio الآن.&lt;/p&gt;
&lt;h2 id="find_symbol-ملاحة-رمزية-تدرك-اللغة-للوكلاء"&gt;find_symbol: ملاحة رمزية تدرك اللغة للوكلاء&lt;/h2&gt;
&lt;p&gt;هنا تصبح الأمور مثيرة للاهتمام حقاً. تمنح أداة &lt;code&gt;find_symbol&lt;/code&gt; الجديدة وضعَ وكيل Copilot ملاحةً رمزية فعلية مدعومة بخدمة اللغة. بدلاً من البحث في كودك كنص عادي، يمكن للوكيل:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;إيجاد جميع المراجع لرمز عبر مشروعك&lt;/li&gt;
&lt;li&gt;الوصول إلى معلومات النوع والإعلانات وبيانات النطاق&lt;/li&gt;
&lt;li&gt;التنقل عبر مواقع الاستدعاء بوعي كامل باللغة&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ما يعنيه هذا عملياً: عندما تطلب من Copilot إعادة هيكلة طريقة أو تحديث توقيع معامل عبر مواقع الاستدعاء، يمكنه فعلاً رؤية بنية كودك. لا مزيد من &amp;ldquo;قام الوكيل بتغيير الطريقة لكنه فاته ثلاثة مواقع استدعاء&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;اللغات المدعومة تشمل C# وC++ وRazor وTypeScript وأي لغة تتوفر لها إضافة LSP مدعومة. لمطوري .NET، هذا تحسين جوهري — قواعد كود C# ذات التسلسلات الهرمية العميقة للأنواع والواجهات تستفيد استفادة هائلة من الملاحة الرمزية.&lt;/p&gt;
&lt;h2 id="تحليل-أداء-الاختبارات-مع-copilot"&gt;تحليل أداء الاختبارات مع Copilot&lt;/h2&gt;
&lt;p&gt;يوجد الآن أمر &lt;strong&gt;Profile with Copilot&lt;/strong&gt; في قائمة سياق Test Explorer. حدد اختباراً، انقر على التحليل، ويقوم وكيل التحليل تلقائياً بتشغيله وتحليل الأداء — يجمع بين بيانات استخدام المعالج وبيانات القياس لتقديم رؤى قابلة للتنفيذ.&lt;/p&gt;
&lt;p&gt;لا مزيد من الإعداد اليدوي لجلسات المحلل، وتشغيل الاختبار، وتصدير النتائج، ومحاولة قراءة رسم بياني للهوية. يقوم الوكيل بالتحليل ويخبرك بما هو بطيء ولماذا. خاص بـ .NET حالياً، وهو أمر منطقي نظراً للتكامل العميق لـ Visual Studio مع أدوات تشخيص .NET.&lt;/p&gt;
&lt;h2 id="نصائح-الأداء-أثناء-التصحيح-المباشر"&gt;نصائح الأداء أثناء التصحيح المباشر&lt;/h2&gt;
&lt;p&gt;أصبح تحسين الأداء يحدث أثناء التصحيح، لا بعده. بينما تتنقل خطوة بخطوة عبر الكود، يعرض Visual Studio وقت التنفيذ وإشارات الأداء بشكل مضمّن. هل ترى سطراً بطيئاً؟ انقر على Perf Tip واطلب من Copilot اقتراحات للتحسين في المكان ذاته.&lt;/p&gt;
&lt;p&gt;يلتقط وكيل التحليل بيانات وقت التشغيل تلقائياً — الوقت المنقضي واستخدام المعالج وسلوك الذاكرة — ويستخدمها Copilot لتحديد مناطق الاختناق. هذا يجعل عمل الأداء جزءاً من سير عمل التصحيح بدلاً من مهمة منفصلة تؤجلها باستمرار.&lt;/p&gt;
&lt;h2 id="إصلاح-ثغرات-nuget-من-solution-explorer"&gt;إصلاح ثغرات NuGet من Solution Explorer&lt;/h2&gt;
&lt;p&gt;عندما تُكتشف ثغرة في حزمة NuGet، يظهر الآن إشعار مع رابط &lt;strong&gt;Fix with GitHub Copilot&lt;/strong&gt; مباشرةً في Solution Explorer. انقر عليه ويحلل Copilot الثغرة، ويوصي بتحديثات الحزمة المناسبة، وينفّذها.&lt;/p&gt;
&lt;p&gt;للفرق التي تكافح للحفاظ على تحديث التبعيات (وهو ما يصف الجميع تقريباً)، يُزيل هذا احتكاك &amp;ldquo;أعرف أن هناك ثغرة لكن معرفة مسار التحديث الصحيح مشروع بحد ذاته.&amp;rdquo;&lt;/p&gt;
&lt;h2 id="خلاصة-القول"&gt;خلاصة القول&lt;/h2&gt;
&lt;p&gt;الوكلاء المخصصون والمهارات هي العنوان الرئيسي، لكن &lt;code&gt;find_symbol&lt;/code&gt; هي البطل الهادئ — إنها تغير جوهرياً مدى دقة Copilot عند إعادة هيكلة كود .NET. مجتمعةً مع تكامل التحليل المباشر وإصلاحات الثغرات، يجعل هذا التحديث ميزات الذكاء الاصطناعي في Visual Studio تشعر بالفاعلية الحقيقية لا مجرد عروض توضيحية.&lt;/p&gt;
&lt;p&gt;قم بتنزيل &lt;a href="https://visualstudio.microsoft.com/downloads/"&gt;Visual Studio 2026 Insiders&lt;/a&gt; لتجربة كل ذلك.&lt;/p&gt;</content:encoded></item><item><title>من الحاسوب المحمول إلى الإنتاج: نشر وكلاء الذكاء الاصطناعي إلى Microsoft Foundry بأمرين</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/deploy-ai-agents-foundry-azd-two-commands/</link><pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/deploy-ai-agents-foundry-azd-two-commands/</guid><description>Azure Developer CLI يمتلك الآن أوامر 'azd ai agent' التي تأخذ وكيل الذكاء الاصطناعي الخاص بك من التطوير المحلي إلى نقطة نهاية Foundry حية في دقائق. إليك سير العمل الكامل.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/deploy-ai-agents-foundry-azd-two-commands/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;تعرف تلك الهوّة بين &amp;ldquo;يعمل على جهازي&amp;rdquo; و&amp;quot;منشور ويخدم حركة المرور&amp;quot;؟ بالنسبة لوكلاء الذكاء الاصطناعي، كانت تلك الهوّة واسعة بشكل مؤلم. تحتاج إلى توفير الموارد، ونشر النماذج، وربط الهوية، وإعداد المراقبة — وهذا قبل أن يتمكن أي شخص من استدعاء وكيلك فعليًا.&lt;/p&gt;
&lt;p&gt;Azure Developer CLI جعل للتو هذا &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-ai-agent-end-to-end/"&gt;أمرًا من خطوتين&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="سير-عمل-azd-ai-agent-الجديد"&gt;سير عمل &lt;code&gt;azd ai agent&lt;/code&gt; الجديد&lt;/h2&gt;
&lt;p&gt;دعني أستعرض كيف يبدو هذا فعليًا. لديك مشروع وكيل ذكاء اصطناعي — لنقل وكيل كونسيرج فندقي. يعمل محليًا. تريده يعمل على Microsoft Foundry.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd ai agent init
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;هذا كل شيء. أمران اثنان. &lt;code&gt;azd ai agent init&lt;/code&gt; يُنشئ كود البنية التحتية في مستودعك، و&lt;code&gt;azd up&lt;/code&gt; يُوفِّر كل شيء على Azure وينشر وكيلك. تحصل على رابط مباشر لوكيلك في بوابة Foundry.&lt;/p&gt;
&lt;h2 id="ما-يحدث-تحت-الغطاء"&gt;ما يحدث تحت الغطاء&lt;/h2&gt;
&lt;p&gt;يُولِّد أمر &lt;code&gt;init&lt;/code&gt; قوالب Bicep حقيقية قابلة للفحص في مستودعك:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Foundry Resource&lt;/strong&gt; (الحاوية ذات المستوى الأعلى)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Foundry Project&lt;/strong&gt; (حيث يعيش وكيلك)&lt;/li&gt;
&lt;li&gt;تكوين &lt;strong&gt;نشر النموذج&lt;/strong&gt; (GPT-4o، إلخ.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Managed identity&lt;/strong&gt; مع تعيينات أدوار RBAC المناسبة&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azure.yaml&lt;/code&gt; لخريطة الخدمة&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agent.yaml&lt;/code&gt; مع بيانات الوكيل الوصفية ومتغيرات البيئة&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;إليك الجزء المهم: أنت تملك كل هذا. إنه Bicep موثَّق في مستودعك. يمكنك فحصه وتخصيصه وإيداعه جنبًا إلى جنب مع كود وكيلك. لا صناديق سحرية مبهمة.&lt;/p&gt;
&lt;h2 id="حلقة-التطوير-الداخلية"&gt;حلقة التطوير الداخلية&lt;/h2&gt;
&lt;p&gt;ما يعجبني حقًا هو قصة التطوير المحلي. حين تكرر على منطق الوكيل، لا تريد إعادة النشر في كل مرة تغيّر فيها مطالبة:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd ai agent run
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;يُشغّل هذا وكيلك محليًا. اقرنه مع &lt;code&gt;azd ai agent invoke&lt;/code&gt; لإرسال مطالبات اختبارية، وستحصل على حلقة تغذية راجعة محكمة. عدّل الكود، أعد التشغيل، استدعِ، كرّر.&lt;/p&gt;
&lt;p&gt;أمر &lt;code&gt;invoke&lt;/code&gt; ذكي في التوجيه أيضًا — عندما يعمل وكيل محلي، يستهدفه تلقائيًا. وعندما لا يعمل، يضرب نقطة النهاية البعيدة.&lt;/p&gt;
&lt;h2 id="المراقبة-في-الوقت-الفعلي"&gt;المراقبة في الوقت الفعلي&lt;/h2&gt;
&lt;p&gt;هذه هي الميزة التي أقنعتني. بمجرد نشر وكيلك:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd ai agent monitor --follow
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;كل طلب واستجابة يتدفقان عبر وكيلك يتدفقان إلى طرفيتك في الوقت الفعلي. لتصحيح مشكلات الإنتاج، هذا لا يُقدَّر بثمن. لا حاجة للبحث في log analytics، ولا انتظار لتجميع المقاييس — ترى ما يحدث الآن.&lt;/p&gt;
&lt;h2 id="مجموعة-الأوامر-الكاملة"&gt;مجموعة الأوامر الكاملة&lt;/h2&gt;
&lt;p&gt;إليك المرجع السريع:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;الأمر&lt;/th&gt;
&lt;th&gt;ما يفعله&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azd ai agent init&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;إنشاء مشروع وكيل Foundry مع كود البنية التحتية&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azd up&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;توفير موارد Azure ونشر الوكيل&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azd ai agent invoke&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;إرسال مطالبات إلى الوكيل البعيد أو المحلي&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azd ai agent run&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;تشغيل الوكيل محليًا للتطوير&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azd ai agent monitor&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;بث السجلات في الوقت الفعلي من الوكيل المنشور&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azd ai agent show&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;التحقق من صحة الوكيل وحالته&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azd down&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;تنظيف جميع موارد Azure&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="لماذا-يهم-هذا-مطوري-net"&gt;لماذا يهم هذا مطوري .NET&lt;/h2&gt;
&lt;p&gt;على الرغم من أن المثال في الإعلان مبني على Python، فإن قصة البنية التحتية مستقلة عن اللغة. وكيل .NET الخاص بك يحصل على نفس سقالة Bicep، ونفس إعداد managed identity، ونفس خط المراقبة. وإذا كنت تستخدم بالفعل &lt;code&gt;azd&lt;/code&gt; لتطبيقات .NET Aspire أو عمليات نشر Azure، فهذا يندرج بسلاسة في سير عملك الحالي.&lt;/p&gt;
&lt;p&gt;لقد كانت هوّة النشر لوكلاء الذكاء الاصطناعي إحدى أكبر نقاط الاحتكاك في المنظومة. الانتقال من نموذج أولي يعمل إلى نقطة نهاية إنتاجية مع هوية وشبكة ومراقبة مناسبة لا ينبغي أن يستغرق أسبوعًا من عمل DevOps. الآن يستغرق أمرين وبضع دقائق.&lt;/p&gt;
&lt;h2 id="خلاصة"&gt;خلاصة&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd ai agent&lt;/code&gt; متاح الآن. إذا كنت تُؤجل نشر وكلاء الذكاء الاصطناعي الخاصة بك لأن إعداد البنية التحتية بدا يستلزم جهدًا كبيرًا، جرّب هذا. اطّلع على &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-ai-agent-end-to-end/"&gt;الشرح التفصيلي الكامل&lt;/a&gt; للخطوات الكاملة بما في ذلك تكامل تطبيق الدردشة الأمامي.&lt;/p&gt;</content:encoded></item></channel></rss>