Skip to content

Konfigurationsreferenz ​

Was Sie nach diesem Kurs können werden ​

  • ✅ Alle konfigurierbaren Parameter und deren Bedeutung verstehen
  • ✅ Das Benachrichtigungsverhalten nach Ihren Bedürfnissen anpassen
  • ✅ Ruhezeiten konfigurieren, um zu bestimmten Zeiten nicht gestört zu werden
  • ✅ Die Auswirkungen von Plattformunterschieden auf die Konfiguration verstehen

Ihre aktuellen Herausforderungen ​

Die Standardkonfiguration ist ausreichend, aber Ihr Workflow könnte spezielle Anforderungen haben:

  • Sie möchten wichtige Benachrichtigungen auch nachts erhalten, aber tagsüber nicht gestört werden
  • Sie arbeiten mit mehreren parallelen Sitzungen und möchten alle Benachrichtigungen erhalten
  • Sie arbeiten in tmux und stellen fest, dass die Fokuserkennung nicht wie erwartet funktioniert
  • Sie möchten wissen, welche Auswirkungen eine bestimmte Konfigurationsoption hat

Wann Sie diese Konfiguration verwenden sollten ​

  • Sie müssen das Benachrichtigungsverhalten anpassen – Die Standardkonfiguration entspricht nicht Ihren Arbeitsgewohnheiten
  • Sie möchten Benachrichtigungen reduzieren – Konfiguration von Ruhezeiten oder Unter-Sitzungs-Schaltern
  • Sie möchten das Plugin-Verhalten debuggen – Verstehen, welche Auswirkungen jede Konfigurationsoption hat
  • Sie verwenden mehrere Plattformen – Verstehen der Auswirkungen von Plattformunterschieden auf die Konfiguration

Kernkonzept ​

Die Konfigurationsdatei ermöglicht es Ihnen, das Plugin-Verhalten anzupassen, ohne Code zu ändern – wie ein "Einstellungsmenü" für das Plugin. Die Konfigurationsdatei ist im JSON-Format und befindet sich unter ~/.config/opencode/kdco-notify.json.

Konfigurationsladeablauf:

Plugin-Start
    ↓
Benutzerkonfiguration lesen
    ↓
Mit Standardkonfiguration zusammenführen (Benutzerkonfiguration hat Priorität)
    ↓
Mit zusammengeführter Konfiguration ausführen

Konfigurationsdateipfad

~/.config/opencode/kdco-notify.json

📋 Konfigurationsoptionen ​

Vollständige Konfigurationsstruktur ​

json
{
  "notifyChildSessions": false,
  "sounds": {
    "idle": "Glass",
    "error": "Basso",
    "permission": "Submarine",
    "question": "Submarine"
  },
  "quietHours": {
    "enabled": false,
    "start": "22:00",
    "end": "08:00"
  },
  "terminal": ""
}

Einzelne Optionen ​

notifyChildSessions ​

KonfigurationsoptionTypStandardwertBeschreibung
notifyChildSessionsbooleanfalseOb Unter-Sitzungen benachrichtigt werden

Funktion: Steuert, ob Benachrichtigungen für Unter-Sitzungen (Sub-Sessions) gesendet werden.

Was sind Unter-Sitzungen: Wenn Sie die Multi-Session-Funktion von OpenCode verwenden, können Sitzungen in Eltern-Sitzungen und Unter-Sitzungen unterteilt werden. Unter-Sitzungen sind normalerweise von der Eltern-Sitzung gestartete Hilfsaufgaben, wie Datei-Lese-/Schreiboperationen oder Netzwerk-Anfragen.

Standardverhalten (false):

  • Nur Abschluss-, Fehler- und Berechtigungsanforderungs-Ereignisse der Eltern-Sitzung werden benachrichtigt
  • Keine Benachrichtigungen für Ereignisse in Unter-Sitzungen
  • So wird vermieden, bei parallelen Multi-Tasks mit vielen Benachrichtigungen überflutet zu werden

Nach Aktivierung (true):

  • Alle Sitzungen (Eltern- und Unter-Sitzungen) werden benachrichtigt
  • Geeignet für Szenarien, in denen der Fortschritt aller Unter-Aufgaben verfolgt werden muss

Empfohlene Einstellung

Halten Sie den Standardwert false, es sei denn, Sie müssen wirklich den Status jeder Unter-Aufgabe verfolgen.

Fokuserkennung (macOS) ​

Das Plugin erkennt automatisch, ob das Terminal im Vordergrund ist. Wenn das Terminal das aktive Fenster ist, werden Benachrichtigungen unterdrückt, um wiederholte Erinnerungen zu vermeiden.

Funktionsweise:

  • Verwendet macOS osascript, um die aktuelle Vordergrund-Anwendung zu erkennen
  • Vergleicht den Prozessnamen der Vordergrund-Anwendung mit dem Prozessnamen Ihres Terminals
  • Sendet keine Benachrichtigung, wenn das Terminal im Vordergrund ist
  • Frage-Anfragen ausgenommen (unterstützt tmux-Workflow)

Plattformunterschiede

Die Fokuserkennungsfunktion ist nur auf macOS verfügbar. Windows und Linux unterstützen diese Funktion nicht.

sounds ​

KonfigurationsoptionTypStandardwertPlattformunterstützungBeschreibung
sounds.idlestring"Glass"✅ macOSSoundeffekt für Aufgabenabschluss
sounds.errorstring"Basso"✅ macOSSoundeffekt für Fehlerbenachrichtigungen
sounds.permissionstring"Submarine"✅ macOSSoundeffekt für Berechtigungsanforderungen
sounds.questionstringNicht gesetzt✅ macOSSoundeffekt für Frageanfragen (optional)

Funktion: Legt verschiedene System-Soundeffekte für verschiedene Benachrichtigungstypen fest (nur macOS).

Verfügbare Soundeffekte:

SoundnameHöreindruckEmpfohlene Verwendung
GlassLeicht, klarAufgabenabschluss (Standard)
BassoTief, warnendFehlerbenachrichtigung (Standard)
SubmarineErinnernd, sanftBerechtigungsanforderung (Standard)
BlowStarkWichtige Ereignisse
BottleKlarUnter-Aufgabenabschluss
FrogLockerInformelle Erinnerungen
FunkRhythmusMehrere Aufgaben abgeschlossen
HeroGroßartigMeilenstein erreicht
MorseMorsesignalDebugging-bezogen
PingKlarLeichter Hinweis
PopKurzSchnelle Aufgabe
PurrSanftStörungsfreie Erinnerung
SosumiEinzigartigBesondere Ereignisse
TinkHellKleine Aufgabe abgeschlossen

Anmerkung zum question-Feld: Das Feld sounds.question ist optional und wird für Benachrichtigungen bei KI-Fragen verwendet. Wenn nicht gesetzt, wird der Soundeffekt von permission verwendet.

Sound-Konfigurationstipps

  • Verwenden Sie leichte Sounds für Erfolg (idle)
  • Verwenden Sie tiefe Sounds für Fehler (error)
  • Verwenden Sie sanfte Sounds, wenn Ihre Aufmerksamkeit benötigt wird (permission, question)
  • Verschiedene Sound-Kombinationen ermöglichen es Ihnen, die Situation ungefähr zu erkennen, ohne die Benachrichtigung anzusehen

Plattformunterschiede

Die sounds-Konfiguration ist nur auf macOS wirksam. Windows und Linux verwenden die Systemstandard-Benachrichtigungssounds und können diese nicht anpassen.

quietHours ​

KonfigurationsoptionTypStandardwertBeschreibung
quietHours.enabledbooleanfalseOb Ruhezeiten aktiviert sind
quietHours.startstring"22:00"Ruhezeit-Startzeit (HH:MM Format)
quietHours.endstring"08:00"Ruhezeit-Endzeit (HH:MM Format)

Funktion: Unterdrückt alle Benachrichtigungen innerhalb des angegebenen Zeitraums.

Standardverhalten (enabled: false):

  • Ruhezeiten sind nicht aktiviert
  • Benachrichtigungen können jederzeit empfangen werden

Nach Aktivierung (enabled: true):

  • Zwischen start und end werden keine Benachrichtigungen gesendet
  • Über-Mitternacht-Zeiträume werden unterstützt (z.B. 22:00-08:00)

Zeitformat:

  • Verwendet das 24-Stunden-Format HH:MM
  • Beispiel: "22:30" bedeutet 22:30 Uhr

Über-Mitternacht-Zeiträume:

  • Wenn start > end (z.B. 22:00-08:00), bedeutet dies über Mitternacht
  • Der Zeitraum von 22:00 bis 08:00 am nächsten Tag gilt als Ruhezeit

Priorität von Ruhezeiten

Ruhezeiten haben die höchste Priorität. Selbst wenn alle anderen Bedingungen erfüllt sind, werden innerhalb der Ruhezeit keine Benachrichtigungen gesendet.

terminal ​

KonfigurationsoptionTypStandardwertBeschreibung
terminalstringNicht gesetztManuelle Angabe des Terminal-Typs (überschreibt automatische Erkennung)

Funktion: Manuelle Angabe des verwendeten Terminal-Emulator-Typs, überschreibt die automatische Erkennung des Plugins.

Standardverhalten (nicht gesetzt):

  • Das Plugin verwendet die detect-terminal-Bibliothek zur automatischen Erkennung Ihres Terminals
  • Unterstützt 37+ Terminal-Emulatoren

Nach dem Setzen:

  • Das Plugin verwendet den angegebenen Terminal-Typ
  • Wird für Fokuserkennung und Klick-fokussieren-Funktionen verwendet (macOS)

Häufig verwendete Terminal-Werte:

Terminal-AnwendungKonfigurationswert
Ghostty"ghostty"
Kitty"kitty"
iTerm2"iterm2"
WezTerm"wezterm"
Alacritty"alacritty"
macOS Terminal"terminal"
Hyper"hyper"
Warp"warp"
VS Code integriertes Terminal"vscode"

Wann manuelle Einstellung erforderlich ist

  • Automatische Erkennung schlägt fehl, Fokuserkennung funktioniert nicht
  • Sie verwenden mehrere Terminals und müssen ein bestimmtes angeben
  • Ihr Terminal-Name ist nicht in der Liste der häufig verwendeten

Plattformunterschiede-Zusammenfassung ​

Verschiedene Plattformen unterstützen Konfigurationsoptionen unterschiedlich:

KonfigurationsoptionmacOSWindowsLinux
notifyChildSessions✅✅✅
Fokuserkennung (hardcodiert)✅❌❌
sounds.*✅❌❌
quietHours.*✅✅✅
terminal✅✅✅

Hinweis für Windows/Linux-Benutzer

Die sounds-Konfiguration und die Fokuserkennungsfunktion sind unter Windows und Linux nicht wirksam.

  • Windows/Linux verwenden Systemstandard-Benachrichtigungssounds
  • Windows/Linux unterstützen keine Fokuserkennung (kann nicht über Konfiguration gesteuert werden)

Konfigurationsbeispiele ​

Basis-Konfiguration (empfohlen) ​

json
{
  "notifyChildSessions": false,
  "sounds": {
    "idle": "Glass",
    "error": "Basso",
    "permission": "Submarine"
  },
  "quietHours": {
    "enabled": false,
    "start": "22:00",
    "end": "08:00"
  }
}

Diese Konfiguration ist für die meisten Benutzer geeignet:

  • Nur Eltern-Sitzungen werden benachrichtigt, um Störungen durch Unter-Aufgaben zu vermeiden
  • Auf macOS werden Benachrichtigungen automatisch unterdrückt, wenn das Terminal im Vordergrund ist (keine Konfiguration erforderlich)
  • Verwendet die Standard-Sound-Kombination
  • Ruhezeiten nicht aktiviert

Ruhezeiten aktivieren ​

json
{
  "notifyChildSessions": false,
  "sounds": {
    "idle": "Glass",
    "error": "Basso",
    "permission": "Submarine"
  },
  "quietHours": {
    "enabled": true,
    "start": "22:00",
    "end": "08:00"
  }
}

Geeignet für Benutzer, die nachts nicht gestört werden möchten:

  • Keine Benachrichtigungen zwischen 22:00 und 08:00
  • Normale Benachrichtigungen zu anderen Zeiten

Alle Unter-Aufgaben verfolgen ​

json
{
  "notifyChildSessions": true,
  "sounds": {
    "idle": "Glass",
    "error": "Basso",
    "permission": "Submarine",
    "question": "Ping"
  },
  "quietHours": {
    "enabled": false,
    "start": "22:00",
    "end": "08:00"
  }
}

Geeignet für Benutzer, die den Fortschritt aller Aufgaben verfolgen müssen:

  • Alle Sitzungen (Eltern- und Unter-Sitzungen) werden benachrichtigt
  • Unabhängiger Sound für Fragen-Anfragen (Ping) eingestellt

Terminal manuell angeben ​

json
{
  "notifyChildSessions": false,
  "sounds": {
    "idle": "Glass",
    "error": "Basso",
    "permission": "Submarine"
  },
  "quietHours": {
    "enabled": false,
    "start": "22:00",
    "end": "08:00"
  },
  "terminal": "ghostty"
}

Geeignet für Benutzer bei automatischer Erkennungsfehler oder Verwendung mehrerer Terminals:

  • Manuelle Angabe der Verwendung von Ghostty-Terminal
  • Sicherstellen, dass Fokuserkennung und Klick-fokussieren-Funktionen normal funktionieren

Windows/Linux Minimalkonfiguration ​

json
{
  "notifyChildSessions": false,
  "quietHours": {
    "enabled": false,
    "start": "22:00",
    "end": "08:00"
  }
}

Geeignet für Windows/Linux-Benutzer (vereinfachte Konfiguration):

  • Nur plattformunterstützte Konfigurationsoptionen behalten
  • sounds-Konfiguration und Fokuserkennungsfunktion sind unter Windows/Linux unwirksam, keine Einstellung erforderlich

Konfigurationsdatei-Verwaltung ​

Konfigurationsdatei erstellen ​

macOS/Linux:

bash
# Konfigurationsverzeichnis erstellen (falls nicht vorhanden)
mkdir -p ~/.config/opencode

# Konfigurationsdatei erstellen
nano ~/.config/opencode/kdco-notify.json

Windows (PowerShell):

powershell
# Konfigurationsverzeichnis erstellen (falls nicht vorhanden)
New-Item -ItemType Directory -Path "$env:APPDATA\opencode" -Force

# Konfigurationsdatei erstellen
notepad "$env:APPDATA\opencode\kdco-notify.json"

Konfigurationsdatei überprüfen ​

Dateiexistenz prüfen:

bash
# macOS/Linux
cat ~/.config/opencode/kdco-notify.json

# Windows PowerShell
Get-Content "$env:APPDATA\opencode\kdco-notify.json"

Konfiguration überprüfen:

  1. Konfigurationsdatei ändern
  2. OpenCode neu starten (oder Konfigurations-Neuladen auslösen)
  3. Beobachten, ob das Benachrichtigungsverhalten wie erwartet ist

Konfigurationsdatei-Fehlerbehandlung ​

Bei Konfigurationsdatei-Formatfehlern:

  • Das Plugin ignoriert die fehlerhafte Konfigurationsdatei
  • Führt mit Standardkonfiguration weiter aus
  • Gibt Warnungsinformationen in OpenCode-Logs aus

Häufige JSON-Fehler:

FehlertypBeispielKorrekturmethode
Fehlendes Komma"key1": "value1" "key2": "value2"Komma hinzufügen: "key1": "value1",
Überzähliges Komma"key1": "value1",}Letztes Komma entfernen: "key1": "value1"}
Nicht geschlossene Anführungszeichen"key": valueAnführungszeichen hinzufügen: "key": "value"
Einfache Anführungszeichen verwendet'key': 'value'Doppelte Anführungszeichen verwenden: "key": "value"
Kommentar-Syntaxfehler{"key": "value" /* comment */}JSON unterstützt keine Kommentare, Kommentare entfernen

JSON-Validierungstools verwenden

Sie können Online-JSON-Validierungstools (wie jsonlint.com) verwenden, um das Konfigurationsdatei-Format zu überprüfen.

Zusammenfassung dieser Lektion ​

Diese Lektion bietet eine vollständige Konfigurationsreferenz für opencode-notify:

Kernkonfigurationsoptionen:

KonfigurationsoptionFunktionStandardwertPlattformunterstützung
notifyChildSessionsUnter-Sitzungs-BenachrichtigungsschalterfalseAlle Plattformen
FokuserkennungTerminal-Fokus-Unterdrückung (hardcodiert)Keine KonfigurationNur macOS
sounds.*Benutzerdefinierte SoundsSiehe FelderNur macOS
quietHours.*Ruhezeiten-KonfigurationSiehe FelderAlle Plattformen
terminalManuelle Terminal-AngabeNicht gesetztAlle Plattformen

Konfigurationsprinzipien:

  • Die meisten Benutzer: Standardkonfiguration ist ausreichend
  • Stille benötigt: quietHours aktivieren
  • Unter-Aufgaben verfolgen müssen: notifyChildSessions aktivieren
  • macOS-Benutzer: Können sounds anpassen und genießen automatische Fokuserkennung
  • Windows/Linux-Benutzer: Weniger Konfigurationsoptionen, Fokus auf notifyChildSessions und quietHours

Konfigurationsdateipfad: ~/.config/opencode/kdco-notify.json

Vorschau auf die nächste Lektion ​

In der nächsten Lektion lernen wir Ruhezeiten im Detail kennen.

