



























@@ -21,8 +21,10 @@ import { findUndeclaredPluginToolNames } from "./tool-contracts.js";
2121import {
2222buildPluginToolDescriptorCacheKey,
2323capturePluginToolDescriptor,
24+createPluginToolDescriptorConfigCacheKeyMemo,
2425readCachedPluginToolDescriptors,
2526type CachedPluginToolDescriptor,
27+type PluginToolDescriptorConfigCacheKeyMemo,
2628writeCachedPluginToolDescriptors,
2729} from "./tool-descriptor-cache.js";
2830import type { OpenClawPluginToolContext } from "./types.js";
@@ -395,6 +397,7 @@ function buildPluginDescriptorCacheKey(params: {
395397plugin: PluginManifestRecord;
396398ctx: OpenClawPluginToolContext;
397399currentRuntimeConfig?: PluginLoadOptions["config"] | null;
400+configCacheKeyMemo?: PluginToolDescriptorConfigCacheKeyMemo;
398401}): string {
399402return buildPluginToolDescriptorCacheKey({
400403pluginId: params.plugin.id,
@@ -403,6 +406,7 @@ function buildPluginDescriptorCacheKey(params: {
403406contractToolNames: params.plugin.contracts?.tools ?? [],
404407ctx: params.ctx,
405408currentRuntimeConfig: params.currentRuntimeConfig,
409+configCacheKeyMemo: params.configCacheKeyMemo,
406410});
407411}
408412@@ -493,6 +497,7 @@ function resolveCachedPluginTools(params: {
493497loadContext: ReturnType<typeof resolvePluginRuntimeLoadContext>;
494498runtimeOptions: PluginLoadOptions["runtimeOptions"];
495499currentRuntimeConfig?: PluginLoadOptions["config"] | null;
500+configCacheKeyMemo: PluginToolDescriptorConfigCacheKeyMemo;
496501}): { tools: AnyAgentTool[]; handledPluginIds: Set<string> } {
497502const tools: AnyAgentTool[] = [];
498503const handledPluginIds = new Set<string>();
@@ -535,6 +540,7 @@ function resolveCachedPluginTools(params: {
535540 plugin,
536541ctx: params.ctx,
537542currentRuntimeConfig: params.currentRuntimeConfig,
543+configCacheKeyMemo: params.configCacheKeyMemo,
538544}),
539545);
540546if (
@@ -714,6 +720,7 @@ export function resolvePluginTools(params: {
714720const existing = params.existingToolNames ?? new Set<string>();
715721const existingNormalized = new Set(Array.from(existing, (tool) => normalizeToolName(tool)));
716722const allowlist = normalizeAllowlist(params.toolAllowlist);
723+const configCacheKeyMemo = createPluginToolDescriptorConfigCacheKeyMemo();
717724let currentRuntimeConfigForDescriptorCache: PluginLoadOptions["config"] | null | undefined =
718725params.context.runtimeConfig;
719726if (currentRuntimeConfigForDescriptorCache === undefined && params.context.getRuntimeConfig) {
@@ -737,6 +744,7 @@ export function resolvePluginTools(params: {
737744loadContext: context,
738745 runtimeOptions,
739746currentRuntimeConfig: currentRuntimeConfigForDescriptorCache,
747+ configCacheKeyMemo,
740748});
741749tools.push(...cached.tools);
742750const runtimePluginIds = onlyPluginIds.filter(
@@ -922,6 +930,7 @@ export function resolvePluginTools(params: {
922930plugin: manifestPlugin,
923931ctx: params.context,
924932currentRuntimeConfig: currentRuntimeConfigForDescriptorCache,
933+ configCacheKeyMemo,
925934}),
926935 descriptors,
927936});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。