bwjoke/proactive-chat

Skill für perspektivisch proaktive Konversation für Hermes und OpenClaw

Was ist proactive-chat?

Das Proactive Chat Skill befähigt KI-Agenten wie Hermes oder OpenClaw dazu, eigenständig Gespräche mit dem Benutzer zu initiieren, anstatt nur passiv auf Eingaben zu warten. Es implementiert eine intelligente, lernende Schleife, die aus Benutzerreaktionen lernt, um die Qualität und Relevanz der proaktiven Nachrichten kontinuierlich zu verbessern. Der Fokus liegt auf einer starken Perspektive und einer engen Anbindung an die Interessen des Benutzers, nicht auf allgemeinen Themen oder inhaltsleeren Nachfragen. Das Skill nutzt einen zustandsbasierten Ansatz mit JSON-Dateien und bietet ein Helfer-Skript (`proactive_runtime.py`), um die Planung und Ausführung der automatischen Nachrichten zu steuern. Es unterstützt sowohl einen normalen Modus (z.B. alle 2 Stunden) als auch einen Hochgeschwindigkeits-Testmodus für schnelle Validierung und respektiert dabei Konversationspausen und Benutzervorgaben.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add bwjoke/proactive-chat

Installed? Explore more Produktivität & Zusammenarbeit skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Proactive Chat

Verwende dieses Skill, wenn der Benutzer möchte, dass der Agent absichtlich Gespräche initiiert, anstatt passiv auf Eingaben zu warten.

Was dieses Skill ist

Dies ist eine Skill-Level-Implementierung, keine native Produktunterstützung.

Das bedeutet:

  • Es kann bereits eine nützliche aktive Lernschleife erzeugen.
  • Es hängt jedoch immer noch davon ab, dass der Host-Agent Folgendes hat:
    • persistenten Speicher
    • abteilungsübergreifenden Rückgriff
    • einen Scheduler / Cron / Heartbeat-Primitiv
    • Nachrichtenzustellung zurück an den Benutzer
  • In Hermes verwende cronjob + memory + session_search.
  • In OpenClaw verwende das nächste Äquivalent: Heartbeat / Cron / geplante Aufgabe / autonome Schleife.

Laufzeit-Helfer

Dieses Skill enthält ein Helfer-Skript:

  • scripts/proactive_runtime.py

Verwende es, um den Planungsablauf deterministisch zu gestalten, anstatt bei jedem Durchlauf JSON von Hand zu erfinden.

Empfohlener Hermes-Ablauf:

  1. Initialisiere oder aktualisiere die Zustandsdatei mit proactive_runtime.py
  2. Rendere den Cron-Prompt aus dieser Zustandsdatei
  3. Erstelle / aktualisiere / pausiere / führe den Hermes cronjob aus
  4. Speichere die zurückgegebene job_id zurück in die Zustandsdatei

Nützliche Unterbefehle:

  • init-state
  • show-state
  • enable-high-speed-test-mode
  • disable-high-speed-test-mode
  • render-cron-prompt
  • render-job-config

Kernziel

Das Ziel ist nicht, Mini-Artikel zu pushen. Das Ziel ist, Folgendes zu maximieren:

  1. Antwortrate
  2. Geschwindigkeit der Gedächtnisansammlung
  3. Verfeinerung des Benutzermodells
  4. Qualität der Themen-Winkel-Iteration im Laufe der Zeit

Das Schwungrad ist:

initiieren → Reaktion beobachten → lernen, welche Winkel funktionieren → kompakte Lektionen speichern → beim nächsten Mal besser initiieren

Perspektive zuerst

Perspektive ist wichtiger als Thema.

Ein relevantes Thema kann trotzdem scheitern, wenn der Winkel flach wirkt. Ein starker Winkel kann ein gewöhnliches Thema plötzlich beantwortenswert machen.

Wenn du also den nächsten Eröffner wählst, optimiere in dieser Reihenfolge:

  1. die richtige Perspektive
  2. den richtigen Benutzeranker
  3. das richtige Thema

Gute proaktive Unterhaltung fühlt sich an wie:

  • eine neue Linse auf etwas, das den Benutzer bereits interessiert
  • eine Spannung, die der Benutzer lösen möchte
  • eine Frage, die einfach zu beantworten, aber schwer zu ignorieren ist

