diff --git a/modules/personalization_manager.py b/modules/personalization_manager.py index 594de1df..446301ad 100644 --- a/modules/personalization_manager.py +++ b/modules/personalization_manager.py @@ -91,6 +91,7 @@ DEFAULT_PERSONALIZATION_CONFIG: Dict[str, Any] = { "deep_compress_trigger_tokens": None, "deep_compress_form": "file", # 深压缩形式:file-生成文件 / inject-直接注入文件全文 "silent_tool_disable": True, # 禁用工具时不向模型插入提示(默认开启) + "hide_tool_approval_panel": True, # 自动审核模式下不自动打开工具审核面板(默认开启) "enhanced_tool_display": True, # 增强工具显示 "compact_message_display": "full", # 简略消息显示:full-完整原始内容 / brief-一行概要 "block_display_mode": "stacked", # 堆叠块显示模式:traditional-传统列表 / stacked-堆叠动画 / minimal-极简模式 @@ -440,6 +441,12 @@ def sanitize_personalization_payload( else: base["silent_tool_disable"] = bool(base.get("silent_tool_disable")) + # 隐藏工具审核面板(自动审核模式下不自动展开) + if "hide_tool_approval_panel" in data: + base["hide_tool_approval_panel"] = bool(data.get("hide_tool_approval_panel")) + else: + base["hide_tool_approval_panel"] = bool(base.get("hide_tool_approval_panel", True)) + # 增强工具显示 if "enhanced_tool_display" in data: base["enhanced_tool_display"] = bool(data.get("enhanced_tool_display")) diff --git a/static/src/app/methods/taskPolling/tool.ts b/static/src/app/methods/taskPolling/tool.ts index ef568e75..2d6d1c83 100644 --- a/static/src/app/methods/taskPolling/tool.ts +++ b/static/src/app/methods/taskPolling/tool.ts @@ -1,6 +1,7 @@ // @ts-nocheck import { debugLog } from '../common'; import { useTaskStore } from '../../../stores/task'; +import { usePersonalizationStore } from '../../../stores/personalization'; import { getMessageVisibility, messageStartsWork } from '../../../utils/messageVisibility'; import { debugNotifyLog, @@ -347,12 +348,18 @@ export const toolMethods = { if ((this.autoApprovalFeedLines || []).length === 0) { this.autoApprovalFinalMessage = ''; } - this.rightCollapsed = false; - if (this.rightWidth < this.minPanelWidth) { - this.rightWidth = this.minPanelWidth; - } - if (this.isMobileViewport && this.activeMobileOverlay !== 'approval') { - this.openMobileOverlay('approval'); + // 自动审核模式 + 个人空间开启「隐藏工具审核面板」时,不自动展开审核面板 + const hideApprovalPanel = + this.currentPermissionMode === 'auto_approval' && + usePersonalizationStore().form.hide_tool_approval_panel !== false; + if (!hideApprovalPanel) { + this.rightCollapsed = false; + if (this.rightWidth < this.minPanelWidth) { + this.rightWidth = this.minPanelWidth; + } + if (this.isMobileViewport && this.activeMobileOverlay !== 'approval') { + this.openMobileOverlay('approval'); + } } this.$forceUpdate(); }, diff --git a/static/src/app/methods/ui/permission.ts b/static/src/app/methods/ui/permission.ts index 6e418385..8eb8ea1a 100644 --- a/static/src/app/methods/ui/permission.ts +++ b/static/src/app/methods/ui/permission.ts @@ -352,8 +352,12 @@ export const permissionMethods = { } const items = Array.isArray(payload.items) ? payload.items : []; this.pendingToolApprovals = items; + // 自动审核模式 + 个人空间开启「隐藏工具审核面板」时,不自动展开审核面板 + const hideApprovalPanel = + this.currentPermissionMode === 'auto_approval' && + usePersonalizationStore().form.hide_tool_approval_panel !== false; // 电脑端:有审批时自动展开面板 - if (items.length > 0 && !this.isMobileViewport) { + if (items.length > 0 && !this.isMobileViewport && !hideApprovalPanel) { this.rightCollapsed = false; if (this.rightWidth < this.minPanelWidth) { this.rightWidth = this.minPanelWidth; diff --git a/static/src/components/personalization/PersonalizationDrawer.vue b/static/src/components/personalization/PersonalizationDrawer.vue index a097ed27..0ea6be8f 100644 --- a/static/src/components/personalization/PersonalizationDrawer.vue +++ b/static/src/components/personalization/PersonalizationDrawer.vue @@ -1360,6 +1360,28 @@ class="fancy-path" > +