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 runConsejos para un uso efectivo
- Al procesar archivos o proyectos grandes, sé específico sobre qué archivos analizar.
- Usa
--format jsono--format stream-jsonpara un análisis confiable en scripts. - Usa
--max-costy--max-turnspara 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 runUso 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.mdReferenciar 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-tasksLos siguientes flags están disponibles:
| Flag | Descripció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-license | Mostrar 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>}| Campo | Tipo | Descripción |
|---|---|---|
id | string (UUID) | Identificador único de tarea, utilizable con --resume |
title | string | Título de la tarea, volviendo al primer mensaje, luego id |
status | string | Estado de la tarea (active, completed, paused) |
workspace | string (file URI) | Ruta absoluta del workspace como URI file: |
updatedAt | number | Marca 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-licenseFormatos 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:
| Campo | Tipo | Descripción |
|---|---|---|
type | string | Siempre "result" |
timestamp | string | Marca de tiempo de finalización en ISO 8601 (estándar de fecha y hora) |
status | string | "success" o "error" |
stats | object | Estadísticas de la sesión — ver campos a continuación |
stats.task_id | string | Identificador único para la tarea completada |
stats.total_tokens | number | Total de tokens usados |
stats.input_tokens | number | Tokens de entrada usados |
stats.output_tokens | number | Tokens de salida generados |
stats.cache_read_tokens | number | Tokens leídos desde la caché |
stats.cache_write_tokens | number | Tokens escritos en la caché |
stats.cache_ratio | number | Ratio de aciertos de caché |
stats.duration_ms | number | Duración de la sesión en milisegundos |
stats.session_costs | number | Costo total de la sesión |
stats.tool_calls | number | Número de llamadas a herramientas realizadas |
last_message | string | Último mensaje del asistente |
Ejemplo:
bob run --format json "What is the entry point?" > result.jsonstream-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 evento | Campos clave | Descripción |
|---|---|---|
message | role, content, isReasoning? | Un mensaje de usuario o asistente |
tool_use | tool_name, tool_id, parameters | Una llamada a herramienta iniciada por Bob |
tool_result | tool_id, status, output?, error? | El resultado devuelto por una herramienta |
error | severity, message | Límite de costo/turnos alcanzado |
result | status, stats, last_message | Resumen final emitido cuando la sesión termina |
Ejemplo de pipeline:
bob run --format stream-json "Audit @src/" \
| grep '"type":"result"' \
| jq '.last_message'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ón | Descripció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-mcp | Desactivar todos los servidores MCP para esta sesión |
--disable-subagents | Desactivar 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 latest | Reanudar 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) |
--trust | Marcar la carpeta actual como de confianza |
--accept-license | Aceptar el acuerdo de licencia de IBM y continuar sin pedir confirmación |
Iniciar una sesión interactiva
Las sesiones interactivas proporcionan una interfaz conversacional con Bob directamente en tu terminal, permitiéndote obtener asistencia en tiempo real para tus tareas de desarrollo.
Ejemplos de uso
Ejemplos prácticos que muestran cómo usar Bob Shell para depuración, mejora de código, creación de archivos, generación de documentación y aprendizaje de nuevos conceptos.