Era un martes por la tarde y estaba migrando un monolito de Express a Fastify — uno de esos proyectos que nadie quiere tocar porque el código original tiene siete años, cero tests, y comentarios como // aquí no tocar. Llevaba dos horas escribiendo middleware de autenticación a mano cuando un compañero me mandó un mensaje: “¿Ya probaste Cursor para esto? Me está completando funciones enteras con el contexto del proyecto.”
Eso me hizo pensar. Llevaba meses usando GitHub Copilot casi por inercia, sin cuestionarme si había algo mejor. Así que tomé una decisión un poco caótica: usar los tres asistentes principales en rotación durante seis semanas en ese mismo proyecto de migración y en un side project de Next.js 15 que tenía pendiente. Equipo pequeño — somos cuatro developers — con una mezcla de TypeScript, Python y algo de Go en los servicios más nuevos.
Lo que voy a compartir aquí no es un benchmark sintético. Es lo que viví, con los errores incluidos.
El estado actual de las tres herramientas (porque el panorama cambió bastante)
Antes de entrar en detalles, vale aclarar en qué versiones y planes trabajé. Usé GitHub Copilot Pro (el plan de $19/mes con acceso a Copilot Workspace y el modo agente), Cursor Pro en su versión de febrero 2026 con acceso a Claude 3.7 Sonnet como modelo por defecto, y Codeium — técnicamente su extensión para VS Code, no Windsurf, el IDE propio que lanzaron el año pasado. Para los que no lo sepan: Windsurf es básicamente un fork de VS Code con Codeium integrado de forma más profunda. Probé Windsurf un par de días también, pero mi análisis principal es sobre la extensión.
Los tres tienen modo agente ahora. Eso es lo más significativo que cambió respecto a 2024. Ya no estamos hablando solo de autocompletado línea por línea.
GitHub Copilot: El más confiable, pero con un techo visible
Honestamente, Copilot me decepciona un poco cuando lo comparo con lo que promete en su marketing. No porque sea malo — para nada — sino porque en uso diario hay un patrón que noté: es excepcional para código que ya existe en mil repositorios de GitHub, y bastante mediocre cuando el contexto es específico de tu proyecto.
Ejemplo concreto. En la migración de Express a Fastify, le pedí al modo agente que reescribiera un plugin de autenticación con JWT que tenía bastante lógica de negocio interna. El resultado fue… técnicamente correcto pero genérico. Completamente ignoró las convenciones que teníamos en el resto del codebase — naming de errores personalizados, el patrón de logging que usamos, incluso el formato de las respuestas de error.
// Lo que Copilot generó (modo agente, febrero 2026)
const authPlugin: FastifyPluginAsync = async (fastify) => {
fastify.addHook('onRequest', async (request, reply) => {
const token = request.headers.authorization?.split(' ')[1];
if (!token) {
reply.code(401).send({ error: 'Unauthorized' });
return;
}
// ... verificación genérica de JWT
});
};
// Lo que necesitábamos (con nuestras convenciones)
const authPlugin: FastifyPluginAsync = async (fastify) => {
fastify.addHook('onRequest', async (request, reply) => {
const token = extractBearerToken(request.headers.authorization);
if (!token) {
throw new AppError('AUTH_TOKEN_MISSING', 401); // nuestro sistema de errores
}
fastify.log.debug({ requestId: request.id }, 'auth.check'); // nuestro formato de log
// ...
});
};
La diferencia parece pequeña, pero multiplicada por veinte archivos en una migración, se convierte en deuda técnica instantánea.
Donde Copilot sí brilla es en el autocompletado de línea a línea, especialmente en boilerplate. Si estás escribiendo tests con Jest o Vitest, configurando schemas de Zod, o armando queries de Prisma, la velocidad que te da es real y medible. También noté que el análisis de PRs en Copilot Workspace mejoró bastante desde la última vez que lo usé en serio — ahora detecta regresiones potenciales con bastante precisión.
Takeaway práctico: si tu equipo ya vive en el ecosistema de GitHub y quieres una herramienta que funcione sin configuración, Copilot es una opción sólida. Pero si tienes convenciones propias complejas, vas a pasar tiempo corrigiendo sus sugerencias.
Cursor: El que realmente cambió mi flujo de trabajo
Voy a ser directo: Cursor me convenció más de lo que esperaba, y eso me molesta un poco porque no quería cambiar de herramienta a mitad del año.
La diferencia clave es cómo maneja el contexto. Cursor usa lo que llaman “codebase indexing” — indexa tu proyecto completo y puede responder preguntas sobre él de forma coherente. Cuando le pedí que reescribiera el mismo plugin de autenticación, el resultado tenía nuestras convenciones. No perfectamente, pero lo suficiente como para que el diff fuera pequeño en lugar de un reemplazo completo.
El modo Composer (su versión del agente) es donde más tiempo ahorré. Aquí un ejemplo real: tenía que añadir paginación cursor-based a cinco endpoints de una API. En lugar de hacerlo uno por uno, le di a Composer el contexto del schema de base de datos, un endpoint de ejemplo, y le pedí que aplicara el mismo patrón a los demás. Tardó unos dos minutos. Tuve que ajustar dos cosas pequeñas. Eso normalmente me habría costado una hora.
// Le di este endpoint como ejemplo a Composer:
app.get('/users', async (req, reply) => {
const { cursor, limit = 20 } = req.query as PaginationParams;
const users = await db.user.findMany({
take: limit + 1,
...(cursor && {
skip: 1,
cursor: { id: cursor },
}),
orderBy: { createdAt: 'desc' },
});
const hasMore = users.length > limit;
const items = hasMore ? users.slice(0, -1) : users;
return {
items,
nextCursor: hasMore ? items[items.length - 1].id : null,
};
});
// Composer aplicó el mismo patrón a /posts, /comments, /orders y /products
// con los campos correctos de cada schema. Sin que yo le dijera cuáles eran.
Una cosa que no me esperaba: Cursor es bueno eligiendo cuándo no sugerir nada. Hay momentos donde Copilot te bombardea con sugerencias que interrumpen más de lo que ayudan. Cursor tiene un umbral de confianza más alto, y eso se nota en el flujo.
El precio es similar al de Copilot ($20/mes en Pro), pero el valor que saqué fue notablemente mayor para mi caso de uso específico — proyectos con bastante lógica de negocio propia y convenciones establecidas.
Codeium: Sorprendente en precio, pero tuve un susto importante
Codeium tiene algo que los otros no tienen: un tier gratuito que no es una demo recortada. Para developers freelance o estudiantes, eso importa mucho. Y la calidad del autocompletado gratuito es genuinamente buena — diría que comparable a Copilot en tareas cotidianas.
Probé también su tier Teams (que cuesta bastante menos que los otros dos por usuario) y el rendimiento subió bastante. La función Supercomplete — donde analiza tu intención antes de completar — funciona bien en Python especialmente. En mis scripts de procesamiento de datos me sorprendió un par de veces.
Ahora, el error que casi me cuesta un sprint.
Estaba usando el modo agente de Codeium (llamado Cascade en Windsurf) para refactorizar un módulo de cálculos de precios. Le pedí que simplificara la lógica y añadiera tests. Lo hizo. Hizo el PR automáticamente. Yo revisé el código superficialmente, parecía bien, lo mergé.
Tres días después, encontramos un bug en producción: los descuentos por volumen no se estaban aplicando correctamente en pedidos con más de cincuenta ítems. Cascade había simplificado una condición que parecía redundante pero que no lo era — era un edge case documentado en un comentario que estaba en otro archivo que no indexó.
No fue un error catastrófico (lo detectamos rápido y el impacto fue pequeño), pero me enseñó algo: el agente de Codeium, en esa versión, no siempre captura dependencias entre archivos de la misma forma que Cursor. No sé si esto escala mejor con proyectos más pequeños. Tu kilometraje puede variar.
La lección que saqué: con cualquier agente, nunca hagas merge de un cambio en lógica de negocio sin correr los tests de integración primero. Suena obvio. Lo sé. Pero cuando algo parece funcionar y estás apurado, bajas la guardia.
El plan Teams de Codeium vale la pena considerar si el presupuesto es una restricción real. Si tienes el dinero para Cursor Pro, probablemente te convenga más ese para trabajo en proyectos medianos o grandes con convenciones propias.
Mi recomendación, sin vueltas
Aquí está lo que yo haría si tuviera que elegir hoy para mi situación concreta:
Si trabajo solo o en un equipo pequeño con proyectos complejos: Cursor Pro. La indexación del proyecto y el modo Composer me ahorran más tiempo del que cuestan los $20/mes, y lo he comprobado con horas reales, no con estimaciones.
Si mi equipo ya vive en GitHub, usamos Actions extensivamente, y queremos integración sin fricción: Copilot Pro. El ecosistema importa, y Copilot Workspace dentro de GitHub sigue siendo la mejor experiencia para revisar PRs y entender el impacto de cambios en el contexto del repositorio.
Si el presupuesto es cero o muy limitado: Codeium gratuito es honestamente la mejor opción en ese rango. No esperes milagros con el agente, pero el autocompletado te va a dar valor real desde el día uno.
Una última cosa que no encaja en ninguna sección pero quiero decir: los tres mejoraron significativamente en los últimos doce meses, y el ritmo de mejora no parece estar desacelerando. Lo que evalúo hoy puede lucir diferente en seis meses. Así que más que la herramienta específica, diría que lo más valioso es desarrollar el hábito de revisar críticamente lo que el agente genera — no solo si compila, sino si tiene sentido para tu contexto.
Eso no cambia con ninguna versión.