Ya pagas Claude Pro/Max: ahora Hermes puede usarlo

Tienes una suscripción Claude Max y usas claude en la terminal todos los días. Es natural que quieras Hermes en el mismo plan: el agent que recuerda cosas entre sesiones, corriendo sobre la cuota que ya pagas. Luego el asistente de configuración te pide una API key, compras crédito medido para cruzar la puerta, y a final de mes estás pagando por los dos, con dos bolsas de cuota separadas. Esa brecha incómoda ya tiene respuesta oficial: apuntar Hermes al propio ejecutable oficial claude.
Qué hace realmente el plugin
El plugin es Claude Subscription DirectSDK (Experimental) y se instala como claude-subscription-directsdk-experimental. Maneja el ejecutable oficial de Claude Code sin modificar como cliente de modelo con alcance de petición, así que el trabajo corre sobre tu suscripción Claude Pro/Max, mientras Hermes conserva su propio bucle de agent: herramientas, política de aprobación, compactación, memoria y skills se quedan del lado de Hermes.
El nombre engaña un poco. A pesar de «DirectSDK», la implementación habla directamente el protocolo nativo stream-json y no necesita el paquete Python Agent SDK. El plugin declara su dependencia del binario claude en plugin.yaml bajo external_dependencies, pero no guarda credenciales propias: la autenticación pertenece al CLI oficial, y el plugin nunca abre, copia, refresca ni imprime sus archivos de credenciales. No hay ningún fallback silencioso a HTTP más API key.
Qué necesita:
- Hermes Agent 0.21.4 o superior (o
mainen/después de118984d7a02f, la mitad del core en el PR #117451). En un Hermes más antiguo el plugin falla al cargar con un aviso claroFailed to load user provider pluginen lugar de funcionar a medias. - Python 3.10+ en Linux, macOS o Windows. La ejecución nativa va en su propio grupo de procesos y la cancelación mata todo el árbol, así que el hijo
nodeque hay detrás del shim de npm nunca sobrevive a una petición cancelada. - El CLI oficial de Claude Code, instalado y con la sesión iniciada:
npm install -g @anthropic-ai/claude-code, y luegoclaude auth login.
El plugin es explícito en cada ruta en la que falta claude: al cargarse registra un aviso y permanece registrado para que la configuración pueda explicar qué falta; hermes model se detiene con la indicación de instalación y no escribe nada en la config; y una petición falla de inmediato con la misma indicación en lugar de un traceback de Popen.
Instalar y seleccionar
# 1) el CLI oficial (el plugin no guarda credenciales)
npm install -g @anthropic-ai/claude-code
claude auth login
# 2) instálalo desde el catálogo de plugins de Hermes (fijado, revisado)
hermes plugins install claude-subscription-directsdk
# o directamente desde GitHub (sigue main)
hermes plugins install NousResearch/hermes-plugin-claude-subscription-directsdk
# 3) selecciónalo
hermes model # elige "Claude Subscription DirectSDK (Experimental)"
Las instalaciones por profile van bajo ~/.hermes/profiles/<profile>/plugins/. El plugin declara kind: model-provider, así que el descubrimiento de providers lo importa directamente: no hace falta ninguna entrada en plugins.enabled.
Para una sola ejecución:
hermes --provider claude-subscription-directsdk-experimental -m sonnet
La configuración persistente es el par de provider habitual:
model:
provider: claude-subscription-directsdk-experimental
default: sonnet
Dos variables de entorno importan en proyectos reales: CLAUDE_CONFIG_DIR (o la del lado del plugin, CLAUDE_SUBSCRIPTION_DIRECTSDK_CONFIG_DIR) para apuntar a un directorio de autenticación del CLI gestionado aparte, y CLAUDE_SUBSCRIPTION_DIRECTSDK_COMMAND para un binario que esté fuera del PATH. Una cosa más que conviene saber: si el entorno de lanzamiento lleva un ANTHROPIC_API_KEY heredado, un endpoint de Anthropic personalizado o un override de backend en la nube, la ruta de cliente de Hermes rechaza antes de arrancar nada — el error nombra las variables en conflicto sin imprimir sus valores. Quita esos overrides cuando quieras usar OAuth.
Una llamada de Hermes, una petición upstream: el relé de admisión
Esta es la parte que merece entenderse. Claude Code nativo 2.1.263 puede intentar generaciones extra incluso con --max-turns 1 y los reintentos HTTP desactivados. Si se deja suelto, una sola llamada de Hermes podría significar dos peticiones upstream, duplicando en silencio tanto el uso como el coste.
Así que el plugin pone en medio un relé con alcance de petición: reenvía solo la primera petición de Messages y rechaza los intentos posteriores en local. Hermes recibe la primera respuesta upstream completada con su uso real y su motivo de parada nativo, y una recuperación nativa bloqueada no convierte una respuesta completada en una excepción: los streams truncados y los errores HTTP upstream siguen siendo fallos.
Los números de la cualificación son la prueba de que la frontera de admisión se sostiene: una revisión integrada respaldada por la suscripción completó siete llamadas de Hermes con exactamente siete peticiones upstream, doce ejecuciones de herramientas y doce resultados de herramientas duraderos. El contexto creció de 138.498 a 165.697 tokens, las lecturas de caché posteriores promediaron 97,13 % y la contabilidad nativa reportó $0,8793728 en equivalente a precio de lista.
El aislamiento se construye de la misma forma: cada chat.completions.create arranca un proceso nuevo en un directorio temporal privado con las herramientas nativas, los skills y las fuentes de configuración desactivados; MCP anuncia solo el inventario actual de herramientas de Hermes, con callbacks inertes y la ejecución denegada por el dontAsk nativo; el system prompt y los campos de generación viajan por archivos privados para evitar el límite de longitud por argumento del sistema operativo. Los campos de autenticación e identidad nunca se reemplazan.
Facturación: el precio de lista no es una factura
El texto oficial aquí es deliberadamente cuidadoso, y merece la pena memorizarlo tal cual. Cuando todos los modelos reportados llevan costBasis: list y el total es finito y no negativo, Hermes registra esa cantidad como un equivalente estimado al precio de lista de la API: no es la factura de tu suscripción ni un cargo por uso extra, nunca se marca como gratuito o incluido, y nunca se sustituye por precios de alias supuestos. Una contabilidad final ausente o inválida se queda como desconocida, y una petición interrumpida no debe leerse como trabajo gratuito o de cero tokens.
Lo cual se reduce a dos frases: el derecho de suscripción y los ajustes de uso extra pertenecen a tu cuenta y al servicio nativo (desactiva el uso extra en la cuenta si no quieres facturación por exceso); y una estimación nativa al precio de lista no es prueba de un cargo de suscripción.
Dos trampas reales de caché (y cómo se arreglaron)
En cualquier diseño que «envuelva un CLI», el caché de prompt es donde se rompe todo. El plugin documenta dos cualificaciones de contexto largo, y merece la pena leerlas juntas.
Primera: una tarea real de revisión con Sonnet 5 envió 187.049 tokens de entrada en su primera petición, y la siguiente ronda de herramientas leyó solo 6.989 de 190.840 tokens de entrada desde caché (3,66 %), reescribiendo 183.849 tokens en el caché de una hora. Las pruebas de petición idéntica con 179K tokens sí habían pasado: simplemente nunca se ejercitó esa frontera de repetición.
La causa era el recordatorio nativo de presupuesto de tokens inyectado en el contexto: Hermes es dueño de los budgets y reconstruye ese recordatorio a través de la frontera de caché durante la repetición, así que el prefijo dejó de ser estable. El arreglo fue desactivar el recordatorio nativo: sin marcadores de caché extra y sin cambio de TTL. Después de eso: una revisión completada de siete llamadas con diez ejecuciones reales de herramientas hizo crecer el contexto de 187K a 212K, con peticiones posteriores que promediaron 97,99 % de lecturas de caché (85,45 % incluyendo el arranque en frío) y $1,1030034 en contabilidad nativa al precio de lista.
Lee las dos juntas y la conclusión es: el caché se puede hacer funcionar, y merece la pena medir las cargas de trabajo por encima de unos 187K de contexto antes de comprometerte. Ojo también con un detalle: son resultados de Sonnet 5 — Fable 5.1 en la misma cuenta requería créditos de uso de pago y no se ejercitó.
Límites y advertencias
- Esta es una build de revisión, no una afirmación de paridad total ni de estar lista para producción. La versión cualificada es Claude Code nativo 2.1.263; los acknowledgments de repetición y el comportamiento de cuerpo extra son interfaces sensibles a la versión.
- Los nombres de herramientas se mapean a través de
mcp__hermes__, y los nombres originales deben ser identificadores únicos ASCII alfanuméricos, de guion bajo o guion, de 50 caracteres como máximo. - El texto se transmite de forma incremental, pero un lote completo de herramientas solo se publica cuando el turno del asistente se asienta (
message_stopnativo, uso final, salida del proceso). Después Hermes aplica sus propios hooks, aprobaciones, herramientas y persistencia. - La autocompactación nativa está desactivada para que Hermes sea dueño de la compactación; eso no es lo mismo que paridad en todas las transformaciones de historial ni en la repetición firmada entre modelos.
- El enrutado auxiliar y de fallback sigue siendo del host: configúralos explícitamente si también deben usar la suscripción. Este provider no cambia en silencio tus otros providers seleccionados.
La versión corta
Si tienes a la vez una suscripción Claude Pro/Max y Hermes, este plugin convierte «comprar una segunda bolsa de crédito de API» en una elección: tres comandos de instalación, eliges el provider, y el resto es el protocolo nativo del CLI oficial haciendo el trabajo. Solo dos cosas necesitan de verdad tus manos: el ajuste de uso extra de la cuenta y tu propio entorno (limpia overrides heredados como ANTHROPIC_API_KEY para que la ruta de cliente no rechace en el arranque). Para ver qué release trae la mitad del core de la que depende el plugin, lee qué envió realmente v0.21.4; para el trabajo diario con modelos, consulta la referencia del comando hermes model y los hooks de plugins de provider.