refactor(config): 整合搜索服务配置并移除废弃选项

将原先独立的 Exa 和 Tavily 搜索引擎配置项合并到 `web_search` 配置块中,以实现更统一的管理。同时,移除了已废弃的 `Telemetry` 和部分 `Experimental` 功能配置,简化了整体配置文件结构。

主要变更:
-   `ExaConfig` 和 `TavilyConfig` 被移除,其 API 密钥设置已迁移至 `WebSearchConfig`。
-   删除了 `TelemetryConfig` 及其在主配置中的引用。
-   简化了 `planner` 的自定义提示词逻辑,现在仅通过内容是否为空来判断是否启用。
-   更新了配置文件模板,以反映上述结构调整并移除过时的注释和配置项。
This commit is contained in:
minecraft1024a
2025-08-26 21:10:06 +08:00
parent d64cfc651f
commit 2db42292d2
6 changed files with 10 additions and 52 deletions

View File

@@ -521,7 +521,7 @@ class ActionPlanner:
moderation_prompt_block = "请不要输出违法违规内容,不要输出色情,暴力,政治相关内容,如有敏感内容,请规避。" moderation_prompt_block = "请不要输出违法违规内容,不要输出色情,暴力,政治相关内容,如有敏感内容,请规避。"
custom_prompt_block = "" custom_prompt_block = ""
if global_config.custom_prompt.planner_custom_prompt_enable and global_config.custom_prompt.planner_custom_prompt_content: if global_config.custom_prompt.planner_custom_prompt_content:
custom_prompt_block = global_config.custom_prompt.planner_custom_prompt_content custom_prompt_block = global_config.custom_prompt.planner_custom_prompt_content
planner_prompt_template = await global_prompt_manager.get_prompt_async("planner_prompt") planner_prompt_template = await global_prompt_manager.get_prompt_async("planner_prompt")

View File

