mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 08:30:42 +00:00
refactor: cache reply and visibility runtimes
This commit is contained in:
@@ -34,12 +34,18 @@ function getMemorySearchManagerCacheStore(): MemorySearchManagerCacheStore {
|
||||
const log = createSubsystemLogger("memory");
|
||||
const { qmdManagerCache: QMD_MANAGER_CACHE } = getMemorySearchManagerCacheStore();
|
||||
let managerRuntimePromise: Promise<typeof import("../../manager-runtime.js")> | null = null;
|
||||
let qmdManagerModulePromise: Promise<typeof import("./qmd-manager.js")> | null = null;
|
||||
|
||||
function loadManagerRuntime() {
|
||||
managerRuntimePromise ??= import("../../manager-runtime.js");
|
||||
return managerRuntimePromise;
|
||||
}
|
||||
|
||||
function loadQmdManagerModule() {
|
||||
qmdManagerModulePromise ??= import("./qmd-manager.js");
|
||||
return qmdManagerModulePromise;
|
||||
}
|
||||
|
||||
export type MemorySearchManagerResult = {
|
||||
manager: MemorySearchManager | null;
|
||||
error?: string;
|
||||
@@ -90,7 +96,7 @@ export async function getMemorySearchManager(params: {
|
||||
);
|
||||
} else {
|
||||
try {
|
||||
const { QmdMemoryManager } = await import("./qmd-manager.js");
|
||||
const { QmdMemoryManager } = await loadQmdManagerModule();
|
||||
const primary = await QmdMemoryManager.create({
|
||||
cfg: params.cfg,
|
||||
agentId: params.agentId,
|
||||
|
||||
@@ -26,6 +26,13 @@ const HIDDEN_CLASS_NAMES = new Set([
|
||||
"offscreen",
|
||||
]);
|
||||
|
||||
let parseHtmlPromise: Promise<typeof import("linkedom").parseHTML> | null = null;
|
||||
|
||||
async function loadParseHTML(): Promise<typeof import("linkedom").parseHTML> {
|
||||
parseHtmlPromise ??= import("linkedom").then(({ parseHTML }) => parseHTML);
|
||||
return parseHtmlPromise;
|
||||
}
|
||||
|
||||
function hasHiddenClass(className: string): boolean {
|
||||
const classes = normalizeLowercaseStringOrEmpty(className).split(/\s+/);
|
||||
return classes.some((cls) => HIDDEN_CLASS_NAMES.has(cls));
|
||||
@@ -137,7 +144,7 @@ export async function sanitizeHtml(html: string): Promise<string> {
|
||||
|
||||
let document: Document;
|
||||
try {
|
||||
const { parseHTML } = await import("linkedom");
|
||||
const parseHTML = await loadParseHTML();
|
||||
({ document } = parseHTML(sanitized) as { document: Document });
|
||||
} catch {
|
||||
return sanitized;
|
||||
|
||||
@@ -9,6 +9,13 @@ import {
|
||||
import type { CommandHandler } from "./commands-types.js";
|
||||
import { stripMentions, stripStructuralPrefixes } from "./mentions.js";
|
||||
|
||||
let compactRuntimePromise: Promise<typeof import("./commands-compact.runtime.js")> | null = null;
|
||||
|
||||
function loadCompactRuntime(): Promise<typeof import("./commands-compact.runtime.js")> {
|
||||
compactRuntimePromise ??= import("./commands-compact.runtime.js");
|
||||
return compactRuntimePromise;
|
||||
}
|
||||
|
||||
function extractCompactInstructions(params: {
|
||||
rawBody?: string;
|
||||
ctx: import("../templating.js").MsgContext;
|
||||
@@ -88,7 +95,7 @@ export const handleCompactCommand: CommandHandler = async (params) => {
|
||||
reply: { text: "⚙️ Compaction unavailable (missing session id)." },
|
||||
};
|
||||
}
|
||||
const runtime = await import("./commands-compact.runtime.js");
|
||||
const runtime = await loadCompactRuntime();
|
||||
const sessionId = targetSessionEntry.sessionId;
|
||||
if (runtime.isEmbeddedPiRunActive(sessionId)) {
|
||||
runtime.abortEmbeddedPiRun(sessionId);
|
||||
|
||||
@@ -7,6 +7,12 @@ import type { OpenClawConfig } from "../../config/types.openclaw.js";
|
||||
* See #26905.
|
||||
*/
|
||||
const DEFAULT_PARENT_FORK_MAX_TOKENS = 100_000;
|
||||
let sessionForkRuntimePromise: Promise<typeof import("./session-fork.runtime.js")> | null = null;
|
||||
|
||||
function loadSessionForkRuntime(): Promise<typeof import("./session-fork.runtime.js")> {
|
||||
sessionForkRuntimePromise ??= import("./session-fork.runtime.js");
|
||||
return sessionForkRuntimePromise;
|
||||
}
|
||||
|
||||
export function resolveParentForkMaxTokens(cfg: OpenClawConfig): number {
|
||||
const configured = cfg.session?.parentForkMaxTokens;
|
||||
@@ -21,6 +27,6 @@ export async function forkSessionFromParent(params: {
|
||||
agentId: string;
|
||||
sessionsDir: string;
|
||||
}): Promise<{ sessionId: string; sessionFile: string } | null> {
|
||||
const runtime = await import("./session-fork.runtime.js");
|
||||
const runtime = await loadSessionForkRuntime();
|
||||
return runtime.forkSessionFromParentRuntime(params);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user