diff --git a/src/agents/common/toolkits/debug/tools.py b/src/agents/common/toolkits/debug/tools.py index 52e6ab45..af5ae0b2 100644 --- a/src/agents/common/toolkits/debug/tools.py +++ b/src/agents/common/toolkits/debug/tools.py @@ -1,7 +1,6 @@ from langgraph.types import interrupt from src.agents.common.toolkits.registry import tool -from src.utils import logger @tool(category="debug", tags=["内置", "审批"], display_name="人工审批") diff --git a/test/test_kb_minio_cleanup.py b/test/test_kb_minio_cleanup.py index 7c02545a..2f260635 100644 --- a/test/test_kb_minio_cleanup.py +++ b/test/test_kb_minio_cleanup.py @@ -20,7 +20,6 @@ async def test_delete_knowledge_base_cleanup(): """测试删除知识库时 MinIO 文件清理""" from src.storage.minio import get_minio_client from src.knowledge import knowledge_base - from src.knowledge.utils.kb_utils import is_minio_url # 初始化 minio_client = get_minio_client() diff --git a/web/src/components/ToolCallingResult/ToolCallRenderer.vue b/web/src/components/ToolCallingResult/ToolCallRenderer.vue index 7bc0032a..f3e3d32d 100644 --- a/web/src/components/ToolCallingResult/ToolCallRenderer.vue +++ b/web/src/components/ToolCallingResult/ToolCallRenderer.vue @@ -5,6 +5,9 @@ + + + @@ -72,6 +75,7 @@ import ListKbsTool from './tools/ListKbsTool.vue' import GetMindmapTool from './tools/GetMindmapTool.vue' import QueryKbTool from './tools/QueryKbTool.vue' import KnowledgeGraphTool from './tools/KnowledgeGraphTool.vue' +import ChartTool from './tools/ChartTool.vue' import CalculatorTool from './tools/CalculatorTool.vue' import TodoListTool from './tools/TodoListTool.vue' import ImageTool from './tools/ImageTool.vue' @@ -141,10 +145,18 @@ const isCalculatorResult = computed(() => { return name.includes('calculator') || name.includes('calc') || name.includes('math') }) -const isImageResult = computed(() => { +const isChartResult = computed(() => { const name = toolName.value.toLowerCase() if (!name.includes('chart')) return false const data = parseData(props.toolCall.tool_call_result?.content) + // chart 返回数组格式 [{ type: "text", text: "url", id: "..." }] + return Array.isArray(data) && data.length > 0 && data[0].type === 'text' +}) + +const isImageResult = computed(() => { + const name = toolName.value.toLowerCase() + if (!name.includes('text_to_img')) return false + const data = parseData(props.toolCall.tool_call_result?.content) return data && typeof data === 'string' && data.startsWith('http') }) diff --git a/web/src/components/ToolCallingResult/tools/ChartTool.vue b/web/src/components/ToolCallingResult/tools/ChartTool.vue new file mode 100644 index 00000000..c7d4ff68 --- /dev/null +++ b/web/src/components/ToolCallingResult/tools/ChartTool.vue @@ -0,0 +1,60 @@ + + + + + + + + + + + + + diff --git a/web/src/components/ToolCallingResult/tools/ImageTool.vue b/web/src/components/ToolCallingResult/tools/ImageTool.vue index 7f648792..098d99c2 100644 --- a/web/src/components/ToolCallingResult/tools/ImageTool.vue +++ b/web/src/components/ToolCallingResult/tools/ImageTool.vue @@ -1,14 +1,18 @@ - - + + + + + {{ parsedContent }} diff --git a/web/src/views/ExtensionsView.vue b/web/src/views/ExtensionsView.vue index 5eea0f0a..9d34496f 100644 --- a/web/src/views/ExtensionsView.vue +++ b/web/src/views/ExtensionsView.vue @@ -2,8 +2,8 @@ - + @@ -47,6 +47,9 @@ + + + - - - @@ -71,7 +71,7 @@ import SkillsManagerComponent from '@/components/SkillsManagerComponent.vue' import ToolsManagerComponent from '@/components/ToolsManagerComponent.vue' import McpServersComponent from '@/components/McpServersComponent.vue' -const activeTab = ref('skills') +const activeTab = ref('tools') const skillsRef = ref(null) const toolsRef = ref(null) const mcpRef = ref(null)