openclaw - ✅(Solved) Fix [Bug]: qmd embedding is never triggered per memory.qmd.update.interval/embedInterval [1 pull requests, 1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#73432Fetched 2026-04-29 06:19:58
View on GitHub
Comments
1
Participants
2
Timeline
4
Reactions
0
Author
Timeline (top)
labeled ×2commented ×1cross-referenced ×1

I only started to configure qmd (2.1.0) with OpenClaw, and noticed the documents always show pending embedding in qmd status. Manual qmd embed works but every time document changes via OpenClaw, it becomes pending embedding until manual embed.

openclaw.json:

  "memory": {
    "backend": "qmd",
    "qmd": {
      "includeDefaultMemory": true,
      "update": {
        "onBoot": true,
        "interval": "10m",
        "embedInterval":"30m"
      },
      "limits": {
        "maxResults": 6,
        "timeoutMs": 10000
      }
    }
  }

qmd status output:

Documents Total: 1 files indexed Vectors: 2 embedded Pending: 1 need embedding (run 'qmd embed') Updated: 52m ago

Root Cause

I only started to configure qmd (2.1.0) with OpenClaw, and noticed the documents always show pending embedding in qmd status. Manual qmd embed works but every time document changes via OpenClaw, it becomes pending embedding until manual embed.

openclaw.json:

  "memory": {
    "backend": "qmd",
    "qmd": {
      "includeDefaultMemory": true,
      "update": {
        "onBoot": true,
        "interval": "10m",
        "embedInterval":"30m"
      },
      "limits": {
        "maxResults": 6,
        "timeoutMs": 10000
      }
    }
  }

qmd status output:

Documents Total: 1 files indexed Vectors: 2 embedded Pending: 1 need embedding (run 'qmd embed') Updated: 52m ago

Fix Action

Fixed

PR fix notes

PR #73512: fix(memory): schedule qmd embed when embedInterval is configured regardless of searchMode

Description (problem / solution / changelog)

Root Cause

When memory.qmd.update.embedInterval is explicitly configured but searchMode is not set (defaults to "search"), the qmdUsesVectors() guard in both shouldRunEmbed() and shouldScheduleEmbedTimer() returns false, preventing the embed timer from ever being created or embed from running after periodic updates.

This means regardless of what embedInterval value the user sets, embedding never fires automatically unless searchMode is explicitly set to "query" or "hybrid".

Fix

Treat an explicit embedIntervalMs > 0 as a user signal that periodic embedding is desired, bypassing the searchMode gate:

// Before
if (!qmdUsesVectors(this.qmd.searchMode)) { return false; }

// After  
if (!qmdUsesVectors(this.qmd.searchMode) && this.qmd.update.embedIntervalMs <= 0) { return false; }

Applied to both shouldRunEmbed() and shouldScheduleEmbedTimer().

Verification

Added a test case that confirms embed is scheduled and fires with searchMode: "search" + explicit embedInterval: "5m".

Fixes #73432

Changed files

  • extensions/memory-core/src/memory/qmd-manager.test.ts (modified, +32/-0)
  • extensions/memory-core/src/memory/qmd-manager.ts (modified, +2/-2)

Code Example

"memory": {
    "backend": "qmd",
    "qmd": {
      "includeDefaultMemory": true,
      "update": {
        "onBoot": true,
        "interval": "10m",
        "embedInterval":"30m"
      },
      "limits": {
        "maxResults": 6,
        "timeoutMs": 10000
      }
    }
  }

---

<img width="1266" height="1202" alt="Image" src="https://github.com/user-attachments/assets/776bcf86-9ece-497c-9b0f-9c82776e9ab4" />
RAW_BUFFERClick to expand / collapse

Bug type

Behavior bug (incorrect output/state without crash)

Beta release blocker

No

Summary

I only started to configure qmd (2.1.0) with OpenClaw, and noticed the documents always show pending embedding in qmd status. Manual qmd embed works but every time document changes via OpenClaw, it becomes pending embedding until manual embed.

openclaw.json:

  "memory": {
    "backend": "qmd",
    "qmd": {
      "includeDefaultMemory": true,
      "update": {
        "onBoot": true,
        "interval": "10m",
        "embedInterval":"30m"
      },
      "limits": {
        "maxResults": 6,
        "timeoutMs": 10000
      }
    }
  }

qmd status output:

Documents Total: 1 files indexed Vectors: 2 embedded Pending: 1 need embedding (run 'qmd embed') Updated: 52m ago

Steps to reproduce

  1. Start OpenClaw with the configuration above, regardless what interval value to use
  2. Explicitly ask agent to make a change in Memory.md
  3. Wait for longer than the interval and check qmd status in OpenClaw agent's context, embed is always pending

Expected behavior

OpenClaw should automatically trigger embedding per configured interval value.

Actual behavior

OpenClaw never automatically triggers embedding.

OpenClaw version

v2026.4.26

Operating system

Windows 11 WSL2 Ubuntu 24

Install method

npm global

Model

MiniMax-M2.7

Provider / routing chain

openclaw -> volcengine -> minimax-m2.7

Additional provider/model setup details

No response

Logs, screenshots, and evidence

<img width="1266" height="1202" alt="Image" src="https://github.com/user-attachments/assets/776bcf86-9ece-497c-9b0f-9c82776e9ab4" />

Impact and severity

No response

Additional information

No response

extent analysis

TL;DR

The issue can be resolved by adjusting the embedInterval configuration in openclaw.json to a value that is less than or equal to the interval value.

Guidance

  • Review the openclaw.json configuration to ensure that the embedInterval is set to a value that allows for automatic embedding within the desired timeframe.
  • Verify that the update section in openclaw.json is correctly configured, paying attention to the onBoot, interval, and embedInterval settings.
  • Check the OpenClaw version and operating system to ensure compatibility with the qmd version (2.1.0).
  • Test the embedding process with a shorter embedInterval value to see if it resolves the issue.

Example

No code snippet is provided as the issue seems to be related to configuration rather than code.

Notes

The provided information suggests a configuration issue rather than a code bug. Adjusting the embedInterval value may resolve the issue, but further testing is needed to confirm.

Recommendation

Apply workaround: Adjust the embedInterval value in openclaw.json to a value that is less than or equal to the interval value, and test the embedding process to see if it resolves the issue. This is recommended because the current configuration seems to be the likely cause of the problem, and adjusting this value may allow for automatic embedding to occur as expected.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

OpenClaw should automatically trigger embedding per configured interval value.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - ✅(Solved) Fix [Bug]: qmd embedding is never triggered per memory.qmd.update.interval/embedInterval [1 pull requests, 1 comments, 2 participants]