Analytics
Logo
Rapport de recherche sur le produit Cursor et le cadre d’expérimentationAnalytics
Logo
Rapport de recherche sur le produit Cursor et le cadre d’expérimentation

Rapport de recherche sur le produit Cursor et le cadre d’expérimentation

Conçu pour rendre votre efficacité exceptionnelle, Cursor est la meilleure façon de programmer avec l’IA. Explorez la démo intégrée, l’expérience PyTorch MNIST, ainsi que de nouveaux workflows pour les agents et l’innovation en équipe.

Démonstration multi‑interfaces de l’IDE Cursor avec arrière-plan artistique

1. Vue d’ensemble du produit et description de l’environnement de démo interactif

Cursor est un écosystème d’IDE conçu pour une collaboration efficace et une programmation assistée par IA. Il intègre un CLI (ligne de commande), la complétion intelligente, des agents (Agent) et prend en charge une connexion transparente avec les plateformes de collaboration d’équipe (comme Slack, GitHub).

L’expérience d’interaction du produit comprend plusieurs démonstrations interactives des interfaces de Cursor : l’IDE montrant le codage assisté par IA et l’assistance en ligne de commande via le CLI. Ces interfaces sont superposées à un fond de papier peint de paysage de style peinture à l’huile, créant un arrière-plan artistique unique.

2. Expérience PyTorch MNIST et cadre expérimental extensible

Résumé du contenu du répertoire ML-RESEARCH-NOTEBOOK :

  • notebooks/
    • train_model.py
    • evaluation.py
  • experiments/
    • config.yaml
    • run_experiment.py
  • requirements.txt

Extrait de code clé pour l’entraînement et la configuration :

import torch
import torch.nn as nn
from torch.utils.data import DataLoader
from torch.utils.data import DataLoader, random_split
from torchvision import datasets
from torchvision import datasets, transforms
from tqdm import tqdm
import yaml
from pathlib import Path
import json

def get_dataloaders(batch_size=64):
  transform = transforms.Compose([transforms.ToTensor()])
  train = datasets.MNIST(root="data", train=True, download=True, transform=transform)
  test = datasets.MNIST(root="data", train=False, download=True, transform=transform)
  return DataLoader(train, batch_size=batch_size, shuffle=True), DataLoader(test, batch_size=batch_size)
def load_config(config_path="experiments/config.yaml"):
  with open(config_path) as f:
    return yaml.safe_load(f)

def get_dataloaders(config):
  transform_list = [transforms.ToTensor()]
  if config['data'].get('normalize', True):
    transform_list.append(transforms.Normalize((0.1307,), (0.3081,)))
  
  if config['data']['augmentation'].get('random_rotation'):
    transform_list.append(transforms.RandomRotation(
      config['data']['augmentation']['random_rotation']
    ))
  
  transform = transforms.Compose(transform_list)
  
  full_train = datasets.MNIST(root="data", train=True, download=True, transform=transform)
  train_size = int(0.8 * len(full_train))
  val_size = len(full_train) - train_size
  train_dataset, val_dataset = random_split(full_train, [train_size, val_size])
  
  test_dataset = datasets.MNIST(root="data", train=False, download=True, transform=transform)
  
  batch_size = config['training']['batch_size']
  train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)
  val_loader = DataLoader(val_dataset, batch_size=batch_size)
  test_loader = DataLoader(test_dataset, batch_size=batch_size)
  
  return train_loader, val_loader, test_loader

