Zum Hauptinhalt springen

Einrichtung von Grok Bot in Cursor

Cursor Grok Bot Leitfaden

Grok Bot in Cursor bringt KI-gesteuerte Automatisierungsroutinen direkt in Ihren Entwicklungs-Workflow. Durch die Konfiguration von Webhook-Routinen, Slack-Triggern und Automatisierungs-Workflows können Sie externe Dienste verbinden und den Bot wiederkehrende Aufgaben automatisch erledigen lassen. Dieser Leitfaden behandelt den gesamten Einrichtungsprozess von der Erstkonfiguration bis zur erweiterten Fehlerbehebung.

Was ist Grok Bot?​

Grok Bot ist eine Automatisierungsschicht in Cursor, die webhook-basierte Routinen verwendet, um auf Ereignisse von externen Diensten zu reagieren. Wenn ein Trigger ausgelöst wird, führt der Bot eine vordefinierte Routine aus, wie z.B. Code-Analyse, Zusammenfassungen erstellen oder Benachrichtigungen senden.

Die Kernkomponenten eines Grok Bot-Setups sind:

  • Routinen: Aktionssequenzen, die der Bot bei Auslösung ausführt
  • Trigger: Ereignisse, die eine Routine starten, wie z.B. eine Slack-Nachricht oder ein Webhook-Aufruf
  • Webhook-URLs: Endpunkt-Adressen, an die externe Dienste Daten senden
  • Aktionen: Einzelschritte innerhalb einer Routine, wie Dateibearbeitungen, Terminal-Befehle oder API-Aufrufe
tipp

Stellen Sie vor der Einrichtung von Grok Bot sicher, dass Ihre Cursor-Installation auf dem neuesten Stand ist. Webhook-Routinen-Funktionen erhalten häufige Verbesserungen, und ältere Versionen unterstützen möglicherweise nicht alle in diesem Leitfaden beschriebenen Triggertypen.

Ersteinrichtung​

Grok Bot aktivieren​

Um Grok Bot in Cursor zu aktivieren, navigieren Sie zu den Automatisierungseinstellungen:

  1. Öffnen Sie die Cursor-Einstellungen (Strg+, oder Cmd+,)
  2. Navigieren Sie zum Abschnitt Automations in der linken Seitenleiste
  3. Schalten Sie Enable Grok Bot um, um die Funktion zu aktivieren
  4. Klicken Sie auf Generate Webhook Secret, um einen geheimen Schlüssel zur Authentifizierung eingehender Anfragen zu erstellen
// Beispiel der generierten Konfiguration in settings.json
{
"cursor.grokBot.enabled": true,
"cursor.grokBot.webhookSecret": "whsec_abc123def456ghi789",
"cursor.grokBot.defaultModel": "cursor-agent-pro",
"cursor.grokBot.maxConcurrentRoutines": 3
}
warnung

Halten Sie Ihr Webhook-Geheimnis privat. Jeder mit diesem Geheimnis kann Routinen auf Ihrer Maschine auslösen. Wenn das Geheimnis kompromittiert wurde, generieren Sie sofort ein neues aus dem Einstellungspanel.

Erste Routine erstellen​

Eine Routine ist eine Reihe von Anweisungen, denen der Bot folgt, wenn er ausgelöst wird. Erstellen Sie eine aus dem Automations-Bedienfeld:

  1. Öffnen Sie das Automations-Bedienfeld (Strg+Umschalt+A)
  2. Klicken Sie auf New Routine
  3. Geben Sie der Routine einen aussagekräftigen Namen, z.B. „Slack Code Review Request"
  4. Wählen Sie einen Triggertyp (Webhook, Slack, Manual oder Schedule)
  5. Definieren Sie die Aktionen, die die Routine ausführen soll
  6. Speichern und aktivieren Sie die Routine
# Beispiel-Routinenkonfiguration
name: "Slack Code Review Request"
description: "When a Slack message mentions @code-review, analyze the referenced file"
trigger:
type: slack
condition: "message.contains('@code-review')"
actions:
- type: parse_message
extract:
file_path: "regex:review\\s+(.+)"
question: "regex:asking\\s+(.+)"
- type: read_file
path: "{{file_path}}"
- type: analyze
prompt: "Review this code for potential issues, security vulnerabilities, and improvement suggestions."
- type: slack_reply
message: "{{analysis_result}}"

