Skip to content

[Bug]: Dreaming plugin: stopword list too narrow and no filter for cron-triggered sessions #68449

Description

@htuyer121

Bug type

Behavior bug (incorrect output/state without crash)

Beta release blocker

No

Summary

On OpenClaw 2026.4.15 with dreaming.enabled: true, the dreaming pipeline surfaces tokenization artifacts (e.g. "assistant" 2754 hits) as top themes due to an incomplete stopword list, and pollutes the session corpus with cron/NO_REPLY noise because there is no cron-session filter in corpus ingestion.

Steps to reproduce

  1. Deploy OpenClaw 2026.4.15 with memory-core plugin and dreaming.enabled: true.
  2. Run a system with frequent cron-triggered sessions (health checks, token refreshes, alerts).
  3. Allow the dreaming pipeline to run and inspect top themes output.
  4. Observe "assistant" (2754 hits, conf 1.00) and "the" (1730 hits, conf 0.81) as top themes.
  5. Inspect memory/.dreams/session-corpus/.txt — corpus is 90%+ cron/NO_REPLY lines.

Expected behavior

Dreaming pipeline surfaces meaningful semantic concepts from real user interactions. Cron-triggered sessions and NO_REPLY exchanges are excluded from corpus ingestion.

Actual behavior

Issue 1: CONCEPT_STOP_WORDS in dist/short-term-promotion-Cd3cMDbx.js (~line 12) defines only 8 english stopwords, missing common NLP terms (the, a, an, is, to, of...) and transcript markers (assistant, user). These surface as top themes.

Issue 2: collectSessionIngestionBatches in dist/dreaming-Dmn9KbNB.js ingests all session jsonl lines with no filter for cron-triggered sessions, flooding the corpus with automation scaffolding noise.

OpenClaw version

OpenClaw: 2026.4.15

Operating system

Ubuntu 24.04.4

Install method

Docker 29.4.0

Model

anthropic/claude-sonnet-4-6

Provider / routing chain

agents.defaults.model

Additional provider/model setup details

Environment

OpenClaw 2026.4.15 (041266a)
Host OS Ubuntu 24.04.4 LTS
Host kernel Linux 6.8.0-110-generic x86_64
Container runtime Docker 29.4.0
Container base Debian 13 (trixie)
Node v22.22.2
LLM providers enabled anthropic, openai, xai, google
Agent default model routing primary: anthropic/claude-sonnet-4-6 → fallbacks: anthropic/claude-opus-4-6, openai/gpt-5.4, openai/gpt-5.4-mini
Runtime model mix (last 30 sessions) 24× claude-haiku-4-5 (per-cron overrides), 6× claude-sonnet-4-6
memory-core config dreaming.enabled: true, frequency: 0 3 * * * (Asia/Kuwait)
Dreaming cron payload.kind: systemEvent — deterministic, no LLM invoked
active-memory config queryMode: recent, promptStyle: balanced, logging: true (no model override → inherits agent default)

Logs, screenshots, and evidence

Observed in dist/short-term-promotion-Cd3cMDbx.js ~line 12: CONCEPT_STOP_WORDS english array contains only 8 entries.
Observed in dist/dreaming-Dmn9KbNB.js: collectSessionIngestionBatches ingests all session jsonl lines with no cron filter.
Top themes output example: "assistant" (2754 hits, conf 1.00), "the" (1730 hits, conf 0.81).
Corpus sample: [main/sessions/X.jsonl#L5] User: [cron:<id> WHOOP Token Refresh] / [L8] Assistant: NO_REPLY

Impact and severity

Affected: Personal-assistant deployments using memory-core plugin with dreaming.enabled: true
Severity: Medium (degrades dreaming output quality; no crash)
Frequency: Always — reproducible on any system with common stopwords or cron-triggered sessions
Consequence: Dreaming pipeline surfaces meaningless tokenization artifacts as top themes; corpus becomes 90%+ automation noise, making memory/reflection features unreliable

Additional information

Not a version regression — likely shipped this way. Local workaround applied: stopwords expanded to 170 words in-place patch; isCronNoiseSnippet() guard added to ingestion loop. Author willing to submit PR if approach is acceptable.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingbug:behaviorIncorrect behavior without a crash

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions