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:startedoderalready_runningextensionPath: Pfad zur entpackten ErweiterungextensionVersion: installierte Version
Schritt 2: Erweiterungsübergabe
otto setup liefert den Pfad zur entpackten Erweiterung. Geben Sie dem Menschen folgende Anweisungen:
- Öffnen Sie
chrome://extensionsin Chrome. - Aktivieren Sie den Entwicklermodus (Schalter oben rechts).
- Klicken Sie auf Entpackte Erweiterung laden und wählen Sie den Erweiterungspfad aus der Setup-Ausgabe.
- Öffnen Sie das Erweiterungs-Popup.
- 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 Optionen → Kopplung 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:
- Öffnen Sie das Erweiterungs-Popup.
- Navigieren Sie zu Controller-Zugriff.
- 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:
- Sagen Sie dem Menschen: Die Site erfordert eine Anmeldung, bevor dieser Befehl ausgeführt werden kann.
- Bitten Sie ihn, sich auf der Site im geöffneten Browser-Tab anzumelden.
- Führen Sie den Befehl nach Bestätigung mit derselben
--tab-sessionerneut 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_ORIGINentsprechend dem Erweiterungsursprung in der Produktion. - Verwenden Sie
wss://undhttps://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
- Für Agenten — Einschränkungen, Entscheidungsfluss und Referenz zur Fehlerbehandlung.
- MCP-Server — MCP-Server-Dokumentation und Werkzeugliste.
- Agent-Setup — Otto bei Agent-Frameworks registrieren.
- Controller-Implementierungsleitfaden — WebSocket-Controller-Integration.
- Anwendungsfälle — ausführbare Beispiele für gängige Automatisierungsmuster.
- Erweiterte Fehlerbehebung — Stream- und Routing-Diagnostik.
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
otto_statusaufrufen, um zu prüfen, ob das Relay läuft.otto_commands_listaufrufen, um verfügbare Befehle zu entdecken.otto_cmdmitaction: "primitive.tab.open"aufrufen, um einen Tab zu öffnen.otto_cmdmitaction: "command.run"aufrufen, um Site-Befehle auszuführen.manual_login_requiredbehandeln, indem der Benutzer zur Anmeldung aufgefordert wird.acl_missing_node_grantbehandeln, 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\"}" } }