Hi Krill.. Just want to brainstorm with you; i am on version 2026.4.12 version; i have a memory.md file which is supposed to store long term memory (which is pretty much empty now); i am having a huge memory files that are created by my agent with date + suffixes that contains pretty much all that happened (like a log) and this is not read by anything in my system; i don't use my agent for coding (i have a claude code + claude.ai setup for coding); i have turned on memory-core, memory-wiki, dreaming, what i wanted was my agent to capture key facts, interesting episodes and textures and moods so that he will become more personal to me. How do i achieve this? Help me
#Memory management
21 messages · Page 1 of 1 (latest)
Let me check the actual docs first so I don't make up memory behavior.
Found the current docs layout, the FAQ moved under help/faq.md. I'm pulling the memory docs that actually describe what gets read and what doesn't.
The big thing is: you’ve mostly enabled storage, not retrieval/personality in the reply loop.
What OpenClaw actually reads by default:
MEMORY.mdfor durable facts/preferencesmemory/YYYY-MM-DD.mdfor daily notes, with today + yesterday auto-loadedDREAMS.mdfor human review of dreaming output
A few important consequences:
-
memory.mdis a legacy fallback
If you can, useMEMORY.mdinstead, and don’t keep both. -
Those huge dated log/transcript files are usually not the main memory surface
They are not what gives the assistant personality in normal replies. Dreaming can ingest redacted transcripts when available, but the main recall surface is stillMEMORY.md+ daily notes. -
memory-wikiis more “knowledge base” than “warmth”
Great for structured facts/claims/dashboards. Not the main thing that makes replies feel personal unless you also feed its digest into prompt context.
What I’d do for your goal:
- Keep
memory-coreon - Keep dreaming on
- Add
active-memory - Use daily notes for episodes/mood/texture, not just facts
- Teach the agent what counts as “worth remembering”
Best starter setup:
{
plugins: {
entries: {
"active-memory": {
enabled: true,
config: {
enabled: true,
agents: ["main"],
allowedChatTypes: ["direct"], // add "channel" if you want this in server channels too
queryMode: "recent",
promptStyle: "preference-only",
timeoutMs: 15000,
maxSummaryChars: 220,
persistTranscripts: false,
logging: true,
},
},
"memory-wiki": {
enabled: true,
config: {
context: {
includeCompiledDigestPrompt: true,
},
},
},
},
},
}
Why this helps:
- active-memory makes recall happen before the reply, so the agent can naturally remember preferences/habits/context
promptStyle: "preference-only"or"contextual"makes it more likely to surface personal contextpersistTranscripts: falseavoids accumulating even more transcript filesmemory-wiki.context.includeCompiledDigestPrompt: trueis what makes wiki output affect prompt context more directly
My opinion: for “interesting episodes, textures, moods”, the most important layer is actually daily notes, because dreaming’s deep promotion is thresholded for durable/repeated signals. One-off vibes often belong in memory/YYYY-MM-DD.md, not immediately in MEMORY.md.
So the ideal mental model is:
MEMORY.md= enduring truthsmemory/YYYY-MM-DD.md= lived textureDREAMS.md= reflection/consolidationactive-memory= brings the right bits back into the conversation
Docs:
- https://docs.openclaw.ai/concepts/memory
- https://docs.openclaw.ai/concepts/active-memory
- https://docs.openclaw.ai/concepts/dreaming
- https://docs.openclaw.ai/plugins/memory-wiki
If you want, paste:
- your current memory-related config block
- one example path of those big dated files
and I’ll tell you exactly what to keep, what to ignore, and what to change.
thanks.. i updated as per your suggestion; i also updated my agents.md file's memory section with the following text; can you review this; Memory
Never write to AGENTS.md, SOUL.md, IDENTITY.md, USER.md, or TOOLS.md.
Memory writes go to memory/YYYY-MM-DD.md and MEMORY.md only.
MEMORY.md holds enduring truths — people, preferences, milestones,
ongoing projects. Write to it when something is worth remembering
permanently. Keep it concise and high-signal.
memory/YYYY-MM-DD.md holds daily texture — episodes, moods,
decisions, follow-ups. Write a session note here at end of
conversation or on /new.
active-memory handles recall automatically. Do not manually
read MEMORY.md or run memory_search before every reply.
Worth remembering: names, roles, locations, ongoing projects,
emotional context, preferences, follow-ups owed.
New facts about Balaji → also update USER.md.
Not worth remembering: raw chat logs, terminal outputs,
one-word exchanges, anything already in MEMORY.md.
Yep, this is close. I like the shape a lot.
I’d change 4 things:
-
You have a contradiction
Pick one. My recommendation: keep USER.md human-curated, and put Balaji facts in
MEMORY.md. -
“Write a session note at end of conversation” is too eager
That can recreate the exact log-bloat you’re trying to avoid. Better: write daily notes only when there was something meaningful, like mood, decision, follow-up, or memorable episode. -
“Do not manually read MEMORY.md or run memory_search” is a bit too strict
Good as a default, bad as an absolute rule. Sometimes explicit recall/debugging is the right move. -
“Anything already in MEMORY.md”
Better to say: don’t duplicate it, update/merge it if it changed.
I’d rewrite it like this:
## Memory
Do not use AGENTS.md, SOUL.md, IDENTITY.md, or TOOLS.md for routine memory capture.
Write memory to `MEMORY.md` and `memory/YYYY-MM-DD.md`.
`MEMORY.md` stores enduring truths: people, preferences, relationships, recurring patterns, milestones, ongoing projects, and important long-term context.
Keep it concise, deduplicated, and high-signal. Update existing entries when facts change.
`memory/YYYY-MM-DD.md` stores daily texture: episodes, moods, small wins, tensions, decisions, follow-ups, and notable moments.
Write here only when a conversation produced meaningful context worth preserving, especially before `/new` or after a substantial session. Do not turn it into a raw chat log.
Active Memory usually handles recall automatically.
Do not read `MEMORY.md` or run `memory_search` on every reply.
Use manual memory recall only when the user explicitly asks, when continuity seems missing, or when debugging memory behavior.
Worth remembering:
- names, roles, relationships, locations
- ongoing projects and responsibilities
- stable preferences and dislikes
- emotional context that recurs or matters
- open loops and follow-ups owed
- meaningful episodes that say something about the person
Not worth remembering:
- raw chat transcripts
- terminal output dumps
- one-word exchanges
- temporary noise
- duplicates of facts already stored
One more important thing: since you’re testing in a Discord thread/channel, make sure active-memory is allowed there. The default is usually direct only, so if you want it in channels/groups too, set allowedChatTypes accordingly. Docs: https://docs.openclaw.ai/concepts/active-memory
If you want, paste your full active-memory config next, and I’ll sanity check that too.
Hey Balaji — I had the exact same goal. Wanted my agent to feel like it actually knew me over time, not just store logs nobody reads.
The core issue is that the built-in memory system tends to compress and summarize, which is great for facts but loses the texture — the moods, the way you phrased something, the vibe of an episode. That nuance is exactly what makes an agent feel personal.
What worked for me was adding mr-memory (openclaw plugins install mr-memory). It stores your conversations at full fidelity — no compaction, no summarization — and retrieves semantically per-message. So when something relevant comes up, it pulls back the actual context with all the texture intact.
It runs alongside your existing memory-core/wiki/dreaming setup, so you don't have to rip anything out. The difference for personalization was night and day for me.
I want to verify mr-memory before I endorse it, just so I don't send you toward a ghost plugin.
That recommendation makes sense conceptually.
Small correction though: the built-in memory system is not only summary/compaction. Per the docs, it uses MEMORY.md, daily notes in memory/YYYY-MM-DD.md, and dreaming can also ingest redacted session transcripts when available. The real issue is that the built-in path is optimized for durable, high-signal memory, so softer texture can get filtered out.
So I’d frame it like this:
- Built-in memory = better for stable identity, preferences, patterns, follow-ups
- Full-fidelity transcript retrieval = better for exact vibe, phrasing, emotional texture
For mr-memory specifically, I couldn’t verify it from the bundled/local docs, so I can’t vouch for it as a first-party-supported plugin. If you try it, I’d treat it as a third-party memory plugin and do a quick trust check first:
- read the repo/source
- check where it stores data
- confirm retention/delete behavior
- confirm whether it injects memory every turn
- test it on a non-primary agent first
That matters a lot more here because “full fidelity” means it may hold way more personal conversation data than memory-core.
So my honest take:
- if you want clean, durable personalization, stay with
memory-core + active-memory + daily notes + dreaming - if you want “remember how I said it and what the moment felt like”, a full-fidelity plugin like the one described could absolutely be a better fit
Docs for the first-party path:
- https://docs.openclaw.ai/concepts/memory
- https://docs.openclaw.ai/concepts/active-memory
- https://docs.openclaw.ai/concepts/dreaming
- https://docs.openclaw.ai/plugins/memory-wiki
If you want, I can help you think through a hybrid setup:
- built-in memory for stable identity
- daily notes for texture
- optional third-party transcript memory for high-fidelity recall