← Back to PRs

#21631: feat(doctor): detect memory plugins in memory search health check

by tsukhani open 2026-02-20 05:48 View on GitHub →
docs extensions: memory-lancedb cli scripts commands agents size: XL
## Summary When a memory plugin (e.g. `memory-neo4j`) is configured via `plugins.slots.memory`, the `openclaw doctor` command now shows: ``` ◇ Memory search ──────────────────────────────────────────────╮ │ │ │ Memory recall is handled by plugin "memory-neo4j" (built-in │ │ memorySearch not needed). │ │ │ ├──────────────────────────────────────────────────────────────╯ ``` Instead of the misleading: ``` │ Memory search is explicitly disabled (enabled: false). │ ``` ### Problem Users running memory plugins (memory-neo4j, etc.) see a false warning that memory search is disabled, even though their plugin handles all embedding, recall, and search operations independently. ### Changes - Added `resolveMemoryPlugin()` helper that checks `plugins.slots.memory` config (with raw file fallback for schema-stripped configs) - Plugin check runs first in `noteMemorySearchHealth()` — if a plugin is active, show positive status and skip built-in provider checks - Moved the memory health check outside the `workspaceSuggestions` guard so it always runs ### Files - `src/commands/doctor-memory-search.ts` (new file, based on upstream) - `src/commands/doctor.ts` (import + call placement) <!-- greptile_comment --> <h3>Greptile Summary</h3> This PR adds memory plugin detection to the `openclaw doctor` command to fix a misleading warning. Previously, users with memory plugins like `memory-neo4j` or `memory-lancedb` configured via `plugins.slots.memory` would see a false warning that "memory search is explicitly disabled", even though their plugin was handling all memory operations independently. The changes introduce a new `resolveMemoryPlugin()` helper that checks both the parsed config and the raw config file (as a fallback) to detect active memory plugins. When a plugin is detected, `openclaw doctor` now shows a positive status message instead of the misleading disabled warning. The PR also moves the memory health check outside the `workspaceSuggestions` guard so it always runs, and updates the `openclaw status` command to avoid showing "unavailable" for external memory plugins that can't be queried directly. <h3>Confidence Score: 4/5</h3> - This PR is safe to merge with minor considerations - The implementation correctly addresses the stated problem and follows established patterns in the codebase. The core logic for detecting memory plugins is sound and consistent with existing plugin resolution patterns. The changes are well-contained to doctor command health checks and don't affect runtime memory operations. However, the fallback to raw config file reading introduces slight complexity that could be simplified. - Pay close attention to `src/commands/doctor-memory-search.ts` - the dual config resolution logic (parsed + raw file fallback) adds complexity <sub>Last reviewed commit: f1bd63c</sub> <!-- greptile_other_comments_section --> <!-- /greptile_comment -->

Most Similar PRs