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 runConseils pour une utilisation efficace
- Lors du traitement de grands fichiers ou projets, sois précis sur les fichiers à analyser.
- Utilise
--format jsonou--format stream-jsonpour un parsing fiable dans les scripts. - Utilise
--max-costet--max-turnspour 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 runUtilisation 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.mdRé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-tasksLes flags suivants sont disponibles :
| Flag | Description |
|---|---|
--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-license | Afficher 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>}| Champ | Type | Description |
|---|---|---|
id | string (UUID) | Identifiant unique de tâche, utilisable avec --resume |
title | string | Titre de la tâche, revenant au premier message, puis id |
status | string | Statut de la tâche (active, completed, paused) |
workspace | string (file URI) | Chemin absolu du workspace en tant qu'URI file: |
updatedAt | number | Horodatage 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-licenseFormats 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 :
| Champ | Type | Description |
|---|---|---|
type | string | Toujours "result" |
timestamp | string | Horodatage de fin au format ISO 8601 (standard date-heure) |
status | string | "success" ou "error" |
stats | object | Statistiques de la session — voir les champs ci-dessous |
stats.task_id | string | Identifiant unique de la tâche terminée |
stats.total_tokens | number | Total des tokens utilisés |
stats.input_tokens | number | Tokens d'entrée utilisés |
stats.output_tokens | number | Tokens de sortie générés |
stats.cache_read_tokens | number | Tokens lus depuis le cache |
stats.cache_write_tokens | number | Tokens écrits dans le cache |
stats.cache_ratio | number | Taux de succès du cache |
stats.duration_ms | number | Durée de la session en millisecondes |
stats.session_costs | number | Coût total de la session |
stats.tool_calls | number | Nombre d'appels d'outils effectués |
last_message | string | Dernier message de l'assistant |
Exemple :
bob run --format json "What is the entry point?" > result.jsonstream-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énement | Champs clés | Description |
|---|---|---|
message | role, content, isReasoning? | Un message utilisateur ou assistant |
tool_use | tool_name, tool_id, parameters | Un appel d'outil initié par Bob |
tool_result | tool_id, status, output?, error? | Le résultat retourné par un outil |
error | severity, message | Limite de coût/tours atteinte |
result | status, stats, last_message | Résumé final émis à la fin de la session |
Exemple de pipeline :
bob run --format stream-json "Audit @src/" \
| grep '"type":"result"' \
| jq '.last_message'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
| Option | Description |
|---|---|
--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-mcp | Désactiver tous les serveurs MCP pour cette session |
--disable-subagents | Dé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 latest | Reprendre 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) |
--trust | Marquer le dossier actuel comme approuvé |
--accept-license | Accepter le contrat de licence IBM et continuer sans invite |
Démarrer une session interactive
Les sessions interactives fournissent une interface conversationnelle avec Bob directement dans ton terminal, permettant une assistance en temps réel pour tes tâches de développement.
Exemples d'utilisation
Exemples pratiques montrant comment utiliser Bob Shell pour le débogage, l'amélioration de code, la création de fichiers, la génération de documentation et l'apprentissage de nouveaux concepts.