AST2LLM for Go

Una herramienta local de mejora de contexto impulsada por AST para LLMs que analiza la estructura de proyectos Go para una resolución de contexto más rápida.

Documentación

AST2LLM for Go

Go License Coverage Status Build Status

Herramienta local de mejora de contexto impulsada por AST para LLM

Inyecta automáticamente la estructura de código relevante en tus indicaciones utilizando 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 contexto para indicaciones de LLM
  4. Ofrece una resolución de contexto 3-5 veces más rápida que los enfoques basados en grafos

Por ejemplo, la demo 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 la instalación ast2llm-go, debes reiniciar el IDE.

Cursor

Añade a tu ~/.cursor/mcp.json:

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

Claude Desktop

Añade a claude_desktop_config.json:

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

Visual Studio Code

Añade a tu configuración 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 duro para mejorarlo, pero es posible que encuentres:

  • Errores de análisis ocasionales
  • 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 de estructura
  • Soporte para tipos de interfaz
  • Soporte para tipos de función
  • Soporte para variables globales

Contexto de múltiples archivos

  • 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é de 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
    • Añade 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 cualquier ejemplo relevante
  3. Enviar Pull Requests

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