Was macht discord-channel-monitor-skill?
Private-First Codex Skill zum schreibgeschützten Überwachen von Discord-Nachrichten und Tickets über Hermes.
Funktionsweise
Dieses Skill erlaubt es einem Codex-Agenten, Nachrichten aus Discord-Kanälen sowie Ticketing-Informationen (z.B. aus Support-Tickets) ausschließlich lesend abzurufen. Die Kommunikation erfolgt über den Hermes-Dienst, der als sicherer Vermittler zwischen Discord und dem Agenten fungiert. Der Agent hat keinen Schreibzugriff auf Discord – dies reduziert das Risiko von versehentlichen Änderungen oder Datenlecks.
Voraussetzungen
- Ein laufender Hermes-Dienst (z.B.
hermes-relay) - Gültige Discord-Kanal-IDs (z.B.
123456789012345678) - Zugriffstoken für Hermes (Umgebungsvariable:
HERMES_API_TOKEN) - Codex-kompatible Umgebung
Installation
- Fügen Sie dieses Skill zu Ihrem Codex-Projekt hinzu:
codex skill add obsidianrelay/discord-channel-monitor-skill - Setzen Sie die Umgebungsvariable:
export HERMES_API_TOKEN="your-token-here" - Konfigurieren Sie die zu überwachenden Kanäle in
config.yaml:channels: - id: "123456789012345678" name: "support" - id: "234567890123456789" name: "announcements"
Verwendung
Nach der Konfiguration kann der Agent folgende Operationen ausführen:
scan_channel– Ruft die letzten Nachrichten eines Kanals ab (Limits: max. 50 Nachrichten)get_tickets– Listet offene Tickets aus dem verknüpften Systemget_ticket_details– Liest Details zu einem bestimmten Ticket (z.B. Gesprächsverlauf)
Beispiel für einen Aufruf über die Codex-Schnittstelle:
await agent.run("scan_channel", channel_id="123456789012345678")
Sicherheit und Datenschutz
- Kein Schreibzugriff: Der Agent kann nur lesen – keine Nachrichten senden, löschen oder ändern.
- Datenminimierung: Es werden nur die konfigurierten Kanäle abgefragt.
- Token-basierte Authentifizierung: Jeder Aufruf benötigt ein gültiges Hermes-Token.
- Private-first: Keine Logs oder Daten werden an Dritte weitergegeben.
API-Referenz
| Methode | Parameter | Rückgabe |
|---|---|---|
scan_channel | channel_id (string, erforderlich), limit (int, optional, Standard: 20) | Liste von Nachrichtenobjekten |
get_tickets | status (string, optional, z.B. "open") | Liste von Tickets |
get_ticket_details | ticket_id (string, erforderlich) | Ticketobjekt mit Nachrichtenverlauf |
Beispiel-Nachrichtenobjekt
{
"id": "123456789",
"author": "user#1234",
"content": "Hilfe bei Installationsproblem",
"timestamp": "2025-03-20T14:30:00Z",
"channel_id": "123456789012345678"
}
Fehlerbehandlung
- Ungültige Kanal-ID: Gibt Fehlermeldung
CHANNEL_NOT_FOUNDzurück. - Token abgelaufen: Fordert erneute Authentifizierung an.
- Rate-Limit erreicht: Führt automatisch einen Retry mit exponentieller Backoff-Strategie durch.
Lizenz
MIT