Zum Hauptinhalt springen

Automatisierungsleitfaden

Dies ist das vollständige Runbook für KI-Agenten und Automatisierungssysteme, die Otto programmatisch bedienen. Lesen Sie vor dem Start Für Agenten für Einschränkungen und Entscheidungsfluss.

Voraussetzungen

  • Node.js 18+ und npm
  • Google Chrome installiert
  • Netzwerkzugriff zwischen Relay, Browser-Node und Controller

Schritt 1: Installieren und einrichten

npm install -g @telepat/otto
otto setup --relay-url http://localhost:8787 --non-interactive

Parsen Sie die JSON-Ausgabe auf:

  • daemonStatus: started oder already_running
  • extensionPath: Pfad zur entpackten Erweiterung
  • extensionVersion: installierte Version

Schritt 2: Erweiterungsübergabe

otto setup liefert den Pfad zur entpackten Erweiterung. Geben Sie dem Menschen folgende Anweisungen:

  1. Öffnen Sie chrome://extensions in Chrome.
  2. Aktivieren Sie den Entwicklermodus (Schalter oben rechts).
  3. Klicken Sie auf Entpackte Erweiterung laden und wählen Sie den Erweiterungspfad aus der Setup-Ausgabe.
  4. Öffnen Sie das Erweiterungs-Popup.
  5. Setzen Sie die Relay-URL auf http://localhost:8787 (oder Ihre Relay-URL).

Bei entfernten Relay-Bereitstellungen muss der Relay-Endpunkt sowohl vom Browser-Node als auch vom Controller erreichbar sein. Verwenden Sie https:///wss:// für entfernten Verkehr.

Schritt 3: Kopplung

# Authcode für den Node generieren
otto authcode

# Nachdem der Benutzer den Code im Erweiterungs-Popup eingegeben hat, genehmigen:
otto pair <code>

Wenn der Benutzer das Kopplungscode-Feld im Erweiterungs-Popup nicht finden kann, führen Sie ihn zu OptionenKopplung in der Erweiterung.

Schritt 4: Controller registrieren und authentifizieren

otto client register --name "agent-worker" --description "Autonomer Otto-Controller" --json
otto client login --client-id <clientId>

Secret-Behandlung:

  • Speichern Sie das zurückgegebene Client-Secret in einer Umgebungsvariable oder einem Schlüsselbund.
  • Geben Sie es niemals in geteilten Protokollen aus.
  • Übergeben Sie es außerhalb des Bandes für externe Controller.

Schritt 5: ACL-Genehmigung

Wenn Befehle acl_missing_node_grant zurückgeben, muss der Benutzer Zugriff gewähren:

  1. Öffnen Sie das Erweiterungs-Popup.
  2. Navigieren Sie zu Controller-Zugriff.
  3. Genehmigen Sie den Controller-Client.

Versuchen Sie nach der Genehmigung den fehlgeschlagenen Befehl erneut.

Schritt 6: Gesamten Stack verifizieren

otto commands list --json

Eine erfolgreiche Antwort bestätigt, dass Relay, Node, Controller und ACL alle betriebsbereit sind.

Schritt 7: Befehle ausführen

# Verwalteten Tab öffnen
otto cmd --action primitive.tab.open --payload '{"url":"https://www.reddit.com"}'

# Site-Befehl mit der zurückgegebenen tabSessionId ausführen
otto cmd --action command.run \
--tab-session <tabSessionId> \
--payload '{"site":"reddit.com","command":"getPosts"}'

# Mit otto test für stream-fähige Befehle ausführen
otto test reddit.com getChatMessages --stream-follow-ms 30000 --json

Umgang mit manual_login_required

Wenn ein Befehl manual_login_required zurückgibt:

  1. Sagen Sie dem Menschen: Die Site erfordert eine Anmeldung, bevor dieser Befehl ausgeführt werden kann.
  2. Bitten Sie ihn, sich auf der Site im geöffneten Browser-Tab anzumelden.
  3. Führen Sie den Befehl nach Bestätigung mit derselben --tab-session erneut aus.

Versuchen Sie nicht, die Eingabe von Anmeldeinformationen zu automatisieren. Dieses Verhalten ist beabsichtigt und nicht verhandelbar.

Fehler korrelieren

Jede Befehlsantwort enthält eine requestId. Verwenden Sie sie, um korrelierte Protokolle abzurufen:

otto logs list --request-id <requestId> --source all --latest 100 --json

Für erweiterungsspezifische Probleme:

otto logs list --source node --latest 50 --json

Für Live-Debugging:

otto logs follow --source all --json

Multi-Machine-Bereitstellungen

Wenn Relay, Browser-Node und Controller auf verschiedenen Maschinen sind:

  • Der Relay-Endpunkt muss sowohl vom Node- als auch vom Controller-Netzwerkpfad erreichbar sein.
  • Konfigurieren Sie OTTO_EXTENSION_ORIGIN entsprechend dem Erweiterungsursprung in der Produktion.
  • Verwenden Sie wss:// und https:// für entfernte Bereitstellungen.
  • Firewall-Regeln müssen WebSocket-Upgrades auf dem Relay-Port erlauben.

Sicherheitsgrenzen

  • Niemals Anmeldeinformationen automatisieren — immer explizite manual_login_required-Übergabe verwenden.
  • Niemals OTTO_TOKEN_SECRET, Client-Secrets oder Node-Token in Protokollen oder Ausgaben offenlegen.
  • Überprüfen, dass ACL-Grants node-eigen sind; nicht versuchen, ACL-Status direkt zu injizieren.
  • Payloads begrenzt halten — nicht unbegrenzt schleifen oder unbegrenzte Stream-Daten erfassen.

Verwandte Seiten

MCP-Server-Nutzung

Für Agenten, die Otto über MCP statt CLI-Befehle verwenden:

MCP-Server starten

otto mcp

Bei Agent-Framework registrieren

otto agent install claude  # oder cursor, vscode usw.

MCP-Workflow

  1. otto_status aufrufen, um zu prüfen, ob das Relay läuft.
  2. otto_commands_list aufrufen, um verfügbare Befehle zu entdecken.
  3. otto_cmd mit action: "primitive.tab.open" aufrufen, um einen Tab zu öffnen.
  4. otto_cmd mit action: "command.run" aufrufen, um Site-Befehle auszuführen.
  5. manual_login_required behandeln, indem der Benutzer zur Anmeldung aufgefordert wird.
  6. acl_missing_node_grant behandeln, indem der Benutzer zur Zugriffsgenehmigung aufgefordert wird.

Beispiel-MCP-Werkzeugaufrufe

Status prüfen:

{ "name": "otto_status", "arguments": {} }

Befehle auflisten:

{ "name": "otto_commands_list", "arguments": { "nodeId": "node_123" } }

Tab öffnen:

{ "name": "otto_cmd", "arguments": { "action": "primitive.tab.open", "payload": "{\"url\":\"https://www.reddit.com\"}" } }

Site-Befehl ausführen:

{ "name": "otto_cmd", "arguments": { "action": "command.run", "tabSession": "tab_abc", "payload": "{\"site\":\"reddit.com\",\"command\":\"getPosts\"}" } }