Skip to content

Feature Request: Add optional "forgotten memory" detection for stale TODOs in daily notes #393

Description

@z13645719

Use Case

ReMe handles long-term memory well (summary, decay, retrieval), but short-lived daily notes (YYYY-MM-DD.md style) can accumulate unresolved items that fall through the cracks.

Problem

In a QwenPaw agent workspace, memory/YYYY-MM-DD.md files serve as short-lived "daily notes" — quick context dumps, decisions, and pending items. When the agent is interrupted or a context window collapses mid-session, these notes often end up containing:

- TODO: add validation for edge cases in stock report → not started
- BLOCKED: need user confirmation for API key rotation

There's currently no lifecycle management for these notes. They just sit there, silently. The content is ephemeral (shouldn't survive ~7 days), but the TODO/BLOCKED markers are actionable signals that the agent should revisit.

Proposed Feature: forgotten-memory-check Hook

Add an optional stale TODO detector that runs as part of ReMe's post-chat sync:

def check_forgotten_memories(memory_dir, max_age_days=7):
    """Scan daily notes for unresolved markers older than max_age_days."""
    stale = []
    cutoff = datetime.now() - timedelta(days=max_age_days)
    for note in Path(memory_dir).glob("*.md"):
        if note.stat().st_mtime > cutoff:
            continue  # Not old enough
        content = note.read_text()
        markers = re.findall(r'(?i)(TODO|FIXME|BLOCKED|待办|待确认)', content)
        if markers:
            stale.append({
                "file": note.name,
                "days_old": (datetime.now() - note.stat().st_mtime).days,
                "markers": list(set(m.upper() for m in markers))
            })
    return stale

How It Would Help

Without With
TODOs sit forgotten for weeks Agent gets a warning after 7 days
No signal to clean up old notes Stale items are surfaced on next sync
Decay only covers long-term memory Short-term notes get lifecycle management

Integration Point

This could be exposed as:

  1. A pre-chat hook — agent checks forgotten memories before each conversation starts
  2. A ReMe.forget() extension — include stale-marker filtering in the existing cleanup path
  3. A config option in sync_policy — "stale_marker_days": 7

Relationship to Existing Features

This complements (not replaces):

  • summary — summarizes conversations, doesn't flag stale action items
  • decay — degrades memory scores based on time, but operates on long-term files not short-term notes
  • fetch — retrieves context, doesn't detect what's missing/forgotten

The gap: there's no mechanism to surface "this daily note had an unresolved TODO from 10 days ago and it was never addressed."

Alternatives Considered

  1. External cron job — works but bypasses ReMe's memory lifecycle; creates a parallel system
  2. Agent self-check — agents can do this, but it requires the agent to remember to check (ironic)
  3. ReMe-level hook — keeps lifecycle management inside the memory system where it belongs

Would love to hear thoughts on whether this fits ReMe's design philosophy, or if there's a better integration point I'm not seeing.

Activity

  1. jinliyl commented on Jul 27, 2026

    @jinliyl
    Member

    Thanks for raising this — the underlying gap is valid, especially for QwenPaw daily notes containing short-lived progress, blockers, and next steps.

    We think the reminder policy is likely better owned by QwenPaw, while ReMe provides generic, read-only daily-note primitives. A few details also need care: QwenPaw currently stores notes as daily/<date>/<name>.md, the path date is more reliable than mtime, and raw marker matching can misclassify completed tasks, examples, or historical mentions.

    A scheduled QwenPaw check with deduplicated inbox reminders may be a better fit than coupling detection to ReMe.forget() or running it on every chat. We will keep this issue in mind when refining the integration boundary. Thanks again for the thoughtful proposal!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions