fix(doctor): skip embedding provider check when QMD backend is active (openclaw#17295) thanks @miloudbelarebia

Verified:
- pnpm build
- pnpm check (fails on baseline formatting drift in files identical to origin/main)
- pnpm test:macmini

Co-authored-by: miloudbelarebia <52387093+miloudbelarebia@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
This commit is contained in:
Thorfinn
2026-02-19 14:21:27 +01:00
committed by GitHub
parent bafdbb6f11
commit b45bb6801c
3 changed files with 32 additions and 0 deletions

View File

@@ -7,6 +7,7 @@ const resolveDefaultAgentId = vi.hoisted(() => vi.fn(() => "agent-default"));
const resolveAgentDir = vi.hoisted(() => vi.fn(() => "/tmp/agent-default"));
const resolveMemorySearchConfig = vi.hoisted(() => vi.fn());
const resolveApiKeyForProvider = vi.hoisted(() => vi.fn());
const resolveMemoryBackendConfig = vi.hoisted(() => vi.fn());
vi.mock("../terminal/note.js", () => ({
note,
@@ -25,6 +26,10 @@ vi.mock("../agents/model-auth.js", () => ({
resolveApiKeyForProvider,
}));
vi.mock("../memory/backend-config.js", () => ({
resolveMemoryBackendConfig,
}));
import { noteMemorySearchHealth } from "./doctor-memory-search.js";
import { detectLegacyWorkspaceDirs } from "./doctor-workspace.js";
@@ -50,6 +55,24 @@ describe("noteMemorySearchHealth", () => {
resolveAgentDir.mockClear();
resolveMemorySearchConfig.mockReset();
resolveApiKeyForProvider.mockReset();
resolveMemoryBackendConfig.mockReset();
resolveMemoryBackendConfig.mockReturnValue({ backend: "builtin", citations: "auto" });
});
it("does not warn when QMD backend is active", async () => {
resolveMemoryBackendConfig.mockReturnValue({
backend: "qmd",
citations: "auto",
});
resolveMemorySearchConfig.mockReturnValue({
provider: "auto",
local: {},
remote: {},
});
await noteMemorySearchHealth(cfg);
expect(note).not.toHaveBeenCalled();
});
it("does not warn when remote apiKey is configured for explicit provider", async () => {

View File

@@ -4,6 +4,7 @@ import { resolveMemorySearchConfig } from "../agents/memory-search.js";
import { resolveApiKeyForProvider } from "../agents/model-auth.js";
import { formatCliCommand } from "../cli/command-format.js";
import type { OpenClawConfig } from "../config/config.js";
import { resolveMemoryBackendConfig } from "../memory/backend-config.js";
import { note } from "../terminal/note.js";
import { resolveUserPath } from "../utils.js";
@@ -22,6 +23,13 @@ export async function noteMemorySearchHealth(cfg: OpenClawConfig): Promise<void>
return;
}
// QMD backend handles embeddings internally (e.g. embeddinggemma) — no
// separate embedding provider is needed. Skip the provider check entirely.
const backendConfig = resolveMemoryBackendConfig({ cfg, agentId });
if (backendConfig.backend === "qmd") {
return;
}
// If a specific provider is configured (not "auto"), check only that one.
if (resolved.provider !== "auto") {
if (resolved.provider === "local") {