diff --git a/web/src/components/AgentChatComponent.vue b/web/src/components/AgentChatComponent.vue
index 4235d46a..9c07c1f6 100644
--- a/web/src/components/AgentChatComponent.vue
+++ b/web/src/components/AgentChatComponent.vue
@@ -68,7 +68,7 @@
状态
-
+
@@ -1043,7 +1043,7 @@ watch(conversations, () => {
.floating-sidebar {
position: absolute !important;
- z-index: 101;
+ z-index: 1001;
height: 100%;
left: 0;
top: 0;
diff --git a/web/src/components/ToolCallingResult/BaseToolCall.vue b/web/src/components/ToolCallingResult/BaseToolCall.vue
index cdef9827..0a911f08 100644
--- a/web/src/components/ToolCallingResult/BaseToolCall.vue
+++ b/web/src/components/ToolCallingResult/BaseToolCall.vue
@@ -21,32 +21,40 @@
@@ -264,6 +272,21 @@ const formatResultData = (data) => {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
+
+ :deep(.keywords) {
+ color: var(--main-700);
+ font-weight: 600;
+ font-size: 14px;
+ }
+
+ :deep(.tag) {
+ font-size: 12px;
+ color: var(--gray-600);
+ background-color: var(--gray-100);
+ padding: 0px 4px;
+ border-radius: 4px;
+ margin-left: 8px;
+ }
}
}
diff --git a/web/src/components/ToolCallingResult/ToolCallRenderer.vue b/web/src/components/ToolCallingResult/ToolCallRenderer.vue
index d0cb1fd1..f1a99c7d 100644
--- a/web/src/components/ToolCallingResult/ToolCallRenderer.vue
+++ b/web/src/components/ToolCallingResult/ToolCallRenderer.vue
@@ -21,6 +21,9 @@
+
+
+
@@ -36,6 +39,7 @@ import KnowledgeGraphTool from './tools/KnowledgeGraphTool.vue';
import CalculatorTool from './tools/CalculatorTool.vue';
import TodoListTool from './tools/TodoListTool.vue';
import ImageTool from './tools/ImageTool.vue';
+import TaskTool from './tools/TaskTool.vue';
const props = defineProps({
toolCall: {
@@ -63,10 +67,19 @@ const parseData = (content) => {
// 识别逻辑
const isWebSearchResult = computed(() => {
const name = toolName.value.toLowerCase();
- const isWebSearchTool = name.includes('search') || name.includes('tavily') || name.includes('web');
- if (!isWebSearchTool) return false;
- const data = parseData(props.toolCall.tool_call_result?.content);
- return data && typeof data === 'object' && 'results' in data && Array.isArray(data.results);
+ return name.includes('search') || name.includes('tavily') || name.includes('web');
+});
+
+const isTaskResult = computed(() => {
+ let args = props.toolCall.args || props.toolCall.function?.arguments;
+ if (typeof args === 'string') {
+ try {
+ args = JSON.parse(args);
+ } catch {
+ return false;
+ }
+ }
+ return args && typeof args === 'object' && 'subagent_type' in args;
});
const isKnowledgeBaseResult = computed(() => {
diff --git a/web/src/components/ToolCallingResult/tools/TaskTool.vue b/web/src/components/ToolCallingResult/tools/TaskTool.vue
new file mode 100644
index 00000000..88cc409d
--- /dev/null
+++ b/web/src/components/ToolCallingResult/tools/TaskTool.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/web/src/components/ToolCallingResult/tools/TodoListTool.vue b/web/src/components/ToolCallingResult/tools/TodoListTool.vue
index ceb7942e..b7ab412e 100644
--- a/web/src/components/ToolCallingResult/tools/TodoListTool.vue
+++ b/web/src/components/ToolCallingResult/tools/TodoListTool.vue
@@ -1,9 +1,7 @@
-
- {{ getHeaderDisplayContent(resultContent) }}
-
+
待办事项工具执行完成
@@ -106,15 +104,15 @@ const getHeaderDisplayContent = (content) => {
// 1. 显示 in_progress
const inProgress = list.find(item => item.status === 'in_progress');
- if (inProgress) return `进行中: ${inProgress.content}`;
+ if (inProgress) return `进行中:${inProgress.content}`;
// 2. 显示第一个 pending
const pending = list.find(item => item.status === 'pending');
- if (pending) return `待处理: ${pending.content}`;
+ if (pending) return `待处理:${pending.content}`;
// 3. 显示最后一个 (fallback)
const last = list[list.length - 1];
- return `更新: ${last.content}`;
+ return `更新:${last.content}`;
};
diff --git a/web/src/components/ToolCallingResult/tools/WebSearchTool.vue b/web/src/components/ToolCallingResult/tools/WebSearchTool.vue
index 68b81fd7..d83c8906 100644
--- a/web/src/components/ToolCallingResult/tools/WebSearchTool.vue
+++ b/web/src/components/ToolCallingResult/tools/WebSearchTool.vue
@@ -1,12 +1,11 @@
-
+
+
+ 查询:
+ "{{ query }}"
+
-
- 查询: {{ parsedData(resultContent).query }}
- 响应时间: {{ parsedData(resultContent).response_time }}s
-
-
import BaseToolCall from '../BaseToolCall.vue';
-import { GlobalOutlined } from '@ant-design/icons-vue'
import { parseToShanghai } from '@/utils/time'
+import { computed } from 'vue';
const props = defineProps({
toolCall: {
@@ -68,6 +67,23 @@ const parseData = (content) => {
const parsedData = (content) => parseData(content);
+const query = computed(() => {
+ // First try to get it from result
+ const result = parsedData(props.toolCall.tool_call_result?.content);
+ if (result?.query) return result.query;
+
+ // Fallback to args
+ const args = props.toolCall.args || props.toolCall.function?.arguments;
+ if (!args) return '';
+ if (typeof args === 'object') return args.query || args.q || '';
+ try {
+ const parsed = JSON.parse(args);
+ return parsed.query || parsed.q || '';
+ } catch (e) {
+ return '';
+ }
+});
+
const formatDate = (dateString) => {
if (!dateString) return ''
const parsed = parseToShanghai(dateString)
@@ -181,4 +197,4 @@ const formatDate = (dateString) => {
font-size: 13px;
}
}
-
\ No newline at end of file
+
diff --git a/web/src/views/AgentView.vue b/web/src/views/AgentView.vue
index 1f4aa6ce..69c5d6d8 100644
--- a/web/src/views/AgentView.vue
+++ b/web/src/views/AgentView.vue
@@ -44,10 +44,10 @@
@open-agent-modal="openAgentModal"
@close-config-sidebar="() => chatUIStore.isConfigSidebarOpen = false"
>
-
+
- 配置
+ 配置
@@ -1009,4 +1009,8 @@ const handlePreview = () => {
font-weight: 500;
}
}
+
+.hide-text {
+ display: none;
+}