From 8da53635c44b85d19bd02a6862fd6e446ab4656f Mon Sep 17 00:00:00 2001 From: JOJO <1498581755@qq.com> Date: Tue, 1 Sep 2026 11:53:29 +0800 Subject: [PATCH] =?UTF-8?q?refactor(personalization):=20=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E5=BD=92=E7=B1=BB=E4=B8=AA=E4=BA=BA=E7=A9=BA=E9=97=B4=E9=80=89?= =?UTF-8?q?=E9=A1=B9=E6=89=80=E5=B1=9E=E9=A1=B5=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 数据管理页签删除,用量统计并入常规页 - 审核主动取证/续命轮数/token上限移至审核智能体页 - 使用自定义称呼移至个性化页,标题生成模型移至模型页 - 沙箱环境移至工作区与权限页 - 删除个性化页重复渲染的边线/高度开关 - 拆分撞车文案:默认思考模式(模型页)/默认工作模式(工作区页) - 教程用量步骤锚点改指常规页 --- .../personalization/PersonalizationDrawer.vue | 16 +- .../personalization/tabs/AppearanceTab.vue | 15 - .../personalization/tabs/DataTab.vue | 182 ------------ .../personalization/tabs/GeneralTab.vue | 272 ++++++++++-------- .../personalization/tabs/ModelTab.vue | 50 +++- .../personalization/tabs/PreferencesTab.vue | 50 +--- .../personalization/tabs/ReviewAgentsTab.vue | 81 ++++++ .../personalization/tabs/WorkspaceTab.vue | 158 +++++----- static/src/locales/en-US/personalization.ts | 8 +- static/src/locales/zh-CN/personalization.ts | 8 +- static/src/stores/tutorial.ts | 3 +- 11 files changed, 393 insertions(+), 450 deletions(-) delete mode 100644 static/src/components/personalization/tabs/DataTab.vue diff --git a/static/src/components/personalization/PersonalizationDrawer.vue b/static/src/components/personalization/PersonalizationDrawer.vue index 3620b0ac..1f1bf2a5 100644 --- a/static/src/components/personalization/PersonalizationDrawer.vue +++ b/static/src/components/personalization/PersonalizationDrawer.vue @@ -131,8 +131,6 @@ - - @@ -174,7 +172,6 @@ import WorkspaceTab from './tabs/WorkspaceTab.vue'; import ContextTab from './tabs/ContextTab.vue'; import ToolsTab from './tabs/ToolsTab.vue'; import FilesTab from './tabs/FilesTab.vue'; -import DataTab from './tabs/DataTab.vue'; import VoiceTab from './tabs/VoiceTab.vue'; import SubAgentsTab from './tabs/SubAgentsTab.vue'; import ReviewAgentsTab from './tabs/ReviewAgentsTab.vue'; @@ -251,7 +248,6 @@ type PersonalTab = | 'context' | 'tools' | 'files' - | 'data' | 'voice' | 'sub-agents' | 'review-agents' @@ -266,7 +262,6 @@ const baseTabs = [ { id: 'context', labelKey: 'personalization.tabContext', icon: 'chatBubble' }, { id: 'tools', labelKey: 'personalization.tabTools', icon: 'wrench' }, { id: 'files', labelKey: 'personalization.tabFiles', icon: 'file' }, - { id: 'data', labelKey: 'personalization.tabData', icon: 'layers' }, { id: 'voice', labelKey: 'personalization.tabVoice', icon: 'mic' }, { id: 'sub-agents', labelKey: 'personalization.tabSubAgents', icon: 'bot' }, { id: 'review-agents', labelKey: 'personalization.tabReviewAgents', icon: 'checkbox' } @@ -863,9 +858,6 @@ onMounted(async () => { watch( () => [activeTab.value, visible.value], ([tab, isVisible]) => { - if (isVisible && tab === 'data') { - fetchUsageSummary(); - } if (isVisible && tab === 'sub-agents') { loadSubAgentRoles(); loadSubAgentSettings(); @@ -874,9 +866,13 @@ watch( if (isVisible && tab === 'review-agents') { loadSubAgentModels(); } - if (isVisible && tab === 'general') { - // 「标题生成模型」菜单复用子智能体模型库,需在常规页签也加载模型列表 + if (isVisible && tab === 'model') { + // 「标题生成模型」菜单复用子智能体模型库,需在模型页签加载模型列表 loadSubAgentModels(); + } + if (isVisible && tab === 'general') { + // 用量统计已并入常规页签,切到时拉取一次 + fetchUsageSummary(); if ( isAppShell.value && !appUpdateInfo.value && diff --git a/static/src/components/personalization/tabs/AppearanceTab.vue b/static/src/components/personalization/tabs/AppearanceTab.vue index 0b7c9122..76d00f94 100644 --- a/static/src/components/personalization/tabs/AppearanceTab.vue +++ b/static/src/components/personalization/tabs/AppearanceTab.vue @@ -145,21 +145,6 @@ const { value: $event.target.checked ? 'route' : 'blank' }) " /> - - -
- - {{ $t('personalization.titleModelTitle') }} - {{ $t('personalization.titleModelDesc') }} - -
- -
- - -
-
-
-
{{ $t('personalization.tutorialTitle') }} @@ -158,44 +91,68 @@ const {
-
- - {{ $t('sandbox.sectionTitle') }} - {{ $t('sandbox.sectionDesc') }} - -
- {{ - sandboxStatusText - }} - {{ - $t('sandbox.neverAgainSet') - }} - - - + + +
+
+
+
+

{{ $t('personalization.usageEyebrow') }}

+

{{ $t('personalization.usageTitle') }}

+

{{ $t('personalization.usageDesc') }} +

+
+
+
+
+
{{ $t('personalization.usageInputLabel') }}
+
+ {{ formatTokenCount(usageSummary.total_input_tokens) }} +
+
+
+
{{ $t('personalization.usageOutputLabel') }}
+
+ {{ formatTokenCount(usageSummary.total_output_tokens) }} +
+
+
+
+
+
{{ $t('personalization.usageConversationsLabel') }}
+
+ {{ formatTokenCount(usageSummary.total_conversations) }} +
+
+
+
{{ $t('personalization.usageMessagesLabel') }}
+
+ {{ formatTokenCount(usageSummary.total_user_messages) }} +
+
+
+
{{ $t('personalization.usageToolsLabel') }}
+
+ {{ formatTokenCount(usageSummary.total_tools) }} +
+
+
+
+ {{ usageError }}{{ $t('personalization.usageSyncing') }}{{ $t('personalization.usageUpdated', { time: usageUpdatedText }) }} +
+
{{ $t('personalization.logoutTitle') }} @@ -213,14 +170,97 @@ const { diff --git a/static/src/components/personalization/tabs/ModelTab.vue b/static/src/components/personalization/tabs/ModelTab.vue index 5c514ad3..8638435a 100644 --- a/static/src/components/personalization/tabs/ModelTab.vue +++ b/static/src/components/personalization/tabs/ModelTab.vue @@ -12,6 +12,7 @@ const { personalization, form, activeDropdown, + closeDropdown, defaultModelLabel, filteredModelOptions, floatingMenuStyle, @@ -22,6 +23,7 @@ const { selectDefaultModel, selectDefaultReasoningEffort, selectDefaultRunMode, + subAgentModels, toggleDropdown, runModeOptions, reasoningEffortOptions, @@ -79,9 +81,9 @@ const {
{{ $t('personalization.defaultRunModeTitle') }}{{ $t('personalization.defaultThinkingModeTitle') }}{{ $t('personalization.defaultRunModeDesc') }}{{ $t('personalization.defaultThinkingModeDesc') }}
+ +
+ + {{ $t('personalization.titleModelTitle') }} + {{ $t('personalization.titleModelDesc') }} + +
+ +
+ + +
+
+
diff --git a/static/src/components/personalization/tabs/PreferencesTab.vue b/static/src/components/personalization/tabs/PreferencesTab.vue index b79a252c..4ab26ba5 100644 --- a/static/src/components/personalization/tabs/PreferencesTab.vue +++ b/static/src/components/personalization/tabs/PreferencesTab.vue @@ -20,11 +20,6 @@ const { activeTheme, communicationStyleLabel, conversationContinuityLabel, - currentBlockDisplayMode, - stackedHideBorders, - handleStackedHideBordersChange, - minimalExpandHeightLimited, - handleMinimalExpandHeightLimitedChange, selectCommunicationStyle, selectConversationContinuity } = ctx; @@ -96,6 +91,21 @@ const { @focus="personalization.clearFeedback()" /> +
{{ $t('personalization.toneTitle') }}
@@ -138,36 +148,6 @@ const { @focus="personalization.clearFeedback()" >
- -
{{ $t('personalization.communicationStyleTitle') }} diff --git a/static/src/components/personalization/tabs/ReviewAgentsTab.vue b/static/src/components/personalization/tabs/ReviewAgentsTab.vue index 5d097c0d..29f4a941 100644 --- a/static/src/components/personalization/tabs/ReviewAgentsTab.vue +++ b/static/src/components/personalization/tabs/ReviewAgentsTab.vue @@ -1,5 +1,6 @@ @@ -74,7 +90,7 @@ const {
{{ $t('personalization.defaultRunModeTitle') }}{{ $t('personalization.defaultWorkModeTitle') }}{{ $t('personalization.workRunModeDesc') }}
+
+ + {{ $t('sandbox.sectionTitle') }} + {{ $t('sandbox.sectionDesc') }} + +
+ {{ + sandboxStatusText + }} + {{ + $t('sandbox.neverAgainSet') + }} + + + +
+
+
-
- {{ $t('personalization.goalModeDivider') }} -
- - - -
- {{ $t('personalization.goalMaxTurnsTitle') }}{{ $t('personalization.goalMaxTurnsDesc') }} - -
- - - -
- {{ $t('personalization.goalTokenLimitValueTitle') }}{{ $t('personalization.goalTokenLimitValueDesc') }} - -
+ + diff --git a/static/src/locales/en-US/personalization.ts b/static/src/locales/en-US/personalization.ts index 568d7e47..4ec46645 100644 --- a/static/src/locales/en-US/personalization.ts +++ b/static/src/locales/en-US/personalization.ts @@ -15,7 +15,6 @@ export default { tabContext: 'Context', tabTools: 'Tools & Skills', tabFiles: 'Files & Images', - tabData: 'Data', tabVoice: 'Voice Model', tabSubAgents: 'Sub-agents', tabReviewAgents: 'Review Agents', @@ -82,8 +81,8 @@ export default { defaultModelTitle: 'Default model', defaultModelDesc: 'Preferred model for new conversations and the first request after sign-in', modelDisabled: 'Disabled by administrator', - defaultRunModeTitle: 'Default run mode', - defaultRunModeDesc: 'Initial run mode on sign-in or when starting a new task', + defaultThinkingModeTitle: 'Default thinking mode', + defaultThinkingModeDesc: 'Initial thinking mode on sign-in or when starting a new task', reasoningEffortTitle: 'Default reasoning effort', reasoningEffortDesc: 'Reasoning effort level attached to model requests in thinking mode', runModeFast: 'Fast mode', @@ -166,7 +165,8 @@ export default { permissionAutoApprovalDesc: 'Writes pass through; high-risk operations are auto-approved by the background review agent', permissionUnrestricted: 'Unrestricted', permissionUnrestrictedDesc: 'Tools execute directly through the normal flow', - workRunModeDesc: 'Default run mode for new conversations; locked to read-only in plan mode', + defaultWorkModeTitle: 'Default work mode', + workRunModeDesc: 'Default work mode for new conversations; locked to read-only in plan mode', workModePlan: 'Plan', workModePlanDesc: 'Only makes a plan and executes after approval', workModeAsk: 'Ask', diff --git a/static/src/locales/zh-CN/personalization.ts b/static/src/locales/zh-CN/personalization.ts index 626beeda..58afe8b8 100644 --- a/static/src/locales/zh-CN/personalization.ts +++ b/static/src/locales/zh-CN/personalization.ts @@ -16,7 +16,6 @@ export default { tabContext: '上下文', tabTools: '工具与 Skills', tabFiles: '文件与图片', - tabData: '数据管理', tabVoice: '语音模型', tabSubAgents: '子智能体', tabReviewAgents: '审核智能体', @@ -83,8 +82,8 @@ export default { defaultModelTitle: '默认模型', defaultModelDesc: '为新对话/登录后首次请求选择首选模型', modelDisabled: '已被管理员禁用', - defaultRunModeTitle: '默认运行模式', - defaultRunModeDesc: '登录或新建任务时的初始运行模式', + defaultThinkingModeTitle: '默认思考模式', + defaultThinkingModeDesc: '登录或新建任务时的初始思考模式', reasoningEffortTitle: '默认推理强度', reasoningEffortDesc: '思考模式下请求模型时附带的推理强度参数', runModeFast: '快速模式', @@ -167,7 +166,8 @@ export default { permissionAutoApprovalDesc: '工作区内写入直通;高风险操作由后台审核智能体自动审批', permissionUnrestricted: '无限制', permissionUnrestrictedDesc: '工具按常规流程直接执行', - workRunModeDesc: '新建对话时的默认运行模式;计划模式下权限锁定为只读', + defaultWorkModeTitle: '默认工作模式', + workRunModeDesc: '新建对话时的默认工作模式;计划模式下权限锁定为只读', workModePlan: '计划', workModePlanDesc: '只制定计划,批准后执行', workModeAsk: '询问', diff --git a/static/src/stores/tutorial.ts b/static/src/stores/tutorial.ts index a1bc97d2..fd688eee 100644 --- a/static/src/stores/tutorial.ts +++ b/static/src/stores/tutorial.ts @@ -477,10 +477,11 @@ const TUTORIAL_STEP_DEFS: TutorialStepDef[] = [ placement: 'right' }, { + // 用量统计已并入「常规」页签,锚点指向 general id: 'tab-usage', titleKey: 'tutorial.tabUsageTitle', descriptionKey: 'tutorial.tabUsageDesc', - target: '[data-tutorial="personal-tab-usage"]', + target: '[data-tutorial="personal-tab-general"]', mode: 'info', autoClick: true, placement: 'right'