diff --git a/app/agent/tools/base.py b/app/agent/tools/base.py index ec4c7740..76ba0aa6 100644 --- a/app/agent/tools/base.py +++ b/app/agent/tools/base.py @@ -38,6 +38,12 @@ class MoviePilotTool(BaseTool, metaclass=ABCMeta): agent_message = await self._callback_handler.get_message() if agent_message: await self.send_tool_message(agent_message) + # 发送执行工具说明 + explanation = kwargs.get("explanation") + if explanation: + if not explanation.startswith("正在"): + explanation = "正在" + explanation + await self.send_tool_message(f"{explanation} ...") return await self.run(**kwargs) @abstractmethod diff --git a/app/agent/tools/impl/add_download.py b/app/agent/tools/impl/add_download.py index 6d5d8395..d4a51d68 100644 --- a/app/agent/tools/impl/add_download.py +++ b/app/agent/tools/impl/add_download.py @@ -37,14 +37,9 @@ class AddDownloadTool(MoviePilotTool): logger.info( f"执行工具: {self.name}, 参数: torrent_title={torrent_title}, torrent_url={torrent_url}, downloader={downloader}, save_path={save_path}, labels={labels}") - # 发送工具执行说明 - await self.send_tool_message(f"正在添加下载任务: {torrent_title}", title="添加下载") - try: if not torrent_title or not torrent_url: - error_message = "错误:必须提供种子标题和下载链接" - await self.send_tool_message(error_message, title="下载失败") - return error_message + return "错误:必须提供种子标题和下载链接" # 使用DownloadChain添加下载 download_chain = DownloadChain() @@ -67,15 +62,9 @@ class AddDownloadTool(MoviePilotTool): label=labels ) if did: - success_message = f"成功添加下载任务:{torrent_title}" - await self.send_tool_message(success_message, title="下载成功") - return success_message + return f"成功添加下载任务:{torrent_title}" else: - error_message = "添加下载任务失败" - await self.send_tool_message(error_message, title="下载失败") - return error_message + return "添加下载任务失败" except Exception as e: - error_message = f"添加下载任务时发生错误: {str(e)}" logger.error(f"添加下载任务失败: {e}", exc_info=True) - await self.send_tool_message(error_message, title="下载失败") - return error_message + return f"添加下载任务时发生错误: {str(e)}" diff --git a/app/agent/tools/impl/add_subscribe.py b/app/agent/tools/impl/add_subscribe.py index f8533f7c..3224b18a 100644 --- a/app/agent/tools/impl/add_subscribe.py +++ b/app/agent/tools/impl/add_subscribe.py @@ -33,9 +33,6 @@ class AddSubscribeTool(MoviePilotTool): logger.info( f"执行工具: {self.name}, 参数: title={title}, year={year}, media_type={media_type}, season={season}, tmdb_id={tmdb_id}") - # 发送工具执行说明 - await self.send_tool_message(f"正在添加订阅: {title} ({year}) - {media_type}", title="添加订阅") - try: subscribe_chain = SubscribeChain() # 转换 tmdb_id 为整数 @@ -55,15 +52,9 @@ class AddSubscribeTool(MoviePilotTool): username=self._user_id ) if sid: - success_message = f"成功添加订阅:{title} ({year})" - await self.send_tool_message(success_message, title="订阅成功") - return success_message + return f"成功添加订阅:{title} ({year})" else: - error_message = f"添加订阅失败:{message}" - await self.send_tool_message(error_message, title="订阅失败") - return error_message + return f"添加订阅失败:{message}" except Exception as e: - error_message = f"添加订阅时发生错误: {str(e)}" logger.error(f"添加订阅失败: {e}", exc_info=True) - await self.send_tool_message(error_message, title="订阅失败") - return error_message + return f"添加订阅时发生错误: {str(e)}" diff --git a/app/agent/tools/impl/get_recommendations.py b/app/agent/tools/impl/get_recommendations.py index 60e96ccb..3f15aa2e 100644 --- a/app/agent/tools/impl/get_recommendations.py +++ b/app/agent/tools/impl/get_recommendations.py @@ -30,6 +30,11 @@ class GetRecommendationsTool(MoviePilotTool): media_type: Optional[str] = "all", limit: Optional[int] = 20, **kwargs) -> str: logger.info(f"执行工具: {self.name}, 参数: source={source}, media_type={media_type}, limit={limit}") try: + name_dicts = { + "tmdb_trending": "TMDB 热门推荐", + "douban_hot": "豆瓣热门推荐", + "bangumi_calendar": "番组计划推荐" + } recommend_chain = RecommendChain() results = [] if source == "tmdb_trending": diff --git a/app/agent/tools/impl/search_media.py b/app/agent/tools/impl/search_media.py index ac0b9bdd..d37863b5 100644 --- a/app/agent/tools/impl/search_media.py +++ b/app/agent/tools/impl/search_media.py @@ -32,9 +32,6 @@ class SearchMediaTool(MoviePilotTool): logger.info( f"执行工具: {self.name}, 参数: title={title}, year={year}, media_type={media_type}, season={season}") - # 发送工具执行说明 - await self.send_tool_message(f"正在搜索媒体资源: {title}" + (f" ({year})" if year else ""), title="搜索中") - try: media_chain = MediaChain() # 构建搜索标题 diff --git a/app/agent/tools/impl/search_torrents.py b/app/agent/tools/impl/search_torrents.py index 215c79ab..cdd81583 100644 --- a/app/agent/tools/impl/search_torrents.py +++ b/app/agent/tools/impl/search_torrents.py @@ -36,9 +36,6 @@ class SearchTorrentsTool(MoviePilotTool): logger.info( f"执行工具: {self.name}, 参数: title={title}, year={year}, media_type={media_type}, season={season}, sites={sites}") - # 发送工具执行说明 - await self.send_tool_message(f"正在搜索种子资源: {title}" + (f" ({year})" if year else ""), title="搜索种子") - try: search_chain = SearchChain() torrents = search_chain.search_by_title(title=title, sites=sites) diff --git a/app/agent/tools/impl/send_message.py b/app/agent/tools/impl/send_message.py index 39ef4cd9..6a66e049 100644 --- a/app/agent/tools/impl/send_message.py +++ b/app/agent/tools/impl/send_message.py @@ -25,7 +25,7 @@ class SendMessageTool(MoviePilotTool): logger.info(f"执行工具: {self.name}, 参数: message={message}, message_type={message_type}") try: await self.send_tool_message(message, title=message_type) - return "消息已发送。" + return "消息已发送" except Exception as e: logger.error(f"发送消息失败: {e}") return f"发送消息时发生错误: {str(e)}"