This commit is contained in:
meng_xi_pan
2025-03-15 20:42:12 +08:00
41 changed files with 1025 additions and 252 deletions

View File

@@ -2,7 +2,6 @@ import asyncio
import time
import os
from loguru import logger
from nonebot import get_driver, on_message, on_notice, require
from nonebot.rule import to_me
from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent, Message, MessageSegment, MessageEvent, NoticeEvent
@@ -21,6 +20,9 @@ from ..memory_system.memory import hippocampus, memory_graph
from .bot import ChatBot
from .message_sender import message_manager, message_sender
from .storage import MessageStorage
from src.common.logger import get_module_logger
logger = get_module_logger("chat_init")
# 创建LLM统计实例
llm_stats = LLMStatistics("llm_statistics.txt")

View File

@@ -12,6 +12,7 @@ from nonebot.adapters.onebot.v11 import (
FriendRecallNoticeEvent,
)
from src.common.logger import get_module_logger
from ..memory_system.memory import hippocampus
from ..moods.moods import MoodManager # 导入情绪管理器
from .config import global_config
@@ -31,11 +32,8 @@ from .utils_image import image_path_to_base64
from .utils_user import get_user_nickname, get_user_cardname, get_groupname
from ..willing.willing_manager import willing_manager # 导入意愿管理器
from .message_base import UserInfo, GroupInfo, Seg
from ..utils.logger_config import LogClassification, LogModule
# 配置日志
log_module = LogModule()
logger = log_module.setup_logger(LogClassification.CHAT)
logger = get_module_logger("chat_bot")
class ChatBot:
@@ -336,9 +334,12 @@ class ChatBot:
platform="qq",
)
group_info = GroupInfo(
group_id=event.group_id, group_name=None, platform="qq"
)
if isinstance(event, GroupRecallNoticeEvent):
group_info = GroupInfo(
group_id=event.group_id, group_name=None, platform="qq"
)
else:
group_info = None
chat = await chat_manager.get_or_create_stream(
platform=user_info.platform, user_info=user_info, group_info=group_info

View File

@@ -4,11 +4,14 @@ import time
import copy
from typing import Dict, Optional
from loguru import logger
from ...common.database import db
from .message_base import GroupInfo, UserInfo
from src.common.logger import get_module_logger
logger = get_module_logger("chat_stream")
class ChatStream:
"""聊天流对象,存储一个完整的聊天上下文"""

View File

@@ -4,11 +4,14 @@ from dataclasses import dataclass, field
from typing import Dict, List, Optional
import tomli
from loguru import logger
from packaging import version
from packaging.version import Version, InvalidVersion
from packaging.specifiers import SpecifierSet, InvalidSpecifier
from src.common.logger import get_module_logger
logger = get_module_logger("config")
@dataclass
class BotConfig:
@@ -440,10 +443,3 @@ else:
global_config = BotConfig.load_config(config_path=bot_config_path)
if not global_config.enable_advance_output:
logger.remove()
# 调试输出功能
if global_config.enable_debug_output:
logger.remove()
logger.add(sys.stdout, level="DEBUG")

View File

@@ -7,7 +7,7 @@ from typing import Dict, List, Optional, Union
import ssl
import os
import aiohttp
from loguru import logger
from src.common.logger import get_module_logger
from nonebot import get_driver
from ..models.utils_model import LLM_request
@@ -24,6 +24,7 @@ config = driver.config
ssl_context = ssl.create_default_context()
ssl_context.set_ciphers("AES128-GCM-SHA256")
logger = get_module_logger("cq_code")
@dataclass
class CQCode:
@@ -249,6 +250,13 @@ class CQCode:
if self.reply_message is None:
return None
if hasattr(self.reply_message, "group_id"):
group_info = GroupInfo(
platform="qq", group_id=self.reply_message.group_id, group_name=""
)
else:
group_info = None
if self.reply_message.sender.user_id:
message_obj = MessageRecvCQ(
user_info=UserInfo(
@@ -256,7 +264,7 @@ class CQCode:
),
message_id=self.reply_message.message_id,
raw_message=str(self.reply_message.message),
group_info=GroupInfo(group_id=self.reply_message.group_id),
group_info=group_info,
)
await message_obj.initialize()

View File

@@ -9,7 +9,6 @@ from typing import Optional, Tuple
from PIL import Image
import io
from loguru import logger
from nonebot import get_driver
from ...common.database import db
@@ -17,12 +16,10 @@ from ..chat.config import global_config
from ..chat.utils import get_embedding
from ..chat.utils_image import ImageManager, image_path_to_base64
from ..models.utils_model import LLM_request
from src.common.logger import get_module_logger
from ..utils.logger_config import LogClassification, LogModule
logger = get_module_logger("emoji")
# 配置日志
log_module = LogModule()
logger = log_module.setup_logger(LogClassification.EMOJI)
driver = get_driver()
config = driver.config

View File

@@ -3,7 +3,6 @@ import time
from typing import List, Optional, Tuple, Union
from nonebot import get_driver
from loguru import logger
from ...common.database import db
from ..models.utils_model import LLM_request
@@ -12,6 +11,9 @@ from .message import MessageRecv, MessageThinking, Message
from .prompt_builder import prompt_builder
from .relationship_manager import relationship_manager
from .utils import process_llm_response
from src.common.logger import get_module_logger
logger = get_module_logger("response_gen")
driver = get_driver()
config = driver.config

View File

@@ -6,12 +6,14 @@ from dataclasses import dataclass
from typing import Dict, List, Optional
import urllib3
from loguru import logger
from .utils_image import image_manager
from .message_base import Seg, GroupInfo, UserInfo, BaseMessageInfo, MessageBase
from .chat_stream import ChatStream, chat_manager
from src.common.logger import get_module_logger
logger = get_module_logger("chat_message")
# 禁用SSL警告
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

View File

@@ -2,7 +2,7 @@ import asyncio
import time
from typing import Dict, List, Optional, Union
from loguru import logger
from src.common.logger import get_module_logger
from nonebot.adapters.onebot.v11 import Bot
from ...common.database import db
from .message_cq import MessageSendCQ
@@ -12,6 +12,7 @@ from .storage import MessageStorage
from .config import global_config
from .utils import truncate_message
logger = get_module_logger("msg_sender")
class Message_Sender:
"""发送器"""
@@ -50,7 +51,6 @@ class Message_Sender:
if not is_recalled:
message_json = message.to_dict()
message_send = MessageSendCQ(data=message_json)
# logger.debug(message_send.message_info,message_send.raw_message)
message_preview = truncate_message(message.processed_plain_text)
if message_send.message_info.group_info and message_send.message_info.group_info.group_id:
try:
@@ -188,16 +188,17 @@ class MessageManager:
else:
if (
message_earliest.is_head
and message_earliest.update_thinking_time() > 30
and message_earliest.update_thinking_time() > 10
and not message_earliest.is_private_message() # 避免在私聊时插入reply
):
message_earliest.set_reply()
await message_sender.send_message(message_earliest)
await message_earliest.process()
await message_sender.send_message(message_earliest)
print(
f"\033[1;34m[调试]\033[0m 消息“{truncate_message(message_earliest.processed_plain_text)}”正在发送中"
)
await self.storage.store_message(message_earliest, message_earliest.chat_stream, None)
@@ -217,11 +218,11 @@ class MessageManager:
and not message_earliest.is_private_message() # 避免在私聊时插入reply
):
msg.set_reply()
await msg.process()
await message_sender.send_message(msg)
# if msg.is_emoji:
# msg.processed_plain_text = "[表情包]"
await msg.process()
await self.storage.store_message(msg, msg.chat_stream, None)
if not container.remove_message(msg):

