Auditoría de la skill Caveman: 109.102 estrellas, un titular del 65% y el 3% que publica su propia evaluación

Caveman promete recortar el 65% de los tokens de tu agente. Cloné el repositorio en el commit 8af1f1b (1.613 ficheros, 19.130.901 bytes), reproduje su evaluación con tiktoken y obtuve las medianas 3%/35%/9% que publica, y después ejecuté su propio banco de compresión sobre sus propios ficheros de prueba: 34,1% donde su tabla promete 46%. Además: el 65% procede de una constante fija que su propia documentación retiró, JetBrains midió 8,5% frente a ese 65% mientras la skill por defecto recorta un 38,3% contra un agente verboso pero sólo un 2,88% contra las palabras «Answer concisely», la CLI envía telemetría activada por defecto cuyo consentimiento llegó a almacenar tu IP en la versión 5, y la copia de una skill del plugin está desactualizada desde el 9 de septiembre porque el flujo de sincronización nunca nombra su ruta.

JuliusBrussee/caveman es el proyecto de ahorro de tokens más ruidoso de 2026. Su descripción en GitHub dice: «Viral skill + proxy for coding agents that cuts 65% of tokens by talking like a caveman.» Tiene 109.102 estrellas, 6.315 forks, 71 colaboradores y 346.877 descargas de artefactos de release. Su hilo más votado en Hacker News alcanzó 904 puntos y 366 comentarios un día después de crearse el repositorio. Ha publicado 42 releases. JetBrains le dedicó la primera entrega de una serie de tres comparativas.

Así que lo cloné en el commit 8af1f1b (3 de octubre de 2026, 00:38Z), medí el repositorio, ejecuté su propio banco de evaluación contra sus propios datos versionados, ejecuté su propio banco de compresión contra sus propios ficheros de prueba, leí el código del receptor de telemetría y audité sus flujos de CI.

El repositorio es, para el estándar de las herramientas virales, inusualmente honesto. Publica una página llamada docs/HONEST-NUMBERS.md que te explica cuándo apagar la herramienta. Mantiene a propósito una fila roja en su propia tabla de resultados. Incluye los pares de respuestas para que un desconocido pueda recalcular su evaluación principal sin conexión.

Y su frase más leída sigue siendo un número que el propio proyecto retiró.

La promesa y todas sus mediciones

Quién midióQué midióResultado
Descripción en GitHubEl eslogan65% de los tokens
JetBrains86 tareas reales de programación, A/B emparejado, Claude Code 2.1.200, claude-sonnet-5, skill forzada, Harbor 0.17, ~240 ejecuciones facturadas8,5% menos tokens de salida (592k → 542k sobre 82 pares limpios); calidad igual (p = 0,82)
Evaluación versionada del repo10 preguntas de desarrollo, claude-opus-5-5, skill contra un control Answer concisely.3% de mediana menos tokens de salida
La misma evaluación, contra un agente verboso sin instruccionesEl mismo snapshot, sin prompt de control38,3% de mediana menos tokens de salida (mi recálculo; 6.983 → 4.119 tokens)
El repo, banco del proxy54 ejecuciones, tokens de entrada reportados por el proveedor, 6 cargas de trabajo33,2% menos tokens de entrada (885.793 → 591.673)
Adobe Research / CAVEWOMAN8 modelos, 5 conjuntos de datos, 5 niveles de reducción, compresión en la salida1,4–2,4× de coste real recortado, hasta 3×
The New Stack sobre la versión interna de Elastic8 escenarios de prueba internos63,6% de reducción media de tokens
El repo, ficheros de memoriaCinco ficheros tipo CLAUDE.mddice 46%; yo medí 34,1%
El repo, modo píxelEl cuerpo de la skill renderizado como páginas PNG1.069 → 415 tokens «estimados»
El repo, páginas webUna pregunta filtrada sobre una tabla de 200 filas121 frente a 15.704 de Playwright (129,8×)

