From 061067aa8919cedd2c4530048e9bee6274779041 Mon Sep 17 00:00:00 2001 From: Wenjie Zhang Date: Wed, 1 Apr 2026 04:04:48 +0800 Subject: [PATCH] =?UTF-8?q?feat(agent):=20=E4=BC=98=E5=8C=96=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E5=B7=A5=E4=BD=9C=E5=8F=B0=E8=87=AA=E5=8A=A8=E5=BC=B9?= =?UTF-8?q?=E5=87=BA=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/components/AgentChatComponent.vue | 5 ++--- web/src/utils/agentPanelAutoOpen.js | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 web/src/utils/agentPanelAutoOpen.js diff --git a/web/src/components/AgentChatComponent.vue b/web/src/components/AgentChatComponent.vue index 9dfcdd8a..ca796568 100644 --- a/web/src/components/AgentChatComponent.vue +++ b/web/src/components/AgentChatComponent.vue @@ -262,6 +262,7 @@ import { useAgentRunStream } from '@/composables/useAgentRunStream' import { useAgentStreamHandler } from '@/composables/useAgentStreamHandler' import { useStreamSmoother } from '@/composables/useStreamSmoother' import { useAgentMentionConfig } from '@/composables/useAgentMentionConfig' +import { shouldAutoOpenAgentPanel } from '@/utils/agentPanelAutoOpen' import AgentArtifactsCard from '@/components/AgentArtifactsCard.vue' import AgentPanel from '@/components/AgentPanel.vue' import UserInfoComponent from '@/components/UserInfoComponent.vue' @@ -440,9 +441,7 @@ const currentTodos = computed(() => { }) const hasAgentStateContent = computed(() => { - if (currentThreadFiles.value.length === 0) return false - const fileCount = currentThreadFiles.value.filter((item) => item?.is_dir !== true).length - return fileCount > 0 + return shouldAutoOpenAgentPanel(currentThreadFiles.value) }) // 监听 hasAgentStateContent 从 false → true 时,自动展开面板 diff --git a/web/src/utils/agentPanelAutoOpen.js b/web/src/utils/agentPanelAutoOpen.js new file mode 100644 index 00000000..4b2d56ea --- /dev/null +++ b/web/src/utils/agentPanelAutoOpen.js @@ -0,0 +1,21 @@ +const USER_DATA_UPLOADS_PREFIX = '/home/gem/user-data/uploads/' +const USER_DATA_OUTPUTS_PREFIX = '/home/gem/user-data/outputs/' + +const isTrackedPanelFilePath = (path) => { + const normalizedPath = String(path || '') + return ( + normalizedPath.startsWith(USER_DATA_UPLOADS_PREFIX) || + normalizedPath.startsWith(USER_DATA_OUTPUTS_PREFIX) + ) +} + +export const shouldAutoOpenAgentPanel = (threadFiles) => { + if (!Array.isArray(threadFiles) || threadFiles.length === 0) return false + + return threadFiles.some((item) => item?.is_dir !== true && isTrackedPanelFilePath(item?.path)) +} + +export { + USER_DATA_OUTPUTS_PREFIX, + USER_DATA_UPLOADS_PREFIX +} \ No newline at end of file