Webhook-Routinen​

Webhook-Routinen ermöglichen es externen Diensten, Aktionen in Cursor auszulösen, indem sie HTTP-POST-Anfragen an eine bestimmte URL senden.

Die Webhook-URL verstehen​

Wenn Sie eine webhook-getriggerte Routine erstellen, generiert Cursor eine eindeutige Webhook-URL. Diese URL ist die Adresse, an die externe Dienste ihre Payloads senden.

# Beispiel-Webhook-URL-Format
http://localhost:7541/webhooks/routines/rtn_abc123def456
warnung

Ein häufig gemeldetes Problem ist, dass die Webhook-Routinenkonfiguration keine POST-URL anzeigt. Dies passiert typischerweise, wenn die Routine nicht vollständig gespeichert wurde oder der Triggertyp vor dem Speichern nicht auf „Webhook" gesetzt wurde. Wenn Sie keine POST-URL sehen, folgen Sie diesen Schritten:

  1. Öffnen Sie den Routinen-Editor erneut
  2. Bestätigen Sie, dass der Triggertyp auf „Webhook" gesetzt ist
  3. Klicken Sie explizit auf Save (schließen Sie nicht einfach das Panel)
  4. Öffnen Sie die Routine erneut, um zu überprüfen, ob die URL nun angezeigt wird

Wenn die URL immer noch nicht erscheint, starten Sie Cursor neu und versuchen Sie es erneut. Dies ist ein bekanntes Problem, das gemeldet wurde und dessen Behebung verfolgt wird.

Registrieren einer Webhook-Routine​

So erstellen Sie Schritt für Schritt eine webhook-getriggerte Routine:

  1. Öffnen Sie das Automations-Bedienfeld
  2. Klicken Sie auf New Routine
  3. Setzen Sie den Namen auf „GitHub PR Notification"
  4. Setzen Sie den Triggertyp auf Webhook
  5. Speichern Sie die Routine, um die Webhook-URL zu generieren
  6. Kopieren Sie die angezeigte POST-URL
  7. Konfigurieren Sie Ihren externen Dienst, um Anfragen an diese URL zu senden
# Beispiel: Webhook von einer GitHub Action senden
import json
import urllib.request

webhook_url = "http://localhost:7541/webhooks/routines/rtn_abc123def456"
webhook_secret = "whsec_abc123def456ghi789"

payload = {
"event": "pull_request.opened",
"repository": "my-org/my-repo",
"pr_number": 42,
"pr_title": "Add payment gateway integration",
"author": "jane-dev",
"changed_files": ["src/payment/stripe.ts", "src/api/routes.ts"],
}

req = urllib.request.Request(
webhook_url,
data=json.dumps(payload).encode("utf-8"),
headers={
"Content-Type": "application/json",
"X-Webhook-Secret": webhook_secret,
},
method="POST",
)

try:
with urllib.request.urlopen(req) as response:
print(f"Status: {response.status}")
print(f"Response: {response.read().decode()}")
except urllib.error.URLError as e:
print(f"Webhook delivery failed: {e}")

Validierung von Webhook-Anfragen​

Validieren Sie immer eingehende Webhook-Anfragen, um sicherzustellen, dass sie von einer vertrauenswürdigen Quelle stammen. Das beim Setup generierte Webhook-Geheimnis sollte im X-Webhook-Secret-Header enthalten sein.

// Beispiel-Validierungslogik (Node.js)
const crypto = require("crypto");

function validateWebhook(req, res, next) {
const secret = req.headers["x-webhook-secret"];
const expectedSecret = process.env.CURSOR_WEBHOOK_SECRET;

if (!secret || secret !== expectedSecret) {
return res.status(401).json({ error: "Invalid webhook secret" });
}

// Optional: Anfrage-Zeitstempel verifizieren, um Replay-Angriffe zu verhindern
const timestamp = req.headers["x-webhook-timestamp"];
const now = Date.now();
const maxAge = 5 * 60 * 1000; // 5 Minuten

if (timestamp && now - parseInt(timestamp) > maxAge) {
return res.status(401).json({ error: "Webhook timestamp expired" });
}

next();
}
tipp

