























@@ -735,10 +735,28 @@ export function buildStatusMessage(args: StatusArgs): string {
735735typeof entry?.contextTokens === "number" && entry.contextTokens > 0
736736 ? entry.contextTokens
737737 : undefined;
738+const persistedContextMatchesActiveModel = (() => {
739+if (persistedContextTokens === undefined) {
740+return false;
741+}
742+const entryProvider = normalizeLowercaseStringOrEmpty(entry?.modelProvider);
743+const entryModel = normalizeLowercaseStringOrEmpty(entry?.model);
744+const lookupProvider = normalizeLowercaseStringOrEmpty(contextLookupProvider);
745+const lookupModel = normalizeLowercaseStringOrEmpty(contextLookupModel);
746+if (!entryModel || !lookupModel || entryModel !== lookupModel) {
747+return false;
748+}
749+if (entryProvider && lookupProvider && entryProvider !== lookupProvider) {
750+return false;
751+}
752+return !runtimeDiffersFromSelected || initialFallbackState.active;
753+})();
738754const cappedPersistedContextTokens =
739755typeof persistedContextTokens === "number" && typeof activeContextTokens === "number"
740756 ? Math.min(persistedContextTokens, activeContextTokens)
741- : persistedContextTokens;
757+ : persistedContextMatchesActiveModel
758+ ? persistedContextTokens
759+ : undefined;
742760const agentContextTokens =
743761typeof args.agent?.contextTokens === "number" && args.agent.contextTokens > 0
744762 ? args.agent.contextTokens
@@ -778,17 +796,40 @@ export function buildStatusMessage(args: StatusArgs): string {
778796const contextTokens = runtimeDiffersFromSelected
779797 ? (explicitRuntimeContextTokens ??
780798(() => {
781-if (persistedContextTokens !== undefined) {
799+const runtimeSnapshotHasFallbackProvenance =
800+initialFallbackState.active ||
801+hasSessionAutoModelFallbackProvenance(entry) ||
802+areRuntimeModelRefsEquivalent(activeModelLabel, modelRefs.selected.label || "unknown");
803+if (!runtimeSnapshotHasFallbackProvenance) {
804+if (typeof selectedContextTokens === "number") {
805+if (explicitConfiguredContextTokens !== undefined) {
806+return Math.min(explicitConfiguredContextTokens, selectedContextTokens);
807+}
808+if (agentContextTokens !== undefined) {
809+return Math.min(agentContextTokens, selectedContextTokens);
810+}
811+return selectedContextTokens;
812+}
813+if (explicitConfiguredContextTokens !== undefined) {
814+return explicitConfiguredContextTokens;
815+}
816+if (agentContextTokens !== undefined) {
817+return agentContextTokens;
818+}
819+return DEFAULT_CONTEXT_TOKENS;
820+}
821+if (cappedPersistedContextTokens !== undefined) {
822+const trustedPersistedContextTokens = cappedPersistedContextTokens;
782823const persistedLooksSelectedWindow =
783824typeof selectedContextTokens === "number" &&
784-persistedContextTokens === selectedContextTokens;
825+trustedPersistedContextTokens === selectedContextTokens;
785826const activeWindowDiffersFromSelected =
786827typeof selectedContextTokens === "number" &&
787828typeof activeContextTokens === "number" &&
788829activeContextTokens !== selectedContextTokens;
789830const explicitConfiguredMatchesPersisted =
790831typeof explicitConfiguredContextTokens === "number" &&
791-explicitConfiguredContextTokens === persistedContextTokens;
832+explicitConfiguredContextTokens === trustedPersistedContextTokens;
792833if (
793834persistedLooksSelectedWindow &&
794835activeWindowDiffersFromSelected &&
@@ -797,9 +838,9 @@ export function buildStatusMessage(args: StatusArgs): string {
797838return activeContextTokens;
798839}
799840if (typeof activeContextTokens === "number") {
800-return Math.min(persistedContextTokens, activeContextTokens);
841+return Math.min(trustedPersistedContextTokens, activeContextTokens);
801842}
802-return persistedContextTokens;
843+return trustedPersistedContextTokens;
803844}
804845if (cappedConfiguredContextTokens !== undefined) {
805846return cappedConfiguredContextTokens;
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。