

























@@ -19,7 +19,6 @@ import {
1919import {
2020inferUniqueProviderFromConfiguredModels,
2121isCliProvider,
22-normalizeProviderId,
2322normalizeStoredOverrideModel,
2423parseModelRef,
2524resolveConfiguredModelRef,
@@ -78,7 +77,6 @@ import {
7877normalizeLowercaseStringOrEmpty,
7978normalizeOptionalString,
8079normalizeOptionalLowercaseString,
81-resolvePrimaryStringValue,
8280} from "../shared/string-coerce.js";
8381import { normalizeSessionDeliveryFields } from "../utils/delivery-context.shared.js";
8482import { estimateUsageCost, resolveModelCostConfig } from "../utils/usage-format.js";
@@ -375,7 +373,7 @@ type SessionListRowContext = {
375373subagentRuns: ReturnType<typeof buildSubagentRunReadIndex>;
376374storeChildSessionsByKey: Map<string, string[]>;
377375selectedModelByOverrideRef: Map<string, ReturnType<typeof resolveSessionModelRef>>;
378-modelIdentityByEntryKey: Map<string, ReturnType<typeof resolveSessionModelIdentityRef>>;
376+modelIdentityByResolutionKey: Map<string, ReturnType<typeof resolveSessionModelIdentityRef>>;
379377thinkingLevelsByModelRef: Map<string, ReturnType<typeof listThinkingLevelOptions>>;
380378};
381379@@ -494,7 +492,7 @@ function buildSessionListRowContext(params: {
494492 subagentRuns,
495493storeChildSessionsByKey: buildStoreChildSessionIndex(params.store, params.now, subagentRuns),
496494selectedModelByOverrideRef: new Map(),
497-modelIdentityByEntryKey: new Map(),
495+modelIdentityByResolutionKey: new Map(),
498496thinkingLevelsByModelRef: new Map(),
499497};
500498}
@@ -503,27 +501,6 @@ function createSessionRowModelCacheKey(provider: string | undefined, model: stri
503501return `${normalizeLowercaseStringOrEmpty(provider)}\0${normalizeOptionalString(model) ?? ""}`;
504502}
505503506-function parseQualifiedModelRefForSessionList(
507-raw: string | undefined,
508-): { provider: string; model: string } | undefined {
509-const trimmed = normalizeOptionalString(raw);
510-const slash = trimmed?.indexOf("/") ?? -1;
511-if (!trimmed || slash <= 0 || slash === trimmed.length - 1) {
512-return undefined;
513-}
514-const provider = normalizeProviderId(trimmed.slice(0, slash).trim());
515-const model = normalizeOptionalString(trimmed.slice(slash + 1));
516-return model ? { provider, model } : undefined;
517-}
518-519-function createSessionDefaultModelCacheKey(cfg: OpenClawConfig, agentId?: string): string {
520-const normalizedAgentId = normalizeAgentId(agentId);
521-const primary = normalizedAgentId
522- ? resolveAgentEffectiveModelPrimary(cfg, normalizedAgentId)
523- : resolvePrimaryStringValue(cfg.agents?.defaults?.model);
524-return normalizeOptionalString(primary) ?? "";
525-}
526-527504function createSessionEntryModelCacheKey(params: {
528505cfg: OpenClawConfig;
529506agentId?: string;
@@ -533,7 +510,7 @@ function createSessionEntryModelCacheKey(params: {
533510fallbackModelRef?: string;
534511}) {
535512return [
536-createSessionDefaultModelCacheKey(params.cfg, params.agentId),
513+normalizeAgentId(params.agentId),
537514normalizeOptionalString(params.entry?.providerOverride) ?? "",
538515normalizeOptionalString(params.entry?.modelOverride) ?? "",
539516normalizeOptionalString(params.entry?.modelProvider) ?? "",
@@ -547,11 +524,6 @@ function resolveSessionDefaultModelRefForRow(
547524agentId?: string,
548525): { provider: string; model: string } {
549526if (agentId) {
550-const primary = resolveAgentEffectiveModelPrimary(cfg, agentId)?.trim();
551-const parsed = parseQualifiedModelRefForSessionList(primary);
552-if (parsed) {
553-return parsed;
554-}
555527return resolveDefaultModelForAgent({ cfg, agentId });
556528}
557529return resolveConfiguredModelRef({
@@ -581,9 +553,39 @@ function resolveSessionRowModelIdentityRef(params: {
581553const runtimeModel = normalizeOptionalString(params.entry?.model);
582554const runtimeProvider = normalizeOptionalString(params.entry?.modelProvider);
583555const fallbackModelRef = normalizeOptionalString(params.fallbackModelRef);
584-if (runtimeModel && runtimeProvider && !fallbackModelRef) {
556+if (runtimeModel && runtimeProvider) {
585557return { provider: runtimeProvider, model: runtimeModel };
586558}
559+if (runtimeModel) {
560+const key = `runtime\0${runtimeModel}`;
561+const cached = params.rowContext.modelIdentityByResolutionKey.get(key);
562+if (cached) {
563+return cached;
564+}
565+const resolved = resolveSessionModelIdentityRef(
566+params.cfg,
567+params.entry,
568+params.agentId,
569+params.fallbackModelRef,
570+);
571+params.rowContext.modelIdentityByResolutionKey.set(key, resolved);
572+return resolved;
573+}
574+if (fallbackModelRef) {
575+const key = `fallback\0${fallbackModelRef}`;
576+const cached = params.rowContext.modelIdentityByResolutionKey.get(key);
577+if (cached) {
578+return cached;
579+}
580+const resolved = resolveSessionModelIdentityRef(
581+params.cfg,
582+params.entry,
583+params.agentId,
584+params.fallbackModelRef,
585+);
586+params.rowContext.modelIdentityByResolutionKey.set(key, resolved);
587+return resolved;
588+}
587589const normalizedOverride = normalizeStoredOverrideModel({
588590providerOverride: params.entry?.providerOverride,
589591modelOverride: params.entry?.modelOverride,
@@ -605,7 +607,7 @@ function resolveSessionRowModelIdentityRef(params: {
605607entry: params.entry,
606608fallbackModelRef: params.fallbackModelRef,
607609});
608-const cached = params.rowContext.modelIdentityByEntryKey.get(key);
610+const cached = params.rowContext.modelIdentityByResolutionKey.get(key);
609611if (cached) {
610612return cached;
611613}
@@ -618,7 +620,7 @@ function resolveSessionRowModelIdentityRef(params: {
618620!normalizedOverride.modelOverride
619621) {
620622const resolved = resolveSessionDefaultModelRefForRow(params.cfg, params.agentId);
621-params.rowContext.modelIdentityByEntryKey.set(key, resolved);
623+params.rowContext.modelIdentityByResolutionKey.set(key, resolved);
622624return resolved;
623625}
624626@@ -628,7 +630,7 @@ function resolveSessionRowModelIdentityRef(params: {
628630params.agentId,
629631params.fallbackModelRef,
630632);
631-params.rowContext.modelIdentityByEntryKey.set(key, resolved);
633+params.rowContext.modelIdentityByResolutionKey.set(key, resolved);
632634return resolved;
633635}
634636此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。