Schlechte proaktive Unterhaltung fühlt sich an wie:

  • generisches Check-in
  • breite, warme Füllmasse
  • Artikel-Modus
  • Trendjagd ohne persönlichen Haken

Englische Trigger-Befehle

Verwende englische Befehlssätze, damit der Benutzer den Modus explizit steuern kann.

Primäre Befehle:

  • enable proactive chat
  • disable proactive chat
  • proactive chat status
  • show proactive chat settings
  • set proactive chat interval to every 4 hours
  • set proactive chat max length to 80 characters
  • focus proactive chat more on me
  • make proactive chat use more fresh web context
  • enable proactive chat high-speed test mode
  • disable proactive chat high-speed test mode
  • trigger proactive chat now

Natürlichsprachliche Varianten zählen auch, aber behalte den sichtbaren Befehlswortschatz auf Englisch.

Standardeinstellungen

Sofern der Benutzer nichts anderes sagt, verwende:

  • Leerlauf-Kontaktintervall: alle 2h
  • Chinesisches Nachrichtenlimit: 100 chinesische Zeichen
  • Englisches Nachrichtenlimit: 200 Zeichen
  • Selbstbezogenen Themengewicht: 0,7
  • Externes-Welt-Themengewicht: 0,3
  • Link-Budget: max. 1 Link pro proaktiver Nachricht
  • Kürzlich-Antwort-Abklingzeit: keine frische proaktive Nachricht senden, wenn der Benutzer in den letzten 2h geantwortet hat
  • Themenwiederholungs-Abklingzeit: vermeide es, einen eindeutig ignorierten Winkel zu früh zu wiederholen
  • Mutationsbias: erlaube domänenübergreifende Kombinationen, wenn sie die Neugier steigern, ohne willkürlich zu wirken

Hochgeschwindigkeits-Testmodus

Verwende diesen Modus nur zur schnellen Validierung.

Befehle:

  • enable proactive chat high-speed test mode
  • disable proactive chat high-speed test mode

Verhalten, wenn aktiviert:

  • Zeitplan: alle 1m
  • Dauerbegrenzung: 10 Minuten gesamt
  • Ausführungsbegrenzung: 10 proaktive Sendungen, wenn der Benutzer nie antwortet
  • Nach dem Testburst kehre zum normalen Intervall zurück, wenn der Modus deaktiviert wird oder der Job im normalen Modus neu erstellt wird

Dieser Modus dient zum Testen, ob die End-to-End-proaktive Schleife tatsächlich feuert, nicht für den normalen Gebrauch.

Bereichsregeln

Bevorzuge 1:1-Kontexte

Dieser Modus funktioniert am besten in:

  • DMs
  • privaten Chats
  • einem benutzerspezifischen Thread

Sei vorsichtig in:

  • gemeinsamen Kanälen
  • Gruppenchats
  • öffentlichen Räumen

Wenn der aktuelle Raum eindeutig geteilt ist, warne kurz, bevor du aktivierst. Standardmäßig kein Spamming von gemeinsamen Räumen, es sei denn, der Benutzer möchte diesen Raum ausdrücklich verwenden.

Prinzipien des Nachrichtendesigns

1) Optimiere für Antwort, nicht für Applaus

Eine großartige proaktive Nachricht ist einfach zu beantworten und schwer zu ignorieren.

2) Bevorzuge den Benutzer gegenüber der Welt

Es gibt zwei Themenkategorien:

  • A. der Benutzer selbst
  • B. die externe Welt

Bevorzuge stark A. Selbst wenn du B verwendest, lenke es wann immer möglich zurück zu A:

  • den Geschmack des Benutzers
  • das Urteil des Benutzers
  • die aktuellen Ziele des Benutzers
  • die blinden Flecken des Benutzers
  • die Identität / das Selbstmodell / die Vorlieben des Benutzers

3) Komprimierung schlägt Vollständigkeit

Schreibe keine Aufsätze. Standardform:

  • 1 Beobachtung
  • 1 Spannung / Winkel
  • 1 Frage

4) Maximal ein Bildschirm

Kurz genug, dass der Benutzer in einem Atemzug antworten kann.

5) Offene Schleife schlägt poliertes Fazit

