AST2LLM for Go

Una herramienta basada en AST que mejora el contexto de los LLM al inyectar automáticamente estructuras de código Go relevantes en los prompts.

Documentación

AST2LLM para Go

Go License Coverage Status Build Status

Herramienta local de mejora de contexto basada en AST para LLM

Inyecta automáticamente la estructura de código relevante en tus prompts mediante un análisis preciso del AST de Go.

Demo

Nuestro servidor MCP proporciona la herramienta parse-go que:

  1. Analiza la estructura de tu proyecto Go
  2. Identifica declaraciones de tipos externos
  3. Empaqueta el contexto para prompts de LLM
  4. Ofrece una resolución de contexto de 3 a 5 veces más rápida que los enfoques basados en grafos

Por ejemplo, la demostración anterior muestra al modelo llamando a la herramienta para obtener la información faltante sobre los campos de la estructura MyDTO. En respuesta, el modelo recibió toda la información necesaria de la respuesta:

Used Imported Structs (from this project, if available):
  Struct: testme/dto.MyDTO
    Fields:
      - Foo string
      - Bar int

Requisitos

  • Go 1.22 o superior (si se compila desde el código fuente)
  • Cliente MCP compatible (Cursor, Claude, VS Code, etc.)

Instalación

Binarios

Para instalar ast2llm-go en tu sistema, ejecuta el siguiente comando en tu terminal:

curl -LsSf https://raw.githubusercontent.com/ast2llm/ast2llm-go/main/install.sh | sh

Este script detectará automáticamente tu sistema operativo y arquitectura, descargará el binario apropiado e intentará agregarlo a tu PATH. También puedes especificar un directorio de instalación:

curl -LsSf https://raw.githubusercontent.com/ast2llm/ast2llm-go/main/install.sh | sh -s -- --install-dir /usr/local/bin

Auto-actualización

Para actualizar ast2llm-go a la última versión, simplemente vuelve a ejecutar el comando de instalación:

curl -LsSf https://raw.githubusercontent.com/ast2llm/ast2llm-go/main/install.sh | sh

Desinstalación

Para eliminar ast2llm-go de tu sistema, ejecuta el script de desinstalación:

curl -LsSf https://raw.githubusercontent.com/ast2llm/ast2llm-go/main/uninstall.sh | sh

Este script eliminará el binario, limpiará las modificaciones del PATH y borrará los archivos de configuración relacionados. Es posible que necesites reiniciar tu shell después de la desinstalación.

Configuración en Clientes

Después de instalar ast2llm-go, debes reiniciar el IDE.

Cursor

Agrega a tu ~/.cursor/mcp.json:

{
  "mcpServers": {
    "go-ast": {
      "command": "ast2llm-go",
      "args": []
    }
  }  
}

Claude Desktop

Agrega a claude_desktop_config.json:

{
  "mcpServers": {
    "go-ast": {
      "command": "ast2llm-go"
    }
  }
}

Visual Studio Code

Agrega a la configuración de MCP de VS Code:

{
  "servers": {
    "go-ast": {
      "type": "stdio",
      "command": "ast2llm-go"
    }
  }
}

Nota sobre el Estado Actual

Este servidor MCP está en desarrollo activo y puede tener problemas de estabilidad o funcionalidad incompleta. Estamos trabajando arduamente para mejorarlo, pero es posible que encuentres:

  • Errores ocasionales de análisis
  • Soporte limitado de tipos en la versión actual
  • Cuellos de botella de rendimiento con bases de código grandes

¿Encontraste un problema? Abre un Issue en GitHub para ayudarnos a mejorar. ¡Agradecemos todos los informes de errores y solicitudes de funciones!

Hoja de Ruta

Soporte de Lenguaje

  • Soporte para tipos struct
  • Soporte para tipos interface
  • Soporte para tipos de función
  • Soporte para variables globales

Contexto Multi-archivo

  • Analizar múltiples archivos abiertos simultáneamente
  • Resolución de dependencias entre archivos
  • Optimización de importaciones consciente del contexto

Representación del AST

  • Visualización mejorada de la jerarquía de tipos
  • Investigar la representación óptima del AST para LLMs. Proporcionar diferentes formatos de salida adaptados a varios escenarios como en repomix:
    • XML: Para compatibilidad con soluciones tradicionales similares a Repomix.
    • JSON: Un formato moderno adecuado para la integración con herramientas y entornos contemporáneos.
    • Markdown: Un formato fácilmente legible, ideal para visualización rápida y documentación de cambios.

Rendimiento

  • Análisis incremental
  • Caché del AST
  • Análisis en paralelo

Contribuciones

¡Agradecemos las contribuciones! Así es como puedes ayudar:

  1. Reportar Errores

    • Abre un issue con una descripción clara
    • Incluye pasos para reproducir
    • Agrega registros/capturas de pantalla relevantes
  2. Sugerir Funciones

    • Abre un issue con la solicitud de función
    • Explica el caso de uso y los beneficios
    • Incluye ejemplos relevantes
  3. Enviar Pull Requests

    • Haz un fork del repositorio
    • Crea una rama de características
    • Agrega pruebas para la nueva funcionalidad
    • Asegúrate de que todas las pruebas pasen
    • Envía un PR con una descripción clara