#21631: feat(doctor): detect memory plugins in memory search health check
docs
extensions: memory-lancedb
cli
scripts
commands
agents
size: XL
Cluster:
Doctor and Memory Health Checks
## 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
#13045: feat(doctor): add memory search embeddings provider health check
by asklee-klawd · 2026-02-10
84.6%
#12596: fix(status): show third-party memory plugins as active instead of u...
by nhadaututtheky · 2026-02-09
82.1%
#22327: fix(doctor): use gateway health status for memory search key check
by therk · 2026-02-21
79.2%
#20125: fix(doctor): skip memorySearch provider check when using QMD backend
by brandonwise · 2026-02-18
79.1%
#18546: fix(doctor): replace deprecated `auth add` command reference
by Phineas1500 · 2026-02-16
78.5%
#4881: docs(plugin): clarify memory-lancedb is bundled (no npm install nee...
by AverageSuami · 2026-01-30
77.8%
#21240: fix: GH#20607 prevent doctor from dropping custom config sections
by theognis1002 · 2026-02-19
77.4%
#17660: fix: skip embedding provider check in doctor when QMD backend is co...
by echoVic · 2026-02-16
76.8%
#21471: fix: check QMD backend before memory search config
by lbo728 · 2026-02-20
76.3%
#16669: feat(memory-lancedb): add memory_search/memory_get compatibility re...
by ciberponk · 2026-02-15
74.1%