Für Produktionssetups verwenden Sie ein Tool wie ngrok oder Cloudflare Tunnel, um Ihren lokalen Webhook-Endpunkt für das Internet zugänglich zu machen. Dadurch können externe Dienste wie GitHub, Slack oder Jira Ihre lokale Cursor-Instanz erreichen.

Slack-Integration​

Slack ist eine der häufigsten Trigger-Quellen für Grok Bot-Routinen. Sie können Slack so konfigurieren, dass es Nachrichten an Cursor sendet, wenn bestimmte Ereignisse auftreten.

Einrichten eines Slack-Triggers​

  1. Gehen Sie zur Slack API-Anwendungsseite
  2. Klicken Sie auf Create New App und wählen Sie From scratch
  3. Nennen Sie die App „Cursor Grok Bot" und wählen Sie Ihren Workspace
  4. Aktivieren Sie unter Event Subscriptions die Ereignisse
  5. Geben Sie Ihre Cursor-Webhook-URL als Request-URL ein
  6. Abonnieren Sie die Bot-Ereignisse message.channels und reaction_added
  7. Fügen Sie unter OAuth & Permissions die Bereiche chat:write und channels:read hinzu
  8. Installieren Sie die App in Ihrem Workspace und kopieren Sie das Bot User OAuth Token
// Beispiel: Slack-Trigger-Handler in einer Grok Bot-Routine
const slackTrigger = {
type: "slack",
events: ["message.channels"],
conditions: {
// Nur auslösen, wenn die Nachricht @cursor-bot erwähnt
mentions_bot: true,
// Nur in bestimmten Kanälen auslösen
channels: ["#code-review", "#bug-reports", "#deployments"],
// Nachrichten vom Bot selbst ignorieren
ignore_bots: true,
},
};

Antworten an Slack senden​

Wenn eine Routine abgeschlossen ist, können Sie das Ergebnis an den ursprünglichen Slack-Kanal zurücksenden:

const { WebClient } = require("@slack/web-api");

const slack = new WebClient(process.env.SLACK_BOT_TOKEN);

async function replyToSlack(channel, text) {
await slack.chat.postMessage({
channel: channel,
text: text,
// Optional: als Slack Block Kit-Nachricht formatieren
blocks: [
{
type: "section",
text: {
type: "mrkdwn",
text: text,
},
},
{
type: "divider",
},
{
type: "context",
elements: [
{
type: "mrkdwn",
text: ":robot_face: Generated by Cursor Grok Bot",
},
],
},
],
});
}
warnung

Wenn Ihr Slack-Trigger nicht auslöst, überprüfen Sie folgende häufige Ursachen:

  1. Die Slack-App ist nicht bei den richtigen Ereignistypen abonniert
  2. Der Bot-Benutzer hat keine Berechtigung, den Zielkanal zu lesen
  3. Die Webhook-URL ist falsch oder aus dem Internet nicht erreichbar
  4. Der X-Webhook-Secret-Header stimmt nicht mit dem erwarteten Wert überein
  5. der Bedingungsfilter in Ihrer Routine stimmt nicht mit der eingehenden Nachricht überein

Slack wiederholt fehlgeschlagene Webhook-Zustellungen standardmäßig nicht. Wenn Ihr Endpunkt eine Nicht-200-Antwort zurückgibt, wird das Ereignis stillschweigend verworfen. Überprüfen Sie immer die Slack-API-Protokolle auf Zustellungsfehler.

Trigger-Konfiguration​

Grok Bot unterstützt mehrere Triggertypen über Webhooks und Slack hinaus. Das Verständnis jedes Triggertyps hilft Ihnen, den richtigen für Ihren Anwendungsfall zu wählen.

Verfügbare Triggertypen​

TriggertypBeschreibungAnwendungsfall
WebhookHTTP-POST-Anfrage von einem externen DienstGitHub-Ereignisse, Jira-Updates, CI/CD-Pipelines
SlackSlack-Nachrichten oder -ReaktionenTeam-Benachrichtigungen, Code-Review-Anfragen
ScheduleZeitbasierter Trigger (Cron-Ausdruck)Periodische Prüfungen, nächtliche Zusammenfassungen
File WatchWird ausgelöst, wenn sich eine Datei auf der Festplatte ändertAuto-Formatierung, Auto-Test beim Speichern
ManualDurch Tastenkürzel oder Befehl ausgelöstOn-Demand-Code-Analyse