Nueve cifras, de cuatro organizaciones, separadas por dos órdenes de magnitud. Todo lo que sigue trata de cuáles puedes comprobar y cuáles deberías creerte.

De dónde salió el 65% y adónde fue

El repositorio tiene seis meses. El número del eslogan se ha revisado a la baja dos veces y la descripción nunca lo siguió.

El 5 de abril de 2026, en el hilo de Hacker News, el propio mantenedor respondió a las críticas:

The fair criticism is that my “~75%” README number is from preliminary testing, not a rigorous benchmark. That should be phrased more carefully, and I’m working on a proper eval now.

Verifiqué esa cita en el texto del hilo (ítem 47647455, autor JBrussee-2, 5 de abril de 2026) en lugar de aceptarla de segunda mano. La secuencia es:

  • Abril de 2026: el README promete ~75%, «de pruebas preliminares, no de un benchmark riguroso», en palabras del propio autor
  • mediados de 2026: la descripción y el material de marketing se asientan en el 65%
  • julio de 2026: JetBrains mide 8,5% en tareas agénticas con la skill forzada, y llama a ese 8,5% un techo y no un caso típico, porque la skill sólo comprime la narración entre llamadas a herramientas
  • 2 de octubre de 2026: el snapshot versionado del propio repo publica 3% para la skill por defecto
  • 3 de octubre de 2026: la descripción sigue diciendo 65%

La documentación interna explica la constante. De docs/HONEST-NUMBERS.md, textualmente:

Earlier stats releases applied a fixed 65% output ratio without a committed reviewed result. Current reports ignore those historical est_saved_* fields while preserving the original history rows.

Hay una incidencia abierta, la #991 (5 de septiembre de 2026), titulada «fix(stats): retire unsourced 0.65 COMPRESSION constant to align with HONEST-NUMBERS.md». Sigue abierta. La #733 (22 de julio de 2026, 10 comentarios) se titula literalmente «Advertised saving: 65%. Measured saving: 8.5%.». También abierta. La #1093 (20 de septiembre de 2026) pide medir la calidad y sostiene que el desajuste de tokenizador infla el ahorro. Abierta.

Aquí importa el contraargumento honesto, y quiero exponerlo bien, porque la versión perezosa de este artículo es «el número es falso». No es falso. El artículo de Adobe Research encontró que la compresión en la salida recorta el coste real 1,4–2,4× por modelo, hasta 3× en el mejor caso, y la versión interna de Elastic reportó un 63,6%: ambos en el mismo rango que el 65%. La cifra del 65% es un número de mejor caso, de registro conversacional y prosa abundante. Lo que está mal no es la aritmética, sino la colocación: vive en la única línea que viaja por resultados de búsqueda, previsualizaciones de Slack y boletines, donde el lector no tiene forma de saber que aplica a respuestas de chat y no a sesiones de agente, ni de que el mismo repositorio mide hoy un 3%.

El veredicto de JetBrains, en ese mismo artículo, es la frase más justa que se ha escrito sobre este proyecto: «safe, honest about style, [but] oversold on savings» («segura, honesta con el estilo, pero sobrevendida en el ahorro»).

Lo que reproduje, exactamente

Lo más meritorio de este repositorio es que su evaluación principal es real. evals/snapshots/results.json está versionado en git, y evals/README.md describe el diseño: cada brazo responde a las mismas 10 preguntas, uno sin prompt de sistema, otro con Answer concisely., y cada brazo de skill con Answer concisely. más su propio SKILL.md. El delta honesto es skill contra terse, no skill contra nada; el README lo dice explícitamente y señala que una versión anterior del banco comparaba contra ningún prompt y por eso sus cifras estaban «infladas».

Cargué ese snapshot (generado el 2026-10-02T23:09:42Z, claude-opus-5-5, Claude Code 2.1.288) y conté los tokens yo mismo con tiktoken o200k_base:

BrazoMediana publicadaMi recálculoRango por pregunta (mío)
caveman (por defecto)3% menos−2,88%−19,63% a +15,51%
ultracave35% menos−34,73%−58,39% a −26,65%
megacave9% menos−9,14%−38,98% a +11,78%

Coinciden. La dispersión publicada («16% más largo a 20% más corto») coincide con mi −19,63%/+15,51%. Los totales reales de tokens sobre las 10 preguntas: 6.983 sin prompt de sistema, 4.334 con Answer concisely., 4.119 con la skill caveman, 3.683 con megacave y 2.693 con ultracave.

De ahí salen dos conclusiones, y son las dos que casi todo el mundo que cita este proyecto se salta.

Primera: la cifra honesta depende por completo de la línea base que elijas. Contra un agente estándar que responde con la verbosidad por defecto, la skill de caveman elimina el 38,3% de los tokens de salida. Contra un agente al que sólo se le ha dicho Answer concisely., elimina el 2,88%. Ambas cosas son los mismos 4.119 tokens. Si ya le pides brevedad a tu agente, la propia evaluación de caveman dice que la skill vale unos tres por ciento, y por pregunta alarga algunas respuestas y acorta otras, porque 10 preguntas no son un experimento con potencia estadística.

Segunda: los caracteres no son tokens, y la brecha es brutal en registros no latinos. Medido en caracteres, megacave (chino clásico) recorta la respuesta mediana un 65,32%. Medido en tokens, recorta un 9,14%. La razón se ve en el mismo snapshot: el control terse en inglés promedia 4,21 caracteres por token, mientras que el chino clásico de megacave corre a 1,83. Un ahorro medido en caracteres chinos vale aproximadamente la cuarta parte de lo que aparenta. Si algún día ves un «65% más corto» medido en caracteres sobre un texto CJK, trata el número de tokens como la séptima parte: casualmente, la misma forma que tiene el error que produjo la descripción de este repositorio.

Las advertencias que el propio repositorio publica sobre su evaluación merecen repetirse, porque son inusualmente sinceras: mide longitud, no corrección; es una única ejecución por par pregunta-brazo a temperatura por defecto; el contador es el BPE de OpenAI, «only an approximation of Claude’s tokenizer»; y, como resume evals/README.md, «A skill that replies k to everything would score −99% and ‘win’».

La tabla de compresión de memoria que ya no se reproduce

El repositorio también incluye /caveman-compress, que reescribe tus ficheros de memoria tipo CLAUDE.md más cortos conservando encabezados, código, rutas y URLs. Su README publica una tabla de cinco filas con una media del 46%.

Ejecuté el banco del propio repositorio —skills/caveman-compress/scripts/benchmark.py, con su propio validate() y el mismo contador tiktoken— sobre los pares de ficheros versionados en tests/caveman-compress/, que son precisamente los cinco ficheros que nombra la tabla:

FicheroTabla del READMELo que producen hoy los ficheros incluidosREADMEMedido
claude-md-preferences.md706 → 285827 → 42159,6%49,1%
project-notes.md1145 → 5351431 → 84653,3%40,9%
claude-md-project.md1122 → 6361628 → 111743,3%31,4%
todo-list.md627 → 388880 → 64838,1%26,4%
mixed-with-code.md888 → 5601432 → 110636,9%22,8%
Media898 → 4811.240 → 82846%34,1%

Todos los ficheros son algo mayores de lo que dice la tabla y todas las proporciones son menores. La validación estructural pasa en los cinco pares: encabezados, bloques de código, URLs y rutas sobreviven intactos, que es justo lo que la herramienta promete.

Dos lecturas honestas, y sostengo ambas. La primera: es la quinta vez que un número de ahorro se publica por delante de los artefactos en este mismo repositorio, y el lector no puede reproducir la tabla desde el checkout. La segunda, y creo que la más importante: estos ficheros son fixtures de prueba, cinco documentos elegidos para que un trabajo de CI demuestre que el markdown sigue siendo válido, y la tabla probablemente se generó en algún momento a partir de otro corpus más amplio. Lo que puedo afirmar con precisión es más estrecho que «la afirmación es falsa»: la tabla de skills/caveman-compress/README.md está unos 12 puntos por encima de lo que producen hoy los artefactos del mismo checkout, usando el contador del propio repositorio. Eso es deriva, y es comprobable. No es prueba de nada sobre la intención del mantenedor.