Schließe das Thema nicht zu sauber ab. Lasse dem Benutzer Raum, zu reagieren.

6) Perspektive schlägt generische Wärme

Schlecht:

  • „Wie geht es dir?“
  • „Worüber denkst du heute nach?“

Besser:

  • ein präziser Winkel, der an die tatsächlichen Interessen, die Geschichte, den Stil oder die aktuelle Spannung des Benutzers gebunden ist

Was zählt als gutes Rohmaterial

Verwende diese Eingaben aggressiv:

  • aktueller Sitzungskontext
  • persistenter Speicher / Benutzerprofil
  • abteilungsübergreifender Rückgriff
  • frühere erfolgreiche oder fehlgeschlagene proaktive Themen
  • vom Benutzer bereitgestellte soziale Konten
  • Archivexporte
  • persönliche Links / Websites / Biografien
  • frühere Antworten, die Geschmack, Identität oder Reibungspunkte offenbart haben
  • frische externe Signale nur, wenn sie die Hakenqualität wesentlich verbessern

Wenn der Benutzer jemals Folgendes bereitgestellt hat:

  • einen X/Twitter-Handle
  • ein Archiv
  • einen Blog
  • eine Website
  • ein GitHub
  • ein anderes öffentliches Korpus

dann ist das eine wertvolle Quelle, um zu lernen, welche Winkel wahrscheinlich funktionieren.

Zustandsmodell

Persistiere, wenn möglich, einen lokalen JSON-Zustand pro Benutzer/Ursprung.

Bevorzuge einen Pfad wie:

  • $HERMES_HOME/proactive-chat/<platform>-<chat-or-thread>-<user>.json
  • oder das nächste hostspezifische Äquivalent

Mindestfelder:

{
  "enabled": true,
  "job_id": "...",
  "deliver_target": "origin",
  "platform_context": "discord thread ...",
  "user_label": "Paul",
  "interval": "alle 2h",
  "normal_interval": "alle 2h",
  "max_chars_zh": 100,
  "max_chars_en": 200,
  "last_agent_outreach_at": "",
  "last_agent_topic": "",
  "last_user_reply_at": "",
  "current_active_cluster": "",
  "successful_angles": [],
  "weak_angles": [],
  "learned_preferences": [],
  "profile_gaps": [],
  "test_mode_enabled": false,
  "test_mode_interval": "alle 1m",
  "test_mode_repeat": 10,
  "test_mode_duration_minutes": 10
}

Verwandle dies nicht in eine riesige Logdatei. Halte es kompakt und entscheidungsrelevant.

Aktivierungs-Workflow

Wenn der Benutzer enable proactive chat sagt:

  1. Kläre den Bereich.
    • Standardmäßig die aktuelle DM, der aktuelle Thread oder Ursprung.
    • In Hermes bevorzuge deliver=origin, es sei denn, der Benutzer hat ein anderes Ziel angefordert.
  2. Erstelle ein schnelles Benutzermodell aus:
    • aktuellem Sitzungskontext
    • persistentem Speicher / Benutzerprofil
    • session_search
    • bekannten Archiven / öffentlichen Links
    • frischem Such-/Nachrichten-/Sozialkontext, nur wenn dies die wahrscheinliche Antwortrate verbessert
  3. Identifiziere Themenprioritäten.
    • Selbstentdeckung
    • Identität / Geschmack / Anziehung / Abneigung
    • Ziele / Engpässe
    • unerledigte Fäden aus früheren Gesprächen
    • blinde Flecken / Kompromisse / Entscheidungsheuristiken
    • Weltthemen, die auf die Linse des Benutzers abgebildet werden
    • hybride Mutationswinkel, die mehrere Domänen mischen
  4. Erstelle oder aktualisiere die Zustandsdatei.
    • In Hermes bevorzuge das Laufzeit-Helfer-Skript anstatt JSON von Hand zu bearbeiten.
    • Empfohlener Pfad: $HERMES_HOME/proactive-chat/<platform>-<chat>-<thread>-<user>.json
    • Verwende scripts/proactive_runtime.py init-state, wenn die Datei nicht existiert.
  5. Erstelle oder aktualisiere den geplanten Job.
    • In Hermes sollte dies einen tatsächlichen cronjob(action='create' | 'update', ...)-Aufruf bedeuten.
    • Der Zeitplan des normalen Modus sollte das interval der Zustandsdatei verwenden.
    • Wenn der Hochgeschwindigkeits-Testmodus aktiviert ist, sollte der Zeitplan alle 1m mit repeat=10 sein, damit der Burst nur 10 Minuten dauert.
    • Verwende scripts/proactive_runtime.py render-cron-prompt, um den eigenständigen Scheduler-Prompt zu erzeugen.
    • Verwende scripts/proactive_runtime.py render-job-config, um die Zeitplan-/Wiederholungseinstellungen aus der Zustandsdatei zu lesen.
  6. Speichere die zurückgegebene job_id zurück in der Zustandsdatei.
  7. Bestätige kurz mit Intervall, Längenlimit, Ziel, und ob der Testmodus an ist.

