Configuration

Modes personnalisés

Tu peux créer des modes personnalisés pour adapter le comportement de Bob à des tâches ou workflows spécifiques. Les modes personnalisés dans Bob Shell fonctionnent de façon similaire aux modes Bob IDE.

Pourquoi utiliser des modes personnalisés dans Bob Shell

  • Workflows optimisés pour le shell : Crée des modes conçus spécifiquement pour les tâches de développement en terminal
  • Sécurité en ligne de commande : Restreins les modes aux opérations sûres lors du travail dans des environnements de production
  • Comportement spécifique à l'environnement : Configure des modes qui s'adaptent à différents environnements shell
  • Adapté à l'automatisation : Conçois des modes qui fonctionnent parfaitement dans les sessions interactives et non interactives
  • Standardisation de l'équipe : Partage des modes spécifiques au shell avec ton équipe pour des workflows cohérents

Ce qui est inclus dans un mode personnalisé

Les modes personnalisés dans Bob Shell utilisent la même structure de base que les modes Bob IDE :

PropriétéDescriptionConsidérations spécifiques au shell
slugIdentifiant interne uniqueUtilisé dans les arguments de ligne de commande :
bob --chat-mode=my-mode
nameNom d'affichage dans l'UIAffiché dans le sélecteur de mode de la session interactive
descriptionCourte description affichée dans le sélecteur de modeExplique brièvement l'objectif de ton mode
roleDefinitionIdentité et expertise principalesDoit prendre en compte le contexte shell et les workflows en ligne de commande
groupsEnsembles d'outils autorisés et accès aux fichiersLes permissions d'exécution de commandes sont critiques dans les environnements shell
whenToUseGuidance pour la sélection de modeAide Bob Shell à choisir les modes appropriés pour les tâches
customInstructionsDirectives comportementales spécifiques ou règles pour le modePeut référencer les modèles de développement de Bob Shell

Outils disponibles

Groupes d'outils disponibles

  • read : Lire des fichiers et répertoires
  • edit : Modifier des fichiers (peut être restreint avec fileRegex)
  • browser : Utiliser l'automatisation du navigateur
  • command : Exécuter des commandes terminal
  • mcp : Accéder aux serveurs MCP

Créer des modes personnalisés

Fichiers de configuration

Bob Shell utilise le même format de configuration que Bob IDE, supportant les formats YAML (préféré) et JSON.

Modes globaux

Crée ou modifie ~/.bob/custom_modes.yaml pour les modes disponibles dans tous les projets :

customModes:
  - slug: shell-debug
    name: 🐛 Shell Debugger
    roleDefinition: >-
      You are a debugging specialist focused on command-line troubleshooting.
      You excel at analyzing shell output, environment variables, and system logs.
    whenToUse: Use for debugging shell scripts, command failures, and environment issues.
    customInstructions: |-
      When debugging:
      - Always check environment variables first
      - Examine command exit codes
      - Review relevant log files
      - Test commands in isolation before suggesting fixes
    groups:
      - read
      - command
      - browser

Modes spécifiques au projet

Crée ou modifie .bob/custom_modes.yaml à la racine de ton projet :

customModes:
  - slug: deploy-helper
    name: 🚀 Deployment Assistant
    roleDefinition: You are a deployment specialist for this project's infrastructure.
    whenToUse: Use for deployment tasks, infrastructure changes, and release management.
    customInstructions: |-
      Deployment guidelines:
      - Always verify the target environment before running commands
      - Check for running processes that might be affected
      - Validate configuration files before applying changes
      - Create backups before destructive operations
    groups:
      - read
      - - edit
        - fileRegex: \.(yaml|yml|sh|env)$
          description: Configuration and script files only
      - command

Sélection de mode en ligne de commande

Spécifie un mode au démarrage de Bob Shell :

# Démarrer Bob Shell dans un mode spécifique
bob --chat-mode=shell-debug

# Combiner avec d'autres options
bob --chat-mode=deploy-helper --sandbox

Changement de mode interactif

En mode interactif, change de mode en utilisant les slash commands :

# Passer à un mode personnalisé
/mode shell-debug

# Ou utiliser le slug du mode directement
/shell-debug

Configurations spécifiques au shell

Mode sécurité pour la production

Crée un mode axé sur la sécurité pour les environnements de production :

customModes:
  - slug: prod-ops
    name: 🔒 Production Operations
    roleDefinition: >-
      You are a production operations specialist with a strong focus on safety.
      You never run destructive commands without explicit confirmation.
    whenToUse: Use when working with production systems or sensitive environments.
    customInstructions: |-
      Production safety rules:
      - NEVER run destructive commands without explicit user confirmation
      - Always verify the target environment before any operation
      - Suggest dry-run options when available
      - Check for active connections or processes before changes
      - Recommend backup procedures before modifications
    groups:
      - read
      - browser
      # Note: No edit or command groups for maximum safety

Mode développement de scripts

Crée un mode pour le développement de scripts shell :

customModes:
  - slug: script-dev
    name: 📜 Script Developer
    roleDefinition: >-
      You are a shell scripting expert specializing in bash, zsh, and POSIX-compliant scripts.
    whenToUse: Use for creating, debugging, or improving shell scripts.
    customInstructions: |-
      Shell scripting best practices:
      - Use shellcheck-compliant syntax
      - Include proper error handling with set -e and set -u
      - Add usage documentation at the top of scripts
      - Quote variables to prevent word splitting
      - Provide exit codes for different error conditions
    groups:
      - read
      - - edit
        - fileRegex: \.(sh|bash|zsh)$
          description: Shell script files only
      - command