Beispiel für einen zeitplanbasierten Trigger​

name: "Nightly Dependency Audit"
description: "Check for outdated dependencies every night at 2 AM"
trigger:
type: schedule
cron: "0 2 * * *"
actions:
- type: terminal_command
command: "npm audit --json"
- type: analyze
prompt: "Analyze these npm audit results and summarize the critical vulnerabilities."
- type: slack_reply
channel: "#security-alerts"
message: "{{analysis_result}}"

Beispiel für einen Dateiüberwachungs-Trigger​

name: "Auto-Format on Save"
description: "Run formatter whenever a TypeScript file is saved"
trigger:
type: file_watch
patterns:
- "**/*.ts"
- "**/*.tsx"
events: ["save"]
actions:
- type: terminal_command
command: "npx prettier --write {{file_path}}"
- type: terminal_command
command: "npx eslint --fix {{file_path}}"
tipp

Dateiüberwachungs-Trigger können bei häufigem Speichern viel Lärm verursachen. Fügen Sie eine Entprellperiode zur Trigger-Konfiguration hinzu, um schnelle Speichervorgänge in einer einzigen Ausführung zu bündeln. Dies verhindert, dass der Bot mehrere überlappende Routinen für dieselbe Datei ausführt.

Routinen bearbeiten​

Routinen werden als YAML-Konfigurationsdateien gespeichert und können direkt oder über den visuellen Editor in Cursor bearbeitet werden.

Den visuellen Editor verwenden​

Der visuelle Editor im Automations-Bedienfeld bietet eine Drag-and-Drop-Oberfläche zum Erstellen von Routinen:

  1. Ziehen Sie Aktionsblöcke aus der Palette links
  2. Ordnen Sie sie in der gewünschten Reihenfolge an
  3. Klicken Sie auf jeden Block, um seine Parameter zu konfigurieren
  4. Verwenden Sie die Test-Schaltfläche, um die Routine mit Beispieleingabe auszuführen
  5. Speichern Sie die Routine, um sie zu aktivieren

YAML direkt bearbeiten​

Für mehr Kontrolle können Sie die Routinen-YAML-Datei direkt bearbeiten. Routinen-Dateien werden im Verzeichnis .cursor/automations/ gespeichert:

# Alle Routinen auflisten
ls -la .cursor/automations/

# Eine bestimmte Routine bearbeiten
code .cursor/automations/nightly-audit.yaml
# .cursor/automations/code-review-bot.yaml
name: "Smart Code Review Bot"
description: "Analyzes changed files and posts a review comment"
trigger:
type: webhook
filter:
event: "pull_request.opened"
actions:
- type: parse_payload
extract:
pr_number: "$.pull_request.number"
changed_files: "$.pull_request.changed_files"
repo: "$.repository.full_name"

- type: loop
over: "{{changed_files}}"
actions:
- type: read_file
path: "{{item}}"
- type: analyze
prompt: |
Review this file for:
1. Security vulnerabilities
2. Performance issues
3. Code style violations
4. Missing error handling

- type: format_output
template: |
## Automated Code Review

