Skip to main content

Command Palette

Search for a command to run...

CLI

Utiliser la CLI en mode headless

Utilisez la CLI de Cursor dans des scripts et des flux d’automatisation pour analyser, générer et refactoriser du code.

Fonctionnement

Utilisez le mode d’impression (-p, --print) pour les scripts et l’automatisation en mode non interactif.

Modification de fichiers via des scripts

Combinez --print avec --force (ou --yolo) pour modifier des fichiers via des scripts :

# Activer la modification des fichiers en mode d’impressionagent -p --force "Refactor this code to use modern ES6+ syntax"# Sans --force, les modifications sont seulement proposées, pas appliquéesagent -p "Add JSDoc comments to this file"  # Ne modifiera aucun fichier# Traitement par lots avec modification effective des fichiersfind src/ -name "*.js" | while read file; do  agent -p --force "Add comprehensive JSDoc comments to $file"done

Configuration

Voir Installation et Authentification pour les instructions de configuration complètes.

# Installer la CLI de Cursor (macOS, Linux, WSL)curl https://cursor.com/install -fsS | bash# Installer la CLI de Cursor (Windows PowerShell)irm 'https://cursor.com/install?win32=true' | iex# Définir la clé API pour les scriptsexport CURSOR_API_KEY=your_api_key_hereagent -p "Analyze this code"

Exemples de scripts

Utilisez différents formats de sortie selon les besoins de vos scripts. Consultez Format de sortie pour en savoir plus.

Recherche dans la base de code

Par défaut, --print utilise le format text pour produire des réponses finales propres :

#!/bin/bash# Question simple sur la base de code - utilise le format texte par défautagent -p "What does this codebase do?"

Revue de code automatisée

Utilisez --output-format json pour une analyse structurée :

#!/bin/bash# simple-code-review.sh - Script de revue de code simpleecho "Starting code review..."# Passer en revue les modifications récentesagent -p --force --output-format text \  "Review the recent code changes and provide feedback on:  - Code quality and readability  - Potential bugs or issues  - Security considerations  - Best practices compliance  Provide specific suggestions for improvement and write to review.txt"if [ $? -eq 0 ]; then  echo "✅ Code review completed successfully"else  echo "❌ Code review failed"  exit 1fi

Suivi de la progression en temps réel

Utilisez --output-format stream-json pour suivre la progression au niveau des messages, ou ajoutez --stream-partial-output pour diffuser les deltas de manière incrémentielle :

#!/bin/bash# stream-progress.sh - Suivi de la progression en temps réelecho "🚀 Starting stream processing..."# Suivi de la progression en temps réelaccumulated_text=""tool_count=0start_time=$(date +%s)agent -p --force --output-format stream-json --stream-partial-output \  "Analyze this project structure and create a summary report in analysis.txt" | \  while IFS= read -r line; do        type=$(echo "$line" | jq -r '.type // empty')    subtype=$(echo "$line" | jq -r '.subtype // empty')        case "$type" in      "system")        if [ "$subtype" = "init" ]; then          model=$(echo "$line" | jq -r '.model // "unknown"')          echo "🤖 Using model: $model"        fi        ;;              "assistant")        # Traiter uniquement les deltas du flux (timestamp_ms présent, sans model_call_id).        # Ignorer les émissions tamponnées avant les appels d’outils et en fin de tour.        has_ts=$(echo "$line" | jq 'has("timestamp_ms")')        has_mc=$(echo "$line" | jq 'has("model_call_id")')        if [ "$has_ts" = "true" ] && [ "$has_mc" = "false" ]; then          content=$(echo "$line" | jq -r '.message.content[0].text // empty')          accumulated_text="$accumulated_text$content"          printf "\r📝 Generating: %d chars" ${#accumulated_text}        fi        ;;      "tool_call")        if [ "$subtype" = "started" ]; then          tool_count=$((tool_count + 1))          # Récupérer les informations sur l’outil          if echo "$line" | jq -e '.tool_call.writeToolCall' > /dev/null 2>&1; then            path=$(echo "$line" | jq -r '.tool_call.writeToolCall.args.path // "unknown"')            echo -e "\n🔧 Tool #$tool_count: Creating $path"          elif echo "$line" | jq -e '.tool_call.readToolCall' > /dev/null 2>&1; then            path=$(echo "$line" | jq -r '.tool_call.readToolCall.args.path // "unknown"')            echo -e "\n📖 Tool #$tool_count: Reading $path"          fi        elif [ "$subtype" = "completed" ]; then          # Récupérer et afficher les résultats de l’outil          if echo "$line" | jq -e '.tool_call.writeToolCall.result.success' > /dev/null 2>&1; then            lines=$(echo "$line" | jq -r '.tool_call.writeToolCall.result.success.linesCreated // 0')            size=$(echo "$line" | jq -r '.tool_call.writeToolCall.result.success.fileSize // 0')            echo "   ✅ Created $lines lines ($size bytes)"          elif echo "$line" | jq -e '.tool_call.readToolCall.result.success' > /dev/null 2>&1; then            lines=$(echo "$line" | jq -r '.tool_call.readToolCall.result.success.totalLines // 0')            echo "   ✅ Read $lines lines"          fi        fi        ;;      "result")        duration=$(echo "$line" | jq -r '.duration_ms // 0')        end_time=$(date +%s)        total_time=$((end_time - start_time))        echo -e "\n\n🎯 Completed in ${duration}ms (${total_time}s total)"        echo "📊 Final stats: $tool_count tools, ${#accumulated_text} chars generated"        ;;    esac  done

Utiliser des images

Pour envoyer des images, des fichiers multimédias ou d’autres données binaires à l’agent, incluez les chemins des fichiers dans vos prompts. L’agent peut lire n’importe quel fichier via l’appel d’outils, notamment des images, des vidéos et d’autres formats.

Inclure des chemins de fichiers dans les prompts

Indiquez simplement les chemins de fichiers dans le texte de votre prompt. L’Agent lira automatiquement les fichiers si nécessaire :

# Analyser une imageagent -p "Analyze this image and describe what you see: ./screenshot.png"# Traiter plusieurs fichiers multimédiasagent -p "Compare these two images and identify differences: ./before.png ./after.png"# Combiner des chemins de fichiers avec des instructions textuellesagent -p "Review the code in src/app.ts and the design mockup in designs/homepage.png. Suggest improvements to match the design."

Fonctionnement

Lorsque vous incluez des chemins de fichiers dans votre prompt :

  1. L’agent reçoit votre prompt avec les chemins de fichiers référencés
  2. L’agent utilise l’appel d’outils pour lire automatiquement les fichiers
  3. Les images sont traitées de manière transparente
  4. Vous pouvez référencer des fichiers à l’aide de chemins relatifs ou absolus

Exemple : script d’analyse d’images

#!/bin/bash# analyze-image.sh - Analyser des images avec la CLI en mode headlessIMAGE_PATH="./screenshots/ui-mockup.png"agent -p --output-format json \  "Analyze this image and provide a detailed description: $IMAGE_PATH" | \  jq -r '.result'

Exemple : traitement de médias par lots

#!/bin/bash# process-media.sh - Traiter plusieurs fichiers multimédiasfor image in images/*.png; do  echo "Processing $image..."  agent -p --output-format text \    "Describe what's in this image: $image" > "${image%.png}.description.txt"done