View File

@@ -9,12 +9,13 @@ from ..schedule.schedule_generator import bot_schedule
from .config import global_config
from .utils import get_embedding, get_recent_group_detailed_plain_text, get_recent_group_speaker
from .chat_stream import chat_manager
<<<<<<< HEAD
from .relationship_manager import relationship_manager
=======
from src.common.logger import get_module_logger
>>>>>>> main-fix
from ..utils.logger_config import LogClassification, LogModule
log_module = LogModule()
logger = log_module.setup_logger(LogClassification.PBUILDER)
logger = get_module_logger("prompt")
logger.info("初始化Prompt系统")

View File

@@ -1,12 +1,14 @@
import asyncio
from typing import Optional
from loguru import logger
from src.common.logger import get_module_logger
from ...common.database import db
from .message_base import UserInfo
from .chat_stream import ChatStream
import math
logger = get_module_logger("rel_manager")
class Impression:
traits: str = None
called: str = None

View File

@@ -3,7 +3,9 @@ from typing import Optional, Union
from ...common.database import db
from .message import MessageSending, MessageRecv
from .chat_stream import ChatStream
from loguru import logger
from src.common.logger import get_module_logger
logger = get_module_logger("message_storage")
class MessageStorage:

View File

@@ -4,7 +4,9 @@ from nonebot import get_driver
from ..models.utils_model import LLM_request
from .config import global_config
from loguru import logger
from src.common.logger import get_module_logger
logger = get_module_logger("topic_identifier")
driver = get_driver()
config = driver.config

View File

@@ -7,7 +7,7 @@ from typing import Dict, List
import jieba
import numpy as np
from nonebot import get_driver
from loguru import logger
from src.common.logger import get_module_logger
from ..models.utils_model import LLM_request
from ..utils.typo_generator import ChineseTypoGenerator
@@ -21,6 +21,8 @@ from ...common.database import db
driver = get_driver()
config = driver.config
logger = get_module_logger("chat_utils")
def db_message_to_str(message_dict: Dict) -> str:

View File

@@ -7,13 +7,16 @@ from typing import Optional, Union
from PIL import Image
import io
from loguru import logger
from nonebot import get_driver
from ...common.database import db
from ..chat.config import global_config
from ..models.utils_model import LLM_request
from src.common.logger import get_module_logger
logger = get_module_logger("chat_image")
driver = get_driver()
config = driver.config