{{#each results}}
### {{this.file}}
{{this.review}}
{{/each}}

- type: webhook_response
status: 200
body: "{{formatted_output}}"
warnung

Wenn Sie Routinen-YAML-Dateien direkt bearbeiten, validieren Sie immer die Syntax vor dem Speichern. Eine fehlerhafte YAML-Datei führt dazu, dass die Routine stillschweigend fehlschlägt. Verwenden Sie cursor.automations.validate in der Befehlspalette, um alle Routinen zu prüfen.

Automatisierungs-Workflows​

Die Kombination mehrerer Routinen erstellt leistungsstarke Automatisierungs-Workflows, die Ihre gesamte Entwicklungspipeline verbinden.

Workflow-Beispiel: PR-Lebenszyklus-Automatisierung​

Dieser Workflow automatisiert den gesamten Pull-Request-Lebenszyklus:

# Routine 1: PR geöffnet - Erstanalyse
name: "PR Initial Analysis"
trigger:
type: webhook
filter:
event: "pull_request.opened"
actions:
- type: analyze
prompt: "Summarize this PR and identify the main changes."
- type: slack_reply
channel: "#pr-updates"
message: "New PR: {{pr_title}}\nSummary: {{analysis_result}}"

---

# Routine 2: PR Review-Anfrage - Tiefenanalyse
name: "PR Deep Analysis"
trigger:
type: slack
conditions:
mentions_bot: true
contains_keyword: "deep-review"
actions:
- type: analyze
prompt: "Perform a comprehensive code review including security, performance, and architecture."
- type: slack_reply
channel: "{{trigger_channel}}"
message: "{{analysis_result}}"

---

# Routine 3: PR zusammengeführt - Dokumentationsaktualisierung
name: "PR Merged - Update Docs"
trigger:
type: webhook
filter:
event: "pull_request.closed"
merged: true
actions:
- type: analyze
prompt: "Update the README and CHANGELOG based on the merged changes."
- type: terminal_command
command: "git add README.md CHANGELOG.md && git commit -m 'docs: update for PR #{{pr_number}}'"

Workflow-Beispiel: Vorfallreaktion​

name: "Incident Response Bot"
description: "When an error alert is posted to Slack, analyze and suggest fixes"
trigger:
type: slack
channels: ["#alerts", "#incidents"]
conditions:
contains_keyword: "ERROR"
actions:
- type: parse_message
extract:
error_text: "regex:ERROR:\\s*(.+)"
stack_trace: "regex:at\\s+(.+)"

- type: search_codebase
query: "{{error_text}}"

- type: analyze
prompt: |
An error has occurred. Here is the error message and the relevant code.
Suggest a fix and explain the root cause.
Error: {{error_text}}
Stack trace: {{stack_trace}}
Relevant file: {{search_result}}

- type: slack_reply
channel: "{{trigger_channel}}"
message: |
:rotating_light: *Automated Analysis*
*Likely cause:* {{analysis_result.cause}}
*Suggested fix:* {{analysis_result.fix}}
*File to check:* {{search_result}}
tipp

Bauen Sie Ihre Workflows schrittweise auf. Beginnen Sie mit einer einfachen Benachrichtigungsroutine, testen Sie sie gründlich, und fügen Sie dann komplexere Aktionen hinzu. Dies erleichtert die Identifizierung des fehlerhaften Schritts, wenn etwas schiefgeht.

Fehlerbehebung​

Webhook-URL wird nicht angezeigt​

Dies ist das am häufigsten gemeldete Problem. Beim Erstellen einer webhook-getriggerten Routine kann das POST-URL-Feld leer erscheinen.

Ursache: Die Routine wurde gespeichert, bevor der Triggertyp festgelegt wurde, oder die Routine wurde nur teilweise gespeichert.

Lösung:

  1. Löschen Sie die Routine und erstellen Sie eine neue
  2. Setzen Sie den Triggertyp auf „Webhook", bevor Sie andere Details eingeben
  3. Klicken Sie auf Save und warten Sie, bis die URL generiert wird
  4. Wenn die URL immer noch nicht erscheint, prüfen Sie das Cursor-Ausgabepanel auf Fehler (View > Output > Cursor Automations)
  5. Als Workaround können Sie die URL manuell mit der Routinen-ID aus der YAML-Datei konstruieren:
http://localhost:7541/webhooks/routines/{ROUTINE_ID}

Slack-Trigger lösen nicht aus​

Wenn Ihre Slack-Trigger nicht auf Nachrichten reagieren:

  1. Stellen Sie sicher, dass die Slack-App in Ihrem Workspace installiert ist
  2. Prüfen Sie, ob die Event-Subscription-URL erreichbar ist (verwenden Sie die Slack-API-Verifizierungsfunktion)
  3. Bestätigen Sie, dass der Bot-Benutzer in den Zielkanal eingeladen wurde (/invite @cursor-grok-bot)
  4. Überprüfen Sie, ob die Routinenbedingungen nicht zu restriktiv sind
  5. Sehen Sie sich das Cursor-Automations-Protokoll für eingehende Ereignisse an:
# Automatisierungsprotokoll anzeigen
cat .cursor/automations/logs/automation.log | tail -100

# Nach Slack-Ereignissen filtern
grep "slack" .cursor/automations/logs/automation.log
warnung

Slack hat ein 3-Sekunden-Timeout für die Event-Subscription-URL-Verifizierung. Wenn Cursor länger als 3 Sekunden braucht, um auf die anfängliche Verifizierungsanfrage zu antworten, wird Slack die URL ablehnen. Stellen Sie sicher, dass Cursor läuft und reaktionsfähig ist, wenn Sie das Event-Abonnement im Slack-API-Dashboard konfigurieren.

Routinen-Bearbeitungsprobleme​

Wenn Sie eine Routine nicht speichern oder bearbeiten können:

  1. Prüfen Sie mit der Befehlspalette, ob die YAML-Datei gültig ist
  2. Stellen Sie sicher, dass kein anderer Prozess die Routinendatei gesperrt hat
  3. Verifizieren Sie, dass Sie Schreibberechtigungen im Verzeichnis .cursor/automations/ haben
  4. Versuchen Sie, das Verzeichnis .cursor/automations/cache/ zu löschen, um eine Aktualisierung zu erzwingen
  5. Starten Sie Cursor neu, wenn der visuelle Editor nicht mehr reagiert

Debugging der Routinenausführung​

Aktivieren Sie die Debug-Protokollierung, um detaillierte Informationen über die Routinenausführung zu sehen:

// In settings.json
{
"cursor.grokBot.debug": true,
"cursor.grokBot.logLevel": "verbose"
}
# Debug-Protokolle in Echtzeit anzeigen
tail -f .cursor/automations/logs/automation.log

# Nach einer bestimmten Routine filtern
grep "routine_id: rtn_abc123" .cursor/automations/logs/automation.log

Best Practices​

  • Einfach beginnen: Starten Sie mit einer grundlegenden Benachrichtigungsroutine, bevor Sie komplexe Workflows erstellen
  • Mit Beispieleingabe testen: Verwenden Sie die Test-Schaltfläche im visuellen Editor, bevor Sie eine Routine aktivieren
  • Bedingungen sinnvoll verwenden: Fügen Sie Bedingungsfilter hinzu, um zu verhindern, dass Routinen bei jeder Nachricht oder jedem Ereignis auslösen
  • Ausführungszeit überwachen: Lange laufende Routinen können die Ausführung anderer Routinen blockieren. Setzen Sie ein Timeout.
  • Routinen versionieren: Speichern Sie Routinen-YAML-Dateien in Ihrem Git-Repository für die Teamzusammenarbeit
  • Workflows dokumentieren: Fügen Sie jeder Routine klare Beschreibungen hinzu, damit Teammitglieder ihren Zweck verstehen
  • Webhook-Geheimnisse rotieren: Generieren Sie Ihr Webhook-Geheimnis regelmäßig neu für die Sicherheit
  • Umgebungsvariablen verwenden: Referenzieren Sie sensible Werte über Umgebungsvariablen, anstatt sie im YAML fest zu hinterlegen
tipp

Erstellen Sie ein gemeinsames Routinen-Repository, auf das Ihr Team verweisen kann. Jedes Teammitglied kann die Routinen abonnieren, die es benötigt, und Updates werden automatisch abgerufen, wenn das Repository gepullt wird. Dies fördert die Konsistenz im Team.

Fazit​

Grok Bot in Cursor bietet eine flexible Automatisierungsschicht, die Ihren Editor über Webhook-Routinen und Slack-Trigger mit externen Diensten verbindet. Indem Sie den Einrichtungsschritten in diesem Leitfaden folgen und häufige Fehlerbehebungsszenarien behandeln, können Sie robuste Automatisierungs-Workflows erstellen, die Zeit sparen und manuellen Aufwand reduzieren.

Das Wichtigste, woran Sie sich erinnern sollten: Validieren Sie immer Webhook-Anfragen, setzen Sie den Triggertyp vor dem Speichern einer Routine und testen Sie gründlich mit den integrierten Test-Tools, bevor Sie Routinen in der Produktion aktivieren. Mit diesen Praktiken wird Grok Bot ein zuverlässiger Teil Ihres Entwicklungs-Toolkits.