Configuração

Modos personalizados

Podes criar modos personalizados para adaptar o comportamento do Bob a tarefas ou fluxos de trabalho específicos. Os modos personalizados no Bob Shell funcionam de forma semelhante aos modos do Bob IDE.

Por que usar modos personalizados no Bob Shell

  • Fluxos de trabalho otimizados para shell: Cria modos concebidos especificamente para tarefas de desenvolvimento baseadas em terminal
  • Segurança na linha de comando: Restringe os modos a operações seguras ao trabalhar em ambientes de produção
  • Comportamento específico por ambiente: Configura modos que se adaptam a diferentes ambientes shell
  • Otimizado para automação: Cria modos que funcionam perfeitamente em sessões interativas e não interativas
  • Padronização da equipa: Partilha modos específicos de shell entre a tua equipa para fluxos de trabalho consistentes

O que inclui um modo personalizado

Os modos personalizados no Bob Shell usam a mesma estrutura central que os modos do Bob IDE:

PropriedadeDescriçãoConsiderações específicas para shell
slugIdentificador interno únicoUsado em argumentos de linha de comando:
bob --chat-mode=my-mode
nameNome de exibição na UIMostrado no seletor de modos da sessão interativa
descriptionBreve descrição mostrada no seletor de modosExplica brevemente a finalidade do modo
roleDefinitionIdentidade central e especializaçãoDeve considerar o contexto shell e fluxos de trabalho de linha de comando
groupsConjuntos de tools e acesso a ficheiros permitidosAs permissões de execução de comandos são críticas em ambientes shell
whenToUseOrientação para seleção de modoAjuda Bob Shell a escolher modos adequados para as tarefas
customInstructionsDiretrizes comportamentais específicas, ou regras para o modoPode referenciar padrões de desenvolvimento do Bob Shell

Tools disponíveis

Grupos de tools disponíveis

  • read: Ler ficheiros e diretórios
  • edit: Modificar ficheiros (pode ser restringido com fileRegex)
  • browser: Usar automação do browser
  • command: Executar comandos do terminal
  • mcp: Aceder a servidores MCP

Criar modos personalizados

Ficheiros de configuração

Bob Shell usa o mesmo formato de configuração que Bob IDE, suportando os formatos YAML (preferido) e JSON.

Modos globais

Cria ou edita ~/.bob/custom_modes.yaml para modos disponíveis em todos os projetos:

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

Modos específicos do projeto

Cria ou edita .bob/custom_modes.yaml na raiz do teu projeto:

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

Seleção de modo por linha de comando

Especifica um modo ao iniciar Bob Shell:

# Iniciar Bob Shell num modo específico
bob --chat-mode=shell-debug

# Combinar com outras opções
bob --chat-mode=deploy-helper --sandbox

Troca de modo interativa

Em modo interativo, troca de modos usando slash commands:

# Mudar para um modo personalizado
/mode shell-debug

# Ou usa diretamente o slug do modo
/shell-debug

Configurações específicas para shell

Modo de segurança para produção

Cria um modo focado em segurança para ambientes de produção:

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

Modo de desenvolvimento de scripts

Cria um modo para desenvolvimento 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

Permissões de execução de comandos

Restringir o acesso a comandos

Controla quais comandos um modo pode executar omitindo o grupo 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

Permitir comandos específicos

Usa a configuração de tools allowed do Bob Shell com modos personalizados no teu ficheiro de definições:

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

Comportamento interativo vs não interativo

Conceber para ambos os modos

Cria modos que funcionem bem em sessões interativas e não interativas:

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

Utilização não interativa

Usa modos em modo não interativo:

# Usa um modo concebido para automação
bob --chat-mode=test-runner -p "Run the test suite and report failures"

# Combina com processamento de output
bob --chat-mode=test-runner -p "Run tests" --hide-intermediary-output > results.txt

Instruções específicas do modo através de ficheiros

Instruções baseadas em diretórios

Cria ficheiros de instruções específicos do modo em .bob/rules-{mode-slug}/:

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

Exemplo de ficheiro de instruções (.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

Instruções em ficheiro único (alternativa)

Alternativamente, usa um único ficheiro .bobrules-{mode-slug} na raiz do teu workspace.

Precedência de configuração

As configurações de modos são aplicadas nesta ordem:

  1. Argumentos de linha de comando (--chat-mode=mode-slug)
  2. Modos ao nível do projeto (.bob/custom_modes.yaml
  3. Modos ao nível do utilizador (~/.bob/custom_modes.yaml)
  4. Modos ao nível do sistema (localizações específicas da plataforma)
  5. Modos padrão

Sandboxing com modos personalizados

Combina modos personalizados com a funcionalidade sandbox do Bob Shell para experimentação segura:

# Iniciar um modo personalizado em sandbox
bob --chat-mode=script-dev --sandbox

# Usar com sandbox Docker
bob --chat-mode=deploy-helper --sandbox

Migrar modos do Bob IDE

Diferenças principais

Ao migrar modos personalizados do Bob IDE para Bob Shell:

AspetoBob IDEBob Shell
Interação com a UIInterface visual com painéisInterface baseada em terminal
Edição de ficheirosDiffs e pré-visualizações no editorVista diff CLI ou editor externo
Execução de comandosTerminal integradoExecução direta no shell
Troca de modoDropdown da UI ou slash commandsSlash commands ou argumentos CLI
ConfiguraçãoUI de definições + ficheirosApenas ficheiros de configuração

Lista de verificação de adaptação

Ao adaptar modos do Bob IDE para Bob Shell:

  • Revê roleDefinition para contexto específico de shell
  • Atualiza customInstructions para referenciar fluxos de trabalho de linha de comando
  • Considera a segurança de execução de comandos na configuração de groups
  • Testa o modo em sessões interativas e não interativas
  • Verifica que o tratamento de caminhos de ficheiros funciona no contexto shell
  • Testa com modo sandbox se aplicável

Exemplo de migração

Modo original do Bob IDE:

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

Adaptado para 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
Como está este tópico?