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 run

Dicas para uma utilização eficaz

  • Ao processar ficheiros ou projetos grandes, sê específico sobre quais os ficheiros a analisar.
  • Usa --format json ou --format stream-json para parsing fiável em scripts.
  • Usa --max-cost e --max-turns para 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 run

Utilizaçã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.md

Referenciar 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-tasks

Os seguintes flags estão disponíveis:

FlagDescriçã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-licenseMostrar 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>}
CampoTipoDescrição
idstring (UUID)Identificador único da tarefa, utilizável com --resume
titlestringTítulo da tarefa, recorrendo à primeira mensagem, depois id
statusstringEstado da tarefa (active, completed, paused)
workspacestring (file URI)Caminho absoluto do workspace como URI file:
updatedAtnumberTimestamp 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-license

Formatos 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:

CampoTipoDescrição
typestringSempre "result"
timestampstringTimestamp de conclusão em ISO 8601 (padrão de data e hora)
statusstring"success" ou "error"
statsobjectEstatísticas da sessão — consulta os campos abaixo
stats.task_idstringIdentificador único para a tarefa concluída
stats.total_tokensnumberTotal de tokens usados
stats.input_tokensnumberTokens de input usados
stats.output_tokensnumberTokens de output gerados
stats.cache_read_tokensnumberTokens lidos da cache
stats.cache_write_tokensnumberTokens escritos na cache
stats.cache_rationumberRácio de acerto da cache
stats.duration_msnumberDuração da sessão em milissegundos
stats.session_costsnumberCusto total da sessão
stats.tool_callsnumberNúmero de chamadas de tool efetuadas
last_messagestringMensagem final do assistente

Exemplo:

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

stream-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 eventoCampos principaisDescrição
messagerole, content, isReasoning?Uma mensagem de utilizador ou assistente
tool_usetool_name, tool_id, parametersUma chamada de tool iniciada pelo Bob
tool_resulttool_id, status, output?, error?O resultado devolvido por uma tool
errorseverity, messageLimite de custo/turnos atingido
resultstatus, stats, last_messageResumo final emitido quando a sessão termina

Exemplo de pipeline:

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

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çãoDescriçã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-mcpDesativar todos os servidores MCP para esta sessão
--disable-subagentsDesativar 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 latestRetomar 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)
--trustMarcar a pasta atual como confiável
--accept-licenseAceitar o acordo de licença IBM e continuar sem solicitar confirmação
Como está este tópico?