class MLP(nn.Module):
  def __init__(self, hidden=128):
  def __init__(self, config):
    super().__init__()
    hidden = config['model']['hidden_size']
    dropout = config['model']['dropout']
    
    self.net = nn.Sequential(
      nn.Flatten(),
      nn.Linear(28*28, hidden),
      nn.ReLU(),
      nn.Dropout(dropout),
      nn.Linear(hidden, hidden // 2),
      nn.ReLU(),
      nn.Dropout(dropout),
      nn.Linear(hidden, 10),
      nn.Linear(hidden // 2, 10),
    )

  def forward(self, x):
    return self.net(x)

def train_model(epochs=1, lr=1e-3, device=None):
  device = device or ("cuda" if torch.cuda.is_available() else "cpu")
  model = MLP().to(device)
  opt = torch.optim.Adam(model.parameters(), lr=lr)
def train_model(config_path="experiments/config.yaml"):
  config = load_config(config_path)
  device = "cuda" if torch.cuda.is_available() and config['training']['use_amp'] else "cpu"
  
  torch.manual_seed(42)
  if device == "cuda":
    torch.cuda.manual_seed_all(42)
  
  model = MLP(config).to(device)
  opt = torch.optim.Adam(
    model.parameters(), 
    lr=config['training']['learning_rate'],
    weight_decay=config['training']['weight_decay']
  )
  loss_fn = nn.CrossEntropyLoss()
  train_loader, _ = get_dataloaders()
+  # Seed for reproducibility
+  torch.manual_seed(42)
+  if device == "cuda":
+    torch.cuda.manual_seed_all(42)
+  # AMP + Scheduler
+  scaler = torch.cuda.amp.GradScaler(enabled=(device=="cuda"))
+  scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(opt, T_max=epochs)
  model.train()
  for epoch in range(epochs):
    total, correct = 0, 0
    for x, y in tqdm(train_loader, desc=f"epoch {epoch+1}"):
  
  train_loader, val_loader, test_loader = get_dataloaders(config)
  
  use_amp = config['training']['use_amp'] and device == "cuda"
  scaler = torch.cuda.amp.GradScaler(enabled=use_amp)
  
  scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(
    opt, T_max=config['training']['epochs']
  )
  
  history = {'train_loss': [], 'train_acc': [], 'val_loss': [], 'val_acc': []}
  
  for epoch in range(config['training']['epochs']):
    model.train()
    train_loss, train_correct, train_total = 0, 0, 0
    
    for x, y in tqdm(train_loader, desc=f"Epoch {epoch+1}/{config['training']['epochs']}"):
      x, y = x.to(device), y.to(device)
      opt.zero_grad(set_to_none=True)
      logits = model(x)
      loss = loss_fn(logits, y)
      loss.backward()
      opt.step()
      with torch.cuda.amp.autocast(enabled=use_amp):
        logits = model(x)
        loss = loss_fn(logits, y)
      
      scaler.scale(loss).backward()
      
      if config['training']['gradient_clip'] > 0:
        scaler.unscale_(opt)
+      torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
        torch.nn.utils.clip_grad_norm_(model.parameters(), config['training']['gradient_clip'])
      
      scaler.step(opt)
      scaler.update()
+      preds = logits.argmax(dim=1)
+      total += y.size(0)
+      correct += (preds == y).sum().item()
+    acc = correct / max(1, total)
      
      train_loss += loss.item() * x.size(0)
      train_correct += (logits.argmax(1) == y).sum().item()
      train_total += x.size(0)
    
    model.eval()
    val_loss, val_correct, val_total = 0, 0, 0
    
    with torch.no_grad():
      for x, y in val_loader:
        x, y = x.to(device), y.to(device)
        logits = model(x)
        loss = loss_fn(logits, y)
        
        val_loss += loss.item() * x.size(0)
        val_correct += (logits.argmax(1) == y).sum().item()
        val_total += x.size(0)
    
    train_loss = train_loss / train_total
    train_acc = train_correct / train_total
    val_loss = val_loss / val_total
    val_acc = val_correct / val_total
    
    history['train_loss'].append(train_loss)
    history['train_acc'].append(train_acc)
    history['val_loss'].append(val_loss)
    history['val_acc'].append(val_acc)
    
    print(f"Epoch {epoch+1}: train_loss={train_loss:.4f}, train_acc={train_acc:.3f}, "
          f"val_loss={val_loss:.4f}, val_acc={val_acc:.3f}")
    
    scheduler.step()
+    print(f"epoch {epoch+1}: acc={acc:.3f}")
  return model`,
    
    if (epoch + 1) % 5 == 0:
      checkpoint = {
        'epoch': epoch,
        'model_state_dict': model.state_dict(),
        'optimizer_state_dict': opt.state_dict(),
        'scheduler_state_dict': scheduler.state_dict(),
        'history': history,
        'config': config
      }
      Path('checkpoints').mkdir(exist_ok=True)
      torch.save(checkpoint, f'checkpoints/model_epoch_{epoch+1}.pt')
  
  Path('results').mkdir(exist_ok=True)
  with open('results/training_history.json', 'w') as f:
    json.dump(history, f, indent=2)
  
  return model, history, test_loader

Résumé des fonctionnalités expérimentales et des améliorations

  • Prise en charge de l’entraînement en précision mixte (AMP), séparation entraînement/validation, stratégie de planification CosineAnnealingLR, découpage de gradient
  • Expériences pilotées par configuration (YAML), sauvegarde de l’historique d’entraînement, matrice de confusion et rapport de classification, lanceur en ligne de commande (CLI)
Terminé : cadre d’expérimentation MNIST configurable, avec prise en charge d’AMP et des rapports.
  • Entraînement : AMP, découpage entraînement/validation, planification cosinus, découpage de gradient, checkpoints
  • Expériences : configuration YAML, sauvegarde de l’historique, matrice de confusion + rapport de classification, lanceur CLI

3. Collaboration d’équipe et pratiques d’innovation de l’écosystème

  • Plébiscité chaque jour par des millions de développeurs professionnels.
  • Les agents (Agent) transforment les idées en code. Les programmeurs en collaboration homme‑machine dépassent de plusieurs ordres de grandeur l’efficacité de n’importe quel développeur seul.

Points forts des fonctionnalités produit et de l’écosystème

  • Agents, onglets (Tab), CLI, démonstration d’un environnement multimodal
  • Complétion intelligente dans l’IDE, intégration Slack, relecture de PR, BugBot, tableaux de bord d’analyse, intégration profonde avec GitHub
« Une complétion automatique presque divine. Notre modèle Tab développé en interne prédit votre prochaine action avec une vitesse et une précision stupéfiantes. »
— Démo officielle et retours utilisateurs du 16/09/2025
  • Prise en charge officielle de modèles de pointe : GPT‑5, Claude Sonnet 4.5, Claude Opus 4.1, Gemini 2.5 Pro, Grok Code
  • Compréhension et indexation de codebase de bout en bout, correction automatique de PR et suggestions collaboratives
  • Prise en charge des très grandes équipes et des entreprises, plus de la moitié des sociétés du Fortune 500 lui font confiance

4. Historique des versions et mises à jour

  • 1.7
    29/09/2025
    Complétion automatique des agents, hooks et règles d’équipe
  • 1.6
    12/09/2025
    Commandes du menu en barre oblique, fonction de résumé et terminal d’agent encore plus abouti
  • 1.5
    22/08/2025
    Intégration Linear, terminal d’agent amélioré et notifications système
  • 1.4
    07/08/2025
    Outils d’agent améliorés, meilleure guidabilité et visibilité d’usage
Découvrir plus de nouvelles fonctionnalités Cursor →

5. Innovations majeures et tendances récentes

  • Research · 12/09/2025
    Améliorer Cursor Tab grâce à l’apprentissage par renforcement en ligne. Nombre de suggestions du modèle Tab réduit de 21 %, taux d’acceptation augmenté de 28 %.
  • Research · 29/08/2025
    En utilisant des noyaux MXFP8 personnalisés, accélération de l’entraînement MoE par 1,5×. Sur les GPU Blackwell, les couches MoE sont 3,5× plus rapides.
  • Company · 07/06/2025
    Levée de fonds de série C et passage à l’échelle : 900 millions de dollars levés pour faire progresser la recherche en codage par IA à la frontière de l’état de l’art.

6. Avis de la communauté et retours utilisateurs

  • Diana Hu, managing partner, Y Combinator : les résultats entre deux cohortes successives sont incomparables ; le taux d’adoption est passé de quelques pourcents à plus de 80 %. Il s’est répandu comme une traînée de poudre, et les meilleurs développeurs utilisent tous Cursor.
  • shadcn, créateur de shadcn/ui : l’outil d’IA le plus utile pour lequel je paie, et de loin, c’est Cursor.
  • Andrej Karpathy, CEO, Eureka Labs : les meilleures applications LLM ont toutes un « curseur d’autonomie ». Dans Cursor, vous pouvez utiliser Tab pour la complétion automatique, Cmd+K pour l’édition ciblée, ou confier le travail au mode agent entièrement autonome.
  • Patrick Collison, cofondateur et CEO de Stripe : chez Stripe, le nombre de personnes utilisant Cursor est rapidement passé de quelques centaines à plus d’un millier d’employés extrêmement enthousiastes. Nous investissons plus dans la R&D et la construction logicielle que dans tout autre domaine, et rendre ce processus plus efficace et plus productif apporte un retour économique significatif.
  • ThePrimeagen : c’est décidé. Je déteste le « vibe coding ». J’adore écrire du code avec la complétion par onglets (Tab) de Cursor. C’est complètement dingue.
  • Greg Brockman, président d’OpenAI : le métier de programmeur est réellement devenu plus amusant. Plutôt que de fouiller dans des pages et des pages, concentrez‑vous sur le résultat que vous voulez atteindre. Nous n’avons exploré qu’1 % des possibilités, et dans des expériences interactives comme Cursor, des modèles comme GPT‑5 vont briller.

7. Conclusion

Cursor fait progresser en continu l’innovation en productivité de programmation, de l’assistance IA et des agents à la collaboration d’entreprise, jusqu’à l’intégration ouverte de l’écosystème. Son cadre expérimental PyTorch et ses démonstrations d’interaction de niveau produit illustrent pleinement les capacités de l’équipe en matière de complétion de code intelligente, de gestion d’expériences et de collaboration R&D à grande échelle. (Toutes les données, liens et années sont conservés tels quels.)

Thèmes similaires

\n\n\n
\n \n
\n
\n

Rapport de recherche sur le produit Cursor et le cadre d’expérimentation

\n

Conçu pour rendre votre efficacité exceptionnelle, Cursor est la meilleure façon de programmer avec l’IA. Explorez la démo intégrée, l’expérience PyTorch MNIST, ainsi que de nouveaux workflows pour les agents et l’innovation en équipe.

\n
\n
\n \"Démonstration\n
\n
\n \n
\n
\n

1. Vue d’ensemble du produit et description de l’environnement de démo interactif

\n

\n Cursor est un écosystème d’IDE conçu pour une collaboration efficace et une programmation assistée par IA. Il intègre un CLI (ligne de commande), la complétion intelligente, des agents (Agent) et prend en charge une connexion transparente avec les plateformes de collaboration d’équipe (comme Slack, GitHub).\n

\n

\n L’expérience d’interaction du produit comprend plusieurs démonstrations interactives des interfaces de Cursor : l’IDE montrant le codage assisté par IA et l’assistance en ligne de commande via le CLI. Ces interfaces sont superposées à un fond de papier peint de paysage de style peinture à l’huile, créant un arrière-plan artistique unique.\n

\n
\n
\n

2. Expérience PyTorch MNIST et cadre expérimental extensible

\n

\n Résumé du contenu du répertoire ML-RESEARCH-NOTEBOOK :\n

\n
    \n
  • notebooks/\n
      \n
    • train_model.py
    • \n
    • evaluation.py
    • \n
    \n
  • \n
  • experiments/\n
      \n
    • config.yaml
    • \n
    • run_experiment.py
    • \n
    \n
  • \n
  • requirements.txt
  • \n
\n

Extrait de code clé pour l’entraînement et la configuration :

\n
import torch\nimport torch.nn as nn\nfrom torch.utils.data import DataLoader\nfrom torch.utils.data import DataLoader, random_split\nfrom torchvision import datasets\nfrom torchvision import datasets, transforms\nfrom tqdm import tqdm\nimport yaml\nfrom pathlib import Path\nimport json\n\ndef get_dataloaders(batch_size=64):\n  transform = transforms.Compose([transforms.ToTensor()])\n  train = datasets.MNIST(root=\"data\", train=True, download=True, transform=transform)\n  test = datasets.MNIST(root=\"data\", train=False, download=True, transform=transform)\n  return DataLoader(train, batch_size=batch_size, shuffle=True), DataLoader(test, batch_size=batch_size)\ndef load_config(config_path=\"experiments/config.yaml\"):\n  with open(config_path) as f:\n    return yaml.safe_load(f)\n\ndef get_dataloaders(config):\n  transform_list = [transforms.ToTensor()]\n  if config['data'].get('normalize', True):\n    transform_list.append(transforms.Normalize((0.1307,), (0.3081,)))\n  \n  if config['data']['augmentation'].get('random_rotation'):\n    transform_list.append(transforms.RandomRotation(\n      config['data']['augmentation']['random_rotation']\n    ))\n  \n  transform = transforms.Compose(transform_list)\n  \n  full_train = datasets.MNIST(root=\"data\", train=True, download=True, transform=transform)\n  train_size = int(0.8 * len(full_train))\n  val_size = len(full_train) - train_size\n  train_dataset, val_dataset = random_split(full_train, [train_size, val_size])\n  \n  test_dataset = datasets.MNIST(root=\"data\", train=False, download=True, transform=transform)\n  \n  batch_size = config['training']['batch_size']\n  train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)\n  val_loader = DataLoader(val_dataset, batch_size=batch_size)\n  test_loader = DataLoader(test_dataset, batch_size=batch_size)\n  \n  return train_loader, val_loader, test_loader\n\nclass MLP(nn.Module):\n  def __init__(self, hidden=128):\n  def __init__(self, config):\n    super().__init__()\n    hidden = config['model']['hidden_size']\n    dropout = config['model']['dropout']\n    \n    self.net = nn.Sequential(\n      nn.Flatten(),\n      nn.Linear(28*28, hidden),\n      nn.ReLU(),\n      nn.Dropout(dropout),\n      nn.Linear(hidden, hidden // 2),\n      nn.ReLU(),\n      nn.Dropout(dropout),\n      nn.Linear(hidden, 10),\n      nn.Linear(hidden // 2, 10),\n    )\n\n  def forward(self, x):\n    return self.net(x)\n\ndef train_model(epochs=1, lr=1e-3, device=None):\n  device = device or (\"cuda\" if torch.cuda.is_available() else \"cpu\")\n  model = MLP().to(device)\n  opt = torch.optim.Adam(model.parameters(), lr=lr)\ndef train_model(config_path=\"experiments/config.yaml\"):\n  config = load_config(config_path)\n  device = \"cuda\" if torch.cuda.is_available() and config['training']['use_amp'] else \"cpu\"\n  \n  torch.manual_seed(42)\n  if device == \"cuda\":\n    torch.cuda.manual_seed_all(42)\n  \n  model = MLP(config).to(device)\n  opt = torch.optim.Adam(\n    model.parameters(), \n    lr=config['training']['learning_rate'],\n    weight_decay=config['training']['weight_decay']\n  )\n  loss_fn = nn.CrossEntropyLoss()\n  train_loader, _ = get_dataloaders()\n+  # Seed for reproducibility\n+  torch.manual_seed(42)\n+  if device == \"cuda\":\n+    torch.cuda.manual_seed_all(42)\n+  # AMP + Scheduler\n+  scaler = torch.cuda.amp.GradScaler(enabled=(device==\"cuda\"))\n+  scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(opt, T_max=epochs)\n  model.train()\n  for epoch in range(epochs):\n    total, correct = 0, 0\n    for x, y in tqdm(train_loader, desc=f\"epoch {epoch+1}\"):\n  \n  train_loader, val_loader, test_loader = get_dataloaders(config)\n  \n  use_amp = config['training']['use_amp'] and device == \"cuda\"\n  scaler = torch.cuda.amp.GradScaler(enabled=use_amp)\n  \n  scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(\n    opt, T_max=config['training']['epochs']\n  )\n  \n  history = {'train_loss': [], 'train_acc': [], 'val_loss': [], 'val_acc': []}\n  \n  for epoch in range(config['training']['epochs']):\n    model.train()\n    train_loss, train_correct, train_total = 0, 0, 0\n    \n    for x, y in tqdm(train_loader, desc=f\"Epoch {epoch+1}/{config['training']['epochs']}\"):\n      x, y = x.to(device), y.to(device)\n      opt.zero_grad(set_to_none=True)\n      logits = model(x)\n      loss = loss_fn(logits, y)\n      loss.backward()\n      opt.step()\n      with torch.cuda.amp.autocast(enabled=use_amp):\n        logits = model(x)\n        loss = loss_fn(logits, y)\n      \n      scaler.scale(loss).backward()\n      \n      if config['training']['gradient_clip'] > 0:\n        scaler.unscale_(opt)\n+      torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)\n        torch.nn.utils.clip_grad_norm_(model.parameters(), config['training']['gradient_clip'])\n      \n      scaler.step(opt)\n      scaler.update()\n+      preds = logits.argmax(dim=1)\n+      total += y.size(0)\n+      correct += (preds == y).sum().item()\n+    acc = correct / max(1, total)\n      \n      train_loss += loss.item() * x.size(0)\n      train_correct += (logits.argmax(1) == y).sum().item()\n      train_total += x.size(0)\n    \n    model.eval()\n    val_loss, val_correct, val_total = 0, 0, 0\n    \n    with torch.no_grad():\n      for x, y in val_loader:\n        x, y = x.to(device), y.to(device)\n        logits = model(x)\n        loss = loss_fn(logits, y)\n        \n        val_loss += loss.item() * x.size(0)\n        val_correct += (logits.argmax(1) == y).sum().item()\n        val_total += x.size(0)\n    \n    train_loss = train_loss / train_total\n    train_acc = train_correct / train_total\n    val_loss = val_loss / val_total\n    val_acc = val_correct / val_total\n    \n    history['train_loss'].append(train_loss)\n    history['train_acc'].append(train_acc)\n    history['val_loss'].append(val_loss)\n    history['val_acc'].append(val_acc)\n    \n    print(f\"Epoch {epoch+1}: train_loss={train_loss:.4f}, train_acc={train_acc:.3f}, \"\n          f\"val_loss={val_loss:.4f}, val_acc={val_acc:.3f}\")\n    \n    scheduler.step()\n+    print(f\"epoch {epoch+1}: acc={acc:.3f}\")\n  return model`,\n    \n    if (epoch + 1) % 5 == 0:\n      checkpoint = {\n        'epoch': epoch,\n        'model_state_dict': model.state_dict(),\n        'optimizer_state_dict': opt.state_dict(),\n        'scheduler_state_dict': scheduler.state_dict(),\n        'history': history,\n        'config': config\n      }\n      Path('checkpoints').mkdir(exist_ok=True)\n      torch.save(checkpoint, f'checkpoints/model_epoch_{epoch+1}.pt')\n  \n  Path('results').mkdir(exist_ok=True)\n  with open('results/training_history.json', 'w') as f:\n    json.dump(history, f, indent=2)\n  \n  return model, history, test_loader\n
\n

Résumé des fonctionnalités expérimentales et des améliorations

\n
    \n
  • Prise en charge de l’entraînement en précision mixte (AMP), séparation entraînement/validation, stratégie de planification CosineAnnealingLR, découpage de gradient
  • \n
  • Expériences pilotées par configuration (YAML), sauvegarde de l’historique d’entraînement, matrice de confusion et rapport de classification, lanceur en ligne de commande (CLI)
  • \n
\n
\n Terminé : cadre d’expérimentation MNIST configurable, avec prise en charge d’AMP et des rapports.\n
    \n
  • Entraînement : AMP, découpage entraînement/validation, planification cosinus, découpage de gradient, checkpoints
  • \n
  • Expériences : configuration YAML, sauvegarde de l’historique, matrice de confusion + rapport de classification, lanceur CLI
  • \n
\n
\n
\n
\n

3. Collaboration d’équipe et pratiques d’innovation de l’écosystème

\n
    \n
  • Plébiscité chaque jour par des millions de développeurs professionnels.
  • \n
  • Les agents (Agent) transforment les idées en code. Les programmeurs en collaboration homme‑machine dépassent de plusieurs ordres de grandeur l’efficacité de n’importe quel développeur seul.
  • \n
\n

Points forts des fonctionnalités produit et de l’écosystème

\n
    \n
  • Agents, onglets (Tab), CLI, démonstration d’un environnement multimodal
  • \n
  • Complétion intelligente dans l’IDE, intégration Slack, relecture de PR, BugBot, tableaux de bord d’analyse, intégration profonde avec GitHub
  • \n
\n
\n « Une complétion automatique presque divine. Notre modèle Tab développé en interne prédit votre prochaine action avec une vitesse et une précision stupéfiantes. »
\n — Démo officielle et retours utilisateurs du 16/09/2025\n
\n
    \n
  • Prise en charge officielle de modèles de pointe : GPT‑5, Claude Sonnet 4.5, Claude Opus 4.1, Gemini 2.5 Pro, Grok Code
  • \n
  • Compréhension et indexation de codebase de bout en bout, correction automatique de PR et suggestions collaboratives
  • \n
  • Prise en charge des très grandes équipes et des entreprises, plus de la moitié des sociétés du Fortune 500 lui font confiance
  • \n
\n
\n
\n

4. Historique des versions et mises à jour

\n
    \n
  • 1.7
    29/09/2025
    Complétion automatique des agents, hooks et règles d’équipe
  • \n
  • 1.6
    12/09/2025
    Commandes du menu en barre oblique, fonction de résumé et terminal d’agent encore plus abouti
  • \n
  • 1.5
    22/08/2025
    Intégration Linear, terminal d’agent amélioré et notifications système
  • \n
  • 1.4
    07/08/2025
    Outils d’agent améliorés, meilleure guidabilité et visibilité d’usage
  • \n
\n Découvrir plus de nouvelles fonctionnalités Cursor →\n
\n
\n

5. Innovations majeures et tendances récentes

\n
    \n
  • Research · 12/09/2025
    Améliorer Cursor Tab grâce à l’apprentissage par renforcement en ligne. Nombre de suggestions du modèle Tab réduit de 21 %, taux d’acceptation augmenté de 28 %.
  • \n
  • Research · 29/08/2025
    En utilisant des noyaux MXFP8 personnalisés, accélération de l’entraînement MoE par 1,5×. Sur les GPU Blackwell, les couches MoE sont 3,5× plus rapides.
  • \n
  • Company · 07/06/2025
    Levée de fonds de série C et passage à l’échelle : 900 millions de dollars levés pour faire progresser la recherche en codage par IA à la frontière de l’état de l’art.
  • \n
\n
\n
\n

6. Avis de la communauté et retours utilisateurs

\n
    \n
  • Diana Hu, managing partner, Y Combinator : les résultats entre deux cohortes successives sont incomparables ; le taux d’adoption est passé de quelques pourcents à plus de 80 %. Il s’est répandu comme une traînée de poudre, et les meilleurs développeurs utilisent tous Cursor.
  • \n
  • shadcn, créateur de shadcn/ui : l’outil d’IA le plus utile pour lequel je paie, et de loin, c’est Cursor.
  • \n
  • Andrej Karpathy, CEO, Eureka Labs : les meilleures applications LLM ont toutes un « curseur d’autonomie ». Dans Cursor, vous pouvez utiliser Tab pour la complétion automatique, Cmd+K pour l’édition ciblée, ou confier le travail au mode agent entièrement autonome.
  • \n
  • Patrick Collison, cofondateur et CEO de Stripe : chez Stripe, le nombre de personnes utilisant Cursor est rapidement passé de quelques centaines à plus d’un millier d’employés extrêmement enthousiastes. Nous investissons plus dans la R&D et la construction logicielle que dans tout autre domaine, et rendre ce processus plus efficace et plus productif apporte un retour économique significatif.
  • \n
  • ThePrimeagen : c’est décidé. Je déteste le « vibe coding ». J’adore écrire du code avec la complétion par onglets (Tab) de Cursor. C’est complètement dingue.
  • \n
  • Greg Brockman, président d’OpenAI : le métier de programmeur est réellement devenu plus amusant. Plutôt que de fouiller dans des pages et des pages, concentrez‑vous sur le résultat que vous voulez atteindre. Nous n’avons exploré qu’1 % des possibilités, et dans des expériences interactives comme Cursor, des modèles comme GPT‑5 vont briller.
  • \n
\n
\n
\n

7. Conclusion

\n

\n Cursor fait progresser en continu l’innovation en productivité de programmation, de l’assistance IA et des agents à la collaboration d’entreprise, jusqu’à l’intégration ouverte de l’écosystème. Son cadre expérimental PyTorch et ses démonstrations d’interaction de niveau produit illustrent pleinement les capacités de l’équipe en matière de complétion de code intelligente, de gestion d’expériences et de collaboration R&D à grande échelle. (Toutes les données, liens et années sont conservés tels quels.)\n

\n
\n
\n \n \n
\n\n"])

Similar Topics