From 9aef1f6f697a148a717bf09a07a443b14d018cea Mon Sep 17 00:00:00 2001 From: Hongyu Shi Date: Tue, 11 Nov 2025 10:55:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=20MCP=20=E5=93=8D?= =?UTF-8?q?=E5=BA=94=E5=8F=82=E6=95=B0=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Hongyu Shi --- src/app/tui.py | 9 +++++---- src/backend/hermes/client.py | 6 ++++-- src/backend/hermes/models.py | 6 ++++-- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/app/tui.py b/src/app/tui.py index 14bba5c..8c451fc 100644 --- a/src/app/tui.py +++ b/src/app/tui.py @@ -518,7 +518,8 @@ class IntelligentTerminal(App): # 立即恢复正常输入界面 self._restore_normal_input() # 发送 MCP 响应并处理结果 - task = asyncio.create_task(self._send_mcp_response(message.conversation_id, params=message.confirmed)) + params = {"confirm": message.confirmed} + task = asyncio.create_task(self._send_mcp_response(message.conversation_id, params=params)) self.background_tasks.add(task) task.add_done_callback(self._task_done_callback) @@ -531,7 +532,7 @@ class IntelligentTerminal(App): # 立即恢复正常输入界面 self._restore_normal_input() # 发送 MCP 响应并处理结果 - params = message.params if message.params is not None else False + params = message.params if message.params is not None else {} task = asyncio.create_task(self._send_mcp_response(message.conversation_id, params=params)) self.background_tasks.add(task) task.add_done_callback(self._task_done_callback) @@ -1192,7 +1193,7 @@ class IntelligentTerminal(App): self._mcp_mode = "normal" self._current_mcp_conversation_id = "" - async def _send_mcp_response(self, conversation_id: str, *, params: bool | dict[str, Any]) -> None: + async def _send_mcp_response(self, conversation_id: str, *, params: dict[str, Any]) -> None: """发送 MCP 响应并处理结果""" output_container: Container | None = None @@ -1236,7 +1237,7 @@ class IntelligentTerminal(App): self, conversation_id: str, *, - params: bool | dict[str, Any], + params: dict[str, Any], output_container: Container, llm_client: LLMClientBase, ) -> bool: diff --git a/src/backend/hermes/client.py b/src/backend/hermes/client.py index e82bb0f..b8667d0 100644 --- a/src/backend/hermes/client.py +++ b/src/backend/hermes/client.py @@ -303,13 +303,15 @@ class HermesChatClient(LLMClientBase): """ return await self.agent_manager.get_available_agents() - async def send_mcp_response(self, conversation_id: str, *, params: bool | dict) -> AsyncGenerator[str, None]: + async def send_mcp_response(self, conversation_id: str, *, params: dict) -> AsyncGenerator[str, None]: """ 发送 MCP 响应并获取流式回复 Args: conversation_id: 会话ID - params: 响应参数(bool 表示确认/取消,dict 表示参数补全) + params: 响应参数 + - 对于 MCP 确认消息: {"confirm": true/false} + - 对于参数补全: 包含补全参数的字典 Yields: str: 流式响应的文本内容 diff --git a/src/backend/hermes/models.py b/src/backend/hermes/models.py index 0a9dc80..c23923c 100644 --- a/src/backend/hermes/models.py +++ b/src/backend/hermes/models.py @@ -66,7 +66,7 @@ class HermesApp: app_id: str, flow_id: str = "", *, - params: dict[str, Any] | bool | None = None, + params: dict[str, Any] | None = None, ) -> None: """ 初始化应用配置 @@ -74,7 +74,9 @@ class HermesApp: Args: app_id: 应用ID flow_id: 流ID - params: MCP 响应参数(bool 表示确认/取消,dict 表示参数补全内容) + params: MCP 响应参数 + - 对于 MCP 确认消息: {"confirm": true/false} + - 对于参数补全: 包含补全参数的字典 """ self.app_id = app_id -- Gitee