Starten einer nicht-interaktiven Sitzung

Nicht-interaktive Sitzungen bieten eine Methode zur Verwendung von Bob Shell direkt von der Befehlszeile aus, ohne eine interaktive Sitzung zu starten. Geeignet für Automatisierung, Skripting und Stapelverarbeitungsaufgaben.

Wann eine nicht-interaktive Sitzung sinnvoll ist

Nicht-interaktive Sitzungen eignen sich am besten für:

  • Integration von Bob Shell in Automatisierungsskripte.
  • Verarbeitung mehrerer Dateien mit einem einzelnen Befehl.
  • Schnelle Erkenntnisse ohne Start einer interaktiven Sitzung.
  • Generierung von Dokumentation aus Code.
  • CI/CD-Pipelines, die strukturierte JSON-Ausgabe benötigen.

Nicht-interaktive Sitzung starten

Verwende den Unterbefehl bob run, um Bob Shell nicht-interaktiv von der Befehlszeile aus auszuführen.

Syntax

bob run [options] [prompt...]

Du kannst auch einen Prompt über stdin übergeben:

echo "Explain this project" | bob run

Tipps für effektive Nutzung

  • Sei bei der Verarbeitung großer Dateien oder Projekte spezifisch, welche Dateien analysiert werden sollen.
  • Verwende --format json oder --format stream-json für zuverlässiges Parsing in Skripten.
  • Verwende --max-cost und --max-turns, um die Ressourcennutzung in automatisierten Workflows zu begrenzen.
  • Für mehrzeilige Prompts speichere sie in einer Datei und übergebe sie an bob run:
cat prompt.txt | bob run

Grundlegende Verwendung

Prompt direkt ausführen

bob run "Explain this project"

Inhalt als Eingabe übergeben

Du kannst Textinhalt an Bob Shell übergeben:

cat buildError.txt | bob run "Explain this build error"

Ergebnisse in eine Datei speichern

Leite die Ausgabe um, um Ergebnisse zu speichern:

bob run "Review @bigFile.java" > review.md

Projektdateien referenzieren

Verwende das Symbol @, um auf Dateien in deinem Projekt zu verweisen:

bob run "Summarize the functionality in @src/main.js"

Kosten- und Rundenlimits setzen

bob run --max-cost 0.50 --max-turns 10 "Refactor @app.js"

Sitzungsverwaltung

Vorherige Sitzung fortsetzen

bob run --resume <task-id> "Continue from where we left off"
bob run --resume latest "Keep going"

Allgemeine Utility-Flags

Einige Flags werden direkt mit bob aufgerufen, nicht mit bob run oder bob chat. Um gespeicherte Aufgaben aufzulisten, führe folgenden Befehl aus:

bob --list-tasks

Die folgenden Flags sind verfügbar:

FlagBeschreibung
--list-tasks [n|all]Gespeicherte Aufgaben für den aktuellen Workspace auflisten und beenden. Standardmäßig 20. Übergib eine Zahl oder all, um zu steuern, wie viele angezeigt werden.
--limit <n>Maximale Anzahl der mit --list-tasks anzuzeigenden Aufgaben.
--show-licenseDie IBM-Lizenzvereinbarung anzeigen und beenden.

Maschinenlesbarer Output

Wenn stdout kein TTY ist — zum Beispiel beim Pipen oder Umleiten der Ausgabe — wechselt --list-tasks von einer menschenlesbaren Tabelle zu NDJSON, mit einem JSON-Objekt pro Zeile.

Jede Zeile hat folgende Form:

{"id":"<uuid>","title":"<string>","status":"<string>","workspace":"<file-uri>","updatedAt":<unix-ms>}
FeldTypBeschreibung
idstring (UUID)Eindeutige Aufgaben-ID, verwendbar mit --resume
titlestringAufgabentitel, fällt zurück auf erste Nachricht, dann id
statusstringAufgabenstatus (active, completed, paused)
workspacestring (file URI)Absoluter Workspace-Pfad als file:-URI
updatedAtnumberZeitstempel der letzten Aktualisierung in Unix-Millisekunden

Beispiele

# In jq pipen
bob --list-tasks all | jq '.id'

# In Datei speichern und dann verarbeiten
bob --list-tasks 100 > tasks.ndjson

