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
- No status metadata on memories — completed and pending action items look identical in retrieval results.
- No session boundary awareness — retrieval treats all memories equally regardless of which session produced them.
- 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.
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
Real-world impact
In production OpenClaw deployments, we observe:
[RESOLVED]markers in memory textProposed Solution
1. Status metadata on memories
Add an optional
statusfield to memory entries:{ "content": "Deploy hotfix to production", "type": "episodic", "status": "resolved", "resolved_at": "2026-03-22T10:30:00Z" }Possible values:
active(default) |resolved|superseded2. Session-scoped retrieval option
Add a
session_idfield to memories and a retrieval filter: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
[RESOLVED]prefix in text): Currently used as a workaround. Fragile — depends on LLM parsing text markers correctly.Additional Context
groupId.agent_memorybranch plugin is the integration point.