<?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 Productivity | The .NET Blog</title><link>https://thedotnetblog.com/es/tags/developer-productivity/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>es</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Mon, 27 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/es/tags/developer-productivity/index.xml" rel="self" type="application/rss+xml"/><item><title>Actualización de Abril del Azure DevOps MCP Server: Consultas WIQL, Auth PAT y MCP Apps Experimental</title><link>https://thedotnetblog.com/es/posts/emiliano-montesdeoca/azure-devops-mcp-server-april-2026-wiql-pat-apps/</link><pubDate>Mon, 27 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/es/posts/emiliano-montesdeoca/azure-devops-mcp-server-april-2026-wiql-pat-apps/</guid><description>El Azure DevOps MCP Server recibe consultas de work items con WIQL, autenticación con Personal Access Token, anotaciones MCP, y una característica experimental de MCP Apps que empaqueta flujos de trabajo comunes.</description><content:encoded>&lt;p&gt;&lt;em&gt;Este post fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/posts/emiliano-montesdeoca/azure-devops-mcp-server-april-2026-wiql-pat-apps/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;El Azure DevOps MCP Server sigue mejorando. La actualización de abril de Dan Hellem cubre tanto los servidores local como remoto, y hay algunas adiciones genuinamente útiles.&lt;/p&gt;
&lt;h2 id="soporte-de-consultas-wiql"&gt;Soporte de Consultas WIQL&lt;/h2&gt;
&lt;p&gt;La nueva herramienta &lt;code&gt;wit_query_by_wiql&lt;/code&gt; permite ejecutar consultas Work Item Query Language directamente desde tu cliente MCP. Tus sesiones de Copilot pueden ahora obtener conjuntos precisos de work items sin filtrar manualmente.&lt;/p&gt;
&lt;h2 id="personal-access-tokens-en-el-servidor-local"&gt;Personal Access Tokens en el Servidor Local&lt;/h2&gt;
&lt;p&gt;El servidor MCP local ahora soporta autenticación PAT — importante para escenarios de integración donde la autenticación interactiva no está disponible.&lt;/p&gt;
&lt;h2 id="anotaciones-mcp-en-el-servidor-remoto"&gt;Anotaciones MCP en el Servidor Remoto&lt;/h2&gt;
&lt;p&gt;Etiquetas de metadatos para herramientas de solo lectura, destructivas y de mundo abierto — fundamentales para la fiabilidad de los agentes.&lt;/p&gt;
&lt;h2 id="consolidación-de-herramientas-wiki"&gt;Consolidación de Herramientas Wiki&lt;/h2&gt;
&lt;p&gt;5 herramientas separadas de wiki → 2 herramientas más capaces. Menos herramientas = mejor rendimiento del LLM.&lt;/p&gt;
&lt;h2 id="experimental-mcp-apps"&gt;Experimental: MCP Apps&lt;/h2&gt;
&lt;p&gt;Flujos de trabajo empaquetados que se ejecutan dentro del entorno del servidor MCP. La idea es correcta — más composición de flujos de trabajo en la capa MCP, menos encadenamiento ad-hoc de herramientas.&lt;/p&gt;
&lt;p&gt;Post original de Dan Hellem: &lt;a href="https://devblogs.microsoft.com/devops/azure-devops-mcp-server-april-update/"&gt;Azure DevOps MCP Server April Update&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Aspire 13.2: Soporte para Bun, Mejores Contenedores y Menos Fricción en el Debug</title><link>https://thedotnetblog.com/es/posts/emiliano-montesdeoca/aspire-132-bun-container-enhancements/</link><pubDate>Fri, 24 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/es/posts/emiliano-montesdeoca/aspire-132-bun-container-enhancements/</guid><description>Aspire 13.2 añade soporte de primera clase para Bun en apps Vite, corrige la fiabilidad de Yarn y trae mejoras en contenedores que hacen el comportamiento local más predecible.</description><content:encoded>&lt;p&gt;&lt;em&gt;Este post fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/posts/emiliano-montesdeoca/aspire-132-bun-container-enhancements/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Si llevas tiempo construyendo backends .NET con frontends JavaScript en Aspire, la versión 13.2 es el tipo de actualización que mejora tu día sin anunciar grandes cambios. Sin nuevos paradigmas llamativos. Solo mejoras sólidas a cosas que eran levemente molestas.&lt;/p&gt;
&lt;h2 id="bun-es-ahora-ciudadano-de-primera-clase"&gt;Bun es Ahora Ciudadano de Primera Clase&lt;/h2&gt;
&lt;p&gt;La característica principal: soporte para Bun en apps Vite. Una llamada fluida, listo.&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="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;withBun&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;Si tu equipo ya usa Bun — con sus tiempos de instalación dramáticamente más rápidos — Aspire ya no te hace pelear contra la corriente.&lt;/p&gt;
&lt;h2 id="yarn-es-más-confiable"&gt;Yarn es Más Confiable&lt;/h2&gt;
&lt;p&gt;Los usuarios de Yarn reciben algo igualmente importante: menos fallos misteriosos. Aspire 13.2 mejora la fiabilidad de &lt;code&gt;withYarn()&lt;/code&gt; con &lt;code&gt;addViteApp()&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="mejoras-en-contenedores"&gt;Mejoras en Contenedores&lt;/h2&gt;
&lt;h3 id="pull-policy-explícita"&gt;Pull Policy Explícita&lt;/h3&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;const&lt;/span&gt; &lt;span class="nx"&gt;worker&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;addContainer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;worker&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;myorg/worker:latest&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;withImagePullPolicy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ImagePullPolicy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Never&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;Perfecto para flujos donde construyes imágenes localmente y quieres que Compose use exactamente esa sin ir al registry.&lt;/p&gt;
&lt;h3 id="postgresql-18-funciona-correctamente"&gt;PostgreSQL 18+ Funciona Correctamente&lt;/h3&gt;
&lt;p&gt;PostgreSQL 18 cambió su estructura interna de directorios, lo que rompía silenciosamente el mapeo de volúmenes. Aspire 13.2 lo corrige.&lt;/p&gt;
&lt;h2 id="mejoras-de-depuración"&gt;Mejoras de Depuración&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DebuggerDisplayAttribute&lt;/code&gt; en tipos core — valores útiles en el debugger en lugar de árboles de objetos&lt;/li&gt;
&lt;li&gt;Mensajes de error más claros para &lt;code&gt;WaitFor&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BeforeResourceStartedEvent&lt;/code&gt; se dispara en el momento correcto&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="resumiendo"&gt;Resumiendo&lt;/h2&gt;
&lt;p&gt;Aspire 13.2 es una versión de calidad enfocada. Vale la pena actualizar, especialmente si usas PostgreSQL 18 con volúmenes de datos.&lt;/p&gt;
&lt;p&gt;Post original de David Pine: &lt;a href="https://devblogs.microsoft.com/aspire/aspire-bun-support-and-container-enhancements/"&gt;Aspire 13.2: Bun Support and Container Enhancements&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>¿68 Minutos al Día Re-Explicando Código a Copilot? Hay una Solución</title><link>https://thedotnetblog.com/es/posts/emiliano-montesdeoca/auto-memory-stop-re-explaining-code-to-copilot/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/es/posts/emiliano-montesdeoca/auto-memory-stop-re-explaining-code-to-copilot/</guid><description>El 'context rot' es real — tu agente de IA se pierde después de 30 turnos y pagas el impuesto de la compactación cada hora. auto-memory le da a GitHub Copilot CLI una memoria quirúrgica sin quemar miles de tokens.</description><content:encoded>&lt;p&gt;&lt;em&gt;Este post fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/posts/emiliano-montesdeoca/auto-memory-stop-re-explaining-code-to-copilot/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;¿Conoces ese momento en que tu sesión de Copilot llega al &lt;code&gt;/compact&lt;/code&gt; y el agente olvida completamente lo que estabas haciendo? Pasas los siguientes cinco minutos re-explicando la estructura de archivos, el test fallido, los tres enfoques que ya intentaste. Y luego vuelve a pasar. Y otra vez.&lt;/p&gt;
&lt;p&gt;Desi Villanueva lo midió: &lt;strong&gt;68 minutos al día&lt;/strong&gt; — solo en re-orientación. No escribiendo código. No revisando PRs. Solo poniéndole al día a la IA en cosas que ya sabía.&lt;/p&gt;
&lt;p&gt;Resulta que hay una razón concreta por la que esto pasa, y una solución concreta.&lt;/p&gt;
&lt;h2 id="la-mentira-de-la-ventana-de-contexto"&gt;La Mentira de la Ventana de Contexto&lt;/h2&gt;
&lt;p&gt;Tu agente viene con un número grande en la caja. 200K tokens. Suena masivo. En la práctica es un techo, no una garantía.&lt;/p&gt;
&lt;p&gt;Aquí está la matemática real:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;200K de contexto total&lt;/li&gt;
&lt;li&gt;Menos ~65K para herramientas MCP cargadas al inicio (~33%)&lt;/li&gt;
&lt;li&gt;Menos ~10K para archivos de instrucciones como &lt;code&gt;AGENTS.md&lt;/code&gt; o &lt;code&gt;copilot-instructions.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eso te deja aproximadamente &lt;strong&gt;125K antes de escribir una sola palabra&lt;/strong&gt;. Y empeora — los LLMs no se degradan de forma gradual al llenarse el contexto. Tienen un tope al llegar al 60% de capacidad. El modelo empieza a perder cosas mencionadas hace 30 turnos, contradice respuestas anteriores, alucina nombres de archivos que declaró con confianza hace 10 minutos. La industria llama a esto el problema del &amp;ldquo;lost in the middle&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Límite efectivo: &lt;strong&gt;45K tokens&lt;/strong&gt; antes de que la calidad se degrade. Eso son tal vez 20-30 turnos de conversación activa antes de que el agente empiece a derivar. Por eso estás usando &lt;code&gt;/compact&lt;/code&gt; cada 45 minutos — no porque hayas llenado 200K tokens, sino porque el modelo ya está &amp;ldquo;podrido&amp;rdquo; a los 120K.&lt;/p&gt;
&lt;h2 id="el-impuesto-de-la-compactación"&gt;El Impuesto de la Compactación&lt;/h2&gt;
&lt;p&gt;Cada &lt;code&gt;/compact&lt;/code&gt; te cuesta el estado de flujo. Llevas 30 minutos en una sesión de depuración. El agente conoce la estructura de archivos, el test fallido, la hipótesis. Luego llega la advertencia.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ignorarla → el agente se vuelve progresivamente más tonto, alucina el estado anterior&lt;/li&gt;
&lt;li&gt;Ejecutar &lt;code&gt;/compact&lt;/code&gt; → el agente tiene un resumen de 2 párrafos de una investigación de 30 minutos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;De cualquier manera pierdes. De cualquier manera estás narrando tu propio proyecto como si fuera un empleado nuevo en su primer día.&lt;/p&gt;
&lt;p&gt;La parte cruel: &lt;strong&gt;la memoria ya existe&lt;/strong&gt;. Copilot CLI escribe cada sesión en una base de datos SQLite local en &lt;code&gt;~/.copilot/session-store.db&lt;/code&gt; — cada archivo tocado, cada turno, cada checkpoint. Todo está en el disco. El agente simplemente no puede leerlo.&lt;/p&gt;
&lt;h2 id="auto-memory-una-capa-de-recall-no-un-sistema-de-memoria"&gt;auto-memory: Una Capa de Recall, No un Sistema de Memoria&lt;/h2&gt;
&lt;p&gt;Esa es la idea central detrás de &lt;a href="https://github.com/dezgit2025/auto-memory"&gt;auto-memory&lt;/a&gt;: no construyas un nuevo sistema de memoria — construye una capa de consulta de solo lectura sobre el que ya existe.&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;pip install auto-memory
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;~1.900 líneas de Python. Cero dependencias. Se instala en 30 segundos.&lt;/p&gt;
&lt;p&gt;En lugar de inundar el contexto con resultados de grep, le das al agente acceso quirúrgico a lo que realmente importa:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Operación&lt;/th&gt;
&lt;th&gt;Tokens&lt;/th&gt;
&lt;th&gt;Qué obtienes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;grep -r &amp;quot;auth&amp;quot; src/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~5.000–10.000&lt;/td&gt;
&lt;td&gt;500 resultados, la mayoría irrelevantes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;find . -name &amp;quot;*.py&amp;quot;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~2.000&lt;/td&gt;
&lt;td&gt;Todos los archivos Python, sin contexto&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Re-orientación del agente&lt;/td&gt;
&lt;td&gt;~2.000&lt;/td&gt;
&lt;td&gt;Tú explicando lo que ya debería saber&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;auto-memory files --json --limit 10&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~50&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Los 10 archivos que tocaste ayer&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Una mejora de 200x. El agente se salta la excavación arqueológica y va directo a lo que importa.&lt;/p&gt;
&lt;h2 id="por-qué-importa-esto-para-desarrolladores-net"&gt;¿Por Qué Importa Esto para Desarrolladores .NET?&lt;/h2&gt;
&lt;p&gt;Si usas GitHub Copilot CLI para trabajo con .NET — scaffolding de servicios, depuración de queries EF Core, iterando en componentes Blazor — el problema del context rot golpea igual de fuerte. Soluciones complejas con múltiples proyectos y librerías compartidas son exactamente el tipo de código donde el agente pierde el hilo más rápido.&lt;/p&gt;
&lt;h2 id="resumiendo"&gt;Resumiendo&lt;/h2&gt;
&lt;p&gt;El context rot es una restricción arquitectónica real, no un bug que se parchará. auto-memory lo soluciona dándole a tu agente un mecanismo de recall barato y preciso en lugar de re-exploración costosa y ruidosa. Si haces desarrollo serio asistido por IA con GitHub Copilot CLI, vale la pena el install de 30 segundos.&lt;/p&gt;
&lt;p&gt;Échale un vistazo: &lt;a href="https://github.com/dezgit2025/auto-memory"&gt;auto-memory en GitHub&lt;/a&gt;. Post original de Desi Villanueva: &lt;a href="https://devblogs.microsoft.com/all-things-azure/i-wasted-68-minutes-a-day-re-explaining-my-code-then-i-built-auto-memory/"&gt;I Wasted 68 Minutes a Day Re-Explaining My Code&lt;/a&gt;.&lt;/p&gt;</content:encoded></item></channel></rss>