




















@@ -62,6 +62,7 @@ const FTS_TABLE = "chunks_fts";
6262const EMBEDDING_CACHE_TABLE = "embedding_cache";
6363const MEMORY_INDEX_MANAGER_CACHE_KEY = Symbol.for("openclaw.memoryIndexManagerCache");
6464const log = createSubsystemLogger("memory");
65+type MemoryIndexManagerPurpose = "default" | "status" | "cli";
65666667const { cache: INDEX_CACHE, pending: INDEX_CACHE_PENDING } =
6768resolveSingletonManagedCache<MemoryIndexManager>(MEMORY_INDEX_MANAGER_CACHE_KEY);
@@ -155,22 +156,23 @@ export class MemoryIndexManager extends MemoryManagerEmbeddingOps implements Mem
155156static async get(params: {
156157cfg: OpenClawConfig;
157158agentId: string;
158-purpose?: "default" | "status";
159+purpose?: MemoryIndexManagerPurpose;
159160}): Promise<MemoryIndexManager | null> {
160161const { cfg, agentId } = params;
161162const settings = resolveMemorySearchConfig(cfg, agentId);
162163if (!settings) {
163164return null;
164165}
165166const workspaceDir = resolveAgentWorkspaceDir(cfg, agentId);
166-const purpose = params.purpose === "status" ? "status" : "default";
167+const purpose =
168+params.purpose === "status" || params.purpose === "cli" ? params.purpose : "default";
167169const key = `${agentId}:${workspaceDir}:${JSON.stringify(settings)}:${purpose}`;
168-const statusOnly = params.purpose === "status";
170+const transient = purpose === "status" || purpose === "cli";
169171return await getOrCreateManagedCacheEntry({
170172cache: INDEX_CACHE,
171173pending: INDEX_CACHE_PENDING,
172174 key,
173-bypassCache: statusOnly,
175+bypassCache: transient,
174176create: async () =>
175177new MemoryIndexManager({
176178cacheKey: key,
@@ -190,7 +192,7 @@ export class MemoryIndexManager extends MemoryManagerEmbeddingOps implements Mem
190192workspaceDir: string;
191193settings: ResolvedMemorySearchConfig;
192194providerResult?: EmbeddingProviderResult;
193-purpose?: "default" | "status";
195+purpose?: MemoryIndexManagerPurpose;
194196}) {
195197super();
196198this.cacheKey = params.cacheKey;
@@ -221,15 +223,15 @@ export class MemoryIndexManager extends MemoryManagerEmbeddingOps implements Mem
221223if (meta?.vectorDims) {
222224this.vector.dims = meta.vectorDims;
223225}
224-const statusOnly = params.purpose === "status";
225-if (!statusOnly) {
226+const transient = params.purpose === "status" || params.purpose === "cli";
227+if (!transient) {
226228this.ensureWatcher();
227229this.ensureSessionListener();
228230this.ensureIntervalSync();
229231}
230232this.dirty = resolveInitialMemoryDirty({
231233hasMemorySource: this.sources.has("memory"),
232- statusOnly,
234+statusOnly: params.purpose === "status",
233235hasIndexedMeta: Boolean(meta),
234236});
235237this.batch = this.resolveBatchConfig();
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。