diff --git a/src/plugins/PFC/action_planner.py b/src/plugins/PFC/action_planner.py index 14c25454f..238382a31 100644 --- a/src/plugins/PFC/action_planner.py +++ b/src/plugins/PFC/action_planner.py @@ -86,7 +86,7 @@ block_and_ignore: 更加极端的结束对话方式,直接结束对话并在 class ActionPlanner: """行动规划器""" - def __init__(self, stream_id: str): + def __init__(self, stream_id: str, private_name: str): self.llm = LLMRequest( model=global_config.llm_PFC_action_planner, temperature=global_config.llm_PFC_action_planner["temp"], @@ -96,6 +96,7 @@ class ActionPlanner: self.personality_info = Individuality.get_instance().get_prompt(type="personality", x_person=2, level=3) self.identity_detail_info = Individuality.get_instance().get_prompt(type="identity", x_person=2, level=2) self.name = global_config.BOT_NICKNAME + self.private_name = private_name self.chat_observer = ChatObserver.get_instance(stream_id) # self.action_planner_info = ActionPlannerInfo() # 移除未使用的变量 diff --git a/src/plugins/PFC/conversation.py b/src/plugins/PFC/conversation.py index b06cc6caa..1cd7a6ee8 100644 --- a/src/plugins/PFC/conversation.py +++ b/src/plugins/PFC/conversation.py @@ -29,13 +29,14 @@ logger = get_logger("pfc") class Conversation: """对话类,负责管理单个对话的状态和行为""" - def __init__(self, stream_id: str): + def __init__(self, stream_id: str, private_name: str): """初始化对话实例 Args: stream_id: 聊天流ID """ self.stream_id = stream_id + self.private_name = private_name self.state = ConversationState.INIT self.should_continue = False self.ignore_until_timestamp: Optional[float] = None @@ -47,11 +48,11 @@ class Conversation: """初始化实例,注册所有组件""" try: - self.action_planner = ActionPlanner(self.stream_id) - self.goal_analyzer = GoalAnalyzer(self.stream_id) - self.reply_generator = ReplyGenerator(self.stream_id) + self.action_planner = ActionPlanner(self.stream_id, self.private_name) + self.goal_analyzer = GoalAnalyzer(self.stream_id, self.private_name) + self.reply_generator = ReplyGenerator(self.stream_id, self.private_name) self.knowledge_fetcher = KnowledgeFetcher() - self.waiter = Waiter(self.stream_id) + self.waiter = Waiter(self.stream_id, self.private_name) self.direct_sender = DirectMessageSender() # 获取聊天流信息 diff --git a/src/plugins/PFC/pfc.py b/src/plugins/PFC/pfc.py index af7335d42..7cb609e78 100644 --- a/src/plugins/PFC/pfc.py +++ b/src/plugins/PFC/pfc.py @@ -30,7 +30,7 @@ logger = get_module_logger("pfc") class GoalAnalyzer: """对话目标分析器""" - def __init__(self, stream_id: str): + def __init__(self, stream_id: str, private_name: str): self.llm = LLMRequest( model=global_config.llm_normal, temperature=0.7, max_tokens=1000, request_type="conversation_goal" ) @@ -39,6 +39,7 @@ class GoalAnalyzer: self.identity_detail_info = Individuality.get_instance().get_prompt(type="identity", x_person=2, level=2) self.name = global_config.BOT_NICKNAME self.nick_name = global_config.BOT_ALIAS_NAMES + self.private_name = private_name self.chat_observer = ChatObserver.get_instance(stream_id) # 多目标存储结构 diff --git a/src/plugins/PFC/pfc_manager.py b/src/plugins/PFC/pfc_manager.py index 9aae33f24..6a0c00708 100644 --- a/src/plugins/PFC/pfc_manager.py +++ b/src/plugins/PFC/pfc_manager.py @@ -28,7 +28,7 @@ class PFCManager: cls._instance = PFCManager() return cls._instance - async def get_or_create_conversation(self, stream_id: str) -> Optional[Conversation]: + async def get_or_create_conversation(self, stream_id: str, private_name: str) -> Optional[Conversation]: """获取或创建对话实例 Args: @@ -67,7 +67,7 @@ class PFCManager: logger.info(f"创建新的对话实例: {stream_id}") self._initializing[stream_id] = True # 创建实例 - conversation_instance = Conversation(stream_id) + conversation_instance = Conversation(stream_id, private_name) self._instances[stream_id] = conversation_instance # 启动实例初始化 diff --git a/src/plugins/PFC/reply_generator.py b/src/plugins/PFC/reply_generator.py index ade3db102..a86051cf2 100644 --- a/src/plugins/PFC/reply_generator.py +++ b/src/plugins/PFC/reply_generator.py @@ -61,7 +61,7 @@ PROMPT_SEND_NEW_MESSAGE = """{persona_text}。现在你在参与一场QQ私聊 class ReplyGenerator: """回复生成器""" - def __init__(self, stream_id: str): + def __init__(self, stream_id: str, private_name: str): self.llm = LLMRequest( model=global_config.llm_PFC_chat, temperature=global_config.llm_PFC_chat["temp"], @@ -71,6 +71,7 @@ class ReplyGenerator: self.personality_info = Individuality.get_instance().get_prompt(type="personality", x_person=2, level=3) self.identity_detail_info = Individuality.get_instance().get_prompt(type="identity", x_person=2, level=2) self.name = global_config.BOT_NICKNAME + self.private_name = private_name self.chat_observer = ChatObserver.get_instance(stream_id) self.reply_checker = ReplyChecker(stream_id) diff --git a/src/plugins/PFC/waiter.py b/src/plugins/PFC/waiter.py index c12a1e8b0..5d8fdecfd 100644 --- a/src/plugins/PFC/waiter.py +++ b/src/plugins/PFC/waiter.py @@ -17,9 +17,10 @@ DESIRED_TIMEOUT_SECONDS = 300 class Waiter: """等待处理类""" - def __init__(self, stream_id: str): + def __init__(self, stream_id: str, private_name: str): self.chat_observer = ChatObserver.get_instance(stream_id) self.name = global_config.BOT_NICKNAME + self.private_name = private_name # self.wait_accumulated_time = 0 # 不再需要累加计时 async def wait(self, conversation_info: ConversationInfo) -> bool: diff --git a/src/plugins/chat/bot.py b/src/plugins/chat/bot.py index 0ad657f7c..ae63d1213 100644 --- a/src/plugins/chat/bot.py +++ b/src/plugins/chat/bot.py @@ -38,9 +38,10 @@ class ChatBot: async def _create_pfc_chat(self, message: MessageRecv): try: chat_id = str(message.chat_stream.stream_id) + private_name = str(message.message_info.user_info.user_nickname) if global_config.enable_pfc_chatting: - await self.pfc_manager.get_or_create_conversation(chat_id) + await self.pfc_manager.get_or_create_conversation(chat_id, private_name) except Exception as e: logger.error(f"创建PFC聊天失败: {e}")