Permissions d'exécution de commandes

Restreindre l'accès aux commandes

Contrôle quelles commandes un mode peut exécuter en omettant le groupe command :

customModes:
  - slug: safe-reviewer
    name: 👀 Safe Code Reviewer
    roleDefinition: You are a code reviewer focused on analysis, not modification.
    whenToUse: Use for code reviews and analysis without making changes.
    groups:
      - read
      - browser
      # No command or edit groups - read-only mode

Autoriser des commandes spécifiques

Utilise la configuration des outils allowed de Bob Shell avec des modes personnalisés dans ton fichier de paramètres :

{
  "tools": {
    "allowed": [
      "run_shell_command(git status)",
      "run_shell_command(git log)",
      "run_shell_command(git diff)"
    ]
  }
}

Comportement interactif vs non interactif

Concevoir pour les deux modes

Crée des modes qui fonctionnent bien dans les sessions interactives et non interactives :

customModes:
  - slug: test-runner
    name: 🧪 Test Runner
    roleDefinition: >-
      You are a testing specialist who runs and analyzes test suites.
      You adapt your output based on the running context.
    whenToUse: Use for running tests, analyzing test results, and debugging test failures.
    customInstructions: |-
      Testing guidelines:
      - In interactive mode: Provide detailed explanations and suggestions
      - In non-interactive mode: Focus on concise, actionable output
      - Always report test results clearly
      - Suggest fixes for failing tests
    groups:
      - read
      - command

Utilisation non interactive

Utilise des modes en mode non interactif :

# Utiliser un mode conçu pour l'automatisation
bob --chat-mode=test-runner -p "Run the test suite and report failures"

# Combiner avec le traitement de la sortie
bob --chat-mode=test-runner -p "Run tests" --hide-intermediary-output > results.txt

Instructions spécifiques au mode via des fichiers

Instructions basées sur des répertoires

Crée des fichiers d'instructions spécifiques au mode dans .bob/rules-{mode-slug}/ :

01-environment-checks.md
02-common-issues.md
03-debugging-steps.md
custom_modes.yaml

Exemple de fichier d'instructions (.bob/rules-shell-debug/01-environment-checks.md) :

# Environment Debugging Checklist

When debugging shell issues, always check:

1. **Environment Variables**: PATH, SHELL, TERM, and application-specific variables
2. **Shell Configuration**: .bashrc, .zshrc, .profile files
3. **System State**: Current working directory, file permissions, disk space
4. **Command Availability**: Use `command -v <cmd>` to verify commands exist

Instructions dans un fichier unique (solution de repli)

Alternativement, utilise un fichier unique .bobrules-{mode-slug} à la racine de ton espace de travail.

Précédence des configurations

Les configurations de modes sont appliquées dans cet ordre :

  1. Arguments de ligne de commande (--chat-mode=mode-slug)
  2. Modes au niveau du projet (.bob/custom_modes.yaml
  3. Modes au niveau de l'utilisateur (~/.bob/custom_modes.yaml)
  4. Modes au niveau du système (emplacements spécifiques à la plateforme)
  5. Modes par défaut

Sandbox avec des modes personnalisés

Combine des modes personnalisés avec la fonctionnalité sandbox de Bob Shell pour une expérimentation sûre :

# Démarrer un mode personnalisé en sandbox
bob --chat-mode=script-dev --sandbox

# Utiliser avec le sandbox Docker
bob --chat-mode=deploy-helper --sandbox

Migrer des modes depuis Bob IDE

Différences clés

Lors de la migration de modes personnalisés depuis Bob IDE vers Bob Shell :

AspectBob IDEBob Shell
Interaction UIInterface visuelle avec panneauxInterface basée sur le terminal
Édition de fichiersDiffs et aperçus dans l'éditeurVue diff CLI ou éditeur externe
Exécution de commandesTerminal intégréExécution directe dans le shell
Changement de modeMenu déroulant UI ou slash commandsSlash commands ou arguments CLI
ConfigurationUI de paramètres + fichiersFichiers de configuration uniquement

Liste de vérification d'adaptation

Lors de l'adaptation des modes Bob IDE pour Bob Shell :

  • Révise roleDefinition pour le contexte spécifique au shell
  • Mets à jour customInstructions pour référencer les workflows en ligne de commande
  • Considère la sécurité d'exécution de commandes dans la configuration groups
  • Teste le mode dans les sessions interactives et non interactives
  • Vérifie que la gestion des chemins de fichiers fonctionne dans le contexte shell
  • Teste avec le mode sandbox si applicable

Exemple de migration

Mode Bob IDE original :

customModes:
  - slug: code-reviewer
    name: 👀 Code Reviewer
    roleDefinition: You are a code reviewer who provides detailed feedback.
    groups:
      - read
      - browser

Adapté pour Bob Shell :

customModes:
  - slug: code-reviewer
    name: 👀 Code Reviewer
    roleDefinition: >-
      You are a code reviewer who provides detailed feedback.
      You work efficiently in terminal environments and provide clear, actionable suggestions.
    whenToUse: Use for code reviews, pull request analysis, and code quality checks.
    customInstructions: |-
      Code review guidelines:
      - Provide feedback in a structured format suitable for terminal output
      - Reference specific line numbers and file paths
      - Suggest concrete improvements with examples
      - Format output for easy parsing if used in non-interactive mode
    groups:
      - read
      - command  # Added for git operations
      - browser
Comment trouvez-vous ce sujet ?