Qué números viajan con los artefactos necesarios para comprobarlos

Esta es la tabla que yo querría antes de fiarme de cualquier herramienta de compresión, así que la construí para ésta.

Afirmación¿Puede un desconocido comprobarla desde el checkout?El artefacto
Medianas 3% / 35% / 9%Síevals/snapshots/results.json está versionado; reproduje las tres
46% en ficheros de memoriaSí, y no se reproducelos ficheros y las salidas están en tests/caveman-compress/; medí 34,1%
33,2% de tokens de entrada (885.793 → 591.673)Nobenchmarks/results/ sólo contiene un .gitkeep; el propio marcador de la tabla en el README dice «No reviewed API benchmark result is published here yet» y la página afirma «Raw harness artifacts are not in this checkout, so treat it as a pinned report, not a public reproduction»
129,8× en páginas webSí, con límite documentadoel corpus está incluido (order_dashboard.html, agent_checkout.html), browse/BENCHMARK.md da los comandos go test -tags=integration y el mismo documento admite que en formularios pequeños el resultado es 2,34× mayor que el ARIA de Playwright
61% del modo píxel (1.069 → 415)Nola palabra en la afirmación es «estimated»; esos dos números no aparecen en ningún otro sitio del árbol salvo las frases del README que los afirman
38 integraciones de agentesSíINSTALL.md las nombra; conté 38, frente a una insignia que dice «30+»

No tengo queja del que no se puede reproducir. Etiquetar tu propio benchmark principal como «un informe fijado, no una reproducción pública» es más transparencia de la que ofrece la mayoría, y la misma página mantiene visible una fila perdedora (Dashboard HTML alert: +9,9%) con una nota del mantenedor: «The day I hide a red row is the day you should stop trusting the green ones» («el día que esconda una fila roja será el día en que dejes de fiarte de las verdes»). Es el instinto correcto. Es también la razón de que el 65% de la descripción desentone tanto: todo dentro del repositorio está calibrado a ese nivel de honestidad excepto la frase de la cabecera.

Telemetría: activada por defecto, opcionalmente desactivable y con un consentimiento que llegó a la versión 5

La CLI envía estadísticas de uso por defecto. El README lo dice con claridad y explica cómo desactivarlas (caveman telemetry off, o DO_NOT_TRACK=1). La línea que la CLI imprime en la primera ejecución es:

usage stats on — commands, agent sessions, token totals, account and install type, timezone and language, and your IP address; never prompts, code, or file paths

Leí el receptor. El endpoint es una función edge de Supabase (xvfgtprkhzlvegvmeefq.supabase.co/functions/v1/cli-telemetry) y su validador hace tres cosas que verifiqué línea a línea:

  • Vocabularios cerrados. Siete nombres de evento, marcas de tiempo RFC3339, un UUID de instalación y enumeraciones fijas para sistema operativo, arquitectura, clase de salida, clase de error, tipo de cuenta, canal de instalación y origen de sesión. Un valor desconocido descarta el evento entero.
  • La promesa de «nunca prompts, código ni rutas» es estructural, no una promesa. command, subcommand, agent y cli_version se validan contra ^[A-Za-z0-9._+-]{0,64}$. Sin espacios, sin barras, sin texto libre: una ruta de fichero no cabe en esos campos. El esquema almacenado no tiene ninguna columna de texto libre donde pueda aterrizar un payload.
  • Las peticiones de navegador se rechazan. El manejador exige tipo de contenido JSON y rechaza las peticiones con Origin o Sec-Fetch-Site, lo que impide que una página web use el endpoint para registrar las IP de sus visitantes.

