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:
| Eigenschaft | Beschreibung | Shell-spezifische Überlegungen |
|---|---|---|
slug | Eindeutiger interner Bezeichner | Wird in Befehlszeilenargumenten verwendet:bob --chat-mode=my-mode |
name | Anzeigename in der UI | Wird im Moduswähler des interaktiven Modus angezeigt |
description | Kurze Beschreibung im Moduswähler | Erkläre kurz den Zweck deines Modus |
roleDefinition | Kernidentität und -kompetenz | Sollte den Shell-Kontext und befehlszeilenbasierte Workflows berücksichtigen |
groups | Erlaubte Toolsets und Dateizugriff | Befehlsausführungsberechtigungen sind in Shell-Umgebungen entscheidend |
whenToUse | Modus-Auswahlführung | Hilft Bob Shell, geeignete Modi für Aufgaben auszuwählen |
customInstructions | Spezifische Verhaltensrichtlinien oder Regeln für den Modus | Kann auf Bob Shell-Entwicklungsmuster verweisen |
Verfügbare Tools
Verfügbare Tool-Gruppen
read: Dateien und Verzeichnisse lesenedit: Dateien ändern (kann mitfileRegexeingeschränkt werden)browser: Browser-Automatisierung verwendencommand: Terminalbefehle ausführenmcp: 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
- browserProjektspezifische 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
- commandModus-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 --sandboxInteraktives 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-debugShell-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 safetyShell-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
- commandBefehlsausfü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 modeBestimmte 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
- commandNicht-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.txtModusspezifische Anweisungen über Dateien
Verzeichnisbasierte Anweisungen
Modusspezifische Anweisungsdateien in .bob/rules-{mode-slug}/ erstellen:
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 existEinzeldatei-Anweisungen (Fallback)
Alternativ eine einzelne Datei .bobrules-{mode-slug} im Workspace-Stammverzeichnis verwenden.
Konfigurationsrangfolge
Moduskonfigurationen werden in dieser Reihenfolge angewendet:
- Befehlszeilenargumente (
--chat-mode=mode-slug) - Modi auf Projektebene (
.bob/custom_modes.yaml) - Modi auf Nutzerebene (
~/.bob/custom_modes.yaml) - Modi auf Systemebene (plattformspezifische Orte)
- 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 --sandboxModi von Bob IDE migrieren
Hauptunterschiede
Beim Migrieren benutzerdefinierter Modi von Bob IDE zu Bob Shell:
| Aspekt | Bob IDE | Bob Shell |
|---|---|---|
| UI-Interaktion | Visuelles Interface mit Panels | Terminalbasiertes Interface |
| Dateibearbeitung | Editor-Diffs und Vorschauen | CLI-Diff-Ansicht oder externer Editor |
| Befehlsausführung | Integriertes Terminal | Direkte Shell-Ausführung |
| Moduswechsel | UI-Dropdown oder Slash-Befehle | Slash-Befehle oder CLI-Argumente |
| Konfiguration | Einstellungs-UI + Dateien | Nur Konfigurationsdateien |
Anpassungs-Checkliste
Beim Anpassen von Bob IDE-Modi für Bob Shell:
roleDefinitionauf Shell-spezifischen Kontext überprüfencustomInstructionsaktualisieren, 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
- browserFü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
- browserBenutzerdefinierte Regeln
Benutzerdefinierte Regeln beeinflussen, wie Bob Shell auf deine Anfragen in der Terminal-Umgebung reagiert, und passen die Ausgabe an deine spezifischen Präferenzen und Projektanforderungen an. Du kannst Coding-Stil, Dokumentationsansatz und Entscheidungsprozesse steuern.
Agent-Personas
Erstelle wiederverwendbare Persona-Dateien, die die Rolle, den Fokus und den Tool-Zugriff eines subagents festlegen. Definiere, worauf ein subagent achtet, wie er seine Ausgabe formatiert und was er nicht tun darf.