news 2026/1/14 13:46:52

(10-5)基于MCP实现的多智能体协同系统:框架核心功能模块

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
(10-5)基于MCP实现的多智能体协同系统:框架核心功能模块

10.5 框架核心功能模块

“agent_mcp/core”目录是本项目的核心功能模块,实现了项目关键基础功能的实现与管理。负责处理代理身份验证,确保系统访问安全;进行项目配置管理,集中管控各类配置参数;还涉及全局层面的相关操作与支持,为整个项目的稳定运行和核心功能交互提供底层保障,是项目核心逻辑与基础服务的重要集合地。

10.5.1 系统配置

文件agent_mcp/core/config.py是本项目的核心配置文件,负责系统多方面配置管理。例如下面代码的功能是配置应用程序的全局日志系统。原理是先获取根日志记录器并设置日志级别,清除已有的处理器避免重复,然后根据调试模式等条件,分别添加文件处理器(调试模式下启用,用于将日志写入文件)和控制台处理器(根据配置决定是否启用,带有彩色格式化以增强可读性),同时还会对特

def setup_logging(): """配置应用程序的全局日志记录。""" root_logger = logging.getLogger() # 获取根日志记录器 root_logger.setLevel(LOG_LEVEL) # 在根日志记录器上设置级别 # 清除根日志记录器上任何已存在的处理器,以避免重复 for handler in root_logger.handlers[:]: root_logger.removeHandler(handler) # 1. 文件处理器(仅在调试模式下) debug_mode = os.environ.get("MCP_DEBUG", "false").lower() == "true" if debug_mode: file_formatter = logging.Formatter(LOG_FORMAT_FILE) file_handler = logging.FileHandler( LOG_FILE_NAME, mode="a", encoding="utf-8" ) # 追加模式 file_handler.setFormatter(file_formatter) root_logger.addHandler(file_handler) # 2. 控制台处理器(带颜色,有条件启用) if CONSOLE_LOGGING_ENABLED: console_formatter = ColorfulFormatter( LOG_FORMAT_CONSOLE, datefmt="%H:%M:%S" ) # 控制台使用更简洁的日期格式 console_handler = logging.StreamHandler(sys.stdout) console_handler.setFormatter(console_formatter) # 如果需要,可过滤控制台中不太重要的消息 # console_handler.setLevel(logging.INFO) # 示例:控制台仅显示INFO及以上级别 root_logger.addHandler(console_handler) # 抑制特定库的过度冗长日志,同时作用于文件和控制台 logging.getLogger("watchfiles").setLevel(logging.WARNING) # Uvicorn访问日志由Uvicorn的配置处理(cli.py中access_log=False) # 但如果需要,我们也可以尝试管理其错误日志记录器 logging.getLogger("uvicorn.error").setLevel(logging.WARNING) logging.getLogger("uvicorn").setLevel(logging.WARNING) # 通用uvicorn日志记录器 logging.getLogger("mcp.server.lowlevel.server").propagate = ( False # 防止如果它直接记录时出现重复 )

10.5.2 身份验证

文件agent_mcp/core/auth.py实现了本项目的身份验证功能,包括生成安全随机令牌、验证令牌是否有效且具备所需角色,以及根据令牌获取对应的代理ID,通过操作全局变量来管理和验证系统中代理与管理员的身份权限。

def generate_token() -> str: """生成一个安全的随机令牌。""" return secrets.token_hex(16) def verify_token(token: str, required_role: str = "agent") -> bool: """ 验证令牌是否有效且具备所需角色。 使用全局变量 `g.admin_token` 和 `g.active_agents`。 """ if not token: # 增加对空/None令牌的检查 return False if required_role == "admin" and token == g.admin_token: return True # 仅当active_agents不为None且令牌是其中的键时,检查活跃代理 if required_role == "agent" and g.active_agents and token in g.active_agents: return True # 也允许管理员令牌用于代理角色 if required_role == "agent" and token == g.admin_token: return True # 管理员可以充当代理 return False def get_agent_id(token: str) -> Optional[str]: """ 从令牌获取代理ID。 使用全局变量 `g.admin_token` 和 `g.active_agents`。 """ if not token: # 增加对空/None令牌的检查 return None if token == g.admin_token: return "admin" # “admin”是用于管理员操作的特殊代理ID # 仅当active_agents不为None且令牌是其中的键时,检查活跃代理 if g.active_agents and token in g.active_agents: # 确保代理数据字典包含“agent_id” agent_data = g.active_agents[token] if isinstance(agent_data, dict) and "agent_id" in agent_data: return agent_data["agent_id"] return None
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/13 3:22:32

电话号码定位技术:从零开始的完整解决方案

电话号码定位技术:从零开始的完整解决方案 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_mirrors/lo/loca…

作者头像 李华
网站建设 2026/1/11 7:13:06

QQ音乐加密格式转换工具:qmcdump完整使用指南

还在为QQ音乐的加密格式烦恼吗?那些.qmcflac、.qmc0、.qmc3格式的音乐文件只能在特定播放器中播放,严重限制了你的音乐自由。今天,我们将为你介绍一款简单易用的音乐格式转换工具——qmcdump,它能够轻松处理QQ音乐的加密格式&…

作者头像 李华
网站建设 2026/1/13 7:52:12

RePKG终极指南:快速掌握Wallpaper Engine资源管理技巧

RePKG终极指南:快速掌握Wallpaper Engine资源管理技巧 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 想要轻松提取Wallpaper Engine壁纸资源并转换TEX纹理格式吗&#…

作者头像 李华
网站建设 2026/1/13 13:23:48

网易云音乐NCM文件终极解密教程:一键解锁加密音乐

网易云音乐NCM文件终极解密教程:一键解锁加密音乐 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?今天带来这款专业的NCM解密工具&#xff0…

作者头像 李华
网站建设 2026/1/14 2:25:26

3分钟搞定Unity游戏翻译:XUnity.AutoTranslator零基础使用指南

3分钟搞定Unity游戏翻译:XUnity.AutoTranslator零基础使用指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为看不懂的日语游戏发愁吗?XUnity.AutoTranslator作为一款强大的…

作者头像 李华
网站建设 2026/1/12 3:22:13

NCM格式终极解密指南:3种快速解锁方法详解

NCM格式终极解密指南:3种快速解锁方法详解 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾经在网易云音乐下载了心爱的歌曲,却发现它们变成了神秘的NCM格式,在其他播放器上完全无法播放&a…

作者头像 李华