news 2026/4/30 18:54:12

(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/5/1 4:04:38

GitHub中文界面改造指南:让技术平台更懂你的语言

还在为GitHub的英文界面而头疼吗?每次使用GitHub时,你是否需要反复查阅词典来理解那些技术术语?现在,一款强大的GitHub汉化插件能够彻底解决这个问题。只需简单配置,你就能获得完全中文化的GitHub体验,让技…

作者头像 李华
网站建设 2026/5/1 5:01:11

云盘直链下载终极指南:免客户端高速下载完整教程

还在为网盘下载速度慢而烦恼吗?网盘直链下载助手正是你需要的解决方案!这款免费开源的浏览器扩展能够将百度网盘、阿里云盘等主流云存储服务的分享链接转换为真实下载地址,让你无需安装官方客户端就能实现满速下载体验。 【免费下载链接】bai…

作者头像 李华
网站建设 2026/4/15 2:15:07

3分钟掌握B站爆款封面制作:downkyi工具实战全解析

3分钟掌握B站爆款封面制作:downkyi工具实战全解析 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&#xff0…

作者头像 李华
网站建设 2026/5/1 5:01:07

WeChatPad:安卓微信双设备登录终极解决方案

WeChatPad:安卓微信双设备登录终极解决方案 【免费下载链接】WeChatPad 强制使用微信平板模式 项目地址: https://gitcode.com/gh_mirrors/we/WeChatPad 想要在安卓设备上同时登录两个微信账号吗?WeChatPad项目为您提供了完美的微信双设备登录方案…

作者头像 李华
网站建设 2026/5/1 5:03:58

ncmdump使用指南:一键转换网易云音乐NCM格式完整解决方案

你是否曾经在网易云音乐下载了心爱的歌曲,却发现在手机、车载音响或其他播放器上无法播放?那些以.ncm为后缀的文件就像是需要特殊处理的音乐文件,让你无法直接使用。别担心,今天我要分享的这款音乐格式转换工具ncmdump&#xff0c…

作者头像 李华
网站建设 2026/5/1 5:03:33

打造国际化Android应用:从零开始的多语言适配全流程指南

打造国际化Android应用:从零开始的多语言适配全流程指南 【免费下载链接】WeChatLuckyMoney :money_with_wings: WeChats lucky money helper (微信抢红包插件) by Zhongyi Tong. An Android app that helps you snatch red packets in WeChat groups. 项目地址:…

作者头像 李华