<?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>Telemetry | The .NET Blog</title><link>https://thedotnetblog.com/ca/tags/telemetry/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>ca</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Fri, 10 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/ca/tags/telemetry/index.xml" rel="self" type="application/rss+xml"/><item><title>.NET Aspire 13.2 vol ser el millor amic del vostre agent d'IA</title><link>https://thedotnetblog.com/ca/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/ca/posts/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/</guid><description>Aspire 13.2 s'inclou tot en el desenvolupament agent: sortida CLI estructurada, execucions aïllades, entorns de curació automàtica i dades completes d'OpenTelemetry perquè els vostres agents d'IA puguin crear, executar i observar les vostres aplicacions.</description><content:encoded>&lt;p&gt;Coneixeu aquell moment en què el vostre agent de codificació d&amp;rsquo;IA escriu un codi sòlid, us emocioneu i després es desfà completament intentant &lt;em&gt;executar&lt;/em&gt; la cosa? Conflictes de ports, processos fantasma, variables d&amp;rsquo;entorn incorrectes: de sobte, el vostre agent està cremant fitxes per resoldre problemes d&amp;rsquo;inici en lloc de crear funcions.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;equip d&amp;rsquo;Aspire acaba de publicar una &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;publicació molt atenta&lt;/a&gt; sobre exactament aquest problema, i la seva resposta és convincent: Aspire 13.2 està dissenyat no només per a humans, sinó per a agents d&amp;rsquo;IA.&lt;/p&gt;
&lt;h2 id="el-problema-és-real"&gt;El problema és real&lt;/h2&gt;
&lt;p&gt;Els agents d&amp;rsquo;IA són increïbles per escriure codi. Però enviar una aplicació de pila completa que funcioni implica molt més que generar fitxers. Heu d&amp;rsquo;iniciar els serveis en l&amp;rsquo;ordre correcte, gestionar ports, establir variables d&amp;rsquo;entorn, connectar bases de dades i obtenir comentaris quan les coses es trenquin. Ara mateix, la majoria d&amp;rsquo;agents gestionen tot això mitjançant prova i error: executant ordres, llegint la sortida d&amp;rsquo;error, tornant-ho a provar.&lt;/p&gt;
&lt;p&gt;Superposem instruccions de Markdown, habilitats personalitzades i indicacions per intentar guiar-les, però són imprevisibles, no es poden compilar i costen fitxes només per analitzar-les. L&amp;rsquo;equip d&amp;rsquo;Aspire va clavar la visió bàsica: els agents necessiten &lt;strong&gt;compiladors i API estructurades&lt;/strong&gt;, no més Markdown.&lt;/p&gt;
&lt;h2 id="aspira-com-a-infraestructura-dagents"&gt;Aspira com a infraestructura d&amp;rsquo;agents&lt;/h2&gt;
&lt;p&gt;Això és el que aporta Aspire 13.2 a la taula de desenvolupament agent:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La vostra pila sencera en codi escrit.&lt;/strong&gt; L&amp;rsquo;AppHost defineix la vostra topologia completa: API, frontend, base de dades, memòria cau, en TypeScript o C# compilable:&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;Un agent pot llegir-ho per entendre la topologia de l&amp;rsquo;aplicació, afegir recursos, connectar connexions i &lt;em&gt;crear per verificar&lt;/em&gt;. El compilador li indica immediatament si alguna cosa no funciona. Sense endevinar, sense prova i error amb fitxers de configuració.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Una comanda per governar-los tots.&lt;/strong&gt; En lloc d&amp;rsquo;agents que fan malabars amb &lt;code&gt;docker compose up&lt;/code&gt;, &lt;code&gt;npm run dev&lt;/code&gt; i scripts d&amp;rsquo;inici de bases de dades, tot és només &lt;code&gt;aspire start&lt;/code&gt;. Tots els recursos s&amp;rsquo;inicien en l&amp;rsquo;ordre correcte, als ports adequats, amb la configuració correcta. Els processos de llarga durada tampoc pengen l&amp;rsquo;agent: Aspire els gestiona.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mode aïllat per a agents paral·lels.&lt;/strong&gt; Amb &lt;code&gt;--isolated&lt;/code&gt;, cada execució d&amp;rsquo;Aspire té els seus propis ports aleatoris i secrets d&amp;rsquo;usuari separats. Hi ha diversos agents treballant en els arbres de treball de git? No xocaran. Això és enorme per a eines com els agents de fons de VS Code que fan girar entorns paral·lels.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ulls d&amp;rsquo;agent a través de la telemetria.&lt;/strong&gt; Aquí és on es fa realment potent. L&amp;rsquo;Aspire CLI exposa dades completes d&amp;rsquo;OpenTelemetry durant el desenvolupament: traces, mètriques, registres estructurats. El vostre agent no només llegeix la sortida de la consola i espera el millor. Pot rastrejar una sol·licitud fallida entre serveis, perfilar punts finals lents i identificar exactament on es trenquen les coses. Això és observabilitat de grau de producció en el bucle de desenvolupament.&lt;/p&gt;
&lt;h2 id="lanalogia-del-para-xocs-de-bitlles"&gt;L&amp;rsquo;analogia del para-xocs de bitlles&lt;/h2&gt;
&lt;p&gt;L&amp;rsquo;equip d&amp;rsquo;Aspire utilitza una gran analogia: penseu en Aspire com a para-xocs de la pista de bitlles per als agents d&amp;rsquo;IA. Si l&amp;rsquo;agent no és perfecte (i no ho serà), els para-xocs eviten que llanci boles de canaló. La definició de pila evita la configuració incorrecta, el compilador detecta errors, la CLI gestiona la gestió del procés i la telemetria proporciona el bucle de retroalimentació.&lt;/p&gt;
&lt;p&gt;Combineu-ho amb alguna cosa com Playwright CLI i el vostre agent pot &lt;em&gt;utilitzar&lt;/em&gt; la vostra aplicació: fent clic a través dels fluxos, comprovant el DOM, veient coses trencades a la telemetria, arreglant el codi, reiniciant i provant de nou. Construir, executar, observar, arreglar. Aquest és el bucle de desenvolupament autònom que hem estat perseguint.&lt;/p&gt;
&lt;h2 id="primers-passos"&gt;Primers passos&lt;/h2&gt;
&lt;p&gt;Nou a Aspire? Instal·leu la CLI des de &lt;a href="https://get.aspire.dev"&gt;get.aspire.dev&lt;/a&gt; i seguiu la &lt;a href="https://aspire.dev/get-started/first-app"&gt;guia d&amp;rsquo;inici&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ja fas servir Aspire? Executeu &lt;code&gt;aspire update --self&lt;/code&gt; per obtenir 13.2 i, a continuació, indiqueu el vostre agent de codificació preferit al vostre repositori. Potser us sorprendrà quant s&amp;rsquo;avança amb les baranes d&amp;rsquo;Aspire al seu lloc.&lt;/p&gt;
&lt;h2 id="tancant"&gt;Tancant&lt;/h2&gt;
&lt;p&gt;Aspire 13.2 ja no és només un marc d&amp;rsquo;aplicacions distribuïdes, sinó que s&amp;rsquo;està convertint en una infraestructura d&amp;rsquo;agent essencial. Les definicions de pila estructurades, l&amp;rsquo;inici d&amp;rsquo;un sol comandament, les execucions paral·leles aïllades i la telemetria en temps real ofereixen als agents d&amp;rsquo;IA exactament el que necessiten per passar d&amp;rsquo;escriure codi a enviar aplicacions.&lt;/p&gt;
&lt;p&gt;Llegiu la &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;publicació completa&lt;/a&gt; de l&amp;rsquo;equip d&amp;rsquo;Aspire per veure tots els detalls i vídeos de demostració.&lt;/p&gt;</content:encoded></item></channel></rss>