Calva Backseat Driver
Un servidor MCP para la extensión Calva de VS Code, que permite a los asistentes de IA interactuar con un REPL de Clojure en vivo.
Documentación
Habilitando Programación Interactiva Nativa con IA en VS Code
Herramientas de Clojure para harnesses de agentes de VS Code. (Como Copilot y Cursor.)
Backseat Driver les da a los harnesses de IA de VS Code acceso a las herramientas de Clojure de Calva de estas maneras:
- Copilot: Configuración cero. (Usando VS Code LM Tools.).
- Cursor: Configuración cero. (Usando la API add-MCP-server de Cursor).
- Otros harnesses de IA: MCP (Requiriendo alguna configuración por proyecto).
Características
- Herramienta: Evaluar Código Acceso al REPL de Clojure para evaluar código a voluntad. Todas las sesiones REPL activas en Calva están disponibles para apuntar (y con shadow-cljs, también builds y runtime).
- Herramienta: Editar Archivos Clojure Creación y edición estructural de archivos, con soporte para lotes. Incluye:
- Crear Archivo Clojure Crea archivos Clojure con balanceo automático de corchetes
- Agregar Código Agrega código a archivos Clojure con balanceo automático de corchetes
- Reemplazar Forma de Nivel Superior Edición estructural, incluyendo formato, balanceo de corchetes y linting
- Insertar Forma de Nivel Superior Edición estructural, incluyendo formato, balanceo de corchetes y linting
- Herramienta: Balanceador de Corchetes Ayuda al modelo a lograr el balance correcto de corchetes (impulsado por Parinfer)
- Herramienta: Cargar Archivo Cargar/evaluar un archivo Clojure completo a través del REPL conectado de Calva
- Herramienta: Búsqueda de información de símbolos, la IA puede buscar símbolos que le interesen y obtendrá cadenas de documentación, información de argumentos, etcétera
- Herramienta: Búsqueda en clojuredocs.org, documentación, ejemplos e información de ver también sobre símbolos similares a los del núcleo de Clojure
- Recurso: Búsqueda de información de símbolos, (un poco experimental) igual que la herramienta
- Recurso: Búsqueda en clojuredocs.org, (un poco experimental) igual que la herramienta
- Recurso: Habilidades, instrucciones especializadas descubribles vía
resources/listy legibles víaresources/read
Ten en cuenta que para las herramientas de edición no hay interfaz de usuario para revisar las ediciones. Sugiero usar las herramientas de control de fuente y la vista de Línea de Tiempo de VS Code para esto.
Instrucciones para Agentes: Aprovechando Backseat Driver
Backseat Driver le da al agente de IA las herramientas para la Programación Interactiva de Clojure y las habilidades para usar las herramientas. Para permitirte mantener el control de cómo tus agentes manejan Clojure y el REPL, la extensión no proporciona mucho en cuanto a conocimiento de Clojure, filosofía, ni metodología de REPL.
Para que el trabajo de agentes con Clojure sea verdaderamente efectivo, necesita saber cómo prefieres que se escriba Clojure y cómo usar el REPL de manera efectiva.
Para evitar comenzar con una pizarra en blanco, donde malos datos de entrenamiento y alucinaciones sobre Clojure arruinen el día, considera instalar el plugin clojure y otros del repositorio Awesome Backseat Driver.
[!NOTE] Awesome Backseat Driver tiene plugins para Copilot y Cursor (hasta ahora). Pero si estás usando algún otro harness, aún puedes copiar las habilidades, agentes personalizados, etc. de allí. (O pídele a tu agente que lo haga por ti.)
Configurando Backseat Driver
Limitación del tamaño de los resultados de evaluación
Para evitar que resultados grandes de evaluación del REPL abrumen la ventana de contexto del agente, Backseat Driver limita automáticamente el tamaño de los resultados devueltos:
calva-backseat-driver.evaluation.maxLength(por defecto25) — número máximo de elementos a mostrar en colecciones. Usa0para deshabilitar la limitación de longitud.calva-backseat-driver.evaluation.maxDepth(por defecto7) — profundidad máxima de anidamiento; las estructuras más profundas se reemplazan con##. Usa0para deshabilitar la limitación de profundidad.
Habilidades
Backseat Driver proporciona dos habilidades a los agentes de IA:
calva-backseat-driver.provideBdSkill(por defectotrue) — proporciona la habilidad de Backseat Driver a los agentescalva-backseat-driver.provideEditSkill(por defectotrue) — proporciona la habilidad de edición estructural de Clojure a los agentes
Configuración del editor
Las herramientas de edición estructural para insertar y reemplazar formas de nivel superior respetan dos configuraciones del editor de Backseat Driver:
calva-backseat-driver.editor.fuzzyLineTargetingPadding(por defecto2) — número de líneas a cada lado de la línea solicitada que la IA puede escanear al hacer coincidir el texto objetivo. Aumenta esto si las formas se mueven durante refactorizaciones más grandes; establece a0para apuntar a líneas exactas. Compensación: valores más altos toleran desplazamientos de líneas pero aumentan el riesgo de coincidir con una forma similar cercana cuando la copia del buffer del agente está desactualizada.calva-backseat-driver.editor.lineContextResponsePadding(por defecto10) — número de líneas a cada lado de la línea solicitada incluidas en el fragmento de solución de problemas devuelto cuando falla el apuntado. Reduce esto para mantener respuestas más cortas, o auméntalo para más contexto circundante. Compensación: valores más grandes le dan al agente más pistas para un reintento, pero pueden costar tokens (o tiempo) extra en comparación con enviar un fragmento enfocado.
MCP
Ver: Configurar Backseat Driver como servidor MCP
Comenzando
Requisitos previos
- VS Code (o tu fork favorito)
- Calva
- Calva Backseat Driver
- GitHub Copilot (o algún asistente compatible con MCP)
Uso
- Enséñale a la IA la disciplina de Clojure y REPL, p. ej., ver: Instrucciones para Agentes
- Conecta Calva a tu proyecto de Clojure/ClojureScript
- Pídele a Copilot que te ayude con cosas. Sabrá lo que quieres decir cuando digas: "Por favor usa el REPL para investigar ...".
- Sabrá cómo encontrar la sesión REPL correcta y cómo usarla.
- Configura Calva para usar la terminal para la salida del REPL y monitorea la terminal de salida para ver qué intenta en el REPL.
Funciona muy bien con subagentes, también subagentes paralelos. Prueba algo como:
- "Por favor asigna tres subagentes paralelos para usar el REPL e investigar cómo implementar ..."
- La salida del REPL te mostrará a ti y a los agentes quién está intentando qué en el REPL.
- Puedes participar en la fiesta del REPL.
En Progreso
Como todos nosotros, estoy aprendiendo a usar IA y resolviendo una cosa a la vez. Todo mientras todo el espacio se mueve más rápido de lo que puedo aprender. Backseat Driver es mi mejor esfuerzo para proporcionar a los desarrolladores de Clojure herramientas de IA poderosas que se pueden usar con configuración cero.
El diseño básico de Backseat Driver ha demostrado funcionar y ser útil con el tiempo. Pero también lo he estado mejorando incrementalmente a medida que aprendo cosas nuevas. Muchas de estas cosas las he aprendido de los usuarios.
Por favor, por favor, házmelo saber cómo te va con Backseat Driver y qué características te gustaría ver. 🙏
Contribuciones
¡Las contribuciones son bienvenidas! Issues, PRs, lo que sea. Antes de un PR, agradezco un issue que indique el problema que se está resolviendo. También puedes querer comunicarte para discutir el issue antes de comenzar a trabajar en él.
Licencia 🍻🗽
Por favor patrocina mi trabajo de código abierto ♥️
Eres bienvenido a alentar mi trabajo, usando este enlace: