Skip to content
Diese Seite wurde mit KI-Unterstützung erstellt und übersetzt. Falls Ihnen Ungenauigkeiten auffallen, helfen Sie gerne bei der Verbesserung. Auf GitHub bearbeiten

Kanäle

Kanäle sind Messaging-Plattform-Integrationen, die PRX mit der Außenwelt verbinden. Jeder Kanal implementiert eine einheitliche Schnittstelle zum Senden und Empfangen von Nachrichten, zur Medienverarbeitung, zur Verwaltung von Tipp-Indikatoren und zur Durchführung von Gesundheitschecks. PRX kann mehrere Kanäle gleichzeitig aus einem einzigen Daemon-Prozess betreiben.

Unterstützte Kanäle

PRX unterstützt 19 Messaging-Kanäle, die Verbraucherplattformen, Unternehmenswerkzeuge, Open-Source-Protokolle und Entwicklerschnittstellen umfassen.

Kanalvergleichsmatrix

KanalDMGruppeMedienSpracheE2EEPlattformStatus
TelegramJaJaJaNeinNeinPlattformübergreifendStabil
DiscordJaJaJaNeinNeinPlattformübergreifendStabil
SlackJaJaJaNeinNeinPlattformübergreifendStabil
WhatsAppJaJaJaNeinJaCloud-APIStabil
WhatsApp WebJaJaJaNeinJaMulti-DeviceBeta
SignalJaJaJaNeinJaPlattformübergreifendStabil
iMessageJaJaJaNeinJaNur macOSBeta
MatrixJaJaJaNeinJaFöderiertStabil
E-MailJaNeinJaNeinNeinIMAP/SMTPStabil
Lark / FeishuJaJaJaNeinNeinPlattformübergreifendStabil
DingTalkJaJaJaNeinNeinPlattformübergreifendStabil
QQJaJaJaNeinNeinPlattformübergreifendBeta
MattermostJaJaJaNeinNeinSelbstgehostetStabil
Nextcloud TalkJaJaJaNeinNeinSelbstgehostetBeta
IRCJaJaNeinNeinNeinFöderiertStabil
LINQJaJaJaNeinNeinPartner-APIAlpha
CLIJaNeinNeinNeinN/ATerminalStabil
TerminalJaNeinNeinNeinN/ATerminalStabil
WacliJaJaJaNeinJaJSON-RPCBeta

Legende:

  • Stabil -- Produktionsreif, vollständig getestet
  • Beta -- Funktionsfähig mit bekannten Einschränkungen
  • Alpha -- Experimentell, API kann sich ändern

Allgemeines Konfigurationsmuster

Alle Kanäle werden unter dem Abschnitt [channels] der Datei ~/.config/openprx/openprx.toml konfiguriert. Jeder Kanal hat seinen eigenen Unterabschnitt mit plattformspezifischen Einstellungen.

Grundstruktur

toml
[channels]
# Integrierten CLI-Kanal aktivieren (Standard: true)
cli = true

# Zeitlimit pro Nachrichtenverarbeitung in Sekunden (Standard: 300)
message_timeout_secs = 300

# ── Telegram ──────────────────────────────────────────────
[channels.telegram]
bot_token = "123456789:ABCdefGHIjklMNOpqrsTUVwxyz"
allowed_users = ["alice", "bob"]
stream_mode = "edit"            # "edit" | "append" | "none"
mention_only = false

# ── Discord ───────────────────────────────────────────────
[channels.discord]
bot_token = "MTIzNDU2Nzg5.XXXXXX.XXXXXXXXXX"
guild_id = "1234567890"         # optional: auf einen Server beschränken
allowed_users = []              # leer = alle erlauben
listen_to_bots = false
mention_only = false

# ── Slack ─────────────────────────────────────────────────
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
allowed_users = []
mention_only = true

Kanalspezifische Beispiele

Lark / Feishu:

toml
[channels.lark]
app_id = "cli_xxxxxxxxxxxx"
app_secret = "xxxxxxxxxxxxxxxxxxxxxxxx"
allowed_users = []
use_feishu = false              # true für Feishu (China), false für Lark (International)
receive_mode = "websocket"      # "websocket" | "webhook"
mention_only = false

Signal:

toml
[channels.signal]
phone_number = "+1234567890"
signal_cli_path = "/usr/local/bin/signal-cli"
allowed_users = ["+1987654321"]

Matrix (mit E2EE):

toml
[channels.matrix]
homeserver_url = "https://matrix.org"
username = "@prx-bot:matrix.org"
password = "secure-password"
allowed_users = ["@alice:matrix.org"]

E-Mail (IMAP/SMTP):

toml
[channels.email]
imap_host = "imap.gmail.com"
imap_port = 993
smtp_host = "smtp.gmail.com"
smtp_port = 587
username = "[email protected]"
password = "app-specific-password"
allowed_from = ["[email protected]"]

DingTalk:

toml
[channels.dingtalk]
app_key = "dingxxxxxxxxxxxxxxxx"
app_secret = "xxxxxxxxxxxxxxxxxxxxxxxx"
robot_code = "dingxxxxxxxxx"
allowed_users = []

DM-Richtlinien

PRX bietet feinkörnige Kontrolle darüber, wer Direktnachrichten an Ihren Agenten senden kann. Die DM-Richtlinie wird pro Kanal konfiguriert und bestimmt, wie eingehende Direktnachrichten behandelt werden.

Richtlinientypen

RichtlinieVerhalten
pairingErfordert einen Pairing-Handshake, bevor der Absender akzeptiert wird. Der Benutzer muss einen Challenge-Response-Flow zur Authentifizierung abschließen. Zukünftiges Feature -- fällt derzeit auf allowlist zurück.
allowlist(Standard) Nur Absender, die im allowed_users-Array des Kanals aufgeführt sind, können mit dem Agenten interagieren. Nachrichten von nicht gelisteten Absendern werden stillschweigend ignoriert.
openJeder Benutzer kann Direktnachrichten an den Agenten senden. In der Produktion mit Vorsicht verwenden.
disabledAlle Direktnachrichten werden ignoriert. Nützlich, wenn PRX nur in Gruppen antworten soll.

Konfiguration

DM-Richtlinien werden auf der Hauptebene der Kanalkonfiguration gesetzt:

toml
[channels]
dm_policy = "allowlist"         # "pairing" | "allowlist" | "open" | "disabled"

Das allowed_users-Array jedes Kanals ist die Allowlist für diesen Kanal:

toml
[channels.telegram]
bot_token = "..."
allowed_users = ["alice", "bob"]  # Nur diese Benutzer können DMs senden

Wenn dm_policy = "open", wird das Feld allowed_users ignoriert und alle Absender werden akzeptiert.

Gruppenrichtlinien

Ähnlich wie DM-Richtlinien steuert PRX, an welchen Gruppenkonversationen der Agent teilnimmt:

RichtlinieVerhalten
allowlist(Standard) Nur Gruppen, die in der Gruppen-Allowlist des Kanals aufgeführt sind, werden überwacht.
openDer Agent antwortet in jeder Gruppe, der er hinzugefügt wird.
disabledAlle Gruppennachrichten werden ignoriert.
toml
[channels]
group_policy = "allowlist"

[channels.telegram]
bot_token = "..."
# Gruppen-Allowlist wird pro Kanal konfiguriert

Nur-Erwähnungs-Modus

Die meisten Kanäle unterstützen ein mention_only-Flag. Wenn aktiviert, antwortet der Agent nur auf Nachrichten, die ihn explizit erwähnen (per @-Erwähnung, Antwort oder plattformspezifischem Auslöser). Dies ist in Gruppenchats nützlich, um zu vermeiden, dass der Agent auf jede Nachricht antwortet.

toml
[channels.discord]
bot_token = "..."
mention_only = true   # Nur bei @-Erwähnung antworten

Streaming-Modus

Einige Kanäle unterstützen das Streamen von LLM-Antworten in Echtzeit. Die Einstellung stream_mode steuert, wie die gestreamte Ausgabe angezeigt wird:

ModusVerhalten
editBearbeitet dieselbe Nachricht, während Token eintreffen (Telegram, Discord)
appendHängt neuen Text an die Nachricht an
noneWartet auf die vollständige Antwort vor dem Senden
toml
[channels.telegram]
bot_token = "..."
stream_mode = "edit"
draft_update_interval_ms = 1000   # Wie oft der Entwurf aktualisiert wird (ms)

Neuen Kanal hinzufügen

PRX-Kanäle basieren auf dem Channel-Trait. Um einen neuen Kanal zu verbinden:

  1. Fügen Sie die Kanalkonfiguration zu Ihrer openprx.toml hinzu
  2. Starten Sie den Daemon neu: prx daemon

Alternativ verwenden Sie den interaktiven Kanalassistenten:

bash
prx channel add telegram

Um aktive Kanäle aufzulisten:

bash
prx channel list

Um Kanalverbindungsprobleme zu diagnostizieren:

bash
prx channel doctor

Kanalarchitektur

Unter der Haube führt jeder Kanal Folgendes aus:

  1. Lauschen auf eingehende Nachrichten von der Plattform (per Polling, Webhooks oder WebSocket)
  2. Filtern von Nachrichten basierend auf DM-/Gruppenrichtlinien und Allowlists
  3. Weiterleiten akzeptierter Nachrichten an die Agent-Schleife zur Verarbeitung
  4. Senden der Antwort des Agenten über die API der Plattform zurück
  5. Melden des Gesundheitsstatus und automatische Wiederverbindung mit exponentiellem Backoff

Alle Kanäle laufen gleichzeitig innerhalb des Daemon-Prozesses und teilen sich die Agent-Laufzeit, das Gedächtnis und die Werkzeug-Subsysteme.

Nächste Schritte

Wählen Sie einen Kanal, um mehr über seine spezifische Einrichtung zu erfahren:

Released under the Apache-2.0 License.