Iniciar uma sessão não interativa
As sessões não interativas permitem usar Bob Shell diretamente a partir da linha de comando sem entrar numa sessão interativa. Usa para automação, scripting e tarefas de processamento em lote.
Quando usar uma sessão não interativa
As sessões não interativas funcionam melhor para:
- Integrar Bob Shell em scripts de automação.
- Processar múltiplos ficheiros com um único comando.
- Obter insights rápidos sem iniciar uma sessão interativa.
- Gerar documentação a partir de código.
- Pipelines CI/CD que precisam de output JSON estruturado.
Iniciar uma sessão não interativa
Usa o subcomando bob run para executar Bob Shell de forma não interativa a partir da linha de comando.
Sintaxe
bob run [options] [prompt...]Também podes passar um prompt através do stdin:
echo "Explain this project" | bob runDicas para uma utilização eficaz
- Ao processar ficheiros ou projetos grandes, sê específico sobre quais os ficheiros a analisar.
- Usa
--format jsonou--format stream-jsonpara parsing fiável em scripts. - Usa
--max-coste--max-turnspara limitar o uso de recursos em fluxos de trabalho automatizados. - Para prompts de múltiplas linhas, guarda-os num ficheiro e passa-os ao
bob run:
cat prompt.txt | bob runUtilização básica
Executar um prompt diretamente
bob run "Explain this project"Passar conteúdo como input
Podes passar conteúdo de texto ao Bob Shell:
cat buildError.txt | bob run "Explain this build error"Guardar resultados num ficheiro
Redireciona o output para guardar os resultados:
bob run "Review @bigFile.java" > review.mdReferenciar ficheiros do projeto
Usa o símbolo @ para referenciar ficheiros no teu projeto:
bob run "Summarize the functionality in @src/main.js"Definir limites de custo e turnos
bob run --max-cost 0.50 --max-turns 10 "Refactor @app.js"Gestão de sessões
Retomar uma sessão anterior
bob run --resume <task-id> "Continue from where we left off"
bob run --resume latest "Keep going"Flags de utilidade geral
Alguns flags são invocados diretamente com bob, não com bob run ou bob chat. Para listar tarefas guardadas, executa o seguinte comando:
bob --list-tasksOs seguintes flags estão disponíveis:
| Flag | Descrição |
|---|---|
--list-tasks [n|all] | Listar tarefas guardadas para o workspace atual e sair. Por defeito 20. Passa um número ou all para controlar quantas são mostradas. |
--limit <n> | Número máximo de tarefas a mostrar com --list-tasks. |
--show-license | Mostrar o acordo de licença IBM e sair. |
Output legível por máquina
Quando stdout não é um TTY — por exemplo, quando redirecionas ou canalizas o output — --list-tasks muda de uma tabela legível por humanos para NDJSON, com um objeto JSON por linha.
Cada linha tem a seguinte forma:
{"id":"<uuid>","title":"<string>","status":"<string>","workspace":"<file-uri>","updatedAt":<unix-ms>}| Campo | Tipo | Descrição |
|---|---|---|
id | string (UUID) | Identificador único da tarefa, utilizável com --resume |
title | string | Título da tarefa, recorrendo à primeira mensagem, depois id |
status | string | Estado da tarefa (active, completed, paused) |
workspace | string (file URI) | Caminho absoluto do workspace como URI file: |
updatedAt | number | Timestamp da última atualização em milissegundos Unix |
Exemplos
# Canalizar para jq
bob --list-tasks all | jq '.id'
# Guardar em ficheiro e depois processar
bob --list-tasks 100 > tasks.ndjson
# Mostrar o acordo de licença
bob --show-licenseFormatos de saída
A opção --format controla como bob run escreve o seu output. Usa esta opção ao capturar output para scripts ou pipelines CI.
pretty (padrão)
Output em texto legível por humanos, adequado para apresentação no terminal.
json
Emite um único objeto JSON após a conclusão da sessão. Usa este formato para capturar o resultado completo para processamento programático.
Schema:
| Campo | Tipo | Descrição |
|---|---|---|
type | string | Sempre "result" |
timestamp | string | Timestamp de conclusão em ISO 8601 (padrão de data e hora) |
status | string | "success" ou "error" |
stats | object | Estatísticas da sessão — consulta os campos abaixo |
stats.task_id | string | Identificador único para a tarefa concluída |
stats.total_tokens | number | Total de tokens usados |
stats.input_tokens | number | Tokens de input usados |
stats.output_tokens | number | Tokens de output gerados |
stats.cache_read_tokens | number | Tokens lidos da cache |
stats.cache_write_tokens | number | Tokens escritos na cache |
stats.cache_ratio | number | Rácio de acerto da cache |
stats.duration_ms | number | Duração da sessão em milissegundos |
stats.session_costs | number | Custo total da sessão |
stats.tool_calls | number | Número de chamadas de tool efetuadas |
last_message | string | Mensagem final do assistente |
Exemplo:
bob run --format json "What is the entry point?" > result.jsonstream-json
Emite JSON delimitado por nova linha (NDJSON) — um objeto de evento por linha — à medida que a sessão avança. Usa este formato para transmitir output para um pipeline ou processar eventos em tempo real.
Tipos de evento:
| Tipo de evento | Campos principais | Descrição |
|---|---|---|
message | role, content, isReasoning? | Uma mensagem de utilizador ou assistente |
tool_use | tool_name, tool_id, parameters | Uma chamada de tool iniciada pelo Bob |
tool_result | tool_id, status, output?, error? | O resultado devolvido por uma tool |
error | severity, message | Limite de custo/turnos atingido |
result | status, stats, last_message | Resumo final emitido quando a sessão termina |
Exemplo de pipeline:
bob run --format stream-json "Audit @src/" \
| grep '"type":"result"' \
| jq '.last_message'Ao executar de forma não interativa com bob run, todas as tools são pré-aprovadas. Não serás solicitado a aprovar chamadas de tool durante a execução.
Opções
| Opção | Descrição |
|---|---|
--format <format> | Formato de saída: pretty (padrão), json ou stream-json |
--mode <mode> | Modo inicial (por exemplo, agent, plan, ask) |
--max-cost <bobcoins> | Gasto máximo em Bobcoins antes de a sessão terminar |
--max-turns <n> | Número máximo de turnos agênticos antes de a sessão terminar |
--disable-mcp | Desativar todos os servidores MCP para esta sessão |
--disable-subagents | Desativar a criação de subagentes para esta sessão |
--disable-tool-groups <groups> | Desativar grupos de tools específicos (separados por vírgula, por exemplo execute,mcp) |
--workspace <path> | Substituir o diretório raiz do workspace |
--log-level <level> | Verbosidade do log: error, warn, info, debug ou trace |
--resume <task-id> | Retomar uma tarefa anterior pelo ID da tarefa |
--resume latest | Retomar a tarefa mais recente |
--team-id <id> | Executar num contexto de equipa específico (obrigatório quando se usa uma API key do tipo general) |
--trust | Marcar a pasta atual como confiável |
--accept-license | Aceitar o acordo de licença IBM e continuar sem solicitar confirmação |
Iniciar uma sessão interativa
As sessões interativas fornecem uma interface conversacional com Bob diretamente no terminal, permitindo assistência em tempo real nas tuas tarefas de desenvolvimento.
Exemplos de utilização
Exemplos práticos que mostram como usar Bob Shell para depuração, melhoria de código, criação de ficheiros, geração de documentação e aprendizagem de novos conceitos.