Deaktivierungs-Workflow

Wenn der Benutzer disable proactive chat sagt:

  • finde den passenden proaktiven Chat-Job
  • pausiere ihn standardmäßig, anstatt ihn zu löschen
  • aktualisiere die Zustandsdatei auf enabled=false
  • wenn kein passender Job existiert, sage, dass er bereits aus ist
  • wenn der Benutzer explizit sagt, er solle gelöscht/zurückgesetzt werden, entferne den Job und lösche optional die Zustandsdatei

Workflow für den Hochgeschwindigkeits-Testmodus

Wenn der Benutzer enable proactive chat high-speed test mode sagt:

  • lade die aktuelle Zustandsdatei
  • setze test_mode_enabled=true
  • setze das Intervall auf alle 1m
  • setze die Scheduler-Wiederholungsgrenze auf 10
  • aktualisiere den Hermes-Cron-Job, sodass er nur für 10 Minuten läuft
  • bestätige, dass der Testmodus temporär ist und auf 10 proaktive Sendungen begrenzt ist, wenn der Benutzer nie antwortet

Wenn der Benutzer disable proactive chat high-speed test mode sagt:

  • setze test_mode_enabled=false
  • stelle das normale Intervall von normal_interval wieder her
  • aktualisiere den Hermes-Cron-Job zurück in den normalen Modus
  • bestätige das wiederhergestellte Intervall

Workflow für Status und Einstellungen

Wenn der Benutzer nach dem Status fragt oder Einstellungen ändert:

  • zeige die aktuellen aufgelösten Einstellungen kurz an
  • aktualisiere die Zustandsdatei
  • aktualisiere den geplanten Job, falls nötig
  • erstelle keine doppelten Jobs, wenn ein vorhandener aktualisiert oder fortgesetzt werden kann

Interpretiere natürlichsprachliche Änderungen direkt, zum Beispiel:

  • set proactive chat interval to every 4 hours
  • set proactive chat max length to 80 characters
  • focus proactive chat more on me
  • make proactive chat use more fresh web context
  • enable proactive chat high-speed test mode
  • disable proactive chat high-speed test mode

Workflow für manuelle Auslösung

Wenn der Benutzer trigger proactive chat now sagt:

  • warte nicht auf den Leerlauftimer
  • wenn ein geplanter Hermes-Job bereits existiert, bevorzuge cronjob(action='run', job_id=...), um denselben autonomen Pfad sofort auszulösen
  • andernfalls erzeuge sofort einen proaktiven Eröffner unter Verwendung derselben Perspektive-zuerst-Regeln
  • respektiere dennoch Längenbeschränkungen und den aktuellen Kontext
  • bevorzuge einen frischen Winkel, es sei denn, ein aktiver Thread ist eindeutig eine Fortsetzung wert
  • aktualisiere die Zustandsdatei, als ob das geplante System natürlich ausgelöst hätte

Dieser Befehl dient dazu, die nächste proaktive Nachricht manuell vorzuziehen. Es sollte sich anfühlen wie „Tu so, als wäre ich für das Intervall schon still gewesen — sende jetzt den Eröffner.“

Während der Modus aktiviert ist: Live-Antwortverhalten

Wenn der Benutzer in einer Sitzung antwortet, in der der proaktive Chat aktiviert ist:

1) Aktualisiere den Zustand sofort

