Aprovechando la Señal de Agencia Oculta (Â) de los LLM para Mejorar la Llamada de Herramientas

Mientras depuraba fallos del agente ReAct con Qwen3, un desarrollador descubrió que los estados ocultos justo antes de las llamadas a herramientas son linealmente separables de los estados sin herramientas con AUC > 0.94. Esta dirección en el espacio latente, llamada  (por "agencia"), existe en todos los tamaños de modelo desde 1.7B hasta 8B y predice llamadas a herramientas usando solo una sonda lineal.
Cómo usar la señal de agencia
Durante la inferencia, proyecta cada estado oculto en Â. Si la proyección supera un umbral θ, el modelo quiere llamar a una herramienta incluso si no lo expresa textualmente. Luego puedes forzar una llamada a herramienta.
# En tiempo de inferencia (pseudocódigo)
hidden_state = get_middle_layer_state(model, input_text)
proj = np.dot(hidden_state, Â)
if proj > threshold:
# El modelo quiere actuar → forzar llamada a herramienta
tool = choose_tool() # puede aprenderse o ser heurístico
result = execute_tool(tool)
else:
# Generación normal
output = model.generate(input_text)
Resultados de rendimiento
Probado en 40 tareas diversas (búsqueda, código, archivos, comunicación, datos) con modelos Qwen3:
- Qwen3-1.7B: 26.7% → 85% (+58% de mejora)
- Qwen3-8B: 52.5% → 76.3% (+23% de mejora)
El modo de fallo "sin herramientas" bajó del 43% al 2.6%. Los modelos más pequeños se benefician más porque su decodificación textual es más débil, pero la señal geométrica es igualmente fuerte.
Cómo extraer Â
Tres métodos:
- Opción 1: Desde tus propios rastros - Calcula la diferencia media normalizada entre estados ocultos con herramienta y sin herramienta
- Opción 2: Mediante prompts contrastivos - Ejecuta 15 pares de prompts (uno que requiere una herramienta, otro pasivo) a través de tu modelo y toma la diferencia media en la capa media
- Opción 3: Usa direcciones precalculadas - Usa las direcciones  extraídas para modelos Qwen3 compartidas en el repositorio
Implementación empaquetada
El descubrimiento se ha empaquetado en una biblioteca para fácil reutilización:
bash
pip install a-hat-optimizer
python
from a_hat_optimizer import AHat
# Extracción automática desde cualquier modelo HF en 1 línea
ahat = AHat.from_model("Qwen/Qwen3-8B")
# O cargar preextraída
ahat = AHat.from_file("my_ahat_dir/")
# Usar en tu agente
should_call, confidence = ahat.predict(hidden_state)
if should_call:
print(f"Forzar llamada a herramienta (confianza: {confidence:.2f})")
La biblioteca maneja extracción automática mediante prompts contrastivos, 4 estrategias de calibración (punto medio, F1, Youden, percentil), predicción por lotes, y guardar/cargar con metadatos incluyendo AUC e información de capas.
📖 Read the full source: r/LocalLLaMA
👀 Ver también

Arquitectura de Memoria de Vektori: Principios del Sistema Filtrado de Claude
Vektori implementa un gráfico jerárquico de oraciones de tres capas para la memoria de IA, inspirado en principios filtrados de la arquitectura de Claude. El sistema utiliza filtros de calidad estrictos, recuperación escéptica con una puntuación mínima de 0.3 y mantiene un historial de correcciones entre sesiones.

GLM-5.1 vs MiniMax M2.7: Comparación de rendimiento para agentes de codificación con IA
GLM-5.1 alcanza puntuaciones de 77.8 en SWE-bench-Verified y 56.2 en Terminal Bench 2.0, las más altas entre los modelos de código abierto, mientras que MiniMax M2.7 ofrece respuestas rápidas con bajo TTFT y alto rendimiento, ideal para bots de CI y ediciones por lotes.

Memento v1.0: Servidor MCP de Memoria Persistente para Claude Code con 17 Herramientas
Memento v1.0 es un servidor MCP de memoria persistente para Claude Code que incluye 17 herramientas, búsqueda híbrida, detección de contradicciones y un gráfico visual de memoria. Se ejecuta localmente sin dependencias en la nube y es compatible con múltiples IDEs, incluidos Claude Code, Cursor, Windsurf y OpenCode.

Mneme: Un gancho de PreToolUse que bloquea las ediciones de Claude Code que violan las decisiones de arquitectura
Mneme es un hook PreToolUse para Claude Code que verifica cada Editar/Escribir/Edición Múltiple contra un archivo de decisiones local antes de escribir en disco, bloqueando violaciones sin intervención manual.