Avviare una sessione non interattiva

Le sessioni non interattive forniscono un metodo per usare Bob Shell direttamente dalla riga di comando senza entrare in una sessione interattiva. Usale per l'automazione, lo scripting e i task di elaborazione in batch.

Quando usare una sessione non interattiva

Le sessioni non interattive funzionano meglio per:

  • Integrare Bob Shell in script di automazione.
  • Elaborare più file con un singolo comando.
  • Ottenere approfondimenti rapidi senza avviare una sessione interattiva.
  • Generare documentazione dal codice.
  • Pipeline CI/CD che necessitano di output JSON strutturato.

Avviare una sessione non interattiva

Usa il sottocomando bob run per eseguire Bob Shell in modo non interattivo dalla riga di comando.

Sintassi

bob run [options] [prompt...]

Puoi anche inviare un prompt tramite stdin:

echo "Explain this project" | bob run

Suggerimenti per un uso efficace

  • Quando elabori file o progetti di grandi dimensioni, sii specifico su quali file analizzare.
  • Usa --format json o --format stream-json per un'analisi affidabile negli script.
  • Usa --max-cost e --max-turns per limitare l'uso delle risorse nei flussi di lavoro automatizzati.
  • Per prompt su più righe, salvali in un file e invialo tramite pipe a bob run:
cat prompt.txt | bob run

Utilizzo di base

Eseguire un prompt direttamente

bob run "Explain this project"

Inviare contenuto come input

Puoi inviare contenuto testuale a Bob Shell tramite pipe:

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

Salvare i risultati in un file

Reindirizza l'output per salvare i risultati:

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

Fare riferimento ai file del progetto

Usa il simbolo @ per fare riferimento ai file nel tuo progetto:

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

Impostare limiti di costo e turni

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

Gestione delle sessioni

Riprendere una sessione precedente

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

Flag di utilità generale

Alcuni flag vengono invocati direttamente con bob, non con bob run o bob chat. Per elencare i task salvati, esegui il seguente comando:

bob --list-tasks

Sono disponibili i seguenti flag:

FlagDescrizione
--list-tasks [n|all]Elenca i task salvati per il workspace corrente ed esci. Predefinito 20. Passa un numero o all per controllare quanti vengono mostrati.
--limit <n>Numero massimo di task da visualizzare con --list-tasks.
--show-licenseVisualizza il contratto di licenza IBM ed esci.

Output leggibile dalla macchina

Quando stdout non è un TTY — per esempio, quando reindirizzi o incanali l'output — --list-tasks passa da una tabella leggibile dall'uomo a NDJSON, con un oggetto JSON per riga.

Ogni riga ha la seguente forma:

{"id":"<uuid>","title":"<string>","status":"<string>","workspace":"<file-uri>","updatedAt":<unix-ms>}
CampoTipoDescrizione
idstring (UUID)Identificatore univoco del task, utilizzabile con --resume
titlestringTitolo del task, che ricade sul primo messaggio, poi id
statusstringStato del task (active, completed, paused)
workspacestring (file URI)Percorso assoluto del workspace come URI file:
updatedAtnumberTimestamp dell'ultimo aggiornamento in millisecondi Unix

Esempi

# Incanalare in jq
bob --list-tasks all | jq '.id'

# Salvare su file e poi elaborare
bob --list-tasks 100 > tasks.ndjson

# Visualizzare il contratto di licenza
bob --show-license

Formati di output

L'opzione --format controlla come bob run scrive il suo output. Usa questa opzione quando acquisisci l'output per script o pipeline CI.

pretty (predefinito)

Output testuale leggibile da un umano, adatto per la visualizzazione nel terminale.

json

Emette un singolo oggetto JSON al termine della sessione. Usa questo formato per acquisire il risultato completo per l'elaborazione programmatica.

Schema:

CampoTipoDescrizione
typestringSempre "result"
timestampstringTimestamp di completamento ISO 8601 (standard data-ora)
statusstring"success" o "error"
statsobjectStatistiche della sessione — vedi i campi di seguito
stats.task_idstringIdentificatore univoco per il task completato
stats.total_tokensnumberToken totali usati
stats.input_tokensnumberToken di input usati
stats.output_tokensnumberToken di output generati
stats.cache_read_tokensnumberToken letti dalla cache
stats.cache_write_tokensnumberToken scritti nella cache
stats.cache_rationumberRapporto di hit della cache
stats.duration_msnumberDurata della sessione in millisecondi
stats.session_costsnumberCosto totale per la sessione
stats.tool_callsnumberNumero di chiamate agli strumenti effettuate
last_messagestringUltimo messaggio dell'assistente

Esempio:

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

stream-json

Emette JSON delimitato da newline (NDJSON) — un oggetto evento per riga — man mano che la sessione avanza. Usa questo formato per trasmettere l'output in una pipeline o elaborare gli eventi in tempo reale.

Tipi di evento:

Tipo di eventoCampi chiaveDescrizione
messagerole, content, isReasoning?Un messaggio utente o dell'assistente
tool_usetool_name, tool_id, parametersUna chiamata a uno strumento avviata da Bob
tool_resulttool_id, status, output?, error?Il risultato restituito da uno strumento
errorseverity, messageLimite di costo/turni raggiunto
resultstatus, stats, last_messageRiepilogo finale emesso al termine della sessione

Esempio di pipeline:

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

Quando si esegue in modo non interattivo con bob run, tutti gli strumenti sono pre-approvati. Non ti viene chiesto di approvare le chiamate agli strumenti durante l'esecuzione.

Opzioni

OpzioneDescrizione
--format <format>Formato di output: pretty (predefinito), json o stream-json
--mode <mode>Modalità di avvio (per esempio, agent, plan, ask)
--max-cost <bobcoins>Spesa massima in Bobcoins prima che la sessione si interrompa
--max-turns <n>Numero massimo di turni agentici prima che la sessione si interrompa
--disable-mcpDisabilita tutti i server MCP per questa sessione
--disable-subagentsDisabilita la creazione di subagent per questa sessione
--disable-tool-groups <groups>Disabilita specifici gruppi di strumenti (separati da virgola, per esempio execute,mcp)
--workspace <path>Sostituisce la directory radice del workspace
--log-level <level>Livello di verbosità dei log: error, warn, info, debug o trace
--resume <task-id>Riprendi un task precedente tramite il suo ID
--resume latestRiprendi il task più recente
--team-id <id>Esegui sotto un contesto di team specifico (richiesto quando si usa una API key di tipo general)
--trustContrassegna la cartella corrente come attendibile
--accept-licenseAccetta il contratto di licenza IBM e continua senza richiedere conferma
Come valuti questo argomento?