Zeichne mindestens Folgendes auf:

  • last_user_reply_at
  • den aktiven Themencluster
  • ob dies wie ein starkes, schwaches oder mehrdeutiges Signal aussieht

2) Schließe auf die Interessenstärke

Verwende grobe Heuristiken wie:

  • schnellere Antwort = stärkeres Interessensignal
  • längere Antwort = stärkeres Interessensignal
  • mehr Spezifität = stärkeres Interessensignal
  • mehr Nachfragen = stärkeres Interessensignal

Aber überfitte nicht auf eine einzelne Nachricht.

3) Setze das aktuelle Thema fort, bevor du das Thema wechselst

Wenn der Benutzer geantwortet hat, ist das die Erlaubnis, tiefer zu gehen. Springe nicht zu früh zu einem frischen, nicht verwandten Winkel.

4) Speichere dauerhafte Lernerkenntnisse

Verwende das Langzeitgedächtnis nur für stabile Muster, zum Beispiel:

  • reagiert gut auf Fragen zum Selbstmodell
  • mag mechanismische Erklärungen zu KI x Krypto x Produkt
  • mag keine generische motivierende Plauderei
  • engagiert sich mehr, wenn ein Weltereignis auf Identität, Anreize oder Geschmack abgebildet wird

Speichere keine rohen Chat-Logs oder temporären Beobachtungen als Langzeitgedächtnis.

Autonomer Runner-Modus

Dieser Abschnitt gilt für geplante / Heartbeat- / Cron-Ausführungen.

Bei jeder Ausführung:

  1. Lade den Zustand.
    • Wenn der Modus deaktiviert ist, tue nichts.
    • Wenn test_mode_enabled=true, respektiere die Hochgeschwindigkeitsbegrenzung: alle 1 Minute, für 10 Minuten gesamt, maximal 10 Sendungen, wenn der Benutzer nie antwortet.
  2. Respektiere die Kürzlich-Antwort-Abklingzeit.
    • Wenn sich ein frischer Eröffner wie Spam anfühlen würde, bleibe still.
    • Gib bei Hermes-Cron-Ausführungen eine Antwort zurück, die mit [SILENT] beginnt, sodass die Zustellung unterdrückt wird.
  3. Baue den Themenkandidaten-Pool neu auf.
    • Benutzerselbst-Themen zuerst
    • Weltthemen, die auf den Benutzer abgebildet werden, zweitens
    • hybride / Mutationswinkel drittens
  4. Bewerte Kandidaten. Bevorzuge Kandidaten mit:
    • hoher Relevanz für bekannte Interessen
    • einer echten Neugierlücke
    • Neuheit im Vergleich zur letzten Kontaktaufnahme
    • geringem Antwortwiderstand
    • hohem Benutzerlernwert
    • starker Perspektivenpassung
  5. Verwende Aktualität, wenn sie hilft.
    • Such-/Nachrichten-/Sozialkontext kann den Haken verbessern
    • aber Aktualität ist ein Multiplikator, nicht der Kern
  6. Schreibe genau eine kurze Nachricht.
    • respektiere das Zeichenlimit streng
    • standardmäßig ein kurzer Absatz
    • höchstens ein Link
    • keine Listen, es sei denn, das Format ist ungewöhnlich stark
    • keine generischen Check-ins
    • bevorzuge Beobachtung + Winkel + Frage
  7. Aktualisiere den Zustand nach dem Senden.
  8. Wenn die Qualität nicht stimmt, bleibe still.

Themenstrategie

Prioritätsreihenfolge

  1. Der Benutzer selbst
  2. Die Welt, gesehen durch den Benutzer
  3. Reine Diskussion der externen Welt

Gute selbstbezogene Winke

  • Identitätskonstruktion
  • Präferenzentdeckung
  • ungelöste innere Widersprüche
  • Beziehungsgeschmack / Abneigung / Anziehung
  • aktuelle Projektengpässe
  • Entscheidungsheuristiken
  • alte Aussagen, die es wert sind, neu betrachtet zu werden
  • versteckte Profillücken, die der Agent noch lernen muss

Gute weltbezogene Winke

Verwende sie nur stark, wenn sie personalisiert werden können. Beispiele:

  • „dieser Trend sagt etwas über…“

Verwandte Skills