From d06758ca9310968ed27808705913e4fc4309245b Mon Sep 17 00:00:00 2001 From: Joob1n Date: Thu, 3 Sep 2026 13:29:38 +0800 Subject: [PATCH] feat(desktop): show the model's reported context window beside the declared setting The context-window setting is the Maka window: the compaction target the user declares. When nothing is declared and the provider's /models report carries a window for the model, show that number beside the empty field with a one-click "Use it" that fills the declaration. The reported value never takes effect on its own (#4559); the help text now says what the setting does and what leaving it empty means. Refs #4559 Generated-by: Claude Code Claude-Session: https://claude.ai/code/session_014ajaRxC4jydavY9nYUFj5J --- .../settings-provider-copy.ts | 8 +++- .../settings/provider-connection-detail.tsx | 47 ++++++++++++++----- 2 files changed, 41 insertions(+), 14 deletions(-) diff --git a/apps/desktop/src/renderer/features/connection-settings/settings-provider-copy.ts b/apps/desktop/src/renderer/features/connection-settings/settings-provider-copy.ts index ad35d5a432..e1aa4bfd62 100644 --- a/apps/desktop/src/renderer/features/connection-settings/settings-provider-copy.ts +++ b/apps/desktop/src/renderer/features/connection-settings/settings-provider-copy.ts @@ -45,7 +45,9 @@ const zhCapabilitiesCopy = { visionEnabledOption: '启用', visionDisabledOption: '禁用', contextWindow: '上下文窗口(tokens)', - contextWindowHelp: '声明后压缩与预算按此值计算;留空跟随内置元数据。', + contextWindowHelp: '设置后作为 Maka 压缩的触发阈值。留空则不主动压缩,由供应商决定何时超限。', + contextWindowHint: (tokens: number) => `该模型声明的窗口为 ${tokens} tokens`, + contextWindowApplyHint: '填入', saveCapabilities: '保存能力声明', fastMode: 'Fast 模式', fastModeHelp: '使用 OpenAI 的 fast service tier;留空跟随服务商默认值。', @@ -70,7 +72,9 @@ const enCapabilitiesCopy = { visionEnabledOption: 'Enabled', visionDisabledOption: 'Disabled', contextWindow: 'Context window (tokens)', - contextWindowHelp: 'When set, compaction and budgets use this value; when empty, built-in metadata decides.', + contextWindowHelp: 'When set, Maka compacts once the previous request\'s real usage exceeds it. Leave empty to never compact proactively; the provider decides.', + contextWindowHint: (tokens: number) => `This model declares a ${tokens}-token window`, + contextWindowApplyHint: 'Use it', saveCapabilities: 'Save capability declarations', fastMode: 'Fast mode', fastModeHelp: "Use OpenAI's fast service tier; empty follows the provider default.", diff --git a/apps/desktop/src/renderer/settings/provider-connection-detail.tsx b/apps/desktop/src/renderer/settings/provider-connection-detail.tsx index ae6a2bc81f..3aee9a9df8 100644 --- a/apps/desktop/src/renderer/settings/provider-connection-detail.tsx +++ b/apps/desktop/src/renderer/settings/provider-connection-detail.tsx @@ -863,18 +863,41 @@ function ConnectionDetailInner(props: ConnectionDetailProps) { /> - - setDraftContextWindow(modelId, value ?? undefined) - } - /> + + + setDraftContextWindow(modelId, value ?? undefined) + } + /> + {declared?.contextWindow === undefined && + connection.models?.find((model) => model.id === modelId)?.contextWindow !== undefined && ( + + + {copy.contextWindowHint( + connection.models.find((model) => model.id === modelId)!.contextWindow!, + )} + +