La retención está en SQL, no en el marketing. supabase/migrations/20260925040000_cli_telemetry_abuse_retention.sql programa un trabajo diario que borra las filas de más de 13 meses, con un comentario que señala que las IP «already cleared at 90 days by cli-events-ip-retention», en línea con la promesa del README: 90 días para las IP, 13 meses para el resto. La misma migración fija límites de 30 eventos por minuto y 5.000 por día por remitente, un techo global de 10.000 filas por minuto y un máximo de 500 identificadores de instalación nuevos por dirección y día.

Es una canalización de telemetría mejor construida —incluida su lógica antifalsificación y sus límites antiabuso— que la de la mayoría de herramientas comerciales. Ahora la parte que un defensor no te contará por iniciativa propia.

El alcance del consentimiento se ha ampliado dos veces, y un «sí» antiguo se está gastando en un alcance nuevo. El comentario del código en packages/cli/src/index.ts lo dice sin rodeos:

Version 5 = the receiver stores the client IP address with each event. v4 was default-on (opt-out) plus token volume… A stale-version “yes” was given for a narrower scope and gets the new disclosure reprinted once (never re-asked, and never flipped on).

Es decir: quien aceptó una divulgación más estrecha en la v1 vive ahora en un régimen que almacena su IP con cada evento. La implementación es más cuidada que la norma —reimprime la divulgación una vez, nunca vuelve a preguntar y nunca activa a quien ya había rechazado— pero la descripción honesta del producto es: activa por defecto, desactivable, con almacenamiento de IP y ampliada dos veces sin consentimiento nuevo. Además, en tu primera ejecución el evento inicial transporta un escaneo retrospectivo de 30 días de tu historial local de agentes, en forma de agregados (número de sesiones, tokens observados, tokens que un proxy habría recortado). Envía agregados, no contenidos, y el validador exige que los agregados sean internamente coherentes, pero es un escaneo de tu disco, propiciado por defecto, en una herramienta que instalaste para ahorrar dinero.

Si ese intercambio no te convence: caveman telemetry off; y si quieres que borren lo ya enviado, la CLI imprime una última vez tu identificador anónimo de instalación y la vía documentada es enviarlo. Ni la divulgación ni la ruta de borrado están escondidas.

El repositorio, en cifras

MedidaValor
Ficheros / tamaño (sin .git)1.613 ficheros / 19.130.901 bytes (18,24 MiB)
ComposiciónGo 27,1%, .mjs 13,1%, JSON 12,8%, PNG 10,5%, TypeScript 9,0%, Python 6,8%, Markdown 5,4%, .gz 4,9%
Fichero más grandepackages/cli/src/index.ts: 929.390 bytes, 20.176 líneas, el 4,9% de todos los bytes versionados
Ficheros de prosa en la raízREADME.md 46.861 B, CLAUDE.md 40.641 B, INSTALL.md 24.589 B, SECURITY.md 21.397 B
Definiciones de skill26 SKILL.md bajo skills/; 6 replicadas en plugins/
LicenciaApache-2.0 desde 3.0.0; 25 ficheros LICENSE idénticos byte a byte a la copia raíz (sha256 cfc7749b…), con el texto MIT anterior a 3.0.0 conservado aparte en LICENSE-MIT y avisos de terceros del port de pxpipe y de las fuentes Spleen/Unifont en NOTICE
Comunidad71 colaboradores (el mantenedor 657 commits, claude 67, github-actions[bot] 26); 42 releases; 346.877 descargas de artefactos
Trabajo abierto134 elementos abiertos, de los cuales 68 son pull requests: es decir, 66 incidencias reales; 475 incidencias históricas
Versiones que no coincideninstalador raíz 3.1.0, manifiesto del plugin 3.1.0, CLI 2.0.0, última etiqueta de release v3.0.0
Agentes soportados38 nombrados en INSTALL.md (Claude Code, Codex, Gemini CLI, Cursor, Windsurf, Cline, Copilot, opencode, Kilo, Roo, Warp, Replit, Junie, Qoder, Antigravity y —declaración de intereses— Hermes Agent, el arnés en el que se escribió este artículo)