@@ -26,7 +26,6 @@ from src.config.official_configs import (
ChineseTypoConfig, ChineseTypoConfig,
ResponsePostProcessConfig, ResponsePostProcessConfig,
ResponseSplitterConfig, ResponseSplitterConfig,
TelemetryConfig,
ExperimentalConfig, ExperimentalConfig,
MessageReceiveConfig, MessageReceiveConfig,
MaimMessageConfig, MaimMessageConfig,
@@ -39,9 +38,7 @@ from src.config.official_configs import (
ScheduleConfig, ScheduleConfig,
VideoAnalysisConfig, VideoAnalysisConfig,
DependencyManagementConfig, DependencyManagementConfig,
ExaConfig,
WebSearchConfig, WebSearchConfig,
TavilyConfig,
AntiPromptInjectionConfig, AntiPromptInjectionConfig,
PluginsConfig, PluginsConfig,
WakeUpSystemConfig, WakeUpSystemConfig,
@@ -375,7 +372,6 @@ class Config(ValidatedConfigBase):
chinese_typo: ChineseTypoConfig = Field(..., description="中文错别字配置") chinese_typo: ChineseTypoConfig = Field(..., description="中文错别字配置")
response_post_process: ResponsePostProcessConfig = Field(..., description="响应后处理配置") response_post_process: ResponsePostProcessConfig = Field(..., description="响应后处理配置")
response_splitter: ResponseSplitterConfig = Field(..., description="响应分割配置") response_splitter: ResponseSplitterConfig = Field(..., description="响应分割配置")
telemetry: TelemetryConfig = Field(..., description="遥测配置")
experimental: ExperimentalConfig = Field(..., description="实验性功能配置") experimental: ExperimentalConfig = Field(..., description="实验性功能配置")
maim_message: MaimMessageConfig = Field(..., description="Maim消息配置") maim_message: MaimMessageConfig = Field(..., description="Maim消息配置")
lpmm_knowledge: LPMMKnowledgeConfig = Field(..., description="LPMM知识配置") lpmm_knowledge: LPMMKnowledgeConfig = Field(..., description="LPMM知识配置")
@@ -390,9 +386,7 @@ class Config(ValidatedConfigBase):
anti_prompt_injection: AntiPromptInjectionConfig = Field(default_factory=lambda: AntiPromptInjectionConfig(), description="反提示注入配置") anti_prompt_injection: AntiPromptInjectionConfig = Field(default_factory=lambda: AntiPromptInjectionConfig(), description="反提示注入配置")
video_analysis: VideoAnalysisConfig = Field(default_factory=lambda: VideoAnalysisConfig(), description="视频分析配置") video_analysis: VideoAnalysisConfig = Field(default_factory=lambda: VideoAnalysisConfig(), description="视频分析配置")
dependency_management: DependencyManagementConfig = Field(default_factory=lambda: DependencyManagementConfig(), description="依赖管理配置") dependency_management: DependencyManagementConfig = Field(default_factory=lambda: DependencyManagementConfig(), description="依赖管理配置")
exa: ExaConfig = Field(default_factory=lambda: ExaConfig(), description="Exa配置")
web_search: WebSearchConfig = Field(default_factory=lambda: WebSearchConfig(), description="网络搜索配置") web_search: WebSearchConfig = Field(default_factory=lambda: WebSearchConfig(), description="网络搜索配置")
tavily: TavilyConfig = Field(default_factory=lambda: TavilyConfig(), description="Tavily配置")
plugins: PluginsConfig = Field(default_factory=lambda: PluginsConfig(), description="插件配置") plugins: PluginsConfig = Field(default_factory=lambda: PluginsConfig(), description="插件配置")
wakeup_system: WakeUpSystemConfig = Field(default_factory=lambda: WakeUpSystemConfig(), description="唤醒度系统配置") wakeup_system: WakeUpSystemConfig = Field(default_factory=lambda: WakeUpSystemConfig(), description="唤醒度系统配置")
monthly_plan_system: MonthlyPlanSystemConfig = Field(default_factory=lambda: MonthlyPlanSystemConfig(), description="月层计划系统配置") monthly_plan_system: MonthlyPlanSystemConfig = Field(default_factory=lambda: MonthlyPlanSystemConfig(), description="月层计划系统配置")

View File

@@ -525,12 +525,6 @@ class ResponseSplitterConfig(ValidatedConfigBase):
enable_kaomoji_protection: bool = Field(default=False, description="启用颜文字保护") enable_kaomoji_protection: bool = Field(default=False, description="启用颜文字保护")
class TelemetryConfig(ValidatedConfigBase):
"""遥测配置类"""
enable: bool = Field(default=True, description="启用")
class DebugConfig(ValidatedConfigBase): class DebugConfig(ValidatedConfigBase):
"""调试配置类""" """调试配置类"""
@@ -539,8 +533,6 @@ class DebugConfig(ValidatedConfigBase):
class ExperimentalConfig(ValidatedConfigBase): class ExperimentalConfig(ValidatedConfigBase):
"""实验功能配置类""" """实验功能配置类"""
enable_friend_chat: bool = Field(default=False, description="启用好友聊天")
pfc_chatting: bool = Field(default=False, description="启用PFC聊天") pfc_chatting: bool = Field(default=False, description="启用PFC聊天")
@@ -600,20 +592,6 @@ class DependencyManagementConfig(ValidatedConfigBase):
class ExaConfig(ValidatedConfigBase):
"""EXA搜索引擎配置类"""
api_keys: list[str] = Field(default_factory=lambda: [], description="API密钥列表")
class TavilyConfig(ValidatedConfigBase):
"""Tavily搜索引擎配置类"""
api_keys: list[str] = Field(default_factory=lambda: [], description="API密钥列表")
class VideoAnalysisConfig(ValidatedConfigBase): class VideoAnalysisConfig(ValidatedConfigBase):
"""视频分析配置类""" """视频分析配置类"""
@@ -633,6 +611,8 @@ class WebSearchConfig(ValidatedConfigBase):
enable_web_search_tool: bool = Field(default=True, description="启用网络搜索工具") enable_web_search_tool: bool = Field(default=True, description="启用网络搜索工具")
enable_url_tool: bool = Field(default=True, description="启用URL工具") enable_url_tool: bool = Field(default=True, description="启用URL工具")
tavily_api_keys: list[str] = Field(default_factory=lambda: [], description="Tavily API密钥列表支持轮询机制")
exa_api_keys: list[str] = Field(default_factory=lambda: [], description="exa API密钥列表支持轮询机制")
enabled_engines: list[str] = Field(default_factory=lambda: ["ddg"], description="启用的搜索引擎") enabled_engines: list[str] = Field(default_factory=lambda: ["ddg"], description="启用的搜索引擎")
search_strategy: Literal["fallback","single","parallel"] = Field(default="single", description="搜索策略") search_strategy: Literal["fallback","single","parallel"] = Field(default="single", description="搜索策略")

View File

@@ -26,7 +26,7 @@ class ExaSearchEngine(BaseSearchEngine):
def _initialize_clients(self): def _initialize_clients(self):
"""初始化Exa客户端""" """初始化Exa客户端"""
# 从主配置文件读取API密钥 # 从主配置文件读取API密钥
exa_api_keys = config_api.get_global_config("exa.api_keys", None) exa_api_keys = config_api.get_global_config("web_search.exa_api_keys", None)
# 创建API密钥管理器 # 创建API密钥管理器
self.api_manager = create_api_key_manager_from_config( self.api_manager = create_api_key_manager_from_config(

View File

@@ -25,7 +25,7 @@ class TavilySearchEngine(BaseSearchEngine):
def _initialize_clients(self): def _initialize_clients(self):
"""初始化Tavily客户端""" """初始化Tavily客户端"""
# 从主配置文件读取API密钥 # 从主配置文件读取API密钥
tavily_api_keys = config_api.get_global_config("tavily.api_keys", None) tavily_api_keys = config_api.get_global_config("web_search.tavily_api_keys", None)
# 创建API密钥管理器 # 创建API密钥管理器
self.api_manager = create_api_key_manager_from_config( self.api_manager = create_api_key_manager_from_config(

View File

@@ -1,5 +1,5 @@
[inner] [inner]
version = "6.4.9" version = "6.5.1"
#----以下是给开发人员阅读的,如果你只是部署了麦麦,不需要阅读---- #----以下是给开发人员阅读的,如果你只是部署了麦麦,不需要阅读----
#如果你想要修改配置文件请递增version的值 #如果你想要修改配置文件请递增version的值
@@ -312,8 +312,7 @@ regex_rules = [
# 可以自定义部分提示词 # 可以自定义部分提示词
[custom_prompt] [custom_prompt]
image_prompt = "请用中文描述这张图片的内容。如果有文字请把文字描述概括出来请留意其主题直观感受输出为一段平文本最多30字请注意不要分点就输出一段文本" image_prompt = "请用中文描述这张图片的内容。如果有文字请把文字描述概括出来请留意其主题直观感受输出为一段平文本最多30字请注意不要分点就输出一段文本"
planner_custom_prompt_enable = false # 是否启用决策器自定义提示词(就是可以在决策器的默认提示词后面加入你的提示词,如果看不懂最好还是关了吧) planner_custom_prompt_content = "" # 决策器自定义提示词内容,如果这里没有内容则不生效
planner_custom_prompt_content = "" # 决策器自定义提示词内容仅在planner_custom_prompt_enable为True时生效
[response_post_process] [response_post_process]
enable_response_post_process = true # 是否启用回复后处理,包括错别字生成器,回复分割器 enable_response_post_process = true # 是否启用回复后处理,包括错别字生成器,回复分割器
@@ -370,9 +369,6 @@ use_wss = false # 是否使用WSS安全连接只支持ws模式
cert_file = "" # SSL证书文件路径仅在use_wss=true时有效 cert_file = "" # SSL证书文件路径仅在use_wss=true时有效
key_file = "" # SSL密钥文件路径仅在use_wss=true时有效 key_file = "" # SSL密钥文件路径仅在use_wss=true时有效
[telemetry] #发送统计信息,主要是看全球有多少只麦麦
enable = true
[schedule] #日程管理 [schedule] #日程管理
enable = false # 是否启用日程管理功能 enable = false # 是否启用日程管理功能
# 日程生成指导原则,如果不设置则使用默认原则 # 日程生成指导原则,如果不设置则使用默认原则
@@ -385,9 +381,6 @@ guidelines = """
""" """
enable_is_sleep = false enable_is_sleep = false
[experimental] #实验性功能
enable_friend_chat = false # 是否启用好友聊天
[video_analysis] # 视频分析配置 [video_analysis] # 视频分析配置
enable = true # 是否启用视频分析功能 enable = true # 是否启用视频分析功能
analysis_mode = "batch_frames" # 分析模式:"frame_by_frame"(逐帧分析,非常慢 "建议frames大于8时不要使用这个" ...但是详细)、"batch_frames"(批量分析,快但可能略简单 -其实效果也差不多)或 "auto"(自动选择) analysis_mode = "batch_frames" # 分析模式:"frame_by_frame"(逐帧分析,非常慢 "建议frames大于8时不要使用这个" ...但是详细)、"batch_frames"(批量分析,快但可能略简单 -其实效果也差不多)或 "auto"(自动选择)
@@ -416,16 +409,13 @@ batch_analysis_prompt = """请以第一人称的视角来观看这一个视频
请用中文回答,结果要详细准确。""" 请用中文回答,结果要详细准确。"""
# 请不要修改{personality_core}和{personality_side}哦~ # 请不要修改{personality_core}和{personality_side}哦~
[exa] # EXA API密钥列表支持轮询机制
api_keys = ["None"]
[tavily] # Tavily API密钥列表支持轮询机制
api_keys = ["None"]
# 网络搜索组件配置 # 网络搜索组件配置
[web_search] [web_search]
enable_web_search_tool = true # 是否启用联网搜索tool enable_web_search_tool = true # 是否启用联网搜索tool
enable_url_tool = true # 是否启用URL解析tool enable_url_tool = true # 是否启用URL解析tool
tavily_api_keys = ["None"]# Tavily API密钥列表支持轮询机制
exa_api_keys = ["None"]# EXA API密钥列表支持轮询机制
# 搜索引擎配置 # 搜索引擎配置
enabled_engines = ["ddg"] # 启用的搜索引擎列表,可选: "exa", "tavily", "ddg","bing" enabled_engines = ["ddg"] # 启用的搜索引擎列表,可选: "exa", "tavily", "ddg","bing"
@@ -440,16 +430,12 @@ centralized_config = true # 是否启用插件配置集中化管理
[monthly_plan_system] [monthly_plan_system]
# 是否启用本功能 # 是否启用本功能
enable = true enable = true
# 每个月允许存在的最大计划数量 # 每个月允许存在的最大计划数量
max_plans_per_month = 20 max_plans_per_month = 20
# 计划使用多少次后自动标记为已完成 # 计划使用多少次后自动标记为已完成
completion_threshold = 3 completion_threshold = 3
# 多少天内不重复抽取同一个计划 # 多少天内不重复抽取同一个计划
avoid_repetition_days = 7 avoid_repetition_days = 7
# 月度计划生成的指导原则(可选,如果不设置则使用默认原则) # 月度计划生成的指导原则(可选,如果不设置则使用默认原则)
guidelines = """ guidelines = """
我希望你能为自己制定一些有意义的月度小目标和计划。 我希望你能为自己制定一些有意义的月度小目标和计划。
@@ -471,10 +457,9 @@ angry_prompt = "你被人吵醒了非常生气,说话带着怒气" # "被吵
[cross_context] # 跨群聊上下文共享配置 [cross_context] # 跨群聊上下文共享配置
# 这是总开关,用于一键启用或禁用此功能 # 这是总开关,用于一键启用或禁用此功能
enable = false enable = false
# 在这里定义您的“共享组” # 在这里定义您的“共享组”
# 只有在同一个组内的群聊才会共享上下文 # 只有在同一个组内的群聊才会共享上下文
# 注意这里的chat_ids需要填写群号而不是哈希过的ID # 注意这里的chat_ids需要填写群号
[[cross_context.groups]] [[cross_context.groups]]
name = "项目A技术讨论组" name = "项目A技术讨论组"
chat_ids = [ chat_ids = [
@@ -486,7 +471,6 @@ chat_ids = [
# QQ空间互通组配置 # QQ空间互通组配置
# 启用后,发布说说时会读取指定互通组的上下文 # 启用后,发布说说时会读取指定互通组的上下文
enable = false enable = false
# 定义QQ空间互通组 # 定义QQ空间互通组
# 同一个组的chat_id会共享上下文用于生成更相关的说说 # 同一个组的chat_id会共享上下文用于生成更相关的说说
[[maizone_intercom.groups]] [[maizone_intercom.groups]]