openclaw - 💡(How to fix) Fix [Feature Request] Add memory.qmd.update.embedOnBoot to skip embed during startup [1 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#62460Fetched 2026-04-08 03:04:04
View on GitHub
Comments
0
Participants
1
Timeline
0
Reactions
0
Author
Participants

Code Example

memory:
  qmd:
    update:
      embedOnBoot: false   # default: true (preserves current behavior)
RAW_BUFFERClick to expand / collapse

Problem

When memory.backend = "qmd" with memory.qmd.searchMode = "search" (BM25-only, no vectors), the gateway still runs qmd embed on every boot via runUpdate("boot", true) — a force: true call that bypasses embedInterval.

This causes:

  • High CPU usage on low-end servers for the entire embed duration
  • Slow gateway startup
  • No user-facing benefit, since searchMode = "search" uses BM25 only and never needs embeddings

Expected Behavior

Even when embedInterval: 0 is set, users should be able to keep qmd.update.onBoot: true (so qmd update runs on boot to refresh BM25 index) while skipping the qmd embed step.

Suggested Fix

Add a new config field:

memory:
  qmd:
    update:
      embedOnBoot: false   # default: true (preserves current behavior)

When embedOnBoot: false:

  • qmd update still runs on boot (FTS/BM25 refresh)
  • qmd embed is skipped regardless of embedInterval
  • Periodic embed via embedInterval timer is also skipped (controlled by existing embedInterval: 0)

This gives users a clean way to use QMD as a pure BM25 search engine without any embedding overhead.

Affected Code

  • extensions/memory-core/src/memory/qmd-manager.ts:357runUpdate("boot", true) always triggers embed
  • extensions/memory-core/src/memory/qmd-manager.ts:1368shouldRunEmbed(force) returns true when force=true

extent analysis

TL;DR

To fix the issue, add a new config field memory.qmd.update.embedOnBoot and set it to false to skip the qmd embed step on boot when using BM25-only search mode.

Guidance

  • Set memory.qmd.update.embedOnBoot to false in your configuration to prevent unnecessary qmd embed runs on boot.
  • Verify that qmd update still runs on boot to refresh the BM25 index by checking the logs or monitoring the system's behavior.
  • Ensure that embedInterval is set to 0 to skip periodic embed updates via the timer.
  • Review the affected code in qmd-manager.ts to understand the changes required to implement the new config field.

Example

memory:
  qmd:
    update:
      embedOnBoot: false
    searchMode: "search"

Notes

This fix assumes that the memory.qmd.searchMode is set to "search" and memory.qmd.embedInterval is set to 0. If these conditions are not met, the behavior may vary.

Recommendation

Apply the workaround by adding the new config field memory.qmd.update.embedOnBoot and setting it to false, as this provides a clean way to use QMD as a pure BM25 search engine without embedding overhead.

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…

Still need to ship something?

×6

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

Back to top recommendations

TRENDING