La auditoría de licencias salió limpia, y conviene decirlo sin rodeos porque la deriva de licencias es la forma habitual en que un proyecto así se pudre. Cada directorio empaquetado lleva una copia idéntica del texto Apache-2.0; los avisos de la era MIT se conservaron en lugar de sobrescribirse; engine/pixel/ es un port a Go de teamchong/pxpipe y lo declara con el copyright original; las fuentes de mapa de bits incrustadas llevan sus avisos BSD-2 y OFL-1.1. LICENSING.md incluso explica que el proyecto pasó de un régimen mixto MIT más Business Source License 1.1 a Apache-2.0 puro en la 3.0.0, y que las releases anteriores conservan los términos con los que se publicaron. He revisado suficientes repositorios de «open core» como para saber que este no es el resultado por defecto.

El único fichero que la CI no podrá arreglar nunca

Hay 15 flujos de GitHub Actions, incluidos CodeQL, Scorecard, un trabajo de cadena de suministro y un verificador de enlaces. Uno de ellos, sync-skill.yml, copia las skills de estilo de respuesta desde skills/ a plugins/ para que los usuarios del plugin reciban texto idéntico.

Declara siete rutas de disparo y copia exactamente cinco skills: caveman, ultracave, megacave, cavecrew y caveman-compress. Su lista de git add nombra esas mismas cinco, más dist/caveman.skill.

Pero plugins/caveman/skills/ publica seis directorios. El sexto es caveman-stats, y ningún flujo, ningún cp y ninguna línea de git add de este repositorio menciona su ruta en el plugin. Según la API de commits de GitHub:

  • plugins/caveman/skills/caveman-stats/SKILL.md: tocado por última vez en 966a4911, el 8 de septiembre de 2026
  • skills/caveman-stats/SKILL.md: modificado otra vez en 79e8440b, el 9 de septiembre de 2026, y de nuevo por un merge de triaje bd739e15, el 14 de septiembre de 2026

Las cinco skills que el flujo sí cubre son idénticas byte a byte entre origen y plugin (las he verificado con hash). La sexta lleva 25 días desactualizada, difiere en un párrafo que describe cómo el hook de estadísticas entrega realmente su informe al modelo, y no puede ser refrescada por la CI en absoluto, porque la ruta no está en el flujo. plugins/ forma parte de la lista files del paquete npm, así que esa copia obsoleta es la que instalan los usuarios del plugin.

Esto es un fallo de empaquetado, no un incidente de seguridad, y no voy a inflarlo: el fichero obsoleto corresponde a un comando local de visualización de estadísticas, no al motor de compresión, y arreglarlo es un diff de dos líneas. Pero sirve para recordar qué certifica realmente una insignia verde. Quince flujos y un commit automático titulado literalmente chore: sync SKILL.md copies [skip ci] —el commit de cabecera del clon que audité, 3 de octubre a las 00:38Z— no demuestran que un espejo esté completo. Sólo lo demuestra la lista de rutas, y esa lista tiene un agujero.

Dónde está el dinero de verdad

Los propios números del repositorio sostienen un argumento que su marketing no hace. Su skill ahorra 3% de tokens de salida frente a un control terse; su proxy ahorra 33,2% de tokens de entrada. El README saca la conclusión: la factura de un agente es sobre todo lectura —logs, salida de tests, diffs, medio repositorio, reenviados en cada turno— y ningún estilo de habla arregla eso. Por eso existe el proxy, y por eso el resultado de JetBrains merecía una reacción en lugar de una discusión.

