Configurazione

Modalità personalizzate

Puoi creare modalità personalizzate per adattare il comportamento di Bob a task o flussi di lavoro specifici. Le modalità personalizzate in Bob Shell funzionano in modo simile alle modalità di Bob IDE.

Perché usare le modalità personalizzate in Bob Shell

  • Flussi di lavoro ottimizzati per la shell: Crea modalità progettate specificamente per i task di sviluppo basati su terminale
  • Sicurezza da riga di comando: Limita le modalità a operazioni sicure quando lavori in ambienti di produzione
  • Comportamento specifico per ambiente: Configura modalità che si adattano a diversi ambienti shell
  • Compatibilità con l'automazione: Progetta modalità che funzionano perfettamente sia nelle sessioni interattive che in quelle non interattive
  • Standardizzazione del team: Condividi modalità specifiche per la shell con il tuo team per flussi di lavoro coerenti

Cosa è incluso in una modalità personalizzata

Le modalità personalizzate in Bob Shell usano la stessa struttura di base delle modalità di Bob IDE:

ProprietàDescrizioneConsiderazioni specifiche per la shell
slugIdentificatore interno univocoUsato negli argomenti da riga di comando:
bob --chat-mode=my-mode
nameNome visualizzato nell'UIMostrato nel selettore di modalità della sessione interattiva
descriptionBreve descrizione mostrata nel selettore di modalitàSpiega brevemente lo scopo della tua modalità
roleDefinitionIdentità e competenze di baseDovrebbe considerare il contesto shell e i flussi di lavoro da riga di comando
groupsSet di strumenti consentiti e accesso ai fileI permessi di esecuzione dei comandi sono critici negli ambienti shell
whenToUseGuida alla selezione della modalitàAiuta Bob Shell a scegliere le modalità appropriate per i task
customInstructionsLinee guida comportamentali specifiche, o regole per la modalitàPuò fare riferimento ai pattern di sviluppo di Bob Shell

Strumenti disponibili

Gruppi di strumenti disponibili

  • read: Leggi file e directory
  • edit: Modifica file (può essere limitato con fileRegex)
  • browser: Usa l'automazione del browser
  • command: Esegui comandi del terminale
  • mcp: Accedi ai server MCP

Creare modalità personalizzate

File di configurazione

Bob Shell usa lo stesso formato di configurazione di Bob IDE, supportando sia il formato YAML (preferito) che JSON.

Modalità globali

Crea o modifica ~/.bob/custom_modes.yaml per le modalità disponibili in tutti i progetti:

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

Modalità specifiche del progetto

Crea o modifica .bob/custom_modes.yaml nella radice del tuo progetto:

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

Selezione della modalità da riga di comando

Specifica una modalità all'avvio di Bob Shell:

# Avvia Bob Shell in una modalità specifica
bob --chat-mode=shell-debug

# Combina con altre opzioni
bob --chat-mode=deploy-helper --sandbox

Cambio di modalità interattivo

In modalità interattiva, cambia modalità usando i comandi slash:

# Passa a una modalità personalizzata
/mode shell-debug

# O usa direttamente lo slug della modalità
/shell-debug

Configurazioni specifiche per la shell

Modalità di sicurezza per la produzione

Crea una modalità incentrata sulla sicurezza per gli ambienti di produzione:

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

Modalità di sviluppo script

Crea una modalità per lo sviluppo di script 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

Permessi di esecuzione dei comandi

Limitare l'accesso ai comandi

Controlla quali comandi una modalità può eseguire omettendo il gruppo 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

Consentire comandi specifici

Usa la configurazione degli strumenti allowed di Bob Shell con le modalità personalizzate nel tuo file di impostazioni:

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

Comportamento interattivo vs non interattivo

Progettare per entrambe le modalità

Crea modalità che funzionino bene sia nelle sessioni interattive che in quelle non interattive:

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

Utilizzo non interattivo

Usa le modalità in modalità non interattiva:

# Usa una modalità progettata per l'automazione
bob --chat-mode=test-runner -p "Run the test suite and report failures"

# Combina con l'elaborazione dell'output
bob --chat-mode=test-runner -p "Run tests" --hide-intermediary-output > results.txt

Istruzioni specifiche per modalità tramite file

Istruzioni basate su directory

Crea file di istruzioni specifici per modalità in .bob/rules-{mode-slug}/:

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

Esempio di file di istruzioni (.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

Istruzioni in un singolo file (fallback)

In alternativa, usa un singolo file .bobrules-{mode-slug} nella radice del tuo workspace.

Precedenza della configurazione

Le configurazioni delle modalità vengono applicate in questo ordine:

  1. Argomenti da riga di comando (--chat-mode=mode-slug)
  2. Modalità a livello di progetto (.bob/custom_modes.yaml
  3. Modalità a livello utente (~/.bob/custom_modes.yaml)
  4. Modalità a livello di sistema (posizioni specifiche della piattaforma)
  5. Modalità predefinite

Sandboxing con modalità personalizzate

Combina le modalità personalizzate con la funzionalità sandbox di Bob Shell per una sperimentazione sicura:

# Avvia una modalità personalizzata in sandbox
bob --chat-mode=script-dev --sandbox

# Usa con sandbox Docker
bob --chat-mode=deploy-helper --sandbox

Migrare le modalità da Bob IDE

Differenze chiave

Quando si migrano modalità personalizzate da Bob IDE a Bob Shell:

AspettoBob IDEBob Shell
Interazione UIInterfaccia visiva con pannelliInterfaccia basata su terminale
Modifica fileDiff e anteprime nell'editorVista diff CLI o editor esterno
Esecuzione comandiTerminale integratoEsecuzione diretta nella shell
Cambio modalitàDropdown UI o comandi slashComandi slash o argomenti CLI
ConfigurazioneUI impostazioni + fileSolo file di configurazione

Checklist di adattamento

Quando si adattano le modalità di Bob IDE per Bob Shell:

  • Rivedi roleDefinition per il contesto specifico della shell
  • Aggiorna customInstructions per fare riferimento ai flussi di lavoro da riga di comando
  • Considera la sicurezza dell'esecuzione dei comandi nella configurazione di groups
  • Testa la modalità sia nelle sessioni interattive che in quelle non interattive
  • Verifica che la gestione dei percorsi dei file funzioni nel contesto shell
  • Testa con la modalità sandbox se applicabile

Esempio di migrazione

Modalità Bob IDE originale:

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

Adattata per 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
Come valuti questo argomento?