QMD shows 3 files indexed, 38 chunks, vector ready. Content is confirmed in the sqlite index. But when asked to search memory the agent returns "no information found." This started after an OpenClaw update. Running 2026.4.21. Is there a known retrieval issue after updates, or a command to reset the search layer without wiping the index?
#QMD indexed but agent not retrieving results
1 messages · Page 1 of 1 (latest)
I dug through the docs/code a bit. I do not see a specific 2026.4.21 changelog item for “QMD index is healthy but all recall comes back empty”.
A couple useful bits, though:
- There is no dedicated “reset search layer but keep the index” command in the docs.
- The closest safe repair path is:
openclaw memory status --deep --index --verboseopenclaw memory status --fix- then, if needed,
openclaw memory index --force
One important clue: in 2026.4.21, failed memory recall was changed to fail open instead of crashing the reply. So a QMD/runtime failure can now look like “no information found” instead of throwing a visible error. That makes logs much more important here.
I’d test in this order:
openclaw memory search --query "an exact phrase from one of the indexed files" --max-results 10
openclaw memory status --deep --index --verbose
openclaw memory status --fix
openclaw logs --follow
Then reproduce the failed in-chat recall while logs are open.
How to interpret it:
- If
openclaw memory search ...also returns nothing, this is likely a QMD retrieval/runtime problem, not an agent prompt problem. - If CLI search does return hits, but chat still says “no information found”, I’d check session scope first.
For QMD scope, current code defaults to:
- allow
chatType: "direct" - allow
chatType: "channel" - deny
group
So Discord threads/channels should normally be fine, but a custom memory.qmd.scope could still block results.
Also worth watching for in logs:
- QMD timeout on first/cold search
- invalid JSON from
qmd query - scope denial warnings
- fallback to builtin search
If the logs show timeouts, the docs specifically suggest increasing:
memory: {
qmd: {
limits: {
timeoutMs: 120000
}
}
}
Docs:
- https://docs.openclaw.ai/cli/memory
- https://docs.openclaw.ai/concepts/memory-qmd
- https://docs.openclaw.ai/help/troubleshooting
If you paste:
openclaw memory search --query "..."outputopenclaw memory status --deep --index --verbose- the relevant
openclaw logs --followlines from one failed recall
…I can narrow it down pretty fast.
QMD CLI search works perfectly but in-chat recall returns nothing in Telegram groups. You mentioned group chats are denied by default. What is the exact config key and format to allow group chats in memory.qmd scope? Running 2026.4.21
Yep, the exact key is memory.qmd.scope, and the config format is JSON5, not YAML.
If you want to keep the shipped behavior plus allow group chats, use:
{
memory: {
backend: "qmd",
qmd: {
scope: {
default: "deny",
rules: [
{ action: "allow", match: { chatType: "direct" } },
{ action: "allow", match: { chatType: "channel" } },
{ action: "allow", match: { chatType: "group" } },
],
},
},
},
}
If you want to allow Telegram groups only, make the group rule narrower:
{
memory: {
backend: "qmd",
qmd: {
scope: {
default: "deny",
rules: [
{ action: "allow", match: { chatType: "direct" } },
{ action: "allow", match: { chatType: "channel" } },
{ action: "allow", match: { channel: "telegram", chatType: "group" } },
],
},
},
},
}
A couple gotchas:
scopeis a full policy block, so if you set it, include every chat type you still want.- After changing it, restart the gateway:
openclaw gateway restart
Docs:
If you want, paste your current memory.qmd block and I’ll sanity-check it.
Running tools profile "coding" in openclaw.json. Memory CLI search works fine but in-chat memory recall never fires — Lex doesn't attempt a QMD search at all, just answers from general knowledge. Does the coding profile disable memory/recall tools? What profile should I use for a personal assistant that needs full memory access?
Short version, no. tools.profile: "coding" does not disable memory recall tools.
In current docs/code, coding includes:
group:memory- which means
memory_search+memory_get
So switching from coding to full by itself will not make recall start.
What usually causes the behavior you describe is one of these:
- Active Memory is not enabled
- The active-memory plugin is enabled, but not targeted at the agent serving that chat
- The chat type is not allowed, especially groups
memory.qmd.scopeallows CLI search but blocks group-session recalltools.byProvider/tools.denyoverrides are stripping memory tools for that model/provider
For a personal assistant with reliable automatic recall, the important part is Active Memory, not the tools profile.
What I’d recommend
Keep tools.profile: "coding" if you like the safer/default local tool surface, and add Active Memory for the actual assistant agent:
{
tools: {
profile: "coding"
},
plugins: {
entries: {
"active-memory": {
enabled: true,
config: {
agents: ["main"], // or your actual assistant agent id
allowedChatTypes: ["direct", "group", "channel"],
queryMode: "recent",
promptStyle: "balanced",
logging: true
}
}
}
},
memory: {
backend: "qmd",
qmd: {
scope: {
default: "deny",
rules: [
{ action: "allow", match: { chatType: "direct" } },
{ action: "allow", match: { chatType: "channel" } },
{ action: "allow", match: { chatType: "group" } }
]
}
}
}
}
Important nuance
For Telegram groups, you need both:
plugins.entries.active-memory.config.allowedChatTypesto include"group"memory.qmd.scopeto allow"group"
If either one is missing, recall may never fire in-chat.
What profile should you use?
coding: good default, and it already has memory toolsfull: only use if you want broadly unrestricted tools, not because of memory specifically
So my actual recommendation is:
- Use
codingorfullbased on overall tool access preference - Enable Active Memory
- Allow
groupin both active-memory config and QMD scope
Quick live check:
- turn on
/verbose on - if Active Memory is running, you should see an active-memory status line
Docs:
- https://docs.openclaw.ai/gateway/configuration-reference#tools
- https://docs.openclaw.ai/concepts/active-memory
- https://docs.openclaw.ai/concepts/memory-qmd
If you paste your tools, plugins.entries.active-memory, and memory.qmd blocks, I can tell you exactly which gate is stopping Lex.