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 runSuggerimenti per un uso efficace
- Quando elabori file o progetti di grandi dimensioni, sii specifico su quali file analizzare.
- Usa
--format jsono--format stream-jsonper un'analisi affidabile negli script. - Usa
--max-coste--max-turnsper 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 runUtilizzo 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.mdFare 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-tasksSono disponibili i seguenti flag:
| Flag | Descrizione |
|---|---|
--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-license | Visualizza 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>}| Campo | Tipo | Descrizione |
|---|---|---|
id | string (UUID) | Identificatore univoco del task, utilizzabile con --resume |
title | string | Titolo del task, che ricade sul primo messaggio, poi id |
status | string | Stato del task (active, completed, paused) |
workspace | string (file URI) | Percorso assoluto del workspace come URI file: |
updatedAt | number | Timestamp 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-licenseFormati 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:
| Campo | Tipo | Descrizione |
|---|---|---|
type | string | Sempre "result" |
timestamp | string | Timestamp di completamento ISO 8601 (standard data-ora) |
status | string | "success" o "error" |
stats | object | Statistiche della sessione — vedi i campi di seguito |
stats.task_id | string | Identificatore univoco per il task completato |
stats.total_tokens | number | Token totali usati |
stats.input_tokens | number | Token di input usati |
stats.output_tokens | number | Token di output generati |
stats.cache_read_tokens | number | Token letti dalla cache |
stats.cache_write_tokens | number | Token scritti nella cache |
stats.cache_ratio | number | Rapporto di hit della cache |
stats.duration_ms | number | Durata della sessione in millisecondi |
stats.session_costs | number | Costo totale per la sessione |
stats.tool_calls | number | Numero di chiamate agli strumenti effettuate |
last_message | string | Ultimo messaggio dell'assistente |
Esempio:
bob run --format json "What is the entry point?" > result.jsonstream-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 evento | Campi chiave | Descrizione |
|---|---|---|
message | role, content, isReasoning? | Un messaggio utente o dell'assistente |
tool_use | tool_name, tool_id, parameters | Una chiamata a uno strumento avviata da Bob |
tool_result | tool_id, status, output?, error? | Il risultato restituito da uno strumento |
error | severity, message | Limite di costo/turni raggiunto |
result | status, stats, last_message | Riepilogo finale emesso al termine della sessione |
Esempio di pipeline:
bob run --format stream-json "Audit @src/" \
| grep '"type":"result"' \
| jq '.last_message'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
| Opzione | Descrizione |
|---|---|
--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-mcp | Disabilita tutti i server MCP per questa sessione |
--disable-subagents | Disabilita 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 latest | Riprendi il task più recente |
--team-id <id> | Esegui sotto un contesto di team specifico (richiesto quando si usa una API key di tipo general) |
--trust | Contrassegna la cartella corrente come attendibile |
--accept-license | Accetta il contratto di licenza IBM e continua senza richiedere conferma |
Avviare una sessione interattiva
Le sessioni interattive forniscono un'interfaccia conversazionale con Bob direttamente nel tuo terminale, consentendo assistenza in tempo reale per le tue attività di sviluppo.
Esempi di utilizzo
Esempi pratici che mostrano come usare Bob Shell per il debug, il miglioramento del codice, la creazione di file, la generazione di documentazione e l'apprendimento di nuovi concetti.