Démarrer une session non interactive

Les sessions non interactives permettent d'utiliser Bob Shell directement depuis la ligne de commande sans entrer dans une session interactive. À utiliser pour l'automatisation, les scripts et les tâches de traitement par lots.

Quand utiliser une session non interactive

Les sessions non interactives conviennent le mieux pour :

  • Intégrer Bob Shell dans des scripts d'automatisation.
  • Traiter plusieurs fichiers avec une seule commande.
  • Obtenir des informations rapides sans démarrer une session interactive.
  • Générer de la documentation à partir du code.
  • Les pipelines CI/CD qui ont besoin de sortie JSON structurée.

Démarrer une session non interactive

Utilise la sous-commande bob run pour exécuter Bob Shell de façon non interactive depuis la ligne de commande.

Syntaxe

bob run [options] [prompt...]

Tu peux aussi passer un prompt via stdin :

echo "Explain this project" | bob run

Conseils pour une utilisation efficace

  • Lors du traitement de grands fichiers ou projets, sois précis sur les fichiers à analyser.
  • Utilise --format json ou --format stream-json pour un parsing fiable dans les scripts.
  • Utilise --max-cost et --max-turns pour limiter l'utilisation des ressources dans les workflows automatisés.
  • Pour les prompts multi-lignes, sauvegarde-les dans un fichier et passe-le à bob run :
cat prompt.txt | bob run

Utilisation de base

Exécuter un prompt directement

bob run "Explain this project"

Passer du contenu en entrée

Tu peux passer du contenu textuel à Bob Shell :

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

Sauvegarder les résultats dans un fichier

Redirige la sortie pour sauvegarder les résultats :

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

Référencer des fichiers du projet

Utilise le symbole @ pour référencer des fichiers de ton projet :

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

Définir des limites de coût et de tours

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

Gestion des sessions

Reprendre une session précédente

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

Flags utilitaires généraux

Certains flags sont invoqués directement avec bob, pas avec bob run ou bob chat. Pour lister les tâches sauvegardées, exécute la commande suivante :

bob --list-tasks

Les flags suivants sont disponibles :

FlagDescription
--list-tasks [n|all]Lister les tâches sauvegardées pour le workspace actuel et quitter. Par défaut 20. Passe un nombre ou all pour contrôler combien sont affichées.
--limit <n>Nombre maximum de tâches à afficher avec --list-tasks.
--show-licenseAfficher le contrat de licence IBM et quitter.

Sortie lisible par machine

Quand stdout n'est pas un TTY — par exemple, quand tu rediriges ou canalises la sortie — --list-tasks passe d'un tableau lisible par l'humain à NDJSON, avec un objet JSON par ligne.

Chaque ligne a la forme suivante :

{"id":"<uuid>","title":"<string>","status":"<string>","workspace":"<file-uri>","updatedAt":<unix-ms>}
ChampTypeDescription
idstring (UUID)Identifiant unique de tâche, utilisable avec --resume
titlestringTitre de la tâche, revenant au premier message, puis id
statusstringStatut de la tâche (active, completed, paused)
workspacestring (file URI)Chemin absolu du workspace en tant qu'URI file:
updatedAtnumberHorodatage de dernière mise à jour en millisecondes Unix

Exemples

# Canaliser vers jq
bob --list-tasks all | jq '.id'

# Sauvegarder dans un fichier puis traiter
bob --list-tasks 100 > tasks.ndjson

# Afficher le contrat de licence
bob --show-license

Formats de sortie

L'option --format contrôle comment bob run écrit sa sortie. Utilise cette option lors de la capture de sortie pour des scripts ou des pipelines CI.

pretty (par défaut)

Sortie texte lisible par l'humain, adaptée à l'affichage dans un terminal.

json

Émet un seul objet JSON après la fin de la session. Utilise ce format pour capturer le résultat complet pour un traitement programmatique.

Schéma :

ChampTypeDescription
typestringToujours "result"
timestampstringHorodatage de fin au format ISO 8601 (standard date-heure)
statusstring"success" ou "error"
statsobjectStatistiques de la session — voir les champs ci-dessous
stats.task_idstringIdentifiant unique de la tâche terminée
stats.total_tokensnumberTotal des tokens utilisés
stats.input_tokensnumberTokens d'entrée utilisés
stats.output_tokensnumberTokens de sortie générés
stats.cache_read_tokensnumberTokens lus depuis le cache
stats.cache_write_tokensnumberTokens écrits dans le cache
stats.cache_rationumberTaux de succès du cache
stats.duration_msnumberDurée de la session en millisecondes
stats.session_costsnumberCoût total de la session
stats.tool_callsnumberNombre d'appels d'outils effectués
last_messagestringDernier message de l'assistant

Exemple :

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

stream-json

Émet du JSON délimité par des sauts de ligne (NDJSON) — un objet événement par ligne — au fur et à mesure de la progression de la session. Utilise ce format pour diffuser la sortie dans un pipeline ou traiter les événements en temps réel.

Types d'événements :

Type d'événementChamps clésDescription
messagerole, content, isReasoning?Un message utilisateur ou assistant
tool_usetool_name, tool_id, parametersUn appel d'outil initié par Bob
tool_resulttool_id, status, output?, error?Le résultat retourné par un outil
errorseverity, messageLimite de coût/tours atteinte
resultstatus, stats, last_messageRésumé final émis à la fin de la session

Exemple de pipeline :

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

Lors de l'exécution non interactive avec bob run, tous les outils sont pré-approuvés. Tu n'es pas invité à approuver les appels d'outils pendant l'exécution.

Options

OptionDescription
--format <format>Format de sortie : pretty (par défaut), json, ou stream-json
--mode <mode>Mode de démarrage (par exemple, agent, plan, ask)
--max-cost <bobcoins>Dépense maximale en Bobcoins avant l'arrêt de la session
--max-turns <n>Nombre maximal de tours agentiques avant l'arrêt de la session
--disable-mcpDésactiver tous les serveurs MCP pour cette session
--disable-subagentsDésactiver la création de sous-agents pour cette session
--disable-tool-groups <groups>Désactiver des groupes d'outils spécifiques (séparés par des virgules, par exemple execute,mcp)
--workspace <path>Remplacer le répertoire racine de l'espace de travail
--log-level <level>Verbosité des logs : error, warn, info, debug, ou trace
--resume <task-id>Reprendre une tâche précédente par son ID
--resume latestReprendre la tâche la plus récente
--team-id <id>Exécuter sous un contexte d'équipe spécifique (requis lors de l'utilisation d'une clé API de type general)
--trustMarquer le dossier actuel comme approuvé
--accept-licenseAccepter le contrat de licence IBM et continuer sans invite
Comment trouvez-vous ce sujet ?