Iniciar una sesión no interactiva

Las sesiones no interactivas proporcionan un método para usar Bob Shell directamente desde la línea de comandos sin entrar en una sesión interactiva. Úsalas para automatización, scripting y tareas de procesamiento por lotes.

Cuándo usar una sesión no interactiva

Las sesiones no interactivas funcionan mejor para:

  • Integrar Bob Shell en scripts de automatización.
  • Procesar múltiples archivos con un solo comando.
  • Obtener información rápida sin iniciar una sesión interactiva.
  • Generar documentación a partir de código.
  • Pipelines de CI/CD que necesitan salida JSON estructurada.

Iniciar una sesión no interactiva

Usa el subcomando bob run para ejecutar Bob Shell de forma no interactiva desde la línea de comandos.

Sintaxis

bob run [options] [prompt...]

También puedes enviar un prompt a través de stdin:

echo "Explain this project" | bob run

Consejos para un uso efectivo

  • Al procesar archivos o proyectos grandes, sé específico sobre qué archivos analizar.
  • Usa --format json o --format stream-json para un análisis confiable en scripts.
  • Usa --max-cost y --max-turns para limitar el uso de recursos en flujos de trabajo automatizados.
  • Para prompts de varias líneas, guárdalos en un archivo y envíalos a bob run:
cat prompt.txt | bob run

Uso básico

Ejecutar un prompt directamente

bob run "Explain this project"

Enviar contenido como entrada

Puedes enviar contenido de texto a Bob Shell:

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

Guardar resultados en un archivo

Redirige la salida para guardar los resultados:

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

Referenciar archivos del proyecto

Usa el símbolo @ para referenciar archivos de tu proyecto:

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

Establecer límites de costo y turnos

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

Gestión de sesiones

Reanudar una sesión anterior

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

Flags de utilidad general

Algunos flags se invocan directamente con bob, no con bob run o bob chat. Para listar tareas guardadas, ejecuta el siguiente comando:

bob --list-tasks

Los siguientes flags están disponibles:

FlagDescripción
--list-tasks [n|all]Listar tareas guardadas para el workspace actual y salir. Por defecto 20. Pasa un número o all para controlar cuántas se muestran.
--limit <n>Número máximo de tareas a mostrar con --list-tasks.
--show-licenseMostrar el acuerdo de licencia de IBM y salir.

Salida legible por máquina

Cuando stdout no es un TTY — por ejemplo, cuando rediriges o canalizas la salida — --list-tasks cambia de una tabla legible por humanos a NDJSON, con un objeto JSON por línea.

Cada línea tiene la siguiente forma:

{"id":"<uuid>","title":"<string>","status":"<string>","workspace":"<file-uri>","updatedAt":<unix-ms>}
CampoTipoDescripción
idstring (UUID)Identificador único de tarea, utilizable con --resume
titlestringTítulo de la tarea, volviendo al primer mensaje, luego id
statusstringEstado de la tarea (active, completed, paused)
workspacestring (file URI)Ruta absoluta del workspace como URI file:
updatedAtnumberMarca de tiempo de última actualización en milisegundos Unix

Ejemplos

# Canalizar a jq
bob --list-tasks all | jq '.id'

# Guardar en archivo y luego procesar
bob --list-tasks 100 > tasks.ndjson

# Mostrar el acuerdo de licencia
bob --show-license

Formatos de salida

La opción --format controla cómo bob run escribe su salida. Usa esta opción cuando captures la salida para scripts o pipelines de CI.

pretty (predeterminado)

Texto legible para humanos, adecuado para mostrar en la terminal.

json

Emite un único objeto JSON después de que la sesión se completa. Usa este formato para capturar el resultado completo para procesamiento programático.

Esquema:

CampoTipoDescripción
typestringSiempre "result"
timestampstringMarca de tiempo de finalización en ISO 8601 (estándar de fecha y hora)
statusstring"success" o "error"
statsobjectEstadísticas de la sesión — ver campos a continuación
stats.task_idstringIdentificador único para la tarea completada
stats.total_tokensnumberTotal de tokens usados
stats.input_tokensnumberTokens de entrada usados
stats.output_tokensnumberTokens de salida generados
stats.cache_read_tokensnumberTokens leídos desde la caché
stats.cache_write_tokensnumberTokens escritos en la caché
stats.cache_rationumberRatio de aciertos de caché
stats.duration_msnumberDuración de la sesión en milisegundos
stats.session_costsnumberCosto total de la sesión
stats.tool_callsnumberNúmero de llamadas a herramientas realizadas
last_messagestringÚltimo mensaje del asistente

Ejemplo:

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

stream-json

Emite JSON delimitado por líneas nuevas (NDJSON) — un objeto de evento por línea — a medida que avanza la sesión. Usa este formato para transmitir la salida a un pipeline o procesar eventos en tiempo real.

Tipos de eventos:

Tipo de eventoCampos claveDescripción
messagerole, content, isReasoning?Un mensaje de usuario o asistente
tool_usetool_name, tool_id, parametersUna llamada a herramienta iniciada por Bob
tool_resulttool_id, status, output?, error?El resultado devuelto por una herramienta
errorseverity, messageLímite de costo/turnos alcanzado
resultstatus, stats, last_messageResumen final emitido cuando la sesión termina

Ejemplo de pipeline:

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

Al ejecutar en modo no interactivo con bob run, todas las herramientas están pre-aprobadas. No se te pedirá que apruebes llamadas a herramientas durante la ejecución.

Opciones

OpciónDescripción
--format <format>Formato de salida: pretty (predeterminado), json o stream-json
--mode <mode>Modo inicial (por ejemplo, agent, plan, ask)
--max-cost <bobcoins>Gasto máximo en Bobcoins antes de que la sesión se detenga
--max-turns <n>Número máximo de turnos agénticos antes de que la sesión se detenga
--disable-mcpDesactivar todos los servidores MCP para esta sesión
--disable-subagentsDesactivar la creación de subagentes para esta sesión
--disable-tool-groups <groups>Desactivar grupos de herramientas específicos (separados por comas, por ejemplo execute,mcp)
--workspace <path>Sobreescribir el directorio raíz del workspace
--log-level <level>Nivel de detalle de logs: error, warn, info, debug o trace
--resume <task-id>Reanudar una tarea anterior por ID de tarea
--resume latestReanudar la tarea más reciente
--team-id <id>Ejecutar bajo un contexto de equipo específico (requerido cuando se usa una API key de tipo general)
--trustMarcar la carpeta actual como de confianza
--accept-licenseAceptar el acuerdo de licencia de IBM y continuar sin pedir confirmación
¿Cómo es este tema?