refactor(cross_context): 重构S4U上下文检索逻辑并更新配置
将S4U(Search for User)上下文检索模式从依赖于共享组(ContextGroup)的配置中解耦,改为使用独立的全局配置。这使得S4U模式的管理更加清晰和灵活。 主要变更: - **配置模型更新**: 在`CrossContextConfig`中移除了与S4U相关的字段(如`s4u_ignore_whitelist`),并添加了新的S4U专用配置项,包括`s4u_mode`, `s4u_limit`, `s4u_stream_limit`, `s4u_whitelist_chats`, 和 `s4u_blacklist_chats`。 - **S4U逻辑重构**: `build_cross_context_s4u`函数不再接收`context_group`参数,而是直接读取全局的S4U配置来检索用户在白名单或黑名单聊天中的消息。 - **简化调用**: `Prompt.get_cross_context_prompt`中的调用逻辑被简化,以适应新的函数签名。 - **文档与模板更新**: 更新了`bot_config_template.toml`配置文件模板,以反映新的S4U配置结构,并提供了更清晰的注释说明。 此次重构将Normal模式(群组共享)和S4U模式(用户中心)的配置和实现完全分离,提高了代码的可维护性和配置的直观性。
This commit is contained in:
@@ -1047,22 +1047,17 @@ class Prompt:
|
||||
|
||||
from src.plugin_system.apis import cross_context_api
|
||||
|
||||
context_group = await cross_context_api.get_context_group(chat_id)
|
||||
if not context_group:
|
||||
return ""
|
||||
|
||||
chat_stream = await get_chat_manager().get_stream(chat_id)
|
||||
if not chat_stream:
|
||||
return ""
|
||||
|
||||
if prompt_mode == "normal":
|
||||
current_chat_raw_id = (
|
||||
chat_stream.group_info.group_id if chat_stream.group_info else chat_stream.user_info.user_id
|
||||
)
|
||||
current_type = "group" if chat_stream.group_info else "private"
|
||||
context_group = await cross_context_api.get_context_group(chat_id)
|
||||
if not context_group:
|
||||
return ""
|
||||
return await cross_context_api.build_cross_context_normal(chat_stream, context_group)
|
||||
elif prompt_mode == "s4u":
|
||||
return await cross_context_api.build_cross_context_s4u(chat_stream, context_group, target_user_info)
|
||||
return await cross_context_api.build_cross_context_s4u(chat_stream, target_user_info)
|
||||
|
||||
return ""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user