Niestandardowe tryby
Możesz tworzyć niestandardowe tryby, aby dostosować zachowanie Bob do konkretnych zadań lub workflow'ów. Niestandardowe tryby w Bob Shell działają podobnie do trybów Bob IDE.
Dlaczego warto używać niestandardowych trybów w Bob Shell
- Workflow'y zoptymalizowane pod powłokę: Twórz tryby zaprojektowane specjalnie dla zadań deweloperskich opartych na terminalu
- Bezpieczeństwo w wierszu poleceń: Ogranicz tryby do bezpiecznych operacji podczas pracy w środowiskach produkcyjnych
- Zachowanie specyficzne dla środowiska: Konfiguruj tryby dostosowujące się do różnych środowisk powłoki
- Przyjazność dla automatyzacji: Projektuj tryby działające bezproblemowo zarówno w sesjach interaktywnych, jak i nieinteraktywnych
- Standaryzacja zespołu: Udostępniaj tryby specyficzne dla powłoki w całym zespole dla spójnych workflow'ów
Co zawiera niestandardowy tryb
Niestandardowe tryby w Bob Shell używają tej samej podstawowej struktury co tryby Bob IDE:
| Właściwość | Opis | Uwagi specyficzne dla Shell |
|---|---|---|
slug | Unikalny wewnętrzny identyfikator | Używany w argumentach wiersza poleceń:bob --chat-mode=my-mode |
name | Nazwa wyświetlana w UI | Wyświetlana w selektorze trybów trybu interaktywnego |
description | Krótki opis wyświetlany w selektorze trybów | Krótko wyjaśniaj cel trybu |
roleDefinition | Główna tożsamość i wiedza specjalistyczna | Powinien uwzględniać kontekst powłoki i workflow'y wiersza poleceń |
groups | Dozwolone zestawy narzędzi i dostęp do plików | Uprawnienia do uruchamiania poleceń są krytyczne w środowiskach powłoki |
whenToUse | Wskazówki dotyczące wyboru trybu | Pomaga Bob Shell wybierać odpowiednie tryby dla zadań |
customInstructions | Konkretne wytyczne behawioralne lub reguły dla trybu | Może odwoływać się do wzorców deweloperskich Bob Shell |
Dostępne narzędzia
Dostępne grupy narzędzi
read: Odczytuj pliki i katalogiedit: Modyfikuj pliki (można ograniczyć za pomocąfileRegex)browser: Używaj automatyzacji przeglądarkicommand: Wykonuj polecenia terminalamcp: Uzyskuj dostęp do serwerów MCP
Tworzenie niestandardowych trybów
Pliki konfiguracyjne
Bob Shell używa tego samego formatu konfiguracji co Bob IDE, obsługując zarówno YAML (preferowany), jak i JSON.
Tryby globalne
Utwórz lub edytuj ~/.bob/custom_modes.yaml dla trybów dostępnych we wszystkich projektach:
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
- browserTryby specyficzne dla projektu
Utwórz lub edytuj .bob/custom_modes.yaml w katalogu głównym projektu:
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
- commandWybór trybu z wiersza poleceń
Określ tryb podczas uruchamiania Bob Shell:
# Uruchom Bob Shell w konkretnym trybie
bob --chat-mode=shell-debug
# Połącz z innymi opcjami
bob --chat-mode=deploy-helper --sandboxInteraktywne przełączanie trybów
W trybie interaktywnym przełączaj tryby za pomocą slash commands:
# Przełącz na niestandardowy tryb
/mode shell-debug
# Lub użyj bezpośrednio sluga trybu
/shell-debugKonfiguracje specyficzne dla Shell
Tryb bezpieczeństwa produkcyjnego
Utwórz tryb skoncentrowany na bezpieczeństwie dla środowisk produkcyjnych:
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 safetyTryb deweloperski dla skryptów
Utwórz tryb do tworzenia skryptów powłoki:
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
- commandUprawnienia do uruchamiania poleceń
Ograniczanie dostępu do poleceń
Kontroluj, które polecenia może uruchamiać tryb, pomijając grupę 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 modeZezwalanie na konkretne polecenia
Używaj konfiguracji narzędzi allowed Bob Shell z niestandardowymi trybami w pliku ustawień:
{
"tools": {
"allowed": [
"run_shell_command(git status)",
"run_shell_command(git log)",
"run_shell_command(git diff)"
]
}
}Zachowanie interaktywne a nieinteraktywne
Projektowanie dla obu trybów
Twórz tryby działające dobrze zarówno w sesjach interaktywnych, jak i nieinteraktywnych:
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
- commandNieinteraktywne użycie
Używaj trybów w trybie nieinteraktywnym:
# Użyj trybu zaprojektowanego do automatyzacji
bob --chat-mode=test-runner -p "Run the test suite and report failures"
# Połącz z przetwarzaniem wyjścia
bob --chat-mode=test-runner -p "Run tests" --hide-intermediary-output > results.txtInstrukcje specyficzne dla trybu poprzez pliki
Instrukcje oparte na katalogach
Utwórz pliki instrukcji specyficznych dla trybu w .bob/rules-{mode-slug}/:
Przykładowy plik instrukcji (.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 existInstrukcje w pojedynczym pliku (wariant zastępczy)
Alternatywnie używaj pojedynczego pliku .bobrules-{mode-slug} w katalogu głównym obszaru roboczego.
Pierwszeństwo konfiguracji
Konfiguracje trybów są stosowane w następującej kolejności:
- Argumenty wiersza poleceń (
--chat-mode=mode-slug) - Tryby na poziomie projektu (
.bob/custom_modes.yaml - Tryby na poziomie użytkownika (
~/.bob/custom_modes.yaml) - Tryby na poziomie systemu (lokalizacje specyficzne dla platformy)
- Tryby domyślne
Sandboxing z niestandardowymi trybami
Łącz niestandardowe tryby z funkcją sandbox Bob Shell do bezpiecznych eksperymentów:
# Uruchom niestandardowy tryb w sandbox
bob --chat-mode=script-dev --sandbox
# Użyj z sandbox Docker
bob --chat-mode=deploy-helper --sandboxMigracja trybów z Bob IDE
Kluczowe różnice
Podczas migracji niestandardowych trybów z Bob IDE do Bob Shell:
| Aspekt | Bob IDE | Bob Shell |
|---|---|---|
| Interakcja z UI | Interfejs wizualny z panelami | Interfejs oparty na terminalu |
| Edytowanie plików | Diff i podglądy w edytorze | Widok diff CLI lub zewnętrzny edytor |
| Uruchamianie poleceń | Zintegrowany terminal | Bezpośrednie uruchamianie w powłoce |
| Przełączanie trybów | Dropdown w UI lub slash commands | Slash commands lub argumenty CLI |
| Konfiguracja | UI ustawień + pliki | Tylko pliki konfiguracyjne |
Lista kontrolna adaptacji
Podczas adaptacji trybów Bob IDE dla Bob Shell:
- Przejrzyj
roleDefinitionpod kątem kontekstu specyficznego dla powłoki - Zaktualizuj
customInstructions, aby odwoływały się do workflow'ów wiersza poleceń - Rozważ bezpieczeństwo uruchamiania poleceń w konfiguracji
groups - Przetestuj tryb zarówno w sesjach interaktywnych, jak i nieinteraktywnych
- Zweryfikuj, że obsługa ścieżek plików działa w kontekście powłoki
- Przetestuj z trybem sandbox, jeśli ma zastosowanie
Przykład migracji
Oryginalny tryb Bob IDE:
customModes:
- slug: code-reviewer
name: 👀 Code Reviewer
roleDefinition: You are a code reviewer who provides detailed feedback.
groups:
- read
- browserZaadaptowany dla 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
- browserNiestandardowe reguły
Niestandardowe reguły wpływają na to, jak Bob Shell odpowiada na twoje żądania w środowisku terminala, dostosowując wyjście do twoich konkretnych preferencji i wymagań projektu. Możesz kontrolować styl kodowania, podejście do dokumentacji i procesy podejmowania decyzji.
Persony agentów
Twórz wielokrotnego użytku pliki person, które definiują rolę, fokus i dostęp do tooli subagenta. Określ, czego szuka subagent, jak formatuje wyniki i czego nie może robić.