

























@@ -91,6 +91,7 @@ export type InstalledPluginIndexRecord = {
9191packageJsonHash?: string;
9292rootDir: string;
9393origin: PluginManifestRecord["origin"];
94+enabled: boolean;
9495enabledByDefault?: boolean;
9596contributions: InstalledPluginIndexContributions;
9697compat: readonly PluginCompatCode[];
@@ -400,6 +401,7 @@ function buildInstalledPluginIndex(
400401const env = params.env ?? process.env;
401402const { candidates, registry } = resolveRegistry(params);
402403const candidateByRootDir = buildCandidateLookup(candidates);
404+const normalizedConfig = normalizePluginsConfigWithResolver(params.config?.plugins);
403405const diagnostics: PluginDiagnostic[] = [...registry.diagnostics];
404406const generatedAtMs = (params.now?.() ?? new Date()).getTime();
405407const plugins = registry.plugins.map((record): InstalledPluginIndexRecord => {
@@ -422,12 +424,20 @@ function buildInstalledPluginIndex(
422424required: false,
423425})
424426 : undefined;
427+const enabled = resolveEffectiveEnableState({
428+id: record.id,
429+origin: record.origin,
430+config: normalizedConfig,
431+rootConfig: params.config,
432+enabledByDefault: record.enabledByDefault,
433+}).enabled;
425434const indexRecord: InstalledPluginIndexRecord = {
426435pluginId: record.id,
427436manifestPath: record.manifestPath,
428437 manifestHash,
429438rootDir: record.rootDir,
430439origin: record.origin,
440+ enabled,
431441contributions: buildContributions(record),
432442compat: collectCompatCodes(record),
433443};
@@ -490,6 +500,9 @@ export function listEnabledInstalledPluginRecords(
490500index: InstalledPluginIndex,
491501config?: OpenClawConfig,
492502): readonly InstalledPluginIndexRecord[] {
503+if (!config) {
504+return index.plugins.filter((plugin) => plugin.enabled);
505+}
493506const normalizedConfig = normalizePluginsConfigWithResolver(config?.plugins);
494507return index.plugins.filter(
495508(plugin) =>
@@ -519,6 +532,9 @@ export function isInstalledPluginEnabled(
519532if (!record) {
520533return false;
521534}
535+if (!config) {
536+return record.enabled;
537+}
522538const normalizedConfig = normalizePluginsConfigWithResolver(config?.plugins);
523539return resolveEffectiveEnableState({
524540id: record.pluginId,
@@ -674,6 +690,9 @@ export function diffInstalledPluginIndexInvalidationReasons(
674690) {
675691reasons.add("source-changed");
676692}
693+if (previousPlugin.enabled !== currentPlugin.enabled) {
694+reasons.add("policy-changed");
695+}
677696if (previousPlugin.manifestHash !== currentPlugin.manifestHash) {
678697reasons.add("stale-manifest");
679698}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。