Grillo — Chat Observer Beat
Part of the G.R.I.L.L.O. background subsystem.
Purpose
Passively watches recent conversations. It samples chat snippets, optionally stores passive memories from them, and — within strict anti-spam guards — can propose proactive outreach so Synth can gently re-engage a quiet conversation instead of only ever replying.
Beat
Trigger: periodic (its own interval,
GRILLO_OBSERVER_INTERVAL).Output: proposed chat snippets for processing and/or passive memories.
How it works
On each run the plugin looks at conversations active within
GRILLO_OBSERVER_ACTIVITY_WINDOW_DAYS. Proactive messaging is heavily guarded:
if the synth was the last to speak in a conversation, outreach to it is blocked
for GRILLO_OBSERVER_SELF_COOLDOWN_DAYS (or, when that is 0, for
GRILLO_OBSERVER_SELF_COOLDOWN_MINUTES), and quiet hours are respected via
GRILLO_OUTREACH_QUIET_MINUTES. The last run is tracked in
GRILLO_OBSERVER_LAST_RUN_TS. Discovery is automatic via the plugin registry.
Configuration
Key |
Purpose |
|---|---|
|
Enable/disable the observer. |
|
Seconds between observer runs. |
|
Whether to store passive memories from snippets. |
|
How recent a conversation must be to consider. |
|
Window used when evaluating the synth’s own recent messages. |
|
Anti-spam: days to forbid outreach after the synth spoke last (0 = use minutes). |
|
Fine-grained anti-spam cooldown when the days cooldown is 0. |
|
Quiet period during which proactive outreach is suppressed. |
Plus the shared Grillo settings. See the G.R.I.L.L.O. guide.