El corolario es lo interesante, y es un problema de coste que el proyecto declara sobre sí mismo: cada skill que instalas es texto de prompt que tu agente recarga en cada llamada. Su propio README estima el conjunto de reglas en unos 1.000 tokens de entrada por llamada. En la incidencia #145, un usuario midió la sobrecarga en «~800–1200 tokens per turn for caveman rules block, plus ~300 for the skills list» y concluyó que la skill sale a pérdida en preguntas y respuestas técnicas breves; por eso docs/HONEST-NUMBERS.md incluye exactamente ese caso bajo «cuándo caveman pierde».

Otras tres pérdidas documentadas, todas en páginas del propio proyecto:

  • Facturación por petición en lugar de por token. Incidencia #506: en GitHub Copilot se cobran las peticiones premium, y una respuesta más corta sigue siendo una petición. Una skill que acorta respuestas no tiene ningún mecanismo para ayudarte ahí.
  • La varianza que se come la media. En las 82 tareas emparejadas de JetBrains el brazo con la skill debería haber salido un 10% más barato; salió un 11,6% más caro (40,60 USD frente a 36,39) porque una única tarea de auditoría de dependencias cruzó al precio de contexto largo: 8,29 USD frente a 0,33. Su propio resumen: el ahorro es real pero frágil.
  • La cola. La incidencia #550 reporta un A/B en Cursor con 4,3M de tokens con caveman frente a 1M sin él y el doble de tiempo de reloj; una ejecución que la propia página del mantenedor dice que no fue reproducible y que incluye de todos modos.

El patrón se generaliza más allá de este proyecto, y por eso la serie de JetBrains merece leerse como serie. Parte 1, caveman: publicitado −65%, medido −8,5%. Parte 2, rtk: publicitado −60–90% de la salida de shell, medido +7,6% de coste mediano por tarea (p = 0,004) porque la sobrecarga del envoltorio superaba lo que ahorraba. Parte 3, ponytail: publicitado −54% de código, medido una mediana de −15% de código y en torno a −10% de tokens, con la nota honesta de que la mediana y la media sobre datos sesgados son animales distintos. Tres complementos virales de «ahorro de tokens», tres promesas de entre el 54% y el 90%, ninguna superando el contacto con más de 80 tareas emparejadas bajo un presupuesto fijo.

Qué haría yo en la práctica

  1. Clasifica primero tu facturación. Por token → sigue leyendo. Por petición o crédito → una respuesta más corta es la misma factura; sáltate todo lo que sólo acorte la prosa.
  2. Mide antes y después con los números del proveedor. El repositorio incluye caveman trial -- claude, que ejecuta una sesión real en ambos sentidos, y su propia documentación dice que ese A/B vale más que cualquier cifra de su README. Tómalo al pie de la letra. Los contadores locales no son una factura.
  3. Decide por separado sobre las dos mitades. La skill vale, como mucho, un recorte de un dígito alto en la salida, y en preguntas breves puede salir a pérdida una vez contados sus ~1.000 tokens por llamada. El proxy, que ataca el flujo de entrada, es donde vive el 33%; también es la mitad cuyos artefactos principales no están publicados, así que pruébalo en tus propias sesiones con logs largos antes de creértelo.
  4. Desactiva la telemetría si te importa, el primer día. caveman telemetry off. Es un comando, está documentado y funciona.
  5. Prefiere la skill al truco de píxeles. Convertir SKILL.md en páginas PNG para que el modelo lo lea como imagen es la idea más elegante del repositorio y su único número es una estimación («1.069 to 415 estimated tokens»). El motor del que es port, pxpipe, aparece en la propia tabla comparativa del proyecto descrito como con pérdida y con fallos silenciosos. Elegante no es medido.
  6. Si no gana con tu carga de trabajo, desinstálalo. Es el consejo del mantenedor, no mío: «Compare provider-billed totals on the same task with and without Caveman. If Caveman increases billed cost for the same task, turn it off for that workload».

Preguntas frecuentes