Sie werden lernen:

  • Detaillierte Funktionsweise von Ruhezeiten
  • Konfigurationsmethode für über-Mitternacht-Zeiträume
  • Priorität von Ruhezeiten gegenüber anderen Konfigurationen
  • Häufige Probleme und Lösungen

Anhang: Quellcode-Referenz ​

Klicken Sie hier, um Quellcode-Positionen anzuzeigen

Aktualisiert am: 2026-01-27

FunktionDateipfadZeilennummer
Konfigurations-Schnittstellen-Definitionsrc/notify.ts30-48
Standardkonfigurationsrc/notify.ts56-68
Konfigurationsdatei-Ladensrc/notify.ts91-114
Unter-Sitzungs-Prüfungsrc/notify.ts256-259
Terminal-Fokus-Prüfungsrc/notify.ts265
Ruhezeiten-Prüfungsrc/notify.ts262
Sound-Konfigurations-Verwendungsrc/notify.ts227-236
README KonfigurationsbeispielREADME.md68-79

Konfigurations-Schnittstelle (NotifyConfig):

typescript
interface NotifyConfig {
  /** Benachrichtigen bei Unter-Sub-Session-Ereignissen (Standard: false) */
  notifyChildSessions: boolean
  /** Sound-Konfiguration pro Ereignistyp */
  sounds: {
    idle: string
    error: string
    permission: string
    question?: string
  }
  /** Ruhezeiten-Konfiguration */
  quietHours: {
    enabled: boolean
    start: string // "HH:MM" Format
    end: string // "HH:MM" Format
  }
  /** Terminal-Erkennung überschreiben (optional) */
  terminal?: string
}

Hinweis: Das Konfigurations-Schnittstellenfeld suppressWhenFocused existiert nicht. Die Fokuserkennung ist ein hardcodiertes Verhalten der macOS-Plattform, das Benutzer nicht über die Konfigurationsdatei steuern können.

Standardkonfiguration (DEFAULT_CONFIG):

typescript
const DEFAULT_CONFIG: NotifyConfig = {
  notifyChildSessions: false,
  sounds: {
    idle: "Glass",      // Soundeffekt für Aufgabenabschluss
    error: "Basso",     // Soundeffekt für Fehler
    permission: "Submarine",  // Soundeffekt für Berechtigungsanforderungen
  },
  quietHours: {
    enabled: false,     // Ruhezeiten standardmäßig nicht aktiviert
    start: "22:00",    // 22:00 Uhr
    end: "08:00",      // 08:00 Uhr
  },
}

Konfigurationslade-Funktion (loadConfig):

  • Pfad: ~/.config/opencode/kdco-notify.json
  • Verwendet fs.readFile() zum Lesen der Konfigurationsdatei
  • Mit DEFAULT_CONFIG zusammenführen (Benutzerkonfiguration hat Priorität)
  • Verschachtelte Objekte (sounds, quietHours) werden ebenfalls zusammengeführt
  • Wenn Konfigurationsdatei nicht existiert oder Formatfehler hat, Standardkonfiguration verwenden

Unter-Sitzungs-Prüfung (isParentSession):

  • Prüft, ob sessionID ein / enthält (Unter-Sitzungs-Kennzeichnung)
  • Wenn notifyChildSessions false ist, Unter-Sitzungs-Benachrichtigungen überspringen
  • Berechtigungsanforderungs-Benachrichtigungen (permission.updated) werden immer gesendet, unabhängig von dieser Einschränkung

Terminal-Fokus-Prüfung (isTerminalFocused):

  • Verwendet osascript, um den aktuellen Vordergrund-Anwendungsprozessnamen abzurufen
  • Vergleicht mit dem processName des Terminals (nicht case-sensitiv)
  • Nur auf macOS-Plattform aktiviert, kann nicht über Konfiguration deaktiviert werden
  • Frage-Anfrage-Benachrichtigungen (question) haben keine Fokus-Prüfung (unterstützt tmux-Workflow)

Ruhezeiten-Prüfung (isQuietHours):

  • Konvertiert aktuelle Zeit in Minuten (ab Mitternacht)
  • Vergleicht mit konfiguriertem start und end
  • Unterstützt über-Mitternacht-Zeiträume (z.B. 22:00-08:00)
  • Wenn start > end, bedeutet dies über Mitternacht

Sound-Konfigurations-Verwendung (sendNotification):

  • Liest Sound-Namen für entsprechendes Ereignis aus der Konfiguration
  • Übergibt an die sound-Option von node-notifier
  • Nur auf macOS-Plattform wirksam
  • Wenn question-Ereignis keinen Sound konfiguriert hat, wird der Sound von permission verwendet