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 runWskazó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 jsonlub--format stream-jsondo niezawodnego parsowania w skryptach. - Używaj
--max-costi--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 runPodstawowe 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.mdOdwoł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-tasksDostępne są następujące flagi:
| Flaga | Opis |
|---|---|
--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-license | Wyś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>}| Pole | Typ | Opis |
|---|---|---|
id | string (UUID) | Unikalny identyfikator zadania, możliwy do użycia z --resume |
title | string | Tytuł zadania, powrót do pierwszej wiadomości, następnie id |
status | string | Status zadania (active, completed, paused) |
workspace | string (file URI) | Bezwzględna ścieżka workspace jako URI file: |
updatedAt | number | Znacznik 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-licenseFormaty 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:
| Pole | Typ | Opis |
|---|---|---|
type | string | Zawsze "result" |
timestamp | string | Znacznik czasu zakończenia ISO 8601 (standard daty i czasu) |
status | string | "success" lub "error" |
stats | object | Statystyki sesji — patrz pola poniżej |
stats.task_id | string | Unikalny identyfikator ukończonego zadania |
stats.total_tokens | number | Łączna liczba zużytych tokenów |
stats.input_tokens | number | Zużyte tokeny wejściowe |
stats.output_tokens | number | Wygenerowane tokeny wyjściowe |
stats.cache_read_tokens | number | Tokeny odczytane z pamięci podręcznej |
stats.cache_write_tokens | number | Tokeny zapisane do pamięci podręcznej |
stats.cache_ratio | number | Współczynnik trafień w pamięci podręcznej |
stats.duration_ms | number | Czas trwania sesji w milisekundach |
stats.session_costs | number | Całkowity koszt sesji |
stats.tool_calls | number | Liczba wykonanych wywołań narzędzi |
last_message | string | Ostatnia wiadomość asystenta |
Przykład:
bob run --format json "What is the entry point?" > result.jsonstream-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 zdarzenia | Kluczowe pola | Opis |
|---|---|---|
message | role, content, isReasoning? | Wiadomość użytkownika lub asystenta |
tool_use | tool_name, tool_id, parameters | Wywołanie narzędzia zainicjowane przez Bob |
tool_result | tool_id, status, output?, error? | Wynik zwrócony przez narzędzie |
error | severity, message | Osiągnięty limit kosztu/tur |
result | status, stats, last_message | Końcowe podsumowanie emitowane po zakończeniu sesji |
Przykład pipeline'u:
bob run --format stream-json "Audit @src/" \
| grep '"type":"result"' \
| jq '.last_message'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
| Opcja | Opis |
|---|---|
--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-mcp | Wyłącz wszystkie serwery MCP dla tej sesji |
--disable-subagents | Wyłą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 latest | Wznów najnowsze zadanie |
--team-id <id> | Uruchom w kontekście konkretnego zespołu (wymagane przy użyciu klucza API typu general) |
--trust | Oznacz bieżący folder jako zaufany |
--accept-license | Zaakceptuj umowę licencyjną IBM i kontynuuj bez monitowania |
Uruchamianie sesji interaktywnej
Sesje interaktywne zapewniają interfejs konwersacyjny z Bob bezpośrednio w terminalu, umożliwiając pomoc w czasie rzeczywistym przy zadaniach deweloperskich.
Przykłady użycia
Praktyczne przykłady pokazujące, jak używać Bob Shell do debugowania, ulepszania kodu, tworzenia plików, generowania dokumentacji i nauki nowych koncepcji.