Headless CLI Kullanımı
Kod analizi, üretimi ve yeniden düzenleme görevleri için Cursor CLI'ı betiklerde ve otomasyon iş akışlarında kullanın.
Nasıl çalışır
Etkileşimsiz betikler ve otomasyon için yazdırma modunu (-p, --print) kullanın.
Betiklerde dosyaları değiştirme
Betiklerde dosyaları değiştirmek için --print seçeneğini --force (veya --yolo) ile birlikte kullanın:
# Yazdırma modunda dosya değişikliklerine izin verinagent -p --force "Refactor this code to use modern ES6+ syntax"# --force olmadan değişiklikler yalnızca önerilir, uygulanmazagent -p "Add JSDoc comments to this file" # Dosyaları değiştirmez# Gerçek dosya değişiklikleriyle toplu işlemefind src/ -name "*.js" | while read file; do agent -p --force "Add comprehensive JSDoc comments to $file"done--force bayrağı, agent'ın onay gerektirmeden dosyalarda doğrudan değişiklik yapmasına izin verir
Kurulum
Kurulumla ilgili tüm ayrıntılar için Kurulum ve Kimlik doğrulama bölümlerine bakın.
# Cursor CLI'ı yükleyin (macOS, Linux, WSL)curl https://cursor.com/install -fsS | bash# Cursor CLI'ı yükleyin (Windows PowerShell)irm 'https://cursor.com/install?win32=true' | iex# Betikler için API anahtarını ayarlayınexport CURSOR_API_KEY=your_api_key_hereagent -p "Analyze this code"Örnek betikler
Farklı betik ihtiyaçları için farklı çıktı biçimleri kullanın. Ayrıntılar için Çıktı biçimi sayfasına bkz.
Kod tabanında arama
--print, varsayılan olarak yalnızca nihai yanıtı içeren temiz çıktılar için text formatını kullanır:
#!/bin/bash# Basit kod tabanı sorusu - varsayılan olarak metin biçimini kullanıragent -p "What does this codebase do?"Otomatik kod incelemesi
Yapılandırılmış analiz için --output-format json kullanın:
#!/bin/bash# simple-code-review.sh - Temel kod inceleme betiğiecho "Starting code review..."# Son değişiklikleri inceleagent -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 1fiGerçek zamanlı ilerleme takibi
Mesaj düzeyinde ilerlemeyi takip etmek için --output-format stream-json kullanın veya deltaları artımlı olarak akıtmak için --stream-partial-output ekleyin:
#!/bin/bash# stream-progress.sh - Gerçek zamanlı ilerleme takibiecho "🚀 Starting stream processing..."# Gerçek zamanlı ilerlemeyi takip edinaccumulated_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") # Yalnızca akış deltalarını işleyin (timestamp_ms var, model_call_id yok). # Araç çağrılarından önce ve turun sonunda arabelleğe alınan boşaltmaları atlayın. 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)) # Araç bilgilerini alın 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 # Araç sonuçlarını alın ve gösterin 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İmajlarla çalışma
İmajları, medya dosyalarını veya diğer ikili verileri agente göndermek için istemlerinize dosya yolları ekleyin. Agent, imajlar, videolar ve diğer formatlar dahil tüm dosyaları araç çağırma aracılığıyla okuyabilir.
İstemlere dosya yolları ekleme
İstem metninizde dosya yollarını belirtmeniz yeterlidir. Agent, gerektiğinde dosyaları otomatik olarak okur:
# Bir imajı analiz etagent -p "Analyze this image and describe what you see: ./screenshot.png"# Birden fazla medya dosyasını işleagent -p "Compare these two images and identify differences: ./before.png ./after.png"# Dosya yollarını metin talimatlarıyla birlikte kullanagent -p "Review the code in src/app.ts and the design mockup in designs/homepage.png. Suggest improvements to match the design."Nasıl çalışır
İsteminize dosya yolları eklediğinizde:
- Agent, dosya yolu referanslarını içeren isteminizi alır
- Agent, dosyaları otomatik olarak okumak için araç çağırmayı kullanır
- Görseller otomatik olarak işlenir
- Dosyalara göreli veya mutlak yollarla başvurabilirsiniz
Örnek: İmaj analiz betiği
#!/bin/bash# analyze-image.sh - İmajları arayüzsüz CLI ile analiz etmeIMAGE_PATH="./screenshots/ui-mockup.png"agent -p --output-format json \ "Analyze this image and provide a detailed description: $IMAGE_PATH" | \ jq -r '.result'Örnek: Medyayı toplu işleme
#!/bin/bash# process-media.sh - Birden fazla medya dosyasını işlerfor image in images/*.png; do echo "Processing $image..." agent -p --output-format text \ "Describe what's in this image: $image" > "${image%.png}.description.txt"doneDosya yolları, geçerli çalışma dizinine göreli veya mutlak olabilir. Agent dosyaları araç çağrılarıyla okuyacağından, dosyaların mevcut olduğundan ve komutu çalıştırdığınız konumdan erişilebilir olduğundan emin olun.