<?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/id/tags/developer-tools/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>id</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/id/tags/developer-tools/index.xml" rel="self" type="application/rss+xml"/><item><title>Azure MCP Server Kini .mcpb — Instal Tanpa Runtime Apapun</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/azure-mcp-server-mcpb-no-runtime-install/</guid><description>Azure MCP Server kini tersedia sebagai MCP Bundle (.mcpb) — unduh, seret ke Claude Desktop, selesai. Tidak perlu Node.js, Python, atau .NET.</description><content:encoded>&lt;p&gt;&lt;em&gt;Posting ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/azure-mcp-server-mcpb-no-runtime-install/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Tahu apa yang menjengkelkan dari pengaturan server MCP? Anda memerlukan runtime. Node.js untuk versi npm, Python untuk pip/uvx, .NET SDK untuk varian 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 baru saja mengubah itu&lt;/a&gt;. Kini tersedia sebagai &lt;code&gt;.mcpb&lt;/code&gt; — MCP Bundle — dan pengaturannya adalah seret-dan-lepas.&lt;/p&gt;
&lt;h2 id="apa-itu-mcp-bundle"&gt;Apa itu MCP Bundle?&lt;/h2&gt;
&lt;p&gt;Bayangkan seperti ekstensi VS Code (&lt;code&gt;.vsix&lt;/code&gt;) atau ekstensi browser (&lt;code&gt;.crx&lt;/code&gt;), tetapi untuk server MCP. File &lt;code&gt;.mcpb&lt;/code&gt; adalah arsip ZIP mandiri yang menyertakan biner server dan semua dependensinya.&lt;/p&gt;
&lt;h2 id="cara-menginstal"&gt;Cara Menginstal&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1. Unduh bundle untuk platform Anda&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Buka &lt;a href="https://github.com/microsoft/mcp/releases?q=Azure.Mcp.Server"&gt;halaman GitHub Releases&lt;/a&gt; dan unduh file &lt;code&gt;.mcpb&lt;/code&gt; untuk OS dan arsitektur Anda.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Instal di Claude Desktop&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Cara termudah: seret dan lepas file &lt;code&gt;.mcpb&lt;/code&gt; ke jendela Claude Desktop saat Anda berada di halaman pengaturan Extensions (&lt;code&gt;☰ → File → Settings → Extensions&lt;/code&gt;). Tinjau detail server, klik Install, konfirmasi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Autentikasi ke 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;Selesai. Azure MCP Server menggunakan kredensial Azure Anda yang ada.&lt;/p&gt;
&lt;h2 id="untuk-memulai"&gt;Untuk Memulai&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Unduhan&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;Repo&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;Docs&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;Baca &lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-mcp-server-mcpb-support/"&gt;posting lengkap&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>VS Code 1.118: Copilot CLI Mendapat Nama Sesi, Lencana Model, dan TypeScript 7.0 Nightly</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/vscode-1-118-copilot-cli-session-names-model-badge/</guid><description>Visual Studio Code 1.118 adalah rilis terfokus pada peningkatan Copilot CLI — penamaan sesi, lencana model, pemilihan model otomatis, dan opt-in TypeScript 7.0 Nightly.</description><content:encoded>&lt;p&gt;&lt;em&gt;Posting ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/vscode-1-118-copilot-cli-session-names-model-badge/"&gt;klik di sini&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; adalah rilis kecil yang terfokus — sebagian besar penyempurnaan Copilot CLI.&lt;/p&gt;
&lt;h2 id="copilot-cli-sesi-mendapat-nama-nyata"&gt;Copilot CLI: Sesi Mendapat Nama Nyata&lt;/h2&gt;
&lt;p&gt;API judul sesi SDK Copilot CLI kini digunakan sebagai sumber kebenaran untuk nama sesi. Alih-alih label yang dibuat otomatis, sesi menampilkan nama asli dari SDK.&lt;/p&gt;
&lt;h2 id="beralih-sesi-lebih-cepat"&gt;Beralih Sesi Lebih Cepat&lt;/h2&gt;
&lt;p&gt;Aplikasi Agents kini memiliki &lt;code&gt;Ctrl+1&lt;/code&gt;, &lt;code&gt;Ctrl+2&lt;/code&gt;, dll. untuk beralih cepat antar sesi.&lt;/p&gt;
&lt;h2 id="lencana-model-di-chat"&gt;Lencana Model di Chat&lt;/h2&gt;
&lt;p&gt;Respons Copilot CLI di panel chat kini menampilkan lencana model — Anda bisa melihat sekilas model mana yang menangani setiap permintaan.&lt;/p&gt;
&lt;h2 id="pemilihan-model-otomatis-di-copilot-cli"&gt;Pemilihan Model Otomatis di Copilot CLI&lt;/h2&gt;
&lt;p&gt;Fitur pemilihan model otomatis kini juga berfungsi di agen Copilot CLI.&lt;/p&gt;
&lt;h2 id="opt-in-typescript-70-nightly"&gt;Opt-in TypeScript 7.0 Nightly&lt;/h2&gt;
&lt;p&gt;Anda kini bisa memilih untuk menguji TypeScript 7.0 nightly langsung dari pengaturan VS Code. TypeScript 7.0 adalah rilis besar (&lt;a href="https://devblogs.microsoft.com/typescript/announcing-typescript-7-0-beta/"&gt;beta dirilis beberapa hari lalu&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Lihat &lt;a href="https://code.visualstudio.com/updates/v1_118"&gt;catatan rilis lengkap&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Foundry Toolboxes: Satu Endpoint untuk Semua Alat Agen AI</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/foundry-toolboxes-curate-manage-tools-ai-agents/</guid><description>Microsoft Foundry meluncurkan Toolboxes dalam preview publik — cara untuk mengelola dan mengekspos alat agen AI melalui satu endpoint yang kompatibel dengan MCP.</description><content:encoded>&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/foundry-toolboxes-curate-manage-tools-ai-agents/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Ada masalah yang terlihat sepele sampai benar-benar dihadapi: organisasi membangun beberapa agen AI, masing-masing butuh alat, dan setiap tim mengonfigurasinya dari awal. Integrasi pencarian web yang sama, konfigurasi Azure AI Search yang sama, koneksi server GitHub MCP yang sama — tapi di repositori berbeda, oleh tim berbeda, dengan kredensial berbeda, tanpa tata kelola bersama.&lt;/p&gt;
&lt;p&gt;Microsoft Foundry baru saja meluncurkan &lt;a href="https://devblogs.microsoft.com/foundry/introducing-toolboxes-in-foundry/"&gt;Toolboxes&lt;/a&gt; dalam preview publik, dan ini adalah jawaban langsung atas masalah tersebut.&lt;/p&gt;
&lt;h2 id="apa-itu-toolbox"&gt;Apa itu Toolbox?&lt;/h2&gt;
&lt;p&gt;Toolbox adalah bundel alat bernama yang dapat digunakan kembali, didefinisikan sekali di Foundry dan diekspos melalui satu endpoint yang kompatibel dengan MCP. Runtime agen apa pun yang berbicara MCP dapat mengonsumsinya — tidak ada lock-in ke Foundry Agents.&lt;/p&gt;
&lt;p&gt;Janjinya sederhana: &lt;strong&gt;build once, consume anywhere&lt;/strong&gt;. Definisikan alat, konfigurasikan autentikasi secara terpusat (OAuth passthrough, identitas terkelola Entra), terbitkan endpoint. Setiap agen yang membutuhkan alat tersebut terhubung ke endpoint dan mendapatkan semuanya.&lt;/p&gt;
&lt;h2 id="empat-pilar-dua-tersedia-hari-ini"&gt;Empat pilar (dua tersedia hari ini)&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pilar&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Apa yang dilakukan&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;Segera hadir&lt;/td&gt;
&lt;td&gt;Temukan alat yang disetujui tanpa pencarian manual&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;Tersedia&lt;/td&gt;
&lt;td&gt;Kelompokkan alat ke dalam bundel yang dapat digunakan kembali&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;Tersedia&lt;/td&gt;
&lt;td&gt;Satu endpoint MCP mengekspos semua alat&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;Segera hadir&lt;/td&gt;
&lt;td&gt;Autentikasi terpusat + observabilitas untuk semua panggilan alat&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="contoh-praktis"&gt;Contoh praktis&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;Cari dokumentasi dan respons 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;Cari dokumentasi publik&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;Setelah diterbitkan, Foundry menyediakan endpoint terpadu. Satu koneksi, semua alat.&lt;/p&gt;
&lt;h2 id="tidak-terkunci-di-foundry-agents"&gt;Tidak terkunci di Foundry Agents&lt;/h2&gt;
&lt;p&gt;Toolboxes &lt;strong&gt;dibuat dan dikelola&lt;/strong&gt; di Foundry, tapi permukaan konsumsinya adalah protokol MCP yang terbuka. Bisa digunakan dari agen kustom (Microsoft Agent Framework, LangGraph), GitHub Copilot dan IDE lain yang mendukung MCP.&lt;/p&gt;
&lt;h2 id="mengapa-penting-sekarang"&gt;Mengapa penting sekarang&lt;/h2&gt;
&lt;p&gt;Gelombang multi-agen sedang tiba di produksi. Setiap agen baru adalah permukaan baru untuk konfigurasi duplikat, kredensial usang, dan perilaku tidak konsisten. Fondasi Build + Consume cukup untuk mulai sentralisasi. Ketika pilar Govern tiba, akan ada lapisan alat yang sepenuhnya dapat diamati dan dikontrol secara terpusat untuk seluruh armada agen.&lt;/p&gt;
&lt;h2 id="penutup"&gt;Penutup&lt;/h2&gt;
&lt;p&gt;Ini masih awal — preview publik, Python SDK dulu, Discover dan Govern masih akan datang. Tapi modelnya kokoh dan desain MCP-native berarti bekerja dengan alat yang sudah dibangun. Cek &lt;a href="https://devblogs.microsoft.com/foundry/introducing-toolboxes-in-foundry/"&gt;pengumuman resmi&lt;/a&gt; untuk memulai.&lt;/p&gt;</content:encoded></item><item><title>Hooks azd dengan Python, TypeScript, dan .NET: Selamat Tinggal Shell Script</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/azd-hooks-python-javascript-typescript-dotnet/</guid><description>Azure Developer CLI kini mendukung hooks dalam Python, JavaScript, TypeScript, dan .NET. Tidak perlu lagi beralih ke Bash hanya untuk menjalankan script migrasi.</description><content:encoded>&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/azd-hooks-python-javascript-typescript-dotnet/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Jika pernah memiliki proyek yang sepenuhnya ditulis dalam .NET namun tetap harus menulis script Bash untuk hooks azd, rasa frustrasi itu sudah pasti familiar. Mengapa harus beralih ke sintaks shell di langkah pre-provisioning ketika seluruh proyek menggunakan C#?&lt;/p&gt;
&lt;p&gt;Masalah ini kini memiliki solusi resmi. Azure Developer CLI &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-multi-language-hooks/"&gt;baru saja meluncurkan dukungan multi-bahasa untuk hooks&lt;/a&gt;, dan hasilnya sesuai ekspektasi.&lt;/p&gt;
&lt;h2 id="apa-itu-hooks"&gt;Apa itu hooks&lt;/h2&gt;
&lt;p&gt;Hooks adalah script yang berjalan di titik-titik penting dalam siklus hidup &lt;code&gt;azd&lt;/code&gt; — sebelum provisioning, setelah deployment, dan lainnya. Didefinisikan di &lt;code&gt;azure.yaml&lt;/code&gt;, mereka memungkinkan injeksi logika kustom tanpa memodifikasi CLI.&lt;/p&gt;
&lt;p&gt;Sebelumnya hanya Bash dan PowerShell yang didukung. Kini bisa menggunakan &lt;strong&gt;Python, JavaScript, TypeScript, atau .NET&lt;/strong&gt; — dan &lt;code&gt;azd&lt;/code&gt; menangani sisanya secara otomatis.&lt;/p&gt;
&lt;h2 id="cara-kerja-deteksi-bahasa"&gt;Cara kerja deteksi bahasa&lt;/h2&gt;
&lt;p&gt;Cukup arahkan hook ke sebuah file dan &lt;code&gt;azd&lt;/code&gt; akan menyimpulkan bahasa dari ekstensinya:&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;Tanpa konfigurasi tambahan. Jika ekstensinya ambigu, bisa menambahkan &lt;code&gt;kind: python&lt;/code&gt; (atau bahasa yang sesuai) secara eksplisit.&lt;/p&gt;
&lt;h2 id="detail-penting-per-bahasa"&gt;Detail penting per bahasa&lt;/h2&gt;
&lt;h3 id="python"&gt;Python&lt;/h3&gt;
&lt;p&gt;Letakkan &lt;code&gt;requirements.txt&lt;/code&gt; atau &lt;code&gt;pyproject.toml&lt;/code&gt; di samping script (atau direktori induknya). &lt;code&gt;azd&lt;/code&gt; akan otomatis membuat virtual environment, menginstal dependensi, dan menjalankan script.&lt;/p&gt;
&lt;h3 id="javascript-dan-typescript"&gt;JavaScript dan TypeScript&lt;/h3&gt;
&lt;p&gt;Pola yang sama — letakkan &lt;code&gt;package.json&lt;/code&gt; dekat script dan &lt;code&gt;azd&lt;/code&gt; akan menjalankan &lt;code&gt;npm install&lt;/code&gt; terlebih dahulu. Untuk TypeScript, menggunakan &lt;code&gt;npx tsx&lt;/code&gt; tanpa langkah kompilasi dan tanpa &lt;code&gt;tsconfig.json&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="net"&gt;.NET&lt;/h3&gt;
&lt;p&gt;Dua mode tersedia:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mode project&lt;/strong&gt;: Jika ada &lt;code&gt;.csproj&lt;/code&gt; di samping script, &lt;code&gt;azd&lt;/code&gt; otomatis menjalankan &lt;code&gt;dotnet restore&lt;/code&gt; dan &lt;code&gt;dotnet build&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mode single-file&lt;/strong&gt;: Di .NET 10+, file &lt;code&gt;.cs&lt;/code&gt; mandiri dapat dijalankan langsung via &lt;code&gt;dotnet run script.cs&lt;/code&gt;. Tidak perlu file project.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="konfigurasi-per-executor"&gt;Konfigurasi per executor&lt;/h2&gt;
&lt;p&gt;Setiap bahasa mendukung blok &lt;code&gt;config&lt;/code&gt; opsional:&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="mengapa-ini-penting-bagi-developer-net"&gt;Mengapa ini penting bagi developer .NET&lt;/h2&gt;
&lt;p&gt;Hooks adalah tempat terakhir dalam proyek berbasis azd yang memaksa pergantian bahasa. Sekarang seluruh deployment pipeline — dari kode aplikasi hingga lifecycle hooks — bisa hidup dalam satu bahasa. Utility .NET yang sudah ada bisa digunakan kembali di hooks, shared library bisa direferensikan, dan pemeliharaan shell script pun berakhir.&lt;/p&gt;
&lt;h2 id="penutup"&gt;Penutup&lt;/h2&gt;
&lt;p&gt;Salah satu perubahan yang terlihat kecil namun benar-benar mengurangi gesekan dalam workflow azd sehari-hari. Dukungan multi-bahasa untuk hooks sudah tersedia sekarang — cek &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-multi-language-hooks/"&gt;post resmi&lt;/a&gt; untuk dokumentasi lengkap.&lt;/p&gt;</content:encoded></item><item><title>Windows App Dev CLI v0.3: F5 dari Terminal dan UI Automation untuk Agen AI</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/windows-app-dev-cli-v03-run-ui-automation/</guid><description>Windows App Development CLI v0.3 menghadirkan winapp run untuk peluncuran debug dari terminal, winapp ui untuk otomasi antarmuka, dan paket NuGet baru yang membuat dotnet run bekerja dengan aplikasi yang dikemas.</description><content:encoded>&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/windows-app-dev-cli-v03-run-ui-automation/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Pengalaman F5 di Visual Studio sangat bagus. Tapi harus membuka VS hanya untuk menjalankan dan men-debug aplikasi Windows yang dikemas — baik di pipeline CI, workflow otomatis, atau saat agen AI menjalankan pengujian — terlalu berlebihan.&lt;/p&gt;
&lt;p&gt;Windows App Development CLI v0.3 baru saja &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;dirilis&lt;/a&gt; dan menangani hal ini secara langsung dengan dua fitur utama: &lt;code&gt;winapp run&lt;/code&gt; dan &lt;code&gt;winapp ui&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="winapp-run-f5-dari-mana-saja"&gt;winapp run: F5 dari Mana Saja&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;winapp run&lt;/code&gt; menerima folder aplikasi yang tidak dikemas dan sebuah manifest, lalu melakukan semua yang VS lakukan saat debug launch: mendaftarkan loose package, menjalankan aplikasi, dan mempertahankan &lt;code&gt;LocalState&lt;/code&gt; antar re-deploy.&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;# Build aplikasi, lalu jalankan sebagai aplikasi yang dikemas&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;Bekerja untuk WinUI, WPF, WinForms, Console, Avalonia, dan lainnya. Mode dirancang untuk developer maupun workflow otomatis:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--detach&lt;/code&gt;&lt;/strong&gt;: Meluncurkan dan segera mengembalikan kontrol ke terminal. Sempurna untuk CI.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--unregister-on-exit&lt;/code&gt;&lt;/strong&gt;: Membersihkan package yang terdaftar saat aplikasi ditutup.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--debug-output&lt;/code&gt;&lt;/strong&gt;: Menangkap pesan &lt;code&gt;OutputDebugString&lt;/code&gt; dan exception secara real-time.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="paket-nuget-baru-dotnet-run-untuk-aplikasi-yang-dikemas"&gt;Paket NuGet Baru: dotnet run untuk Aplikasi yang Dikemas&lt;/h2&gt;
&lt;p&gt;Untuk developer .NET ada paket NuGet baru: &lt;code&gt;Microsoft.Windows.SDK.BuildTools.WinApp&lt;/code&gt;. Setelah diinstal, &lt;code&gt;dotnet run&lt;/code&gt; menangani seluruh inner loop: build, menyiapkan loose-layout package, mendaftar di Windows, dan meluncurkan — semuanya dalam satu langkah.&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;# atau&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-ui-automation-dari-command-line"&gt;winapp ui: UI Automation dari Command Line&lt;/h2&gt;
&lt;p&gt;Inilah fitur yang membuka skenario agentik. &lt;code&gt;winapp ui&lt;/code&gt; memberikan akses UI Automation penuh ke aplikasi Windows mana pun yang sedang berjalan — WPF, WinForms, Win32, Electron, WinUI3 — langsung dari terminal.&lt;/p&gt;
&lt;p&gt;Yang bisa dilakukan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Menampilkan semua jendela tingkat teratas&lt;/li&gt;
&lt;li&gt;Menelusuri pohon UI Automation lengkap dari sebuah jendela&lt;/li&gt;
&lt;li&gt;Mencari elemen berdasarkan nama, tipe, atau ID otomasi&lt;/li&gt;
&lt;li&gt;Klik, invoke, dan set nilai&lt;/li&gt;
&lt;li&gt;Mengambil screenshot&lt;/li&gt;
&lt;li&gt;Menunggu elemen muncul — ideal untuk sinkronisasi pengujian&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Menggabungkan &lt;code&gt;winapp ui&lt;/code&gt; dengan &lt;code&gt;winapp run&lt;/code&gt; menghasilkan workflow build → jalankan → verifikasi yang lengkap dari terminal. Agen dapat menjalankan aplikasi, memeriksa status UI, berinteraksi secara programatik, dan memvalidasi hasilnya.&lt;/p&gt;
&lt;h2 id="fitur-lainnya"&gt;Fitur Lainnya&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;winapp unregister&lt;/code&gt;&lt;/strong&gt;: Menghapus package yang sideloaded setelah selesai.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;winapp manifest add-alias&lt;/code&gt;&lt;/strong&gt;: Menambahkan alias untuk menjalankan aplikasi berdasarkan nama dari terminal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tab completion&lt;/strong&gt;: Satu perintah untuk mengatur tab completion PowerShell.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="cara-mendapatkannya"&gt;Cara Mendapatkannya&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;# atau&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;CLI dalam public preview. Lihat &lt;a href="https://github.com/microsoft/WinAppCli"&gt;repositori GitHub&lt;/a&gt; untuk dokumentasi lengkap dan &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;pengumuman asli&lt;/a&gt; untuk semua detailnya.&lt;/p&gt;</content:encoded></item><item><title>VS Code 1.117: Agen Mendapatkan Cabang Git Sendiri dan Saya Sangat Setuju</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/vscode-1-117-agents-autopilot-worktrees/</guid><description>VS Code 1.117 menghadirkan isolasi worktree untuk sesi agen, mode Autopilot yang persisten, dan dukungan subagen. Alur kerja coding agentik semakin nyata.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/vscode-1-117-agents-autopilot-worktrees/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Garis antara &amp;ldquo;asisten AI&amp;rdquo; dan &amp;ldquo;rekan tim AI&amp;rdquo; terus menipis. VS Code 1.117 baru saja mendarat dan &lt;a href="https://code.visualstudio.com/updates/v1_117"&gt;catatan rilis lengkap&lt;/a&gt; penuh, tapi ceritanya jelas: agen menjadi warga kelas satu dalam alur kerjamu.&lt;/p&gt;
&lt;p&gt;Inilah yang sebenarnya penting.&lt;/p&gt;
&lt;h2 id="mode-autopilot-akhirnya-mengingat-preferensimu"&gt;Mode Autopilot akhirnya mengingat preferensimu&lt;/h2&gt;
&lt;p&gt;Sebelumnya, kamu harus mengaktifkan kembali Autopilot setiap kali memulai sesi baru. Menjengkelkan. Sekarang mode izinmu persisten antar sesi, dan kamu bisa mengonfigurasi defaultnya.&lt;/p&gt;
&lt;p&gt;Agent Host mendukung tiga konfigurasi sesi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Default&lt;/strong&gt; — alat meminta konfirmasi sebelum berjalan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bypass&lt;/strong&gt; — menyetujui segalanya secara otomatis&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autopilot&lt;/strong&gt; — sepenuhnya otonom, menjawab pertanyaannya sendiri dan terus berjalan&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jika kamu membuat scaffold proyek .NET baru dengan migrasi, Docker, dan CI — atur ke Autopilot sekali dan lupakan. Preferensi itu bertahan.&lt;/p&gt;
&lt;h2 id="isolasi-worktree-dan-git-untuk-sesi-agen"&gt;Isolasi Worktree dan git untuk sesi agen&lt;/h2&gt;
&lt;p&gt;Ini yang besar. Sesi agen sekarang mendukung isolasi worktree dan git penuh. Artinya ketika agen mengerjakan tugas, ia mendapatkan cabang dan direktori kerja sendiri. Cabang utamamu tetap tidak tersentuh.&lt;/p&gt;
&lt;p&gt;Bahkan lebih baik — Copilot CLI menghasilkan nama cabang yang bermakna untuk sesi worktree ini. Tidak ada lagi &lt;code&gt;agent-session-abc123&lt;/code&gt;. Kamu mendapatkan sesuatu yang benar-benar mendeskripsikan apa yang dilakukan agen.&lt;/p&gt;
&lt;p&gt;Untuk developer .NET yang menjalankan beberapa cabang fitur atau memperbaiki bug sementara tugas scaffolding panjang berjalan, ini adalah perubahan besar.&lt;/p&gt;
&lt;h2 id="subagen-dan-tim-agen"&gt;Subagen dan tim agen&lt;/h2&gt;
&lt;p&gt;Agent Host Protocol sekarang mendukung subagen. Agen bisa menjalankan agen lain untuk menangani bagian dari sebuah tugas. Agen utama berkoordinasi, dan agen khusus menangani bagian-bagiannya.&lt;/p&gt;
&lt;h2 id="output-terminal-otomatis-disertakan-saat-agen-mengirim-input"&gt;Output terminal otomatis disertakan saat agen mengirim input&lt;/h2&gt;
&lt;p&gt;Kecil tapi bermakna. Ketika agen mengirim input ke terminal, output terminal sekarang secara otomatis disertakan dalam konteks. Jika kamu pernah melihat agen menjalankan &lt;code&gt;dotnet build&lt;/code&gt;, gagal, dan kemudian membutuhkan giliran ekstra hanya untuk melihat kesalahan — gesekan itu hilang.&lt;/p&gt;
&lt;h2 id="aplikasi-agen-yang-memperbarui-dirinya-sendiri-di-macos"&gt;Aplikasi Agen yang memperbarui dirinya sendiri di macOS&lt;/h2&gt;
&lt;p&gt;Aplikasi Agen mandiri di macOS sekarang memperbarui dirinya sendiri. Tidak perlu lagi mengunduh versi baru secara manual.&lt;/p&gt;
&lt;h2 id="kesimpulan"&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;VS Code 1.117 adalah infrastruktur. Isolasi worktree, izin persisten, protokol subagen — ini adalah blok bangunan untuk alur kerja di mana agen menangani tugas nyata dan paralel tanpa mengganggu kodemu. Jika kamu membangun dengan .NET dan belum menyelami alur kerja agentik, sejujurnya, sekarang adalah waktu yang tepat untuk mulai.&lt;/p&gt;</content:encoded></item><item><title>Berhenti Mengawasi Terminal: Mode Terpisah Aspire Mengubah Alur Kerja</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/</guid><description>Aspire 13.2 memungkinkan Anda menjalankan AppHost di background dan mengambil kembali terminal Anda. Dikombinasikan dengan perintah CLI baru dan dukungan agen, ini lebih besar dari yang terlihat.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Setiap kali Anda menjalankan Aspire AppHost, terminal Anda hilang. Terkunci. Terpakai hingga Ctrl+C. Perlu menjalankan perintah cepat? Buka tab baru. Ingin memeriksa log? Tab lain. Gesekan kecil ini menumpuk dengan cepat.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 memperbaiki ini. James Newton-King &lt;a href="https://devblogs.microsoft.com/aspire/aspire-detached-mode-and-process-management/"&gt;menulis semua detailnya&lt;/a&gt;, dan jujur, ini adalah salah satu fitur yang segera mengubah cara Anda bekerja.&lt;/p&gt;
&lt;h2 id="mode-terpisah-satu-perintah-terminal-kembali"&gt;Mode terpisah: satu perintah, terminal kembali&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;Ini singkatan dari &lt;code&gt;aspire run --detach&lt;/code&gt;. AppHost Anda boot di background dan Anda mendapatkan terminal kembali segera.&lt;/p&gt;
&lt;h2 id="mengelola-yang-sedang-berjalan"&gt;Mengelola yang sedang berjalan&lt;/h2&gt;
&lt;p&gt;Berjalan di background hanya berguna jika Anda bisa mengelola apa yang berjalan. Aspire 13.2 menyertakan set lengkap perintah 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;# Daftar semua AppHost yang berjalan&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;# Periksa state AppHost tertentu&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;# Stream log dari AppHost yang berjalan&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;# Hentikan AppHost tertentu&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="gabungkan-dengan-mode-terisolasi"&gt;Gabungkan dengan mode terisolasi&lt;/h2&gt;
&lt;p&gt;Mode terpisah secara alami berpasangan dengan mode terisolasi:&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;Setiap instance mendapat port acak, rahasia terpisah, dan siklus hidupnya sendiri.&lt;/p&gt;
&lt;h2 id="mengapa-ini-besar-untuk-agen-coding"&gt;Mengapa ini besar untuk agen coding&lt;/h2&gt;
&lt;p&gt;Agen coding yang bekerja di terminal Anda sekarang dapat:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Memulai aplikasi dengan &lt;code&gt;aspire start&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Mengkueri statusnya dengan &lt;code&gt;aspire describe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Memeriksa log dengan &lt;code&gt;aspire logs&lt;/code&gt; untuk mendiagnosis masalah&lt;/li&gt;
&lt;li&gt;Menghentikannya dengan &lt;code&gt;aspire stop&lt;/code&gt; saat selesai&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Menjalankan &lt;code&gt;aspire agent init&lt;/code&gt; menyiapkan file skill Aspire yang mengajarkan agen perintah-perintah ini.&lt;/p&gt;
&lt;h2 id="kesimpulan"&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;Mode terpisah adalah peningkatan alur kerja yang menyamar sebagai flag sederhana. Baca &lt;a href="https://devblogs.microsoft.com/aspire/aspire-detached-mode-and-process-management/"&gt;postingan lengkap&lt;/a&gt; dan dapatkan Aspire 13.2 dengan &lt;code&gt;aspire update --self&lt;/code&gt;.&lt;/p&gt;</content:encoded></item><item><title>Docker Sandbox Memungkinkan Agen Copilot Melakukan Refaktor Kode Tanpa Membahayakan Mesin Anda</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/copilot-docker-sandbox-agentic-refactoring/</guid><description>Docker Sandbox memberi agen GitHub Copilot microVM yang aman untuk melakukan refaktor sesuka hati — tanpa prompt izin, tanpa risiko ke host. Inilah mengapa itu mengubah segalanya untuk modernisasi .NET skala besar.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/copilot-docker-sandbox-agentic-refactoring/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jika Anda menggunakan mode agen Copilot untuk sesuatu selain pengeditan kecil, Anda tahu rasa sakitnya. Setiap penulisan file, setiap perintah terminal — prompt izin lainnya.&lt;/p&gt;
&lt;p&gt;Tim Azure baru saja menerbitkan postingan tentang &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 untuk agen GitHub Copilot&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="yang-sebenarnya-diberikan-docker-sandbox"&gt;Yang sebenarnya diberikan Docker Sandbox&lt;/h2&gt;
&lt;p&gt;Ide dasarnya sederhana: jalankan microVM ringan dengan lingkungan Linux penuh, sinkronkan workspace Anda ke dalamnya, dan biarkan agen Copilot beroperasi bebas di dalam.&lt;/p&gt;
&lt;p&gt;Ini lebih dari sekadar &amp;ldquo;jalankan sesuatu dalam container&amp;rdquo;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sinkronisasi workspace dua arah&lt;/strong&gt; yang mempertahankan jalur absolut&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker daemon privat&lt;/strong&gt; yang berjalan di dalam microVM&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proxy penyaringan HTTP/HTTPS&lt;/strong&gt; yang mengontrol akses jaringan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mode YOLO&lt;/strong&gt; — agen berjalan tanpa prompt izin&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mengapa-developer-net-harus-peduli"&gt;Mengapa developer .NET harus peduli&lt;/h2&gt;
&lt;p&gt;Dengan Docker Sandbox, Anda dapat mengarahkan agen Copilot ke proyek, membiarkannya melakukan refaktor dengan bebas di dalam microVM, menjalankan &lt;code&gt;dotnet build&lt;/code&gt; dan &lt;code&gt;dotnet test&lt;/code&gt; untuk validasi, dan hanya menerima perubahan yang benar-benar berfungsi.&lt;/p&gt;
&lt;h2 id="kesimpulan"&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;Docker Sandbox memecahkan ketegangan fundamental dalam agentic coding: agen membutuhkan kebebasan untuk berguna, tetapi kebebasan di mesin host Anda berbahaya. MicroVM memberi Anda keduanya.&lt;/p&gt;</content:encoded></item><item><title>Alat Azure MCP Kini Tertanam di Visual Studio 2022 — Tanpa Ekstensi</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/azure-mcp-tools-built-into-visual-studio-2022/</guid><description>Alat Azure MCP dikirim sebagai bagian dari workload pengembangan Azure di Visual Studio 2022. Lebih dari 230 alat, 45 layanan Azure, nol ekstensi untuk dipasang.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/azure-mcp-tools-built-into-visual-studio-2022/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jika Anda menggunakan alat Azure MCP di Visual Studio melalui ekstensi terpisah, Anda tahu prosesnya — instal VSIX, restart, berharap tidak rusak, kelola ketidakcocokan versi. Gesekan itu hilang.&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;mengumumkan&lt;/a&gt; bahwa alat Azure MCP kini dikirim langsung sebagai bagian dari workload pengembangan Azure di Visual Studio 2022. Tanpa ekstensi. Tanpa VSIX.&lt;/p&gt;
&lt;h2 id="cara-mengaktifkannya"&gt;Cara mengaktifkannya&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Perbarui ke Visual Studio 2022 &lt;strong&gt;17.14.30&lt;/strong&gt; atau lebih tinggi&lt;/li&gt;
&lt;li&gt;Pastikan workload &lt;strong&gt;Azure development&lt;/strong&gt; terinstal&lt;/li&gt;
&lt;li&gt;Buka GitHub Copilot Chat&lt;/li&gt;
&lt;li&gt;Klik tombol &lt;strong&gt;Pilih alat&lt;/strong&gt; (ikon dua kunci pas)&lt;/li&gt;
&lt;li&gt;Aktifkan &lt;strong&gt;Azure MCP Server&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tetap aktif di antara sesi.&lt;/p&gt;
&lt;h2 id="catatan"&gt;Catatan&lt;/h2&gt;
&lt;p&gt;Alat dinonaktifkan secara default — Anda perlu mengaktifkannya. Bagi developer .NET yang tinggal di Visual Studio, ini mengurangi alasan untuk beralih konteks ke portal Azure.&lt;/p&gt;</content:encoded></item><item><title>azd update — Satu Perintah untuk Semua Package Manager Anda</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/azd-update-universal-upgrade-command/</guid><description>Azure Developer CLI kini memiliki perintah pembaruan universal yang bekerja terlepas dari cara Anda menginstalnya — winget, Homebrew, Chocolatey, atau skrip instalasi.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/azd-update-universal-upgrade-command/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Anda tahu pesan &amp;ldquo;Versi baru azd tersedia&amp;rdquo; yang muncul setiap beberapa minggu? Yang Anda abaikan karena tidak ingat apakah Anda menginstal &lt;code&gt;azd&lt;/code&gt; melalui winget, Homebrew, atau skrip curl enam bulan lalu? Ini akhirnya diperbaiki.&lt;/p&gt;
&lt;p&gt;Microsoft baru saja merilis &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-update/"&gt;&lt;code&gt;azd update&lt;/code&gt;&lt;/a&gt; — perintah tunggal yang memperbarui Azure Developer CLI ke versi terbaru terlepas dari cara asli Anda menginstalnya.&lt;/p&gt;
&lt;h2 id="cara-kerjanya"&gt;Cara kerjanya&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;Itu saja. Untuk akses awal ke fitur baru:&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;Perintah mendeteksi metode instalasi Anda saat ini dan menggunakan mekanisme pembaruan yang sesuai di balik layar.&lt;/p&gt;
&lt;h2 id="catatan-kecil"&gt;Catatan kecil&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd update&lt;/code&gt; hadir mulai versi 1.23.x. Jika Anda menggunakan versi lebih lama, Anda perlu melakukan satu pembaruan manual terakhir. Setelah itu, &lt;code&gt;azd update&lt;/code&gt; menangani semuanya.&lt;/p&gt;
&lt;h2 id="mengapa-ini-penting"&gt;Mengapa ini penting&lt;/h2&gt;
&lt;p&gt;Ini adalah peningkatan kualitas hidup yang kecil, tetapi bagi yang menggunakan &lt;code&gt;azd&lt;/code&gt; setiap hari untuk men-deploy agen AI dan aplikasi Aspire ke Azure, tetap terkini itu penting.&lt;/p&gt;
&lt;p&gt;Baca &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-update/"&gt;pengumuman lengkap&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>.NET Aspire 13.2 Ingin Menjadi Sahabat Terbaik Agen AI Anda</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/</guid><description>Aspire 13.2 all-in pada pengembangan agentik — output CLI terstruktur, eksekusi terisolasi, lingkungan yang menyembuhkan sendiri, dan data OpenTelemetry penuh agar agen AI Anda benar-benar dapat membangun, menjalankan, dan mengamati aplikasi Anda.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Anda tahu momen ketika agen coding AI Anda menulis kode yang solid, Anda bersemangat, kemudian semuanya berantakan saat mencoba &lt;em&gt;menjalankannya&lt;/em&gt;? Konflik port, phantom process, variabel lingkungan yang salah — tiba-tiba agen Anda membakar token untuk men-debug masalah startup alih-alih membangun fitur.&lt;/p&gt;
&lt;p&gt;Tim Aspire baru saja merilis &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;post yang sangat bijaksana&lt;/a&gt; tentang masalah ini, dan jawaban mereka menarik: Aspire 13.2 dirancang tidak hanya untuk manusia, tetapi untuk agen AI.&lt;/p&gt;
&lt;h2 id="aspire-sebagai-infrastruktur-agen"&gt;Aspire sebagai infrastruktur agen&lt;/h2&gt;
&lt;p&gt;Inilah yang dibawa Aspire 13.2 ke meja pengembangan agentik:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Seluruh stack dalam kode bertipe.&lt;/strong&gt; AppHost mendefinisikan topologi lengkap — dalam TypeScript atau C# yang dapat dikompilasi:&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;strong&gt;Satu perintah untuk semuanya.&lt;/strong&gt; Alih-alih menyulap &lt;code&gt;docker compose up&lt;/code&gt;, &lt;code&gt;npm run dev&lt;/code&gt;, dan skrip startup database — semuanya hanya &lt;code&gt;aspire start&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mode terisolasi untuk agen paralel.&lt;/strong&gt; Dengan &lt;code&gt;--isolated&lt;/code&gt;, setiap jalankan Aspire mendapat port acak sendiri dan rahasia pengguna terpisah.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mata agen melalui telemetri.&lt;/strong&gt; Aspire CLI mengekspos data OpenTelemetry penuh selama development — trace, metrik, log terstruktur.&lt;/p&gt;
&lt;h2 id="analogi-bowling-bumper"&gt;Analogi bowling bumper&lt;/h2&gt;
&lt;p&gt;Tim Aspire menggunakan analogi yang bagus: pikirkan Aspire sebagai bumper jalur bowling untuk agen AI. Jika agennya tidak sempurna (dan memang tidak akan), bumper mencegahnya melempar ke selokan.&lt;/p&gt;
&lt;h2 id="kesimpulan"&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;Aspire 13.2 bukan hanya framework aplikasi terdistribusi — ini menjadi infrastruktur agen yang esensial. Baca &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;post lengkap&lt;/a&gt; dari tim Aspire.&lt;/p&gt;</content:encoded></item><item><title>Mode Terisolasi Aspire Memperbaiki Mimpi Buruk Konflik Port dalam Pengembangan Paralel</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/</guid><description>Aspire 13.2 memperkenalkan mode --isolated: port acak, rahasia terpisah, dan nol tabrakan saat menjalankan beberapa instans AppHost yang sama. Sempurna untuk agen AI, worktree, dan alur kerja paralel.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jika Anda pernah mencoba menjalankan dua instans proyek yang sama secara bersamaan, Anda tahu rasa sakitnya. Port 8080 sudah digunakan.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 memperbaiki ini dengan satu flag. James Newton-King &lt;a href="https://devblogs.microsoft.com/aspire/aspire-isolated-mode-parallel-development/"&gt;menulis semua detailnya&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="perbaikan---isolated"&gt;Perbaikan: &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;Setiap run mendapat:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Port acak&lt;/strong&gt; — tidak ada tabrakan antar instans&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;User secrets terisolasi&lt;/strong&gt; — connection string dan API key tetap terpisah per instans&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="skenario-nyata"&gt;Skenario nyata&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Beberapa checkout:&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;# Terminal 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;# Terminal 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;Keduanya berjalan tanpa konflik.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agen latar belakang di VS Code.&lt;/strong&gt; Ketika agen latar belakang Copilot Chat membuat git worktree untuk bekerja secara independen, mode terisolasi memastikan kedua instans berfungsi.&lt;/p&gt;
&lt;h2 id="kesimpulan"&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;Mode terisolasi adalah fitur kecil yang memecahkan masalah nyata yang semakin umum. Dapatkan 13.2 dengan &lt;code&gt;aspire update --self&lt;/code&gt;.&lt;/p&gt;</content:encoded></item><item><title>Pengaturan Floating Windows Visual Studio yang Tidak Kamu Ketahui (Tapi Harus Tahu)</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/visual-studio-floating-windows-powertoys/</guid><description>Pengaturan tersembunyi di Visual Studio memberi kendali penuh atas floating windows — entri taskbar mandiri, perilaku multi-monitor yang benar, dan integrasi FancyZones yang sempurna. Satu dropdown mengubah segalanya.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/visual-studio-floating-windows-powertoys/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jika kamu menggunakan beberapa monitor dengan Visual Studio (dan jujur saja, siapa yang tidak zaman sekarang), kamu mungkin pernah merasakan frustrasi ini: floating tool windows menghilang saat kamu meminimalkan IDE utama, selalu berada di atas segalanya, dan tidak muncul sebagai tombol taskbar terpisah. Ini mungkin berhasil untuk beberapa alur kerja, tapi untuk setup multi-monitor sangat menjengkelkan.&lt;/p&gt;
&lt;p&gt;Mads Kristensen dari tim Visual Studio &lt;a href="https://devblogs.microsoft.com/visualstudio/take-full-control-of-your-floating-windows-in-visual-studio/"&gt;berbagi pengaturan yang kurang dikenal&lt;/a&gt; yang sepenuhnya mengubah cara floating windows berperilaku. Satu dropdown. Itu saja.&lt;/p&gt;
&lt;h2 id="pengaturannya"&gt;Pengaturannya&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;Dropdown &amp;ldquo;These floating windows are owned by the main window&amp;rdquo; memiliki tiga opsi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;None&lt;/strong&gt; — independensi penuh. Setiap floating window mendapat entri taskbar sendiri dan berperilaku seperti jendela Windows biasa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tool Windows&lt;/strong&gt; (default) — dokumen mengapung bebas, tool windows tetap terikat ke IDE.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documents and Tool Windows&lt;/strong&gt; — perilaku Visual Studio klasik, semuanya terikat ke jendela utama.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mengapa-none-adalah-pilihan-terbaik-untuk-setup-multi-monitor"&gt;Mengapa &amp;ldquo;None&amp;rdquo; adalah Pilihan Terbaik untuk Setup Multi-Monitor&lt;/h2&gt;
&lt;p&gt;Atur ke &lt;strong&gt;None&lt;/strong&gt; dan tiba-tiba semua floating tool windows dan dokumen berperilaku seperti aplikasi Windows nyata. Mereka muncul di taskbar, tetap terlihat saat kamu meminimalkan jendela Visual Studio utama, dan berhenti memaksa diri ke depan segalanya.&lt;/p&gt;
&lt;p&gt;Kombinasikan ini dengan &lt;strong&gt;PowerToys FancyZones&lt;/strong&gt; dan itu mengubah segalanya. Buat tata letak kustom di seluruh monitormu, snap Solution Explorer ke satu zona, debugger ke zona lain, dan file kode di mana pun kamu mau. Semuanya tetap di tempat, semuanya dapat diakses secara mandiri.&lt;/p&gt;
&lt;h2 id="rekomendasi-cepat"&gt;Rekomendasi Cepat&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pengguna multi-monitor&lt;/strong&gt;: Atur ke &lt;strong&gt;None&lt;/strong&gt;, pasangkan dengan FancyZones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Floating windows sesekali&lt;/strong&gt;: &lt;strong&gt;Tool Windows&lt;/strong&gt; (default) adalah jalan tengah yang solid&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alur kerja tradisional&lt;/strong&gt;: &lt;strong&gt;Documents and Tool Windows&lt;/strong&gt; mempertahankan gaya klasik&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tips: &lt;strong&gt;Ctrl + double-click&lt;/strong&gt; pada title bar tool window mana pun untuk langsung memfloat atau mendocknya. Tidak perlu restart setelah mengubah pengaturan.&lt;/p&gt;
&lt;h2 id="kesimpulan"&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;Ini salah satu pengaturan &amp;ldquo;Saya tidak percaya saya tidak tahu tentang ini&amp;rdquo;. Jika floating windows di Visual Studio pernah membuatmu kesal, pergi ubah ini sekarang.&lt;/p&gt;
&lt;p&gt;Baca &lt;a href="https://devblogs.microsoft.com/visualstudio/take-full-control-of-your-floating-windows-in-visual-studio/"&gt;postingan lengkapnya&lt;/a&gt; untuk detail dan screenshot.&lt;/p&gt;</content:encoded></item><item><title>VS Code 1.116 — Aplikasi Agen Mendapatkan Navigasi Keyboard dan Penyelesaian Konteks File</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/vscode-1-116-agents-app-updates/</guid><description>VS Code 1.116 berfokus pada polesan aplikasi Agen — keybinding khusus, peningkatan aksesibilitas, penyelesaian konteks file, dan resolusi tautan CSS @import.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/vscode-1-116-agents-app-updates/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;VS Code 1.116 adalah rilis April 2026, dan meskipun lebih ringan dari beberapa pembaruan terbaru, perubahannya fokus dan bermakna — terutama jika kamu menggunakan aplikasi Agen setiap hari.&lt;/p&gt;
&lt;p&gt;Inilah yang mendarat, berdasarkan &lt;a href="https://code.visualstudio.com/updates/v1_116"&gt;catatan rilis resmi&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="peningkatan-aplikasi-agen"&gt;Peningkatan aplikasi Agen&lt;/h2&gt;
&lt;p&gt;Aplikasi Agen terus matang dengan polesan kegunaan yang membuat perbedaan nyata dalam alur kerja sehari-hari:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Keybinding khusus&lt;/strong&gt; — kamu sekarang bisa memfokuskan tampilan Changes, pohon file dalam Changes, dan tampilan Chat Customizations dengan perintah dan pintasan keyboard khusus.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dialog bantuan aksesibilitas&lt;/strong&gt; — menekan &lt;code&gt;Alt+F1&lt;/code&gt; di kotak input chat sekarang membuka dialog bantuan aksesibilitas yang menampilkan perintah dan keybinding yang tersedia.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Penyelesaian konteks file&lt;/strong&gt; — ketik &lt;code&gt;#&lt;/code&gt; di chat aplikasi Agen untuk memicu penyelesaian konteks file yang dicakup ke workspace saat ini.&lt;/p&gt;
&lt;h2 id="resolusi-tautan-css-import"&gt;Resolusi tautan CSS &lt;code&gt;@import&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Sesuatu yang bagus untuk developer frontend: VS Code sekarang menyelesaikan referensi CSS &lt;code&gt;@import&lt;/code&gt; yang menggunakan jalur node_modules. Kamu bisa &lt;code&gt;Ctrl+klik&lt;/code&gt; melalui import seperti &lt;code&gt;@import &amp;quot;some-module/style.css&amp;quot;&lt;/code&gt; saat menggunakan bundler.&lt;/p&gt;
&lt;h2 id="kesimpulan"&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;VS Code 1.116 tentang penyempurnaan — membuat aplikasi Agen lebih mudah dinavigasi, lebih mudah diakses, dan lebih ramah keyboard. Lihat &lt;a href="https://code.visualstudio.com/updates/v1_116"&gt;catatan rilis lengkapnya&lt;/a&gt; untuk daftar lengkap.&lt;/p&gt;</content:encoded></item><item><title>VS Code 1.115 — Notifikasi Terminal Latar Belakang, Mode Agen SSH, dan Lainnya</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/vscode-1-115-agent-improvements/</guid><description>VS Code 1.115 menghadirkan notifikasi terminal latar belakang untuk agen, hosting agen jarak jauh SSH, tempel file di terminal, dan pelacakan edit sadar sesi. Inilah yang penting untuk developer .NET.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/vscode-1-115-agent-improvements/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;VS Code 1.115 baru saja &lt;a href="https://code.visualstudio.com/updates/v1_115"&gt;rilis&lt;/a&gt;, dan meskipun ini adalah rilis yang lebih ringan dalam hal fitur utama, peningkatan terkait agen benar-benar berguna jika kamu bekerja dengan asisten coding AI setiap hari.&lt;/p&gt;
&lt;p&gt;Biarkan aku menyoroti apa yang sebenarnya layak diketahui.&lt;/p&gt;
&lt;h2 id="terminal-latar-belakang-berkomunikasi-kembali-ke-agen"&gt;Terminal latar belakang berkomunikasi kembali ke agen&lt;/h2&gt;
&lt;p&gt;Ini adalah fitur unggulan. Terminal latar belakang sekarang secara otomatis memberi tahu agen ketika perintah selesai, termasuk kode keluar dan output terminal.&lt;/p&gt;
&lt;p&gt;Mengapa ini penting? Jika kamu menggunakan mode agen Copilot untuk menjalankan perintah build atau suite test di latar belakang, kamu tahu rasa sakit &amp;ldquo;apakah itu sudah selesai?&amp;rdquo; — terminal latar belakang pada dasarnya adalah tembak dan lupakan. Sekarang agen mendapat pemberitahuan ketika &lt;code&gt;dotnet build&lt;/code&gt; atau &lt;code&gt;dotnet test&lt;/code&gt;mu selesai, melihat output, dan dapat bereaksi sesuai. Ini adalah perubahan kecil yang membuat alur kerja yang digerakkan agen jauh lebih andal.&lt;/p&gt;
&lt;p&gt;Ada juga alat &lt;code&gt;send_to_terminal&lt;/code&gt; baru yang memungkinkan agen mengirim perintah ke terminal latar belakang dengan konfirmasi pengguna.&lt;/p&gt;
&lt;h2 id="hosting-agen-jarak-jauh-ssh"&gt;Hosting agen jarak jauh SSH&lt;/h2&gt;
&lt;p&gt;VS Code sekarang mendukung koneksi ke mesin jarak jauh melalui SSH, secara otomatis menginstal CLI dan memulainya dalam mode host agen.&lt;/p&gt;
&lt;h2 id="pelacakan-edit-dalam-sesi-agen"&gt;Pelacakan edit dalam sesi agen&lt;/h2&gt;
&lt;p&gt;Edit file yang dibuat selama sesi agen sekarang dilacak dan dipulihkan, dengan diff, undo/redo, dan pemulihan state.&lt;/p&gt;
&lt;h2 id="kesadaran-tab-browser-dan-peningkatan-lainnya"&gt;Kesadaran tab browser dan peningkatan lainnya&lt;/h2&gt;
&lt;p&gt;Beberapa tambahan kualitas hidup lainnya:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pelacakan tab browser&lt;/strong&gt; — chat sekarang bisa melacak dan menautkan ke tab browser yang dibuka selama sesi&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tempel file di terminal&lt;/strong&gt; — tempel file (termasuk gambar) ke terminal dengan Ctrl+V&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cakupan tes di minimap&lt;/strong&gt; — indikator cakupan tes sekarang muncul di minimap&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pinch-to-zoom di Mac&lt;/strong&gt; — browser terintegrasi mendukung gestur pinch-to-zoom&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="kesimpulan"&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;VS Code 1.115 adalah rilis inkremental, tapi peningkatan agen — notifikasi terminal latar belakang, hosting agen SSH, dan pelacakan edit — menambah pengalaman yang terasa lebih lancar secara keseluruhan. Lihat &lt;a href="https://code.visualstudio.com/updates/v1_115"&gt;catatan rilis lengkapnya&lt;/a&gt; untuk setiap detail.&lt;/p&gt;</content:encoded></item><item><title>Aspire 13.2 Memiliki CLI Dokumentasi — dan Agen AI Anda Bisa Menggunakannya Juga</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/aspire-docs-cli-ai-skills/</guid><description>.NET Aspire 13.2 menambahkan aspire docs — CLI untuk mencari, menelusuri, dan membaca dokumentasi resmi tanpa meninggalkan terminal. Juga berfungsi sebagai alat untuk agen AI.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/aspire-docs-cli-ai-skills/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Anda tahu momen ketika Anda sedang dalam Aspire AppHost, menghubungkan integrasi, dan perlu memeriksa parameter apa yang diharapkan integrasi Redis? Anda alt-tab ke browser, berburu di aspire.dev. Konteks hilang.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 baru saja &lt;a href="https://devblogs.microsoft.com/aspire/aspire-docs-in-your-terminal/"&gt;mengirimkan perbaikan untuk itu&lt;/a&gt;. CLI &lt;code&gt;aspire docs&lt;/code&gt; memungkinkan Anda mencari, menelusuri, dan membaca dokumentasi Aspire resmi langsung dari terminal.&lt;/p&gt;
&lt;h2 id="tiga-perintah-nol-tab-browser"&gt;Tiga perintah, nol tab browser&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;&lt;span class="c1"&gt;# Daftar semua dokumen&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs list
&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;# Cari topik&lt;/span&gt;
&lt;/span&gt;&lt;/span&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;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;# Baca halaman penuh&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs get redis-integration
&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;# Hanya satu bagian&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;Add Redis resource&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="sudut-agen-ai"&gt;Sudut agen AI&lt;/h2&gt;
&lt;p&gt;Perintah &lt;code&gt;aspire docs&lt;/code&gt; yang sama berfungsi sebagai alat untuk agen AI. Alih-alih mengarang API Aspire berdasarkan data pelatihan lama, agen bisa memanggil &lt;code&gt;aspire docs search &amp;quot;postgres&amp;quot;&lt;/code&gt;, menemukan dokumen integrasi resmi, dan membaca halaman yang tepat.&lt;/p&gt;
&lt;h2 id="kesimpulan"&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;aspire docs&lt;/code&gt; adalah fitur kecil yang memecahkan masalah nyata dengan bersih. Lihat &lt;a href="https://davidpine.dev/posts/aspire-docs-mcp-tools/"&gt;deep dive David Pine&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>azd Kini Memungkinkan Anda Menjalankan dan Men-debug Agen AI Secara Lokal — Apa yang Berubah di Maret 2026</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/azd-march-2026-local-ai-agent-debugging/</guid><description>Azure Developer CLI merilis tujuh rilis di Maret 2026. Highlight: loop jalankan-dan-debug lokal untuk agen AI, integrasi GitHub Copilot dalam pengaturan proyek, dan dukungan Container App Jobs.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/azd-march-2026-local-ai-agent-debugging/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Tujuh rilis dalam satu bulan. Itulah yang didorong oleh tim Azure Developer CLI (&lt;code&gt;azd&lt;/code&gt;) di Maret 2026, dan fitur unggulan adalah yang sudah saya tunggu: &lt;strong&gt;loop jalankan-dan-debug lokal untuk agen AI&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="jalankan-dan-debug-agen-ai-tanpa-deploy"&gt;Jalankan dan debug agen AI tanpa deploy&lt;/h2&gt;
&lt;p&gt;Ini yang besar. Ekstensi &lt;code&gt;azure.ai.agents&lt;/code&gt; baru menambahkan serangkaian perintah:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;azd ai agent run&lt;/code&gt; — memulai agen Anda secara lokal&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent invoke&lt;/code&gt; — mengirim pesan ke agen (lokal atau ter-deploy)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent show&lt;/code&gt; — menampilkan status dan kesehatan container&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent monitor&lt;/code&gt; — streaming log container secara real time&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sebelumnya, menguji agen AI berarti deploy ke Microsoft Foundry setiap kali ada perubahan. Sekarang Anda bisa beriterasi secara lokal.&lt;/p&gt;
&lt;h2 id="github-copilot-men-scaffold-proyek-azd-anda"&gt;GitHub Copilot men-scaffold proyek azd Anda&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd init&lt;/code&gt; kini menawarkan opsi &amp;ldquo;Set up with GitHub Copilot (Preview)&amp;rdquo;. Agen Copilot men-scaffold konfigurasi untuk struktur proyek Anda.&lt;/p&gt;
&lt;h2 id="container-app-jobs-dan-peningkatan-deployment"&gt;Container App Jobs dan peningkatan deployment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Container App Jobs&lt;/strong&gt;: &lt;code&gt;azd&lt;/code&gt; kini men-deploy &lt;code&gt;Microsoft.App/jobs&lt;/code&gt; melalui konfigurasi &lt;code&gt;host: containerapp&lt;/code&gt; yang ada&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Timeout deployment yang dapat dikonfigurasi&lt;/strong&gt;: Flag &lt;code&gt;--timeout&lt;/code&gt; baru pada &lt;code&gt;azd deploy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fallback build lokal&lt;/strong&gt;: Ketika remote ACR build gagal, &lt;code&gt;azd&lt;/code&gt; otomatis beralih ke Docker/Podman lokal&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validasi preflight lokal&lt;/strong&gt;: Parameter Bicep divalidasi secara lokal sebelum deploy&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="kesimpulan"&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;Loop debugging agen AI lokal adalah bintang rilis ini. Cek &lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-developer-cli-azd-march-2026/"&gt;catatan rilis lengkap&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Azure DevOps Akhirnya Memperbaiki UX Editor Markdown yang Dikeluhkan Semua Orang</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/azure-devops-markdown-editor-work-items/</guid><description>Editor Markdown Azure DevOps untuk item kerja mendapatkan perbedaan yang lebih jelas antara mode pratinjau dan mode edit. Ini perubahan kecil yang memperbaiki masalah alur kerja yang benar-benar mengganggu.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/azure-devops-markdown-editor-work-items/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jika Anda menggunakan Azure Boards, Anda mungkin pernah mengalami ini: Anda sedang membaca deskripsi item kerja, mungkin meninjau kriteria penerimaan, dan secara tidak sengaja mengklik dua kali. Boom — Anda dalam mode edit. Anda tidak ingin mengedit apa pun. Anda hanya membaca.&lt;/p&gt;
&lt;p&gt;Dan Hellem &lt;a href="https://devblogs.microsoft.com/devops/improving-the-markdown-editor-for-work-items/"&gt;mengumumkan perbaikannya&lt;/a&gt;, dan ini adalah salah satu perubahan yang terdengar kecil tetapi sebenarnya menghilangkan gesekan nyata dari alur kerja harian Anda.&lt;/p&gt;
&lt;h2 id="apa-yang-berubah"&gt;Apa yang berubah&lt;/h2&gt;
&lt;p&gt;Editor Markdown untuk bidang teks item kerja sekarang dibuka dalam &lt;strong&gt;mode pratinjau secara default&lt;/strong&gt;. Anda dapat membaca dan berinteraksi dengan konten — mengikuti tautan, meninjau pemformatan — tanpa khawatir secara tidak sengaja masuk ke mode edit.&lt;/p&gt;
&lt;p&gt;Saat Anda benar-benar ingin mengedit, Anda mengklik ikon edit di bagian atas bidang. Setelah selesai, Anda keluar kembali ke mode pratinjau secara eksplisit.&lt;/p&gt;
&lt;h2 id="mengapa-ini-lebih-penting-dari-kedengarannya"&gt;Mengapa ini lebih penting dari kedengarannya&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://developercommunity.visualstudio.com/t/Markdown-editor-for-work-item-multi-line/10935496"&gt;Thread umpan balik komunitas&lt;/a&gt; tentang ini panjang. Perilaku klik-dua-kali-untuk-edit diperkenalkan dengan editor Markdown pada Juli 2025, dan keluhan dimulai hampir seketika.&lt;/p&gt;
&lt;h2 id="status-peluncuran"&gt;Status peluncuran&lt;/h2&gt;
&lt;p&gt;Ini sudah diluncurkan ke sebagian pelanggan dan akan diperluas ke semua orang dalam dua hingga tiga minggu ke depan.&lt;/p&gt;</content:encoded></item><item><title>Bookmark Studio Menghadirkan Navigasi Berbasis Slot dan Berbagi ke Bookmark Visual Studio</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/bookmark-studio-visual-studio-extension/</guid><description>Ekstensi Bookmark Studio baru dari Mads Kristensen menambahkan navigasi slot berbasis keyboard, manajer bookmark, warna, label, dan kemampuan ekspor/berbagi ke bookmark Visual Studio.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/bookmark-studio-visual-studio-extension/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bookmark di Visual Studio selalu&amp;hellip; cukup baik. Anda mengaturnya, menavigasi ke yang berikutnya, lupa mana yang mana.&lt;/p&gt;
&lt;p&gt;Mads Kristensen baru saja &lt;a href="https://devblogs.microsoft.com/visualstudio/bookmark-studio-evolving-bookmarks-in-visual-studio/"&gt;merilis Bookmark Studio&lt;/a&gt;, ekstensi eksperimental yang mengisi kesenjangan yang mungkin Anda temui jika menggunakan bookmark secara teratur.&lt;/p&gt;
&lt;h2 id="navigasi-berbasis-slot"&gt;Navigasi berbasis slot&lt;/h2&gt;
&lt;p&gt;Tambahan utama: bookmark sekarang dapat ditetapkan ke slot 1–9 dan langsung melompat dengan &lt;code&gt;Alt+Shift+1&lt;/code&gt; hingga &lt;code&gt;Alt+Shift+9&lt;/code&gt;. Ini mengubah bookmark dari &amp;ldquo;saya punya beberapa bookmark di suatu tempat&amp;rdquo; menjadi &amp;ldquo;Slot 3 adalah controller API saya, Slot 5 adalah lapisan layanan.&amp;rdquo;&lt;/p&gt;
&lt;h2 id="manajer-bookmark"&gt;Manajer Bookmark&lt;/h2&gt;
&lt;p&gt;Jendela alat baru menampilkan semua bookmark Anda di satu tempat dengan pemfilteran berdasarkan nama, file, lokasi, warna, atau slot.&lt;/p&gt;
&lt;h2 id="organisasi-dengan-label-warna-dan-folder"&gt;Organisasi dengan label, warna, dan folder&lt;/h2&gt;
&lt;p&gt;Bookmark secara opsional dapat memiliki label dan warna serta dikelompokkan ke dalam folder. Semua metadata disimpan per solusi.&lt;/p&gt;
&lt;h2 id="ekspor-dan-berbagi"&gt;Ekspor dan berbagi&lt;/h2&gt;
&lt;p&gt;Bookmark Studio memungkinkan Anda mengekspor bookmark sebagai teks biasa, Markdown, atau CSV:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sertakan jalur bookmark dalam deskripsi pull request&lt;/li&gt;
&lt;li&gt;Bagikan jejak investigasi dengan rekan tim&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ambil dari &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>Pembaruan Maret Visual Studio Memungkinkan Kamu Membangun Agen Copilot Kustom — dan Alat find_symbol Adalah Hal Besar</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/visual-studio-march-2026-custom-copilot-agents/</guid><description>Pembaruan Maret 2026 Visual Studio menghadirkan agen Copilot kustom, skill agen yang dapat digunakan ulang, alat find_symbol yang sadar bahasa, dan profiling bertenaga Copilot dari Test Explorer. Inilah yang penting.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/visual-studio-march-2026-custom-copilot-agents/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Visual Studio baru saja mendapatkan pembaruan Copilot paling signifikan hingga saat ini. Mark Downie &lt;a href="https://devblogs.microsoft.com/visualstudio/visual-studio-march-update-build-your-own-custom-agents/"&gt;mengumumkan rilis Maret&lt;/a&gt;, dan judul utamanya adalah agen kustom — tapi jujur saja, alat &lt;code&gt;find_symbol&lt;/code&gt; yang tersembunyi lebih jauh mungkin adalah fitur yang paling mengubah alur kerjamu.&lt;/p&gt;
&lt;p&gt;Mari saya uraikan apa yang sebenarnya ada di sini.&lt;/p&gt;
&lt;h2 id="agen-copilot-kustom-di-repo-kamu"&gt;Agen Copilot kustom di repo kamu&lt;/h2&gt;
&lt;p&gt;Ingin Copilot mengikuti standar pengkodean timmu, menjalankan pipeline build, atau mengquery dokumen internal? Sekarang kamu bisa membangun persis itu.&lt;/p&gt;
&lt;p&gt;Agen kustom didefinisikan sebagai file &lt;code&gt;.agent.md&lt;/code&gt; yang kamu letakkan di &lt;code&gt;.github/agents/&lt;/code&gt; di repositorimu. Setiap agen mendapatkan akses penuh ke kesadaran workspace, pemahaman kode, alat, model pilihanmu, dan koneksi MCP ke layanan eksternal.&lt;/p&gt;
&lt;p&gt;Ini adalah pola yang sama yang sudah didukung VS Code — dan sangat menyenangkan melihat Visual Studio menyusul.&lt;/p&gt;
&lt;h2 id="skill-agen-paket-instruksi-yang-dapat-digunakan-ulang"&gt;Skill agen: paket instruksi yang dapat digunakan ulang&lt;/h2&gt;
&lt;p&gt;Skill secara otomatis diambil dari &lt;code&gt;.github/skills/&lt;/code&gt; di repositorimu atau &lt;code&gt;~/.copilot/skills/&lt;/code&gt; di profilmu.&lt;/p&gt;
&lt;h2 id="find_symbol-navigasi-sadar-bahasa-untuk-agen"&gt;find_symbol: navigasi sadar bahasa untuk agen&lt;/h2&gt;
&lt;p&gt;Di sinilah hal-hal menjadi sangat menarik. Alat &lt;code&gt;find_symbol&lt;/code&gt; baru memberikan mode agen Copilot navigasi simbol yang benar-benar didukung oleh layanan bahasa. Alih-alih mencari kode sebagai teks, agen dapat:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Menemukan semua referensi ke simbol di seluruh proyekmu&lt;/li&gt;
&lt;li&gt;Mengakses informasi tipe, deklarasi, dan metadata cakupan&lt;/li&gt;
&lt;li&gt;Menavigasi situs panggilan dengan kesadaran bahasa penuh&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Artinya dalam praktik: ketika kamu meminta Copilot untuk refaktor metode atau memperbarui tanda tangan parameter di seluruh situs panggilan, ia benar-benar dapat melihat struktur kodemu.&lt;/p&gt;
&lt;h2 id="profil-tes-dengan-copilot"&gt;Profil tes dengan Copilot&lt;/h2&gt;
&lt;p&gt;Sekarang ada perintah &lt;strong&gt;Profile with Copilot&lt;/strong&gt; di menu konteks Test Explorer. Pilih tes, klik profil, dan Profiling Agent secara otomatis menjalankannya dan menganalisis performa.&lt;/p&gt;
&lt;h2 id="kesimpulan"&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;Agen kustom dan skill adalah judul utama, tapi &lt;code&gt;find_symbol&lt;/code&gt; adalah pahlawan diam-diam — ini secara fundamental mengubah seberapa akurat Copilot bisa dalam merefaktor kode .NET. Unduh &lt;a href="https://visualstudio.microsoft.com/downloads/"&gt;Visual Studio 2026 Insiders&lt;/a&gt; untuk mencoba semuanya.&lt;/p&gt;</content:encoded></item><item><title>Dari Laptop ke Produksi: Deploy Agen AI ke Microsoft Foundry dengan Dua Perintah</title><link>https://thedotnetblog.com/id/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/id/posts/emiliano-montesdeoca/deploy-ai-agents-foundry-azd-two-commands/</guid><description>Azure Developer CLI kini memiliki perintah 'azd ai agent' yang membawa agen AI Anda dari pengembangan lokal ke endpoint Foundry langsung dalam hitungan menit.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/posts/emiliano-montesdeoca/deploy-ai-agents-foundry-azd-two-commands/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Anda tahu kesenjangan antara &amp;ldquo;berfungsi di mesin saya&amp;rdquo; dan &amp;ldquo;sudah di-deploy dan melayani traffic&amp;rdquo;? Untuk agen AI, kesenjangan itu sangat lebar.&lt;/p&gt;
&lt;p&gt;Azure Developer CLI baru saja menjadikan ini &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-ai-agent-end-to-end/"&gt;urusan dua perintah&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="alur-kerja-azd-ai-agent-baru"&gt;Alur kerja &lt;code&gt;azd ai agent&lt;/code&gt; baru&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 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;Itu saja. &lt;code&gt;azd ai agent init&lt;/code&gt; membuat scaffolding infrastruktur-sebagai-kode di repo Anda, dan &lt;code&gt;azd up&lt;/code&gt; menyediakan semua hal di Azure dan menerbitkan agen Anda.&lt;/p&gt;
&lt;h2 id="yang-terjadi-di-balik-layar"&gt;Yang terjadi di balik layar&lt;/h2&gt;
&lt;p&gt;Perintah &lt;code&gt;init&lt;/code&gt; menghasilkan template Bicep yang nyata dan dapat diperiksa di repo Anda — Foundry Resource, Foundry Project, konfigurasi deployment model, managed identity dengan RBAC.&lt;/p&gt;
&lt;h2 id="dev-inner-loop"&gt;Dev inner loop&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 ai agent run &lt;span class="c1"&gt;# jalankan agen secara lokal&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd ai agent invoke &lt;span class="c1"&gt;# kirim prompt uji&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd ai agent monitor --follow &lt;span class="c1"&gt;# stream log real-time&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="set-perintah-lengkap"&gt;Set perintah lengkap&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Perintah&lt;/th&gt;
&lt;th&gt;Yang dilakukan&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;Scaffold proyek agen Foundry dengan IaC&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;Provisioning sumber daya dan deploy agen&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;Kirim prompt ke agen remote atau lokal&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;Jalankan agen secara lokal&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;Stream log real-time&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;Bersihkan semua sumber daya Azure&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Lihat &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-ai-agent-end-to-end/"&gt;panduan lengkap&lt;/a&gt;.&lt;/p&gt;</content:encoded></item></channel></rss>