Avec les agents en arrière-plan, lancez des agents asynchrones qui modifient et exécutent du code dans un environnement distant. Consultez leur statut, envoyez des messages de suivi, ou reprenez le contrôle à tout moment.

Comment utiliser

  1. Appuyez sur pour ouvrir le panneau de contrôle de l’agent en arrière-plan afin de lister les agents, en créer de nouveaux et voir le statut.
  2. Après avoir soumis une invite, sélectionnez votre agent dans la liste pour voir le statut et entrer dans la machine.

Les agents en arrière-plan nécessitent une rétention de données de l’ordre de quelques jours.

Commentaires

Envoyez vos commentaires sur notre canal Discord #background-agent ou à background-agent-feedback@cursor.com. Veuillez envoyer les bugs, demandes de fonctionnalités ou idées.

Configuration

Les agents en arrière-plan s’exécutent dans une machine isolée basée sur ubuntu par défaut. Les agents ont accès à internet et peuvent installer des packages.

Connexion GitHub

Les agents en arrière-plan clonent votre dépôt depuis GitHub et travaillent sur une branche séparée, poussant vers votre dépôt pour faciliter la transmission. Accordez des privilèges de lecture-écriture à votre dépôt (et à tous les dépôts dépendants ou sous-modules). Nous prendrons en charge d’autres fournisseurs (GitLab, BitBucket, etc.) à l’avenir.

Configuration de l’environnement de base

Pour les cas avancés, configurez l’environnement vous-même. Obtenez une instance IDE connectée à la machine distante. Configurez votre machine, installez les outils et packages, puis prenez un instantané. Configurez les paramètres d’exécution :
  • La commande d’installation s’exécute avant qu’un agent ne démarre et installe les dépendances d’exécution. Cela peut signifier exécuter npm install ou bazel build.
  • Les terminaux exécutent des processus en arrière-plan pendant que l’agent travaille - comme démarrer un serveur web ou compiler des fichiers protobuf.
Pour les cas les plus avancés, utilisez un Dockerfile pour la configuration de la machine. Le dockerfile vous permet de configurer les dépendances au niveau système : installer des versions spécifiques de compilateurs, des débogueurs, ou changer l’image OS de base. Ne faites pas COPY de tout le projet - nous gérons l’espace de travail et récupérons le bon commit. Gérez toujours l’installation des dépendances dans le script d’installation. Entrez tous les secrets requis pour votre environnement de développement - ils sont stockés chiffrés au repos (en utilisant KMS) dans notre base de données et fournis dans l’environnement de l’agent en arrière-plan. La configuration de la machine se trouve dans .cursor/environment.json, qui peut être commitée dans votre dépôt (recommandé) ou stockée de manière privée. Le flux de configuration vous guide dans la création d’environment.json.

Commandes de maintenance

Lors de la configuration d’une nouvelle machine, nous partons de l’environnement de base, puis exécutons la commande install de votre environment.json. Cette commande est ce qu’un développeur exécuterait lors du changement de branches - installer toutes les nouvelles dépendances. Pour la plupart des gens, la commande install est npm install ou bazel build. Pour assurer un démarrage rapide de la machine, nous mettons en cache l’état du disque après l’exécution de la commande install. Concevez-la pour s’exécuter plusieurs fois. Seul l’état du disque persiste de la commande install - les processus démarrés ici ne seront pas vivants quand l’agent démarre.

Commandes de démarrage

Après avoir exécuté install, la machine démarre et nous exécutons la commande start suivie du démarrage de tous les terminals. Cela démarre les processus qui devraient être vivants quand l’agent s’exécute. La commande start peut souvent être ignorée. Utilisez-la si votre environnement de développement dépend de docker - mettez sudo service docker start dans la commande start. Les terminals sont pour le code d’application. Ces terminaux s’exécutent dans une session tmux disponible pour vous et l’agent. Par exemple, de nombreux dépôts de sites web mettent npm run watch comme terminal.

La spécification environment.json

Le fichier environment.json peut ressembler à :
{
  "snapshot": "POPULATED_FROM_SETTINGS",
  "install": "npm install",
  "terminals": [
    {
      "name": "Run Next.js",
      "command": "npm run dev"
    }
  ]
}
Formellement, la spécification est définie ici.

Modèles

Seuls les modèles compatibles avec le Mode Max sont disponibles pour les agents en arrière-plan.

Tarification

En savoir plus sur la tarification de Background Agent.

Sécurité

Les Agents en Arrière-plan sont disponibles en Mode Privé. Nous n’entraînons jamais nos modèles sur votre code et ne conservons le code que pour faire fonctionner l’agent. En savoir plus sur le Mode Privé. Ce que vous devez savoir :
  1. Accordez des privilèges de lecture-écriture à notre application GitHub pour les dépôts que vous souhaitez modifier. Nous utilisons cela pour cloner le dépôt et apporter des modifications.
  2. Votre code s’exécute dans notre infrastructure AWS dans des machines virtuelles isolées et est stocké sur les disques des machines virtuelles pendant que l’agent est accessible.
  3. L’agent a accès à internet.
  4. L’agent exécute automatiquement toutes les commandes du terminal, lui permettant d’itérer sur les tests. Cela diffère de l’agent de premier plan, qui nécessite l’approbation de l’utilisateur pour chaque commande. L’exécution automatique introduit un risque d’exfiltration de données : les attaquants pourraient exécuter des attaques d’injection de prompt, trompant l’agent pour qu’il télécharge du code vers des sites web malveillants. Voir l’explication d’OpenAI sur les risques d’injection de prompt pour les agents en arrière-plan.
  5. Si le mode privé est désactivé, nous collectons les prompts et les environnements de développement pour améliorer le produit.
  6. Si vous désactivez le mode privé lors du démarrage d’un agent en arrière-plan, puis l’activez pendant l’exécution de l’agent, l’agent continue avec le mode privé désactivé jusqu’à ce qu’il se termine.