Konfiguration

Benutzerdefinierte Modi

Du kannst benutzerdefinierte Modi erstellen, um Bobs Verhalten auf bestimmte Aufgaben oder Workflows anzupassen. Benutzerdefinierte Modi in Bob Shell funktionieren ähnlich wie Bob IDE-Modi.

Warum benutzerdefinierte Modi in Bob Shell verwenden

  • Shell-optimierte Workflows: Modi erstellen, die speziell für terminalbasierte Entwicklungsaufgaben ausgelegt sind
  • Befehlszeilen-Sicherheit: Modi auf sichere Operationen beschränken, wenn in Produktionsumgebungen gearbeitet wird
  • Umgebungsspezifisches Verhalten: Modi konfigurieren, die sich an verschiedene Shell-Umgebungen anpassen
  • Automatisierungsfreundlich: Modi gestalten, die sowohl in interaktiven als auch nicht-interaktiven Sitzungen nahtlos funktionieren
  • Team-Standardisierung: Shell-spezifische Modi im Team für konsistente Workflows teilen

Was ein benutzerdefinierter Modus enthält

Benutzerdefinierte Modi in Bob Shell verwenden dieselbe Kernstruktur wie Bob IDE-Modi:

EigenschaftBeschreibungShell-spezifische Überlegungen
slugEindeutiger interner BezeichnerWird in Befehlszeilenargumenten verwendet:
bob --chat-mode=my-mode
nameAnzeigename in der UIWird im Moduswähler des interaktiven Modus angezeigt
descriptionKurze Beschreibung im ModuswählerErkläre kurz den Zweck deines Modus
roleDefinitionKernidentität und -kompetenzSollte den Shell-Kontext und befehlszeilenbasierte Workflows berücksichtigen
groupsErlaubte Toolsets und DateizugriffBefehlsausführungsberechtigungen sind in Shell-Umgebungen entscheidend
whenToUseModus-AuswahlführungHilft Bob Shell, geeignete Modi für Aufgaben auszuwählen
customInstructionsSpezifische Verhaltensrichtlinien oder Regeln für den ModusKann auf Bob Shell-Entwicklungsmuster verweisen

Verfügbare Tools

Verfügbare Tool-Gruppen

  • read: Dateien und Verzeichnisse lesen
  • edit: Dateien ändern (kann mit fileRegex eingeschränkt werden)
  • browser: Browser-Automatisierung verwenden
  • command: Terminalbefehle ausführen
  • mcp: MCP-Server verwenden

Benutzerdefinierte Modi erstellen

Konfigurationsdateien

Bob Shell verwendet dasselbe Konfigurationsformat wie Bob IDE und unterstützt sowohl YAML (bevorzugt) als auch JSON-Formate.

Globale Modi

Erstelle oder bearbeite ~/.bob/custom_modes.yaml für Modi, die in allen Projekten verfügbar sind:

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

Projektspezifische Modi

Erstelle oder bearbeite .bob/custom_modes.yaml in deinem Projektstammverzeichnis:

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

Modus-Auswahl über die Befehlszeile

Einen Modus beim Start von Bob Shell angeben:

# Bob Shell in einem bestimmten Modus starten
bob --chat-mode=shell-debug

# Mit anderen Optionen kombinieren
bob --chat-mode=deploy-helper --sandbox

Interaktives Moduswechseln

Im interaktiven Modus Modi mit Slash-Befehlen wechseln:

# Zu einem benutzerdefinierten Modus wechseln
/mode shell-debug

# Oder den Slug des Modus direkt verwenden
/shell-debug

Shell-spezifische Konfigurationen

Produktionssicherheitsmodus

Einen sicherheitsorientierten Modus für Produktionsumgebungen erstellen:

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

Shell-Skript-Entwicklungsmodus

Einen Modus für die Shell-Skript-Entwicklung erstellen:

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

Befehlsausführungsberechtigungen

Befehlszugriff einschränken

Steuere, welche Befehle ein Modus ausführen kann, indem du die command-Gruppe weglässt:

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

Bestimmte Befehle erlauben

Bobs allowed-Tools-Konfiguration mit benutzerdefinierten Modi in deiner Einstellungsdatei verwenden:

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

Interaktives vs. nicht-interaktives Verhalten

Für beide Modi gestalten

Modi erstellen, die sowohl in interaktiven als auch nicht-interaktiven Sitzungen gut funktionieren:

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

Nicht-interaktive Nutzung

Modi im nicht-interaktiven Modus verwenden:

# Einen für Automatisierung entwickelten Modus verwenden
bob --chat-mode=test-runner -p "Run the test suite and report failures"

# Mit Ausgabeverarbeitung kombinieren
bob --chat-mode=test-runner -p "Run tests" --hide-intermediary-output > results.txt

Modusspezifische Anweisungen über Dateien

Verzeichnisbasierte Anweisungen

Modusspezifische Anweisungsdateien in .bob/rules-{mode-slug}/ erstellen:

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

Beispiel-Anweisungsdatei (.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

Einzeldatei-Anweisungen (Fallback)

Alternativ eine einzelne Datei .bobrules-{mode-slug} im Workspace-Stammverzeichnis verwenden.

Konfigurationsrangfolge

Moduskonfigurationen werden in dieser Reihenfolge angewendet:

  1. Befehlszeilenargumente (--chat-mode=mode-slug)
  2. Modi auf Projektebene (.bob/custom_modes.yaml)
  3. Modi auf Nutzerebene (~/.bob/custom_modes.yaml)
  4. Modi auf Systemebene (plattformspezifische Orte)
  5. Standardmodi

Sandboxing mit benutzerdefinierten Modi

Benutzerdefinierte Modi mit Bobs Sandbox-Funktion für sicheres Experimentieren kombinieren:

# Einen benutzerdefinierten Modus in der Sandbox starten
bob --chat-mode=script-dev --sandbox

# Mit Docker-Sandbox verwenden
bob --chat-mode=deploy-helper --sandbox

Modi von Bob IDE migrieren

Hauptunterschiede

Beim Migrieren benutzerdefinierter Modi von Bob IDE zu Bob Shell:

AspektBob IDEBob Shell
UI-InteraktionVisuelles Interface mit PanelsTerminalbasiertes Interface
DateibearbeitungEditor-Diffs und VorschauenCLI-Diff-Ansicht oder externer Editor
BefehlsausführungIntegriertes TerminalDirekte Shell-Ausführung
ModuswechselUI-Dropdown oder Slash-BefehleSlash-Befehle oder CLI-Argumente
KonfigurationEinstellungs-UI + DateienNur Konfigurationsdateien

Anpassungs-Checkliste

Beim Anpassen von Bob IDE-Modi für Bob Shell:

  • roleDefinition auf Shell-spezifischen Kontext überprüfen
  • customInstructions aktualisieren, um auf befehlszeilenbasierte Workflows zu verweisen
  • Befehlsausführungssicherheit in der groups-Konfiguration berücksichtigen
  • Modus in interaktiven und nicht-interaktiven Sitzungen testen
  • Sicherstellen, dass die Dateipfadbehandlung im Shell-Kontext funktioniert
  • Mit Sandbox-Modus testen, falls zutreffend

Beispielmigration

Ursprünglicher Bob IDE-Modus:

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

Für Bob Shell angepasst:

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
Wie ist dieses Thema?