Konfiguracja

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śćOpisUwagi specyficzne dla Shell
slugUnikalny wewnętrzny identyfikatorUżywany w argumentach wiersza poleceń:
bob --chat-mode=my-mode
nameNazwa wyświetlana w UIWyświetlana w selektorze trybów trybu interaktywnego
descriptionKrótki opis wyświetlany w selektorze trybówKrótko wyjaśniaj cel trybu
roleDefinitionGłówna tożsamość i wiedza specjalistycznaPowinien uwzględniać kontekst powłoki i workflow'y wiersza poleceń
groupsDozwolone zestawy narzędzi i dostęp do plikówUprawnienia do uruchamiania poleceń są krytyczne w środowiskach powłoki
whenToUseWskazówki dotyczące wyboru trybuPomaga Bob Shell wybierać odpowiednie tryby dla zadań
customInstructionsKonkretne wytyczne behawioralne lub reguły dla trybuMoże odwoływać się do wzorców deweloperskich Bob Shell

Dostępne narzędzia

Dostępne grupy narzędzi

  • read: Odczytuj pliki i katalogi
  • edit: Modyfikuj pliki (można ograniczyć za pomocą fileRegex)
  • browser: Używaj automatyzacji przeglądarki
  • command: Wykonuj polecenia terminala
  • mcp: 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
      - browser

Tryby 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
      - command

Wybó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 --sandbox

Interaktywne 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-debug

Konfiguracje 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 safety

Tryb 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
      - command

Uprawnienia 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 mode

Zezwalanie 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
      - command

Nieinteraktywne 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.txt

Instrukcje specyficzne dla trybu poprzez pliki

Instrukcje oparte na katalogach

Utwórz pliki instrukcji specyficznych dla trybu w .bob/rules-{mode-slug}/:

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

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 exist

Instrukcje 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:

  1. Argumenty wiersza poleceń (--chat-mode=mode-slug)
  2. Tryby na poziomie projektu (.bob/custom_modes.yaml
  3. Tryby na poziomie użytkownika (~/.bob/custom_modes.yaml)
  4. Tryby na poziomie systemu (lokalizacje specyficzne dla platformy)
  5. 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 --sandbox

Migracja trybów z Bob IDE

Kluczowe różnice

Podczas migracji niestandardowych trybów z Bob IDE do Bob Shell:

AspektBob IDEBob Shell
Interakcja z UIInterfejs wizualny z panelamiInterfejs oparty na terminalu
Edytowanie plikówDiff i podglądy w edytorzeWidok diff CLI lub zewnętrzny edytor
Uruchamianie poleceńZintegrowany terminalBezpośrednie uruchamianie w powłoce
Przełączanie trybówDropdown w UI lub slash commandsSlash commands lub argumenty CLI
KonfiguracjaUI ustawień + plikiTylko pliki konfiguracyjne

Lista kontrolna adaptacji

Podczas adaptacji trybów Bob IDE dla Bob Shell:

  • Przejrzyj roleDefinition pod 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
      - browser

Zaadaptowany 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
      - browser
Jak oceniasz ten temat?