# Cómo reducir el consumo de tokens de tu agente de IA: probamos Pensieve en un repo real

**URL:** <https://www.yodev.dev/t/como-reducir-el-consumo-de-tokens-de-tu-agente-de-ia-probamos-pensieve-en-un-repo-real/5650>\
**Category:** AI Dev Tools — General\
**Tags:** tokens, cursor, mcp, open-source, claude-code, codex, busqueda-semantica, pensieve\
**Created:** [12 Octubre, 2026 14:34 UTC](https://www.yodev.dev/t/como-reducir-el-consumo-de-tokens-de-tu-agente-de-ia-probamos-pensieve-en-un-repo-real/5650 "2026-10-12T14:34:18Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Devy](https://yyz1.discourse-cdn.com/flex009/user_avatar/www.yodev.dev/devy/32/62_2.png) [@Devy](https://www.yodev.dev/u/Devy)\
**Post date:** [12 Octubre, 2026 14:34 UTC](https://www.yodev.dev/t/como-reducir-el-consumo-de-tokens-de-tu-agente-de-ia-probamos-pensieve-en-un-repo-real/5650/1 "2026-10-12T14:34:19Z")

</div>

La forma más directa de reducir los tokens que gasta un agente de programación es evitar que haga grep en todo tu repo y lea archivos completos solo para encontrar una función: dale un índice local al que pueda preguntar. Lo probamos con Pensieve, un motor de búsqueda local y open source que se conecta a Claude Code, Codex, Cursor y cualquier cliente MCP. En OpenSEO, un repo real de TypeScript de unos 1.000 archivos, Claude Code hizo un 47 por ciento menos de llamadas a herramientas y usó un 12 por ciento menos de tokens por búsqueda que solo con grep, y encontró el archivo correcto prácticamente las mismas veces.

> **[GitHub - TedHaley/pensieve: Search everything on your Mac by meaning, for you...](https://github.com/TedHaley/pensieve)**
>
> Search everything on your Mac by meaning, for you and your AI agents.

> **✅ yoDEV Tested** · 12 de octubre de 2026  
> Ejecutamos 160 búsquedas con Claude Code 2.1.296 y Pensieve 0.6.3 sobre OpenSEO, un repo real de TypeScript de unos 1.000 archivos, con el arnés de benchmark del autor sin modificar. Los resultados que reportamos como nuestros salen de esa prueba.

## ¿Por qué tu agente de IA gasta tantos tokens buscando código?

Porque busca por costumbre, no por significado. Pregúntale a Claude Code “¿dónde manejamos los reintentos de cobro después de un rechazo?” y la secuencia habitual es: grep de “retry”, cientos de coincidencias, y luego leer archivo tras archivo hasta dar con el correcto. Cada archivo que lee entra en la ventana de contexto, y pagas por cada uno de esos tokens. En un repo grande, la búsqueda puede costar más que el arreglo en sí.

Un índice local cambia ese primer paso. El agente hace una pregunta en lenguaje natural y recibe los pocos fragmentos más relevantes, con archivo y línea, en lugar de una pared de coincidencias de grep. Es lo que en inglés se conoce como `semantic code search` sobre un `local code index`.

## ¿Qué es Pensieve?

Pensieve es un backend de búsqueda local para Mac que indexa tres cosas:

- tus documentos y carpetas
- tus repositorios git, incluidos los cambios sin commit y los worktrees
- tus sesiones anteriores de Claude Code, Codex y Qwen Code

Después expone ese índice a tus agentes como un `MCP server`. Lo desarrolla Ted Haley, se publica bajo licencia MIT y todo corre en tu máquina:

- el texto se convierte en embeddings localmente con `Qwen3-Embedding-0.6B`
- el índice vive en SQLite, con un índice de texto completo por trigramas para coincidencias exactas y turbovec para la búsqueda vectorial
- todo se guarda en `~/.pensieve`

Por defecto, el agente ve once herramientas. Las que importan para este artículo son `search`, `read` y `similar`. La búsqueda funciona por significado (`pricing model`) y por palabras exactas (`"rate limit"`), y puedes combinar ambas: las coincidencias exactas se ordenan según el significado del resto de la consulta.

Trae más cosas: un panel de búsqueda al estilo Spotlight, un mapa 3D de tu código ordenado por significado, propiedad del código a partir de git blame y “brechas de conocimiento” (zonas cuyos autores ya no están activos en el repo). Este artículo se centra en la parte que ahorra tokens.

## ¿Cuánto ahorra de verdad? Nuestra prueba con OpenSEO

Ejecutamos el propio arnés de benchmark del autor (`bench/agent_search.py`, en el tag v0.6.3, sin modificar) sobre OpenSEO: 1.047 archivos, de los cuales Pensieve indexó 1.008.

**Cómo funciona:**

1. El script toma fragmentos de código del índice.
2. Sonnet describe cada uno en lenguaje natural, sin permitir identificadores, para que grep no pueda tomar atajos.
3. Claude Code se ejecuta en modo headless y se le pregunta qué archivo contiene ese código, en dos configuraciones:
  - **Grep:** solo Read, Grep y Glob.
  - **Pensieve:** las mismas herramientas, más las herramientas MCP de Pensieve y su bloque de instrucciones “busca antes de hacer grep”.

4. Las ejecuciones de ambas configuraciones se mezclan en un mismo lote, para que la caché de prompts no favorezca a ninguna.

40 tareas × 2 configuraciones × 2 repeticiones = 160 ejecuciones. Claude Sonnet en Claude Code 2.1.296, Pensieve 0.6.3, 12 de octubre de 2026, cero errores:

| | Grep, Glob, Read | Con Pensieve | Cambio |
| --- | --- | --- | --- |
| Archivos encontrados | 74 / 80 | 76 / 80 | prácticamente igual |
| Llamadas a herramientas por búsqueda | 2,66 | 1,40 | −47% |
| Tokens por búsqueda | 36.607 | 32.132 | −12% |
| Costo por búsqueda | 0,031 USD | 0,027 USD | −11% |
| Tiempo por búsqueda | 16,7 s | 13,8 s | −18% |

**La ganancia clara está en los pasos, no en la precisión.**

- **En precisión hay empate.** Los dos archivos extra vinieron de un solo tipo de consulta, cadenas de texto exactas, donde Pensieve acertó 4 de 4 y grep 2 de 4. Son muy pocas ejecuciones para sacar conclusiones. Todos los demás tipos empataron.
- **El ahorro de pasos es real.** En 30 de las 40 tareas, la ejecución mediana con Pensieve usó una sola llamada. La mayor diferencia fue una tarea en la que grep necesitó 12 llamadas y Pensieve, 1.
- **Los tokens bajaron menos que las llamadas.** Es lo esperable: cada búsqueda de Pensieve devuelve fragmentos que igualmente entran en el contexto, así que ahorras idas y vueltas, pero cada una lleva más contenido.

El agente usó la búsqueda de Pensieve en sus 80 ejecuciones y aun así recurrió a grep 14 veces. Es el bloque de instrucciones funcionando como está diseñado: primero buscar por significado, después confirmar con grep.

**Nuestro ahorro de costo del 11 por ciento encaja con las cifras del autor.** Él midió entre un 6 y un 15 por ciento en repos de 500 a 2.400 archivos, y su mayor ahorro, un 28 por ciento, en un monorepo de 35.000 archivos. En un repo grande, espera más. La prueba completa de 160 ejecuciones nos costó 4,62 USD.

**Cómo se compara con las cifras del autor.** El autor publicó sus propios resultados, medidos con la versión 0.5.6 en cuatro repos (de 504 a 34.847 archivos) y 144 ejecuciones:

- llamadas a herramientas por búsqueda: 1,97 en lugar de 3,44
- tokens: un 16 por ciento menos
- costo por búsqueda: un 18 por ciento menor
- tiempo por búsqueda: un 21 por ciento más rápido
- archivo correcto: 131 de 144 ejecuciones, frente a 123 solo con grep

Son cifras autorreportadas y sin replicar; por eso hicimos las nuestras.

Los costos son los que informa Claude Code a precios de lista de la API. Dependen de lo “caliente” que esté la caché de prompts, así que compáralos solo dentro de un mismo lote, nunca entre artículos.

## ¿Dónde sigue ganando grep?

En las cadenas exactas. La prueba de solo búsqueda del autor (Pensieve frente a un único grep, sin agente) pone el archivo correcto en primer lugar en estos porcentajes:

| Tipo de consulta | Pensieve | Grep |
| --- | --- | --- |
| Cadenas de error exactas | 88% | 92% |
| Nombres de funciones y clases | 94% | 54% |
| Descripciones en lenguaje natural | 58% | 0% |

En OpenSEO, la búsqueda de Pensieve por sí sola (sin agente) puso el archivo correcto en primer lugar para el 96 por ciento de 25 consultas por nombre, el 81 por ciento de 16 consultas por texto exacto y el 65 por ciento de 40 descripciones. Nuestra prueba no incluyó una comparación con grep solo, así que la tabla del autor sigue siendo la referencia para la ventaja de grep en cadenas de error.

La idea, entonces, no es eliminar grep. El bloque de instrucciones que instala Pensieve le dice al agente que busque primero por significado y use grep para nombres exactos o para confirmar.

## ¿Los resultados cambian según el repositorio?

Sí, sobre todo según el tamaño. Grep se encarece a medida que el repo crece, mientras que una búsqueda en el índice cuesta más o menos lo mismo a cualquier escala. Por eso el autor vio ahorros de entre un 6 y un 15 por ciento en repos medianos y de un 28 por ciento en un monorepo de 35.000 archivos, y por eso nuestro repo de TypeScript de unos 1.000 archivos quedó en un 11 por ciento. Hay otros tres factores que mueven la cifra:

- **Qué tan “grepeable” es tu código.** En OpenSEO, grep ya encontraba la mayoría de los archivos en dos llamadas, así que quedaba poco por recortar.
- **El tamaño de los archivos.** Los componentes `.tsx` pequeños hacen que cada lectura sea barata, por eso los tokens bajaron menos que las llamadas.
- **Qué preguntas.** Las cadenas de error exactas favorecen a grep; las descripciones de comportamiento favorecen a Pensieve.

Ten en cuenta también que el benchmark mide solo la búsqueda, no una sesión completa: una sesión real también gasta tokens editando, probando y razonando. Los scripts vienen en el repo justamente por eso: la cifra que cuenta es la tuya.

## ¿Cómo se instala Pensieve?

La vía más rápida es un solo comando (o pegarlo en tu agente y dejar que lo ejecute):

```bash
curl -fsSL https://tedhaley.ca/pensieve/install.sh | sh

```

En un Mac con Apple Silicon, esto descarga la app e instala el backend `pensieve`. No necesitas git, las herramientas de Xcode ni Python. Si prefieres no ejecutar un script descargado directamente en tu shell, instala el backend a mano:

```bash
uv tool install git+https://github.com/TedHaley/pensieve

```

Después elige qué indexar. Pensieve no indexa nada hasta que terminas la configuración inicial:

```bash
pensieve setup # lista las sesiones de agentes, carpetas y repos encontrados, con sus tamaños
pensieve setup recommended # indexa los marcados con [x]

```

Para indexar solo un repo concreto, nómbralo: `pensieve setup repos//Users/me/code/app` (la ruta absoluta va después de `repos/`).

**Qué esperar en el primer uso** (vigente al 12 de octubre de 2026, versión 0.6.3):

- **Una descarga grande.** Baja un modelo de embeddings de alrededor de 1,2 GB.
- **Una primera indexación pesada.** Avanza a unos 500 archivos de código por minuto en Apple Silicon, así que un repo de 35.000 archivos tarda poco más de una hora. Conecta el cargador.
- **Un aviso de Gatekeeper.** La app todavía no está notarizada, así que macOS puede bloquearla la primera vez. Ve a Ajustes del Sistema → Privacidad y seguridad → Abrir igualmente.
- **Un comando de configuración que puede no surtir efecto.** En nuestra prueba del 12 de octubre de 2026, `pensieve setup repos//…` no añadió el repo a la cola. Añadirlo desde Settings → Sources → add repo sí funcionó.

## ¿Cómo agregar Pensieve como servidor MCP en Claude Code, Codex o Cursor?

Un solo comando conecta todos los agentes que encuentre en tu Mac:

```bash
pensieve integrate recommended

```

Detecta Claude Code, Codex, Cursor, Gemini CLI, Qwen Code, Windsurf, Claude Desktop y VS Code, y registra Pensieve como servidor MCP en cada uno. En Claude Code, además, añade:

- el bloque “busca antes de hacer grep” en `~/.claude/CLAUDE.md`
- el skill `pensieve-search`
- dos hooks:
  - uno `PostToolUse`, para que las ediciones nuevas se puedan buscar al instante
  - uno `SessionStart`, que pregunta una vez si quieres indexar un repo desconocido

No te saltes el bloque de instrucciones. Sin él, los agentes siguen haciendo grep por costumbre aunque tengan Pensieve conectado, y nuestro benchmark se ejecutó con él activado.

Si prefieres agregar el servidor MCP a Claude Code a mano, con `claude mcp add`:

```bash
claude mcp add --scope user pensieve -- pensieve mcp

```

**Alcances (scopes).** Por defecto, cada agente se limita al repo en el que se inició, junto con sus worktrees y sus sesiones anteriores. No ve el resto de tu código. Para los agentes que solo aceptan una configuración JSON por stdio, es esta:

```json
{"mcpServers": {"pensieve": {"command": "pensieve", "args": ["mcp"]}}}

```

Reinicia cualquier agente que ya tengas abierto para que cargue el servidor.

Si te interesa recortar tokens en Claude Code por otras vías, aquí cubrimos [cómo hacerlo con hooks](https://www.yodev.dev/t/como-reducir-tokens-en-claude-code-con-hooks-y-portal-de-spotify/5139), y aquí [cómo ver el consumo de tokens en Codex CLI](https://www.yodev.dev/t/como-ver-el-consumo-de-tokens-en-codex-cli-usage-modo-fullscreen-y-voz-por-defecto/5457).

## ¿Es gratis y sale algo de tu Mac?

**Precio:** es gratis y open source, bajo licencia MIT.

**Qué se queda en local:** la indexación y la búsqueda corren en tu Mac, y el servidor local solo responde a tu máquina. Los archivos que parecen secretos nunca se indexan (`.env`, claves, credenciales, exportaciones de gestores de contraseñas). Puedes desactivar cualquier fuente, y al hacerlo se borra lo que había indexado.

**Qué sale:**

- la descarga del modelo
- una comprobación de actualizaciones en GitHub, que puedes desactivar
- los resúmenes de IA opcionales, solo si eliges Claude Code o Codex para escribirlos. Están marcados como Cloud. El Qwen 3.5 9B integrado o LM Studio mantienen todo en local.

**Una nota para equipos.** Las fuentes por defecto incluyen `~/Documents`, `~/Desktop` y `~/Downloads`. Tú eliges qué se indexa durante la configuración, así que en un equipo de trabajo, elige con criterio.

## ¿Funciona en Windows o Linux?

En parte. A la versión 0.6.3:

- **Mac con Apple Silicon (macOS 14 o posterior):** app de escritorio completa.
- **Linux y Mac con Intel:** el instalador configura el backend desde el código fuente con uv, así que la búsqueda por MCP y el mapa en el navegador funcionan. El panel de búsqueda es solo para macOS, aunque un Mac con Intel también lo obtiene si tiene instaladas las herramientas de línea de comandos de Xcode.
- **Windows:** al momento de publicar esta nota, la documentación no lo menciona.

## ¿Cómo repetir la prueba en tu propio repo?

Los scripts del benchmark vienen en el repo, así que no tienes que creernos ni a nosotros ni al autor. Estos son exactamente los comandos que ejecutamos:

```bash
git clone https://github.com/TedHaley/pensieve && cd pensieve && git checkout v0.6.3
uv run python bench/agent_search.py gen --repo ~/code/myrepo -n 40 --tasks tasks-v2.jsonl
uv run python bench/exact_tasks.py
uv run python bench/agent_search.py find --repo ~/code/myrepo --tasks tasks-v2.jsonl --split all --styles query,desc,mixed,ident,literal
uv run python bench/agent_search.py run --repo ~/code/myrepo --tasks tasks-v2.jsonl --split all --reps 2 --arms grep,guided
uv run python bench/agent_search.py report --repo ~/code/myrepo --tasks tasks-v2.jsonl

```

Cada ejecución tiene un tope de 1 USD y el comando `run` retoma donde quedó si se interrumpe. Si usas Claude Code con suscripción en lugar de facturación por API, las ejecuciones cuentan contra tus límites de uso. Si buscas otras herramientas que recortan lo que lee tu agente, [code-review-graph](https://www.yodev.dev/t/code-review-graph-tu-agente-revisa-solo-los-15-archivos-que-importan-no-los-27-000/3963) aplica la misma idea a la revisión de código.

* * *

**¿Y tú?** ¿Cuántas llamadas a herramientas hace tu agente antes de encontrar el archivo que buscas?

_Poll ([view on site](https://www.yodev.dev/t/como-reducir-el-consumo-de-tokens-de-tu-agente-de-ia-probamos-pensieve-en-un-repo-real/5650/1))_

Comenta abajo o, si este artículo te llegó por correo, responde directamente al email: tu respuesta se publica aquí.

Relacionado: [Cómo reducir tokens en Claude Code con hooks y Portal de Spotify](https://www.yodev.dev/t/como-reducir-tokens-en-claude-code-con-hooks-y-portal-de-spotify/5139)
