From e6ad5dfa1d192d10ff5f3400b5af9c03027ce6e5 Mon Sep 17 00:00:00 2001 From: Wenjie Zhang Date: Sun, 15 Feb 2026 21:58:24 +0800 Subject: [PATCH] =?UTF-8?q?feat(agent):=20=E4=B8=BA=20SqlReporterAgent=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0=E5=92=8C?= =?UTF-8?q?=E9=99=84=E4=BB=B6=E4=BF=9D=E5=AD=98=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 引入 FilesystemMiddleware 和 StateBackend 支持文件存储 - 添加 save_attachments_to_fs 中间件保存附件到文件系统 - 配置 agent 的 capabilities 支持 file_upload 和 files --- src/agents/reporter/graph.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/agents/reporter/graph.py b/src/agents/reporter/graph.py index 0aadf343..ff49bde1 100644 --- a/src/agents/reporter/graph.py +++ b/src/agents/reporter/graph.py @@ -1,16 +1,24 @@ from dataclasses import dataclass, field from typing import Annotated +from deepagents.backends import StateBackend +from deepagents.middleware.filesystem import FilesystemMiddleware from langchain.agents import create_agent from src.agents.common import BaseAgent, BaseContext, load_chat_model from src.agents.common.middlewares import ( RuntimeConfigMiddleware, + save_attachments_to_fs, ) from src.agents.common.toolkits.mysql import get_mysql_tools from src.services.mcp_service import get_mcp_server_names, get_tools_from_all_servers from src.utils import logger +def _create_fs_backend(rt): + """创建文件存储后端""" + return StateBackend(rt) + + PROMPT = """你的任务是根据用户的指令,使用数据库工具和图表绘制工具,构建 SQL 查询报告。 你需要根据用户的指令,生成相应的 SQL 查询,并将查询结果以报表的形式返回给用户。 在生成报表时,你可以调用工具生成图表,以更直观地展示数据。 @@ -52,6 +60,10 @@ class SqlReporterAgent(BaseAgent): "MySQL 工具默认启用,无法选择,mcp 默认启用 Charts MCPs。" ) context_schema = ReporterContext + capabilities = [ + "file_upload", + "files", + ] def __init__(self, **kwargs): super().__init__(**kwargs) @@ -66,7 +78,9 @@ class SqlReporterAgent(BaseAgent): system_prompt=context.system_prompt, tools=get_mysql_tools(), # MySQL 工具默认启用,这里添加的 tools,不会在工具选择框中出现 middleware=[ + FilesystemMiddleware(backend=_create_fs_backend), # 文件系统后端 RuntimeConfigMiddleware(extra_tools=all_mcp_tools), + save_attachments_to_fs, # 附件保存到文件系统 ], checkpointer=await self._get_checkpointer(), )