# Lizenzvereinbarung anzeigen
bob --show-license

Ausgabeformate

Die Option --format steuert, wie bob run seine Ausgabe schreibt. Verwende diese Option beim Erfassen der Ausgabe für Skripte oder CI-Pipelines.

pretty (Standard)

Für Menschen lesbarer Textoutput, geeignet für die Terminalanzeige.

json

Gibt nach Abschluss der Sitzung ein einzelnes JSON-Objekt aus. Verwende dieses Format, um das vollständige Ergebnis für die programmatische Verarbeitung zu erfassen.

Schema:

FeldTypBeschreibung
typestringImmer "result"
timestampstringISO 8601 (Datums-Zeit-Standard) Abschluss-Zeitstempel
statusstring"success" oder "error"
statsobjectSitzungsstatistiken — siehe Felder unten
stats.task_idstringEindeutiger Bezeichner für die abgeschlossene Aufgabe
stats.total_tokensnumberGesamt verwendete Tokens
stats.input_tokensnumberVerwendete Eingabe-Tokens
stats.output_tokensnumberErzeugte Ausgabe-Tokens
stats.cache_read_tokensnumberAus dem Cache gelesene Tokens
stats.cache_write_tokensnumberIn den Cache geschriebene Tokens
stats.cache_rationumberCache-Trefferquote
stats.duration_msnumberSitzungsdauer in Millisekunden
stats.session_costsnumberGesamtkosten der Sitzung
stats.tool_callsnumberAnzahl der getätigten Tool-Aufrufe
last_messagestringLetzte Assistenten-Nachricht

Beispiel:

bob run --format json "What is the entry point?" > result.json

stream-json

Gibt newline-delimited JSON (NDJSON) aus — ein Event-Objekt pro Zeile — während die Sitzung voranschreitet. Verwende dieses Format, um die Ausgabe in eine Pipeline zu streamen oder Events in Echtzeit zu verarbeiten.

Event-Typen:

Event-TypSchlüsselfelderBeschreibung
messagerole, content, isReasoning?Eine Benutzer- oder Assistenten-Nachricht
tool_usetool_name, tool_id, parametersEin von Bob initiierter Tool-Aufruf
tool_resulttool_id, status, output?, error?Das von einem Tool zurückgegebene Ergebnis
errorseverity, messageKosten-/Rundenlimit erreicht
resultstatus, stats, last_messageAbschließende Zusammenfassung, die beim Beenden der Sitzung ausgegeben wird

Pipeline-Beispiel:

bob run --format stream-json "Audit @src/" \
  | grep '"type":"result"' \
  | jq '.last_message'
Hinweis:

Bei der nicht-interaktiven Ausführung mit bob run sind alle Tools vorab genehmigt. Du wirst während der Ausführung nicht zur Genehmigung von Tool-Aufrufen aufgefordert.

Optionen

OptionBeschreibung
--format <format>Ausgabeformat: pretty (Standard), json oder stream-json
--mode <mode>Startmodus (z. B. agent, plan, ask)
--max-cost <bobcoins>Maximale Ausgabe in Bobcoins, bevor die Sitzung stoppt
--max-turns <n>Maximale Anzahl agentischer Runden, bevor die Sitzung stoppt
--disable-mcpAlle MCP-Server für diese Sitzung deaktivieren
--disable-subagentsSubagenten-Erzeugung für diese Sitzung deaktivieren
--disable-tool-groups <groups>Bestimmte Tool-Gruppen deaktivieren (kommagetrennt, z. B. execute,mcp)
--workspace <path>Das Workspace-Stammverzeichnis überschreiben
--log-level <level>Protokoll-Ausführlichkeit: error, warn, info, debug oder trace
--resume <task-id>Eine vorherige Aufgabe anhand der Task-ID fortsetzen
--resume latestDie zuletzt bearbeitete Aufgabe fortsetzen
--team-id <id>Unter einem bestimmten Team-Kontext ausführen (erforderlich bei Verwendung eines API-Schlüssels vom Typ general)
--trustDen aktuellen Ordner als vertrauenswürdig markieren
--accept-licenseDie IBM-Lizenzvereinbarung akzeptieren und ohne Aufforderung fortfahren
Wie ist dieses Thema?