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:
| Propriedade | Descrição | Considerações específicas para shell |
|---|---|---|
slug | Identificador interno único | Usado em argumentos de linha de comando:bob --chat-mode=my-mode |
name | Nome de exibição na UI | Mostrado no seletor de modos da sessão interativa |
description | Breve descrição mostrada no seletor de modos | Explica brevemente a finalidade do modo |
roleDefinition | Identidade central e especialização | Deve considerar o contexto shell e fluxos de trabalho de linha de comando |
groups | Conjuntos de tools e acesso a ficheiros permitidos | As permissões de execução de comandos são críticas em ambientes shell |
whenToUse | Orientação para seleção de modo | Ajuda Bob Shell a escolher modos adequados para as tarefas |
customInstructions | Diretrizes comportamentais específicas, ou regras para o modo | Pode referenciar padrões de desenvolvimento do Bob Shell |
Tools disponíveis
Grupos de tools disponíveis
read: Ler ficheiros e diretóriosedit: Modificar ficheiros (pode ser restringido comfileRegex)browser: Usar automação do browsercommand: Executar comandos do terminalmcp: 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
- browserModos 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
- commandSeleçã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 --sandboxTroca 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-debugConfiguraçõ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 safetyModo 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
- commandPermissõ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 modePermitir 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
- commandUtilizaçã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.txtInstruçõ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}/:
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 existInstruçõ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:
- Argumentos de linha de comando (
--chat-mode=mode-slug) - Modos ao nível do projeto (
.bob/custom_modes.yaml - Modos ao nível do utilizador (
~/.bob/custom_modes.yaml) - Modos ao nível do sistema (localizações específicas da plataforma)
- 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 --sandboxMigrar modos do Bob IDE
Diferenças principais
Ao migrar modos personalizados do Bob IDE para Bob Shell:
| Aspeto | Bob IDE | Bob Shell |
|---|---|---|
| Interação com a UI | Interface visual com painéis | Interface baseada em terminal |
| Edição de ficheiros | Diffs e pré-visualizações no editor | Vista diff CLI ou editor externo |
| Execução de comandos | Terminal integrado | Execução direta no shell |
| Troca de modo | Dropdown da UI ou slash commands | Slash commands ou argumentos CLI |
| Configuração | UI de definições + ficheiros | Apenas ficheiros de configuração |
Lista de verificação de adaptação
Ao adaptar modos do Bob IDE para Bob Shell:
- Revê
roleDefinitionpara contexto específico de shell - Atualiza
customInstructionspara 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
- browserAdaptado 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
- browserRegras personalizadas
As regras personalizadas influenciam como Bob Shell responde aos teus pedidos no ambiente de terminal, alinhando o output com as tuas preferências específicas e os requisitos do projeto. Podes controlar o estilo de código, a abordagem de documentação e os processos de tomada de decisão.
Personas de agentes
Cria ficheiros de persona reutilizáveis que definem o papel, o foco e o acesso a tools de um subagent. Define o que um subagent procura, como formata os seus resultados e o que não pode fazer.