¿Es falsa la afirmación del 65%? No, y eso importa. Es un número de mejor caso para salida de chat con mucha prosa, y trabajos independientes respaldan ese rango: Adobe Research midió que la compresión en la salida recorta el coste real 1,4–2,4× (hasta 3×), y la versión interna de Elastic reportó 63,6%. Lo que está mal es que el número viaja sin su contexto. En tareas agénticas de programación con la skill forzada, JetBrains midió un 8,5% y lo llamó techo; la propia evaluación del proyecto mide un 3% frente a un control breve.

Entonces, ¿la skill no hace nada? Hace algo, y el tamaño depende de tu línea base. Contra un agente estándar y verboso, el snapshot versionado muestra 4.119 tokens donde el agente sin instrucciones escribe 6.983: un recorte mediano del 38,3% según mi recálculo. Contra un agente al que ya le dices Answer concisely., es un 2,88%. Si ya pides brevedad, cuenta con un error de redondeo. Si no la pides, la skill hace trabajo real, por un efecto de coste de un dígito alto, no del 65%.

¿Acabo de leer que el compresor de memoria exagera 12 puntos? Medí un 34,1% de media en los cinco pares de ficheros que nombra el README, usando el script de benchmark y el validador del propio repositorio, frente al 46% publicado. Los cinco pares siguen validando estructuralmente. La afirmación limitada —«la tabla ya no se corresponde con lo que producen los ficheros incluidos»— es lo que sostienen mis números.

¿Por qué el propio benchmark de caveman dice que su buen dato es el de tokens de entrada? Porque en una sesión de agente los tokens se leen más que se escriben: contexto, salida de herramientas, logs y diffs se reenvían en cada turno, mientras que la salida del modelo está dominada por código y llamadas a herramientas que la skill deja exactas byte a byte. Es un análisis justo y apunta a la dirección que el propio producto siguió: el proxy, no la voz.

¿Qué envía exactamente la CLI a casa? Eventos de comando y de sesión con un UUID aleatorio de instalación, recuentos de tokens consumidos y recortados, sistema operativo, arquitectura, versión de Node, versión de la CLI, canal de instalación, estado de sesión, zona horaria, idioma y la IP desde la que llegó el evento. Las IP se borran a los 90 días y el resto de filas a los 13 meses, ambos extremos impuestos por SQL programado que he leído. Nunca prompts, código ni rutas, y esa parte está impuesta por una validación en servidor que no puede transportar una ruta en los campos que acepta. En la primera ejecución, un evento incluye además recuentos agregados de un escaneo de 30 días de tu historial local de agentes. caveman telemetry off lo detiene; el identificador que imprime en ese momento es la vía para pedir el borrado de lo ya enviado.

¿Debería instalarlo? La condición en la que claramente compensa: pagas por token, ejecutas sesiones largas llenas de logs, salida de tests y diffs, y usarías el proxy y no sólo la skill de personalidad. La condición en la que no: te facturan por petición, o tus conversaciones son cortas y concisas. Ambas condiciones salen de la documentación del propio proyecto, que es la razón más sólida que tengo para fiarme del resto.

Conclusión

109.102 personas dieron una estrella a una herramienta cuyo claim más leído, el 65%, su propio repositorio ya no sostiene: el mismo proyecto publica un 3% para la misma skill, conserva un resultado del 33,2% del proxy cuyos artefactos nunca se publicaron, y mantiene una tabla de compresión de memoria 12 puntos por encima de lo que producen sus propios ficheros. También publica una página que te dice cuándo apagarla, deja a propósito una fila roja en sus propios resultados, incluye los pares de respuestas en bruto de su evaluación para que un desconocido los recalcule con exactitud —lo hice— y hace cumplir su promesa de privacidad en código de servidor en lugar de en prosa de marketing.

Así es una herramienta viral de desarrollo escrita de buena fe en 2026: honesta en su documentación, sobrevendida en su descripción y aproximadamente una cuarta parte de eficaz respecto al número que oíste al principio. Lee la página de números antes del eslogan, mide las dos mitades por separado y desactiva la telemetría el primer día.