<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Blog de Nicolás Neira</title>
    <link>https://nicolasneira.com/blog/</link>
    <description>Análisis sobre agentes IA y el registro semanal del ecosistema: MCP, ADK, A2A, Claude Code, vLLM y LangGraph.</description>
    <language>es</language>
    <lastBuildDate>Sun, 11 Oct 2026 00:00:00 GMT</lastBuildDate>
    <atom:link href="https://nicolasneira.com/blog/rss.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Fail-closed en hooks y reglas deny: por qué un control que falla deja pasar</title>
      <link>https://nicolasneira.com/blog/fail-closed-en-hooks-y-reglas-deny/</link>
      <guid isPermaLink="true">https://nicolasneira.com/blog/fail-closed-en-hooks-y-reglas-deny/</guid>
      <description>Reglas deny que no coinciden por un prefijo de variable, un symlink o un hook que falla: cómo diseñar guardrails de agentes que fallen cerrados y no abiertos.</description>
      <pubDate>Sun, 11 Oct 2026 00:00:00 GMT</pubDate>
      <category>seguridad</category>
      <category>claude-code</category>
      <category>harness</category>
      <category>agentes</category>
    </item>
    <item>
      <title>Server por request en MCP: por qué compartir instancias rompe bajo concurrencia</title>
      <link>https://nicolasneira.com/blog/server-por-request-en-mcp/</link>
      <guid isPermaLink="true">https://nicolasneira.com/blog/server-por-request-en-mcp/</guid>
      <description>Un McpServer, un transport o un limiter compartidos entre requests fallan bajo concurrencia. Qué cambió en MCP TypeScript 2.3 y Pydantic AI 2.53 y qué hacer.</description>
      <pubDate>Sun, 04 Oct 2026 00:00:00 GMT</pubDate>
      <category>mcp</category>
      <category>producción</category>
      <category>breaking-changes</category>
      <category>agentes</category>
    </item>
    <item>
      <title>Extended thinking: por qué el historial de un agente no tolera ediciones retroactivas</title>
      <link>https://nicolasneira.com/blog/extended-thinking-por-que-el-historial/</link>
      <guid isPermaLink="true">https://nicolasneira.com/blog/extended-thinking-por-que-el-historial/</guid>
      <description>Cambiar de modelo, editar un prompt anterior o reanudar tras un corte no son acciones cosméticas: reescriben la forma del historial y el razonamiento se pierde o la API responde 400.</description>
      <pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate>
      <category>agentes</category>
      <category>claude-code</category>
      <category>harness</category>
      <category>producción</category>
    </item>
    <item>
      <title>Reasoning blocks pre-abiertos: por qué el tool calling se rompe sin avisar</title>
      <link>https://nicolasneira.com/blog/reasoning-blocks-pre-abiertos/</link>
      <guid isPermaLink="true">https://nicolasneira.com/blog/reasoning-blocks-pre-abiertos/</guid>
      <description>Cuando la plantilla de chat pre-abre el bloque de razonamiento, el modelo nunca emite la apertura y un parser genérico puede tragarse el tool call entero.</description>
      <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
      <category>modelos</category>
      <category>harness</category>
      <category>agentes</category>
      <category>open-source</category>
    </item>
    <item>
      <title>Fusión de kernels en GPU: por qué una optimización que anda en un backend rompe otro sin avisar</title>
      <link>https://nicolasneira.com/blog/fusion-de-kernels-en-gpu/</link>
      <guid isPermaLink="true">https://nicolasneira.com/blog/fusion-de-kernels-en-gpu/</guid>
      <description>Un bug de indexado en Metal deshabilitó en silencio la fusión norm más MUL y costó 5% de velocidad de generación hasta que alguien lo investigó.</description>
      <pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate>
      <category>modelos</category>
      <category>open-source</category>
      <category>inferencia</category>
    </item>
    <item>
      <title>Prompt caching en harnesses de agentes: qué mutaciones lo invalidan sin avisar</title>
      <link>https://nicolasneira.com/blog/prompt-caching-en-harnesses-de-agentes/</link>
      <guid isPermaLink="true">https://nicolasneira.com/blog/prompt-caching-en-harnesses-de-agentes/</guid>
      <description>Cambiar de modelo, reanudar una sesión o sumar una tool a mitad de turno invalida el prompt cache de un agente en producción sin ningún aviso visible.</description>
      <pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate>
      <category>harness</category>
      <category>costos</category>
      <category>claude-code</category>
      <category>agentes</category>
    </item>
    <item>
      <title>KV-cache restore: el costo que nadie mide hasta que escala</title>
      <link>https://nicolasneira.com/blog/kv-cache-restore/</link>
      <guid isPermaLink="true">https://nicolasneira.com/blog/kv-cache-restore/</guid>
      <description>Restaurar una snapshot de 40 mil tokens tomaba hasta 63 segundos en llama.cpp por copiar celda a celda; agrupar por rango contiguo lo bajó a 424 milisegundos.</description>
      <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
      <category>modelos</category>
      <category>producción</category>
      <category>open-source</category>
    </item>
    <item>
      <title>TOCTOU en tool calling: por qué un permission check no basta</title>
      <link>https://nicolasneira.com/blog/toctou-en-tool-calling/</link>
      <guid isPermaLink="true">https://nicolasneira.com/blog/toctou-en-tool-calling/</guid>
      <description>Cuatro fixes de Claude Code y uno de Codex esta semana comparten el mismo patrón: el permiso se revisa antes de que el recurso cambie.</description>
      <pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate>
      <category>seguridad</category>
      <category>agentes</category>
      <category>mcp</category>
      <category>harness</category>
    </item>
    <item>
      <title>Assisted-by en el commit: la evidencia que llama.cpp le exige a la IA</title>
      <link>https://nicolasneira.com/blog/assisted-by-en-el-commit/</link>
      <guid isPermaLink="true">https://nicolasneira.com/blog/assisted-by-en-el-commit/</guid>
      <description>Esta semana llama.cpp aceptó parches de Claude, Codex y un bot interno en kernels, cada uno acompañado de métricas de error frente a una referencia numérica.</description>
      <pubDate>Sun, 23 Aug 2026 00:00:00 GMT</pubDate>
      <category>open-source</category>
      <category>modelos</category>
      <category>seguridad</category>
      <category>producción</category>
    </item>
    <item>
      <title>MXFP4 bit-compatible: por qué repacking le gana al round-trip a bf16</title>
      <link>https://nicolasneira.com/blog/mxfp4-bit-compatible/</link>
      <guid isPermaLink="true">https://nicolasneira.com/blog/mxfp4-bit-compatible/</guid>
      <description>Al sumar Kimi-K3 a llama.cpp, el equipo detectó que sus pesos MXFP4 ya eran bit-compatibles con el formato interno de ggml y evitó dequantizar 5.5 TB de bf16.</description>
      <pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate>
      <category>modelos</category>
      <category>open-source</category>
      <category>costos</category>
    </item>
    <item>
      <title>Breaking changes en agentes IA: qué revisar antes de actualizar</title>
      <link>https://nicolasneira.com/blog/breaking-changes-agentes-ia/</link>
      <guid isPermaLink="true">https://nicolasneira.com/blog/breaking-changes-agentes-ia/</guid>
      <description>Dos releases rompen agentes ya desplegados, y uno lo hace en silencio: el SDK de OpenAI cambia su modelo por defecto y vLLM sube PyTorch. Qué revisar antes.</description>
      <pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate>
      <category>producción</category>
      <category>dependencias</category>
      <category>mcp</category>
      <category>vllm</category>
    </item>
  </channel>
</rss>
