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é | Description | Considérations spécifiques au shell |
|---|---|---|
slug | Identifiant interne unique | Utilisé dans les arguments de ligne de commande :bob --chat-mode=my-mode |
name | Nom d'affichage dans l'UI | Affiché dans le sélecteur de mode de la session interactive |
description | Courte description affichée dans le sélecteur de mode | Explique brièvement l'objectif de ton mode |
roleDefinition | Identité et expertise principales | Doit prendre en compte le contexte shell et les workflows en ligne de commande |
groups | Ensembles d'outils autorisés et accès aux fichiers | Les permissions d'exécution de commandes sont critiques dans les environnements shell |
whenToUse | Guidance pour la sélection de mode | Aide Bob Shell à choisir les modes appropriés pour les tâches |
customInstructions | Directives comportementales spécifiques ou règles pour le mode | Peut référencer les modèles de développement de Bob Shell |
Outils disponibles
Groupes d'outils disponibles
read: Lire des fichiers et répertoiresedit: Modifier des fichiers (peut être restreint avecfileRegex)browser: Utiliser l'automatisation du navigateurcommand: Exécuter des commandes terminalmcp: 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
- browserModes 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
- commandSé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 --sandboxChangement 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-debugConfigurations 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 safetyMode 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
- commandPermissions 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 modeAutoriser 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
- commandUtilisation 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.txtInstructions 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}/ :
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 existInstructions 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 :
- Arguments de ligne de commande (
--chat-mode=mode-slug) - Modes au niveau du projet (
.bob/custom_modes.yaml - Modes au niveau de l'utilisateur (
~/.bob/custom_modes.yaml) - Modes au niveau du système (emplacements spécifiques à la plateforme)
- 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 --sandboxMigrer des modes depuis Bob IDE
Différences clés
Lors de la migration de modes personnalisés depuis Bob IDE vers Bob Shell :
| Aspect | Bob IDE | Bob Shell |
|---|---|---|
| Interaction UI | Interface visuelle avec panneaux | Interface basée sur le terminal |
| Édition de fichiers | Diffs et aperçus dans l'éditeur | Vue diff CLI ou éditeur externe |
| Exécution de commandes | Terminal intégré | Exécution directe dans le shell |
| Changement de mode | Menu déroulant UI ou slash commands | Slash commands ou arguments CLI |
| Configuration | UI de paramètres + fichiers | Fichiers de configuration uniquement |
Liste de vérification d'adaptation
Lors de l'adaptation des modes Bob IDE pour Bob Shell :
- Révise
roleDefinitionpour le contexte spécifique au shell - Mets à jour
customInstructionspour 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
- browserAdapté 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
- browserRègles personnalisées
Les règles personnalisées influencent la façon dont Bob Shell répond à tes demandes dans l'environnement terminal, alignant la sortie avec tes préférences spécifiques et les exigences de ton projet. Tu peux contrôler le style de codage, l'approche de documentation et les processus de prise de décision.
Personas d'agents
Crée des fichiers de persona réutilisables qui définissent le rôle, le focus et l'accès aux tools d'un subagent. Définis ce qu'un subagent recherche, comment il formate ses résultats et ce qu'il n'est pas autorisé à faire.