feat: 添加白名单/黑名单检查以增强主动思考功能的安全性
This commit is contained in:
@@ -59,6 +59,20 @@ class ProactiveThinkingReplyHandler(BaseEventHandler):
|
|||||||
logger.debug("[主动思考事件] reply_reset_enabled 为 False,跳过重置")
|
logger.debug("[主动思考事件] reply_reset_enabled 为 False,跳过重置")
|
||||||
return HandlerResult(success=True, continue_process=True, message=None)
|
return HandlerResult(success=True, continue_process=True, message=None)
|
||||||
|
|
||||||
|
# 检查白名单/黑名单(获取 stream_config 进行验证)
|
||||||
|
try:
|
||||||
|
from src.chat.message_receive.chat_stream import get_chat_manager
|
||||||
|
chat_manager = get_chat_manager()
|
||||||
|
chat_stream = await chat_manager.get_stream(stream_id)
|
||||||
|
|
||||||
|
if chat_stream:
|
||||||
|
stream_config = chat_stream.get_raw_id()
|
||||||
|
if not proactive_thinking_scheduler._check_whitelist_blacklist(stream_config):
|
||||||
|
logger.debug(f"[主动思考事件] 聊天流 {stream_id} ({stream_config}) 不在白名单中,跳过重置")
|
||||||
|
return HandlerResult(success=True, continue_process=True, message=None)
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f"[主动思考事件] 白名单检查时出错: {e}")
|
||||||
|
|
||||||
# 检查是否被暂停
|
# 检查是否被暂停
|
||||||
was_paused = await proactive_thinking_scheduler.is_paused(stream_id)
|
was_paused = await proactive_thinking_scheduler.is_paused(stream_id)
|
||||||
logger.debug(f"[主动思考事件] 聊天流 {stream_id} 暂停状态: {was_paused}")
|
logger.debug(f"[主动思考事件] 聊天流 {stream_id} 暂停状态: {was_paused}")
|
||||||
|
|||||||
@@ -611,10 +611,32 @@ async def execute_proactive_thinking(stream_id: str):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
# 0. 前置检查
|
# 0. 前置检查
|
||||||
|
# 0.1 检查白名单/黑名单
|
||||||
|
# 从 stream_id 获取 stream_config 字符串进行验证
|
||||||
|
try:
|
||||||
|
from src.chat.message_receive.chat_stream import get_chat_manager
|
||||||
|
chat_manager = get_chat_manager()
|
||||||
|
chat_stream = await chat_manager.get_stream(stream_id)
|
||||||
|
|
||||||
|
if chat_stream:
|
||||||
|
# 使用 ChatStream 的 get_raw_id() 方法获取配置字符串
|
||||||
|
stream_config = chat_stream.get_raw_id()
|
||||||
|
|
||||||
|
# 执行白名单/黑名单检查
|
||||||
|
if not proactive_thinking_scheduler._check_whitelist_blacklist(stream_config):
|
||||||
|
logger.debug(f"聊天流 {stream_id} ({stream_config}) 未通过白名单/黑名单检查,跳过主动思考")
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
logger.warning(f"无法获取聊天流 {stream_id} 的信息,跳过白名单检查")
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f"白名单检查时出错: {e},继续执行")
|
||||||
|
|
||||||
|
# 0.2 检查安静时段
|
||||||
if proactive_thinking_scheduler._is_in_quiet_hours():
|
if proactive_thinking_scheduler._is_in_quiet_hours():
|
||||||
logger.debug("安静时段,跳过")
|
logger.debug("安静时段,跳过")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# 0.3 检查每日限制
|
||||||
if not proactive_thinking_scheduler._check_daily_limit(stream_id):
|
if not proactive_thinking_scheduler._check_daily_limit(stream_id):
|
||||||
logger.debug("今日发言达上限")
|
logger.debug("今日发言达上限")
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user