<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Token Optimization on KnightLi Blog</title>
        <link>https://www.knightli.com/es/tags/token-optimization/</link>
        <description>Recent content in Token Optimization on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>es</language>
        <lastBuildDate>Mon, 18 May 2026 18:30:24 +0800</lastBuildDate><atom:link href="https://www.knightli.com/es/tags/token-optimization/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Guía para ahorrar tokens en Claude Code: cómo modelos, MCP, CLAUDE.md y Skills afectan la caché</title>
        <link>https://www.knightli.com/es/2026/05/18/claude-code-prompt-cache-token-optimization/</link>
        <pubDate>Mon, 18 May 2026 18:30:24 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/05/18/claude-code-prompt-cache-token-optimization/</guid>
        <description>&lt;p&gt;En tareas largas con Claude Code, la tasa de aciertos de Prompt Cache afecta directamente el costo y la velocidad. Muchos usuarios saben que la caché puede ahorrar tokens, pero no qué acciones hacen que falle de repente.&lt;/p&gt;
&lt;p&gt;La forma más simple de entenderlo es imaginar cada petición como una cadena de contexto de izquierda a derecha:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tools -&amp;gt; system -&amp;gt; CLAUDE.md / skills -&amp;gt; messages
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Cuanto más a la izquierda está un contenido, más estable debería ser y mayor es el beneficio de cachearlo. Si cambia una sección de la izquierda, todo lo que va después puede necesitar recalcularse. Si cambia algo a la derecha, el impacto suele ser menor.&lt;/p&gt;
&lt;p&gt;Optimizar Prompt Cache en Claude Code no es magia. La regla es simple: antes de iniciar una tarea, prepara modelo, servidores MCP, Skills, &lt;code&gt;CLAUDE.md&lt;/code&gt; y el contexto base. Una vez iniciada, cambia lo menos posible esa parte fija.&lt;/p&gt;
&lt;h2 id=&#34;prompt-cache-no-guarda-texto-plano&#34;&gt;Prompt Cache no guarda texto plano
&lt;/h2&gt;&lt;p&gt;Prompt Cache no es solo una caché de cadenas de texto. En la inferencia Transformer, lo importante es el estado Key/Value calculado por las capas de atención a partir del prefijo de contexto, lo que solemos llamar KV cache.&lt;/p&gt;
&lt;p&gt;Eso implica dos cosas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si el prefijo se mantiene estable, parte del cálculo previo puede reutilizarse.&lt;/li&gt;
&lt;li&gt;Si cambian el modelo, las definiciones de herramientas, el prompt del sistema o los mensajes iniciales, las entradas antiguas de caché pueden dejar de coincidir.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La documentación de Anthropic resume la jerarquía de invalidación como &lt;code&gt;tools -&amp;gt; system -&amp;gt; messages&lt;/code&gt;. Cambiar definiciones de herramientas puede invalidar toda la caché; cambios en system afectan system y messages; cambios en messages afectan sobre todo la caché de mensajes.&lt;/p&gt;
&lt;p&gt;Claude Code añade otras fuentes de contexto como &lt;code&gt;CLAUDE.md&lt;/code&gt;, Skills, MCP, plugins y subagents, así que es fácil romper la caché sin querer.&lt;/p&gt;
&lt;h2 id=&#34;asesino-de-caché-1-cambiar-de-modelo-a-mitad-de-tarea&#34;&gt;Asesino de caché 1: cambiar de modelo a mitad de tarea
&lt;/h2&gt;&lt;p&gt;Cambiar de modelo es una de las operaciones más caras.&lt;/p&gt;
&lt;p&gt;Prompt Cache está aislada por modelo. Opus, Sonnet y Haiku tienen arquitecturas y pesos distintos, así que el KV cache calculado desde el mismo texto no es intercambiable. Si construyes un contexto largo en Opus y luego cambias a Sonnet, Sonnet no puede reutilizar la caché de Opus.&lt;/p&gt;
&lt;p&gt;Esto produce un resultado poco intuitivo: cambiar a un modelo más barato a mitad de tarea puede hacer inútil la caché acumulada. El contexto que podría leerse a precio de cache read quizá tenga que escribirse y calcularse de nuevo.&lt;/p&gt;
&lt;p&gt;Un patrón más estable:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mantén la conversación principal en un solo modelo.&lt;/li&gt;
&lt;li&gt;Usa un subagent para tareas laterales que puedan ejecutarse con un modelo más barato.&lt;/li&gt;
&lt;li&gt;Deja que el agente lateral busque, explore o resuma, y devuelva un resultado breve a la conversación principal.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Así el prefijo largo de la conversación principal se mantiene estable y la caché acierta con más consistencia.&lt;/p&gt;
&lt;h2 id=&#34;asesino-de-caché-2-añadir-mcp-o-recargar-plugins-a-mitad-de-tarea&#34;&gt;Asesino de caché 2: añadir MCP o recargar plugins a mitad de tarea
&lt;/h2&gt;&lt;p&gt;MCP proporciona herramientas a Claude Code. Al añadir un servidor MCP, cambia la lista de herramientas, y las definiciones de herramientas están en el extremo izquierdo de la cadena de contexto.&lt;/p&gt;
&lt;p&gt;Desde la perspectiva de Prompt Cache, cuando cambia la lista de herramientas, system y messages pueden necesitar recalcularse. Si usas muchos MCP, las definiciones de herramientas pueden ocupar muchos tokens, y el costo de invalidación se nota.&lt;/p&gt;
&lt;p&gt;Un detalle importante: Claude Code suele leer la configuración MCP al iniciar la sesión. Cambiar configuración durante la sesión no siempre afecta de inmediato. Los momentos peligrosos son reiniciar, hacer resume, recargar plugins o reconstruir la lista de herramientas.&lt;/p&gt;
&lt;p&gt;Recomendaciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Instala los MCP necesarios antes de iniciar una tarea larga.&lt;/li&gt;
&lt;li&gt;Evita descubrir a mitad de trabajo que falta una herramienta y recargar.&lt;/li&gt;
&lt;li&gt;Reduce los MCP habilitados por defecto cuando sea posible.&lt;/li&gt;
&lt;li&gt;No mantengas servidores MCP raramente usados siempre activos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las definiciones de herramientas estables son la base de una Prompt Cache estable.&lt;/p&gt;
&lt;h2 id=&#34;asesino-de-caché-3-editar-claudemd-durante-la-sesión&#34;&gt;Asesino de caché 3: editar CLAUDE.md durante la sesión
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; es el archivo de memoria de proyecto de Claude Code. Sirve para comandos de build, tests, convenciones de arquitectura, estilo de código y restricciones del proyecto.&lt;/p&gt;
&lt;p&gt;Es útil, pero también entra en el contexto. La ayuda de Claude explica que &lt;code&gt;CLAUDE.md&lt;/code&gt; se lee al iniciar la sesión y se entrega como mensaje de usuario. También se beneficia de Prompt Cache: la primera petición paga el precio completo de entrada, y las siguientes pueden usar el precio menor de cache read si la caché sigue válida.&lt;/p&gt;
&lt;p&gt;El problema es que &lt;code&gt;CLAUDE.md&lt;/code&gt; se identifica por contenido. Si cambias el archivo, la caché antigua deja de coincidir.&lt;/p&gt;
&lt;p&gt;Por eso conviene no editar &lt;code&gt;CLAUDE.md&lt;/code&gt; con frecuencia durante tareas largas. Mejor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Revisa si &lt;code&gt;CLAUDE.md&lt;/code&gt; es suficiente antes de empezar.&lt;/li&gt;
&lt;li&gt;Coloca reglas estables en el archivo e instrucciones temporales en la conversación.&lt;/li&gt;
&lt;li&gt;No edites la memoria de largo plazo por una necesidad puntual.&lt;/li&gt;
&lt;li&gt;Si debes cambiarlo, trata la siguiente fase como una nueva sesión o etapa.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; debería ser guía estable de proyecto, no un borrador temporal que cambia cada ronda.&lt;/p&gt;
&lt;h2 id=&#34;asesino-de-caché-4-instalar-o-actualizar-skills-a-mitad-de-tarea&#34;&gt;Asesino de caché 4: instalar o actualizar Skills a mitad de tarea
&lt;/h2&gt;&lt;p&gt;Skills también forman parte del contexto. Instalar una Skill nueva, actualizar una Skill o cambiar la lista de Skills cambia lo que se inyecta en la sesión.&lt;/p&gt;
&lt;p&gt;Estos cambios suelen aplicarse al recargar, reanudar o abrir una nueva sesión. Cuando messages se reconstruye, las entradas antiguas de caché pueden dejar de servir.&lt;/p&gt;
&lt;p&gt;La recomendación es similar a MCP:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Decide qué Skills necesitas antes de empezar.&lt;/li&gt;
&lt;li&gt;Mantén estable el conjunto de Skills para tareas similares.&lt;/li&gt;
&lt;li&gt;Evita instalar Skills en mitad de una tarea larga.&lt;/li&gt;
&lt;li&gt;Si instalas una Skill nueva, trátalo como inicio de una nueva etapa.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para flujos repetibles como producción de contenido, review, despliegue o traducción, mantener un conjunto fijo de Skills ayuda a estabilizar la estructura del contexto.&lt;/p&gt;
&lt;h2 id=&#34;asesino-de-caché-5-estar-inactivo-más-allá-del-ttl&#34;&gt;Asesino de caché 5: estar inactivo más allá del TTL
&lt;/h2&gt;&lt;p&gt;Prompt Cache no dura para siempre. Un TTL común está en el orden de minutos, y la documentación relacionada con Claude Code suele hablar de una ventana cercana a cinco minutos. Pasado el TTL, incluso la misma petición puede requerir reconstruir la caché.&lt;/p&gt;
&lt;p&gt;Esto explica una sensación común en tareas largas: todo iba rápido y barato, sales por un café, vuelves y el costo de tokens sube otra vez.&lt;/p&gt;
&lt;p&gt;Es fácil que ocurra. Lees la salida de Claude Code, inspeccionas archivos, ejecutas tests o piensas el siguiente paso. Cinco minutos pasan rápido.&lt;/p&gt;
&lt;p&gt;Si tu entorno lo permite, puedes pedir un TTL de una hora antes de tareas largas:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ENABLE_PROMPT_CACHING_1H&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;En Windows PowerShell:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$env:ENABLE_PROMPT_CACHING_1H&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Las escrituras de caché de una hora suelen costar más que las de cinco minutos. No siempre conviene para tareas cortas, pero en bases de código grandes, conversaciones largas y trabajos complejos de varias etapas, puede ser más barato que sufrir expiraciones repetidas.&lt;/p&gt;
&lt;h2 id=&#34;un-flujo-de-claude-code-que-ahorra-tokens&#34;&gt;Un flujo de Claude Code que ahorra tokens
&lt;/h2&gt;&lt;p&gt;Un flujo más estable sería:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Elegir el modelo antes de empezar y evitar cambios frecuentes.&lt;/li&gt;
&lt;li&gt;Habilitar los MCP necesarios y desactivar los que no usarás.&lt;/li&gt;
&lt;li&gt;Mantener &lt;code&gt;CLAUDE.md&lt;/code&gt; breve, estable y centrado en reglas duraderas.&lt;/li&gt;
&lt;li&gt;Preparar por adelantado las Skills necesarias.&lt;/li&gt;
&lt;li&gt;En tareas complejas, considerar TTL de una hora.&lt;/li&gt;
&lt;li&gt;Dividir la tarea en fases, pero mantener estable la estructura de contexto dentro de cada fase.&lt;/li&gt;
&lt;li&gt;Usar subagents o sesiones separadas para exploraciones laterales, sin alterar la conversación principal.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;El objetivo no es eliminar todos los fallos de caché. Es evitar los fallos caros y fáciles de pasar por alto.&lt;/p&gt;
&lt;h2 id=&#34;regla-rápida&#34;&gt;Regla rápida
&lt;/h2&gt;&lt;p&gt;Hazte esta pregunta:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;¿Esta operación cambia el modelo, las definiciones de herramientas, el contexto del sistema o los mensajes fijos del inicio de la sesión?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Si la respuesta es sí, probablemente afecte a Prompt Cache. Cuanto más a la izquierda esté en la cadena de contexto, mayor será el impacto.&lt;/p&gt;
&lt;p&gt;Operaciones comunes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cambiar modelo: alto riesgo, cachés aisladas por modelo.&lt;/li&gt;
&lt;li&gt;Añadir MCP o recargar plugins: alto riesgo, cambia la lista de herramientas.&lt;/li&gt;
&lt;li&gt;Editar &lt;code&gt;CLAUDE.md&lt;/code&gt;: riesgo medio-alto, cambia la memoria del proyecto.&lt;/li&gt;
&lt;li&gt;Instalar Skills: riesgo medio-alto, cambia el contexto inyectado.&lt;/li&gt;
&lt;li&gt;Continuar una conversación normal: bajo riesgo, principalmente añade messages.&lt;/li&gt;
&lt;li&gt;Superar el TTL en inactividad: alto riesgo, la caché del servidor expira.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;Optimizar Prompt Cache en Claude Code consiste en mantener estable el prefijo de la sesión.&lt;/p&gt;
&lt;p&gt;No cambies modelos sin necesidad. No instales MCP y Skills a mitad de trabajo. No uses &lt;code&gt;CLAUDE.md&lt;/code&gt; como borrador temporal. En tareas complejas, considera un TTL más largo. Con estas bases estables, el costo en tokens y la velocidad de respuesta se vuelven mucho más predecibles.&lt;/p&gt;
&lt;p&gt;La frase práctica es: configura antes de empezar, cambia menos después.&lt;/p&gt;
&lt;h2 id=&#34;referencias&#34;&gt;Referencias
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic: Tool use with prompt caching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://support.claude.com/en/articles/14553240-give-claude-context-claude-md-and-better-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Help Center: CLAUDE.md and prompt caching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://code.claude.com/docs/en/mcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code Docs: Connect Claude Code to tools via MCP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
