Este sistema proporciona explicaciones contextuales de código usando inteligencia artificial a través de OpenRouter.
- Hover LSP Tradicional: Soporte completo para múltiples lenguajes (C++, Python, Go, Java, HTML, CSS, JSON)
- Hover con IA: Explicaciones inteligentes generadas por IA para cualquier símbolo o código
- Internacionalización: Todas las explicaciones y mensajes en español
- Integración Fluida: Funciona junto con el sistema de hover existente
- Pasa el mouse sobre cualquier símbolo en el código
- Aparecerá automáticamente un tooltip con información del LSP correspondiente
- Coloca el cursor sobre el símbolo que quieres explicar
- Presiona
Ctrl + Alt + H(oCmd + Alt + Hen Mac) - Aparecerá un tooltip con explicación generada por IA
Crea un archivo .env.local con:
OPENROUTER_API_KEY=tu_api_key_aqui
OPENROUTER_MODEL=anthropic/claude-3.5-sonnetanthropic/claude-3.5-sonnet(recomendado)openai/gpt-4meta-llama/llama-3.1-70b-instruct- Cualquier modelo disponible en OpenRouter
-
AIHoverProvider(components/ai-hover-provider.tsx)- Context provider que gestiona el estado global del hover IA
- Proporciona hooks para activar/desactivar hovers
-
AIHoverTooltip(components/ai-hover-tooltip.tsx)- Componente UI que muestra las explicaciones de IA
- Soporta estados de carga, error y contenido markdown
-
useAIService(hooks/use-ai-service.ts)- Hook personalizado para gestionar llamadas a la API de IA
- Maneja estado de carga, errores y cache
POST /api/ai/hover: Genera explicaciones de código usando IA- Body:
{ code, language, position, symbol?, context? } - Respuesta:
{ explanation: string }
- Body:
El sistema se integra automáticamente en EditorContent mediante:
- AIHoverProvider envuelve el editor principal
- Atajo de teclado
Ctrl+Alt+Hactiva el hover IA - Posicionamiento inteligente del tooltip cerca del cursor
- Extracción automática de símbolos y contexto
- C++: Con clangd LSP
- Python: Con Pyright
- Go: Con gopls
- Java: Con vscode language servers
- HTML/CSS/JSON: Con servidores de lenguaje integrados
Funciona con cualquier lenguaje de programación soportado por el editor.
def calcular_factorial(n):
# Coloca cursor aquí y presiona Ctrl+Alt+H
if n <= 1:
return 1
return n * calcular_factorial(n - 1)Explicación IA: "Esta función calcula el factorial de un número usando recursión. El factorial de n (n!) es el producto de todos los números enteros positivos desde 1 hasta n."
class MiClase {
public:
// Coloca cursor aquí y presiona Ctrl+Alt+H
void metodo() {
// implementación
}
};Explicación IA: "Esta es una definición de clase en C++. Las clases son tipos de datos definidos por el usuario que encapsulan datos y funciones relacionadas."
- Crear endpoint en
app/api/[language]/hover/route.ts - Implementar lógica de hover específica del lenguaje
- Agregar traducciones al español
- Actualizar documentación
Modificar el prompt en app/api/ai/hover/route.ts para cambiar el estilo de las explicaciones.
- Verificar que
OPENROUTER_API_KEYesté configurada - Comprobar conexión a internet
- Revisar logs en la consola del navegador
- Verificar que los servidores LSP estén instalados
- Comprobar configuración en
lib/[language]/service.ts
- Las explicaciones IA se cachean automáticamente
- Implementar debounce para evitar llamadas excesivas
Para contribuir al sistema de hover:
- Seguir la estructura existente de endpoints LSP
- Mantener consistencia en las traducciones al español
- Agregar tests para nueva funcionalidad
- Actualizar esta documentación /Users/davidmoreno/Desktop/code-highlight/AI_HOVER_README.md