


























@@ -4798,6 +4798,64 @@ describe("QmdMemoryManager", () => {
47984798await manager.close();
47994799});
480048004801+it.each([
4802+["equals separator", "Documents: 12\nVectors = 42\n"],
4803+["tab separator", "Documents: 12\nVectors:\t42\n"],
4804+["compact separator", "Documents: 12\nVectors:42\n"],
4805+["embedded suffix", "Documents: 12\nVectors: 42 embedded\n"],
4806+])("reports vector availability as ready for qmd status %s", async (_name, statusOutput) => {
4807+spawnMock.mockImplementation((_cmd: string, args: string[]) => {
4808+if (args[0] === "status") {
4809+const child = createMockChild({ autoClose: false });
4810+emitAndClose(child, "stdout", statusOutput);
4811+return child;
4812+}
4813+return createMockChild();
4814+});
4815+4816+const { manager } = await createManager({
4817+cfg: {
4818+ ...cfg,
4819+memory: {
4820+ ...cfg.memory,
4821+qmd: { ...cfg.memory?.qmd, searchMode: "query" },
4822+},
4823+} as OpenClawConfig,
4824+});
4825+4826+await expect(manager.probeVectorAvailability()).resolves.toBe(true);
4827+await manager.close();
4828+});
4829+4830+it("does not parse unrelated qmd status vector-like fields", async () => {
4831+spawnMock.mockImplementation((_cmd: string, args: string[]) => {
4832+if (args[0] === "status") {
4833+const child = createMockChild({ autoClose: false });
4834+emitAndClose(child, "stdout", "Documents: 12\nMaxVectors: 42\nVector index: yes\n");
4835+return child;
4836+}
4837+return createMockChild();
4838+});
4839+4840+const { manager } = await createManager({
4841+cfg: {
4842+ ...cfg,
4843+memory: {
4844+ ...cfg.memory,
4845+qmd: { ...cfg.memory?.qmd, searchMode: "query" },
4846+},
4847+} as OpenClawConfig,
4848+});
4849+4850+await expect(manager.probeVectorAvailability()).resolves.toBe(false);
4851+expect(manager.status().vector).toEqual({
4852+enabled: true,
4853+available: false,
4854+loadError: "Could not determine QMD vector status from `qmd status`",
4855+});
4856+await manager.close();
4857+});
4858+48014859it("skips qmd status vector probes for lexical search mode", async () => {
48024860const { manager } = await createManager({
48034861cfg: {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。