Skip to content

feat(memory): Add status metadata and session-scoped retrieval for action-oriented memories #143

@Fearvox

Description

@Fearvox

Problem

When EverMemOS is used with long-running agents (e.g., OpenClaw 24/7 agents), completed action items from past sessions are retrieved alongside current context. The agent then re-executes already-finished tasks because it cannot distinguish resolved actions from active ones.

Root cause

  1. No status metadata on memories — completed and pending action items look identical in retrieval results.
  2. No session boundary awareness — retrieval treats all memories equally regardless of which session produced them.
  3. No relevance decay for action-oriented memories — a "deploy X" instruction from 3 days ago has the same retrieval weight as one from 5 minutes ago.

Real-world impact

In production OpenClaw deployments, we observe:

  • Agents re-running deployment scripts that already succeeded
  • Duplicate messages sent because a "send update to user" memory resurfaces
  • Manual workaround required: prefixing resolved items with [RESOLVED] markers in memory text

Proposed Solution

1. Status metadata on memories

Add an optional status field to memory entries:

{
  "content": "Deploy hotfix to production",
  "type": "episodic",
  "status": "resolved",
  "resolved_at": "2026-03-22T10:30:00Z"
}

Possible values: active (default) | resolved | superseded

2. Session-scoped retrieval option

Add a session_id field to memories and a retrieval filter:

GET /api/v1/memories?session_id=abc123&include_resolved=false

This allows agents to scope retrieval to the current session while optionally including cross-session context.

3. Relevance decay for action memories

For memories tagged as action-oriented (trait type or custom tag), apply a time-based decay factor to retrieval scoring. Informational memories (facts, preferences) would remain unaffected.

Alternatives Considered

Additional Context

  • We run EverMemOS with OpenClaw agents across Telegram, WeChat, and Discord channels with shared groupId.
  • The agent_memory branch plugin is the integration point.
  • Happy to contribute implementation if the team aligns on the approach.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions