Uruchamianie sesji nieinteraktywnej

Sesje nieinteraktywne umożliwiają korzystanie z Bob Shell bezpośrednio z wiersza poleceń bez wchodzenia w sesję interaktywną. Użyj do automatyzacji, skryptów i zadań wsadowych.

Kiedy używać sesji nieinteraktywnej

Sesje nieinteraktywne sprawdzają się najlepiej w przypadku:

  • Integracji Bob Shell ze skryptami automatyzacji.
  • Przetwarzania wielu plików za pomocą jednego polecenia.
  • Szybkiego uzyskiwania informacji bez uruchamiania sesji interaktywnej.
  • Generowania dokumentacji z kodu.
  • Pipeline'ów CI/CD wymagających strukturalnego wyjścia JSON.

Uruchamianie sesji nieinteraktywnej

Użyj podpolecenia bob run, aby uruchomić Bob Shell nieinteraktywnie z wiersza poleceń.

Składnia

bob run [options] [prompt...]

Możesz też przesłać zapytanie przez stdin:

echo "Explain this project" | bob run

Wskazówki dotyczące efektywnego użycia

  • Podczas przetwarzania dużych plików lub projektów bądź precyzyjny co do tego, które pliki analizować.
  • Używaj --format json lub --format stream-json do niezawodnego parsowania w skryptach.
  • Używaj --max-cost i --max-turns, aby ograniczyć zużycie zasobów w zautomatyzowanych workflow'ach.
  • W przypadku wieloliniowych zapytań zapisz je do pliku i prześlij strumieniowo do bob run:
cat prompt.txt | bob run

Podstawowe użycie

Uruchamianie zapytania bezpośrednio

bob run "Explain this project"

Przesyłanie treści jako danych wejściowych

Możesz przesłać strumieniowo treść tekstową do Bob Shell:

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

Zapisywanie wyników do pliku

Przekieruj wyjście, aby zapisać wyniki:

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

Odwoływanie się do plików projektu

Użyj symbolu @, aby odwołać się do plików w swoim projekcie:

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

Ustawianie limitów kosztu i tur

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

Zarządzanie sesją

Wznawianie poprzedniej sesji

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

Ogólne flagi narzędziowe

Niektóre flagi są wywoływane bezpośrednio za pomocą bob, a nie bob run lub bob chat. Aby wyświetlić zapisane zadania, uruchom następujące polecenie:

bob --list-tasks

Dostępne są następujące flagi:

FlagaOpis
--list-tasks [n|all]Wyświetl zapisane zadania dla bieżącego workspace i zakończ. Domyślnie 20. Przekaż liczbę lub all, aby kontrolować, ile jest wyświetlanych.
--limit <n>Maksymalna liczba zadań do wyświetlenia za pomocą --list-tasks.
--show-licenseWyświetl umowę licencyjną IBM i zakończ.

Dane wyjściowe czytelne maszynowo

Gdy stdout nie jest TTY — na przykład podczas przekierowywania lub potokowania danych wyjściowych — --list-tasks przełącza się z tabeli czytelnej dla człowieka na NDJSON, z jednym obiektem JSON na wiersz.

Każdy wiersz ma następującą postać:

{"id":"<uuid>","title":"<string>","status":"<string>","workspace":"<file-uri>","updatedAt":<unix-ms>}
PoleTypOpis
idstring (UUID)Unikalny identyfikator zadania, możliwy do użycia z --resume
titlestringTytuł zadania, powrót do pierwszej wiadomości, następnie id
statusstringStatus zadania (active, completed, paused)
workspacestring (file URI)Bezwzględna ścieżka workspace jako URI file:
updatedAtnumberZnacznik czasu ostatniej aktualizacji w milisekundach Unix

Przykłady

# Potok do jq
bob --list-tasks all | jq '.id'

# Zapisz do pliku, a następnie przetwórz
bob --list-tasks 100 > tasks.ndjson

# Wyświetl umowę licencyjną
bob --show-license

Formaty wyjściowe

Opcja --format kontroluje sposób, w jaki bob run zapisuje swoje wyjście. Używaj tej opcji podczas przechwytywania wyjścia dla skryptów lub pipeline'ów CI.

pretty (domyślny)

Czytelne dla człowieka wyjście tekstowe odpowiednie do wyświetlania w terminalu.

json

Emituje pojedynczy obiekt JSON po zakończeniu sesji. Użyj tego formatu, aby przechwycić pełny wynik do przetwarzania programatycznego.

Schemat:

PoleTypOpis
typestringZawsze "result"
timestampstringZnacznik czasu zakończenia ISO 8601 (standard daty i czasu)
statusstring"success" lub "error"
statsobjectStatystyki sesji — patrz pola poniżej
stats.task_idstringUnikalny identyfikator ukończonego zadania
stats.total_tokensnumberŁączna liczba zużytych tokenów
stats.input_tokensnumberZużyte tokeny wejściowe
stats.output_tokensnumberWygenerowane tokeny wyjściowe
stats.cache_read_tokensnumberTokeny odczytane z pamięci podręcznej
stats.cache_write_tokensnumberTokeny zapisane do pamięci podręcznej
stats.cache_rationumberWspółczynnik trafień w pamięci podręcznej
stats.duration_msnumberCzas trwania sesji w milisekundach
stats.session_costsnumberCałkowity koszt sesji
stats.tool_callsnumberLiczba wykonanych wywołań narzędzi
last_messagestringOstatnia wiadomość asystenta

Przykład:

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

stream-json

Emituje JSON rozdzielony znakami nowej linii (NDJSON) — jeden obiekt zdarzenia na wiersz — w miarę postępu sesji. Użyj tego formatu, aby strumieniować wyjście do pipeline'u lub przetwarzać zdarzenia w czasie rzeczywistym.

Typy zdarzeń:

Typ zdarzeniaKluczowe polaOpis
messagerole, content, isReasoning?Wiadomość użytkownika lub asystenta
tool_usetool_name, tool_id, parametersWywołanie narzędzia zainicjowane przez Bob
tool_resulttool_id, status, output?, error?Wynik zwrócony przez narzędzie
errorseverity, messageOsiągnięty limit kosztu/tur
resultstatus, stats, last_messageKońcowe podsumowanie emitowane po zakończeniu sesji

Przykład pipeline'u:

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

Podczas nieinteraktywnego uruchamiania z bob run wszystkie narzędzia są wstępnie zatwierdzone. Nie jesteś monitowany o zatwierdzanie wywołań narzędzi podczas wykonywania.

Opcje

OpcjaOpis
--format <format>Format wyjściowy: pretty (domyślny), json lub stream-json
--mode <mode>Tryb startowy (na przykład agent, plan, ask)
--max-cost <bobcoins>Maksymalne wydatki w Bobcoins przed zatrzymaniem sesji
--max-turns <n>Maksymalna liczba tur agentycznych przed zatrzymaniem sesji
--disable-mcpWyłącz wszystkie serwery MCP dla tej sesji
--disable-subagentsWyłącz uruchamianie subagentów dla tej sesji
--disable-tool-groups <groups>Wyłącz konkretne grupy narzędzi (rozdzielone przecinkami, na przykład execute,mcp)
--workspace <path>Zastąp katalog główny obszaru roboczego
--log-level <level>Szczegółowość logów: error, warn, info, debug lub trace
--resume <task-id>Wznów poprzednie zadanie według identyfikatora zadania
--resume latestWznów najnowsze zadanie
--team-id <id>Uruchom w kontekście konkretnego zespołu (wymagane przy użyciu klucza API typu general)
--trustOznacz bieżący folder jako zaufany
--accept-licenseZaakceptuj umowę licencyjną IBM i kontynuuj bez monitowania
Jak oceniasz ten temat?