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 runTipps für effektive Nutzung
- Sei bei der Verarbeitung großer Dateien oder Projekte spezifisch, welche Dateien analysiert werden sollen.
- Verwende
--format jsonoder--format stream-jsonfür zuverlässiges Parsing in Skripten. - Verwende
--max-costund--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 runGrundlegende 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.mdProjektdateien 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-tasksDie folgenden Flags sind verfügbar:
| Flag | Beschreibung |
|---|---|
--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-license | Die 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>}| Feld | Typ | Beschreibung |
|---|---|---|
id | string (UUID) | Eindeutige Aufgaben-ID, verwendbar mit --resume |
title | string | Aufgabentitel, fällt zurück auf erste Nachricht, dann id |
status | string | Aufgabenstatus (active, completed, paused) |
workspace | string (file URI) | Absoluter Workspace-Pfad als file:-URI |
updatedAt | number | Zeitstempel 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-licenseAusgabeformate
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:
| Feld | Typ | Beschreibung |
|---|---|---|
type | string | Immer "result" |
timestamp | string | ISO 8601 (Datums-Zeit-Standard) Abschluss-Zeitstempel |
status | string | "success" oder "error" |
stats | object | Sitzungsstatistiken — siehe Felder unten |
stats.task_id | string | Eindeutiger Bezeichner für die abgeschlossene Aufgabe |
stats.total_tokens | number | Gesamt verwendete Tokens |
stats.input_tokens | number | Verwendete Eingabe-Tokens |
stats.output_tokens | number | Erzeugte Ausgabe-Tokens |
stats.cache_read_tokens | number | Aus dem Cache gelesene Tokens |
stats.cache_write_tokens | number | In den Cache geschriebene Tokens |
stats.cache_ratio | number | Cache-Trefferquote |
stats.duration_ms | number | Sitzungsdauer in Millisekunden |
stats.session_costs | number | Gesamtkosten der Sitzung |
stats.tool_calls | number | Anzahl der getätigten Tool-Aufrufe |
last_message | string | Letzte Assistenten-Nachricht |
Beispiel:
bob run --format json "What is the entry point?" > result.jsonstream-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-Typ | Schlüsselfelder | Beschreibung |
|---|---|---|
message | role, content, isReasoning? | Eine Benutzer- oder Assistenten-Nachricht |
tool_use | tool_name, tool_id, parameters | Ein von Bob initiierter Tool-Aufruf |
tool_result | tool_id, status, output?, error? | Das von einem Tool zurückgegebene Ergebnis |
error | severity, message | Kosten-/Rundenlimit erreicht |
result | status, stats, last_message | Abschließende Zusammenfassung, die beim Beenden der Sitzung ausgegeben wird |
Pipeline-Beispiel:
bob run --format stream-json "Audit @src/" \
| grep '"type":"result"' \
| jq '.last_message'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
| Option | Beschreibung |
|---|---|
--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-mcp | Alle MCP-Server für diese Sitzung deaktivieren |
--disable-subagents | Subagenten-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 latest | Die zuletzt bearbeitete Aufgabe fortsetzen |
--team-id <id> | Unter einem bestimmten Team-Kontext ausführen (erforderlich bei Verwendung eines API-Schlüssels vom Typ general) |
--trust | Den aktuellen Ordner als vertrauenswürdig markieren |
--accept-license | Die IBM-Lizenzvereinbarung akzeptieren und ohne Aufforderung fortfahren |
Starten einer interaktiven Sitzung
Interaktive Sitzungen bieten eine Konversationsschnittstelle zu Bob direkt in deinem Terminal und ermöglichen Echtzeitunterstützung bei deinen Entwicklungsaufgaben.
Anwendungsbeispiele
Praktische Beispiele zur Verwendung von Bob Shell für Debugging, Code-Verbesserung, Dateierstellung, Dokumentationsgenerierung und das Erlernen neuer Konzepte.