Home

Awesome

Vim Intelligence Bridge

Descripción

Vim Intelligence Bridge es un plugin para Vim que integra capacidades de inteligencia artificial en tu flujo de trabajo de desarrollo (extendible a cualquier otro ámbito). Diseñado para trabajar con Ollama localmente (prioriza la privacidad), también ofrece soporte para la API de Groq, mejorando la productividad y la experiencia de codificación.

Características

Requisitos

Instalación

Usando un gestor de plugins (recomendado)

Si usas vim-plug, agrega esto a tu archivo de configuración de Vim (.vimrc):

Plug 'pepo-ec/vim-intelligence-bridge'

Luego, ejecuta :PlugInstall en Vim.

Instalación manual

Clona el repositorio en tu directorio de plugins de Vim:

git clone https://github.com/pepo-ec/vim-intelligence-bridge.git ~/.vim/pack/plugins/start/vim-intelligence-bridge

Configuración

  1. Crea un archivo .env en el directorio ~/.vim/plugged/vim-intelligence-bridge/ para las claves API (si usas Groq):

    API_GROQ=tu_api_key_aqui
    
  2. Crea un archivo config.env en el mismo directorio para las configuraciones no secretas:

    OLLAMA_MODEL=llama3.1
    GROQ_MODEL=llama-3.1-70b-versatile
    
  3. Ajusta los valores en config.env según tus preferencias.

Uso

Ejemplo de uso:

  1. Selecciona un bloque de código en modo visual.

  2. Presiona <leader>ib o ejecuta :IntelligenceBridge.

  3. Ingresa tu consulta cuando se te solicite. 3.1. ollama/code/laravel/devel Este comando enviará el contexto hacia Ollama (Es más lento pero lo elijo para mantener mi privacidad) 3.2. groq/code/laravel/devel Este comando enviará el contexto a Groq que hace un excelente trabajo de manera gratuita y extremadamente rápido

  4. El plugin procesará tu consulta y el código seleccionado usando Ollama (o Groq si está configurado), y mostrará los resultados.

    4.1 Definición del contexto. Esta es la manera que se delimita el alcance del LLM

    code/laravel/devel Cuando se ha usado una de las variantes devel los requerimientos son bloques que están delimitados por las palabras clave inicio_requerimiento y fin_requerimiento, por ejemplo:

    El código con el requrimiento podría ser algo similar a lo siguiente:

    public function update(Request $request, $id)
    {
        //inicio_requerimiento
        // En este segmento quiero que agregues el código más común que en Laravel sirva para actualizar un modelo User
        //fin_requerimiento
    }
    

    Luego de invocar al plugin (uso), la respuesta esperada sería algo similar a lo siguiente:

    public function update(Request $request, $id)
    {
        $user = User::find($id);
        if ($request->input('password')) {
            $user->password = bcrypt($request->input('password'));
        }
        $user->name = $request->input('name');
        $user->email = $request->input('email');
        $user->save();
        return redirect()->route('users.index')->with('success', 'Usuario actualizado correctamente');
    }
    

Personalización

Puedes personalizar el comportamiento del plugin editando tu config.env. Ejemplo:

OLLAMA_MODEL=codellama
GROQ_MODEL=llama-3.1-70b-versatile

APIs y Plataformas Utilizadas

Contribuir

Las contribuciones son bienvenidas! Por favor, lee CONTRIBUTING.md para detalles sobre nuestro código de conducta y el proceso para enviarnos pull requests.

Licencia

Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE.md para más detalles.

Soporte

Si encuentras algún problema o tienes alguna sugerencia, por favor abre un issue en el rastreador de problemas de GitHub.

Agradecimientos