fix:解耦海马体,莲藕促销
This commit is contained in:
@@ -14,7 +14,8 @@ from .emoji_manager import emoji_manager
|
||||
from .relationship_manager import relationship_manager
|
||||
from ..willing.willing_manager import willing_manager
|
||||
from .chat_stream import chat_manager
|
||||
from ..memory_system.memory import hippocampus
|
||||
# from ..memory_system.memory import hippocampus
|
||||
from src.plugins.memory_system.Hippocampus import HippocampusManager
|
||||
from .message_sender import message_manager, message_sender
|
||||
from .storage import MessageStorage
|
||||
from src.common.logger import get_module_logger
|
||||
@@ -59,6 +60,22 @@ async def start_think_flow():
|
||||
logger.error(f"启动大脑和外部世界失败: {e}")
|
||||
raise
|
||||
|
||||
async def start_memory():
|
||||
"""启动记忆系统"""
|
||||
try:
|
||||
start_time = time.time()
|
||||
logger.info("开始初始化记忆系统...")
|
||||
|
||||
# 使用HippocampusManager初始化海马体
|
||||
hippocampus_manager = HippocampusManager.get_instance()
|
||||
hippocampus_manager.initialize(global_config=global_config)
|
||||
|
||||
end_time = time.time()
|
||||
logger.success(f"记忆系统初始化完成,耗时: {end_time - start_time:.2f} 秒")
|
||||
except Exception as e:
|
||||
logger.error(f"记忆系统初始化失败: {e}")
|
||||
raise
|
||||
|
||||
|
||||
@driver.on_startup
|
||||
async def start_background_tasks():
|
||||
@@ -79,6 +96,8 @@ async def start_background_tasks():
|
||||
|
||||
# 只启动表情包管理任务
|
||||
asyncio.create_task(emoji_manager.start_periodic_check())
|
||||
|
||||
asyncio.create_task(start_memory())
|
||||
|
||||
|
||||
@driver.on_startup
|
||||
@@ -139,14 +158,14 @@ async def _(bot: Bot, event: NoticeEvent, state: T_State):
|
||||
@scheduler.scheduled_job("interval", seconds=global_config.build_memory_interval, id="build_memory")
|
||||
async def build_memory_task():
|
||||
"""每build_memory_interval秒执行一次记忆构建"""
|
||||
await hippocampus.operation_build_memory()
|
||||
await HippocampusManager.get_instance().build_memory()
|
||||
|
||||
|
||||
@scheduler.scheduled_job("interval", seconds=global_config.forget_memory_interval, id="forget_memory")
|
||||
async def forget_memory_task():
|
||||
"""每30秒执行一次记忆构建"""
|
||||
print("\033[1;32m[记忆遗忘]\033[0m 开始遗忘记忆...")
|
||||
await hippocampus.operation_forget_topic(percentage=global_config.memory_forget_percentage)
|
||||
await HippocampusManager.get_instance().forget_memory(percentage=global_config.memory_forget_percentage)
|
||||
print("\033[1;32m[记忆遗忘]\033[0m 记忆遗忘完成")
|
||||
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ from nonebot.adapters.onebot.v11 import (
|
||||
FriendRecallNoticeEvent,
|
||||
)
|
||||
|
||||
from ..memory_system.memory import hippocampus
|
||||
from ..memory_system.Hippocampus import HippocampusManager
|
||||
from ..moods.moods import MoodManager # 导入情绪管理器
|
||||
from .config import global_config
|
||||
from .emoji_manager import emoji_manager # 导入表情包管理器
|
||||
@@ -129,7 +129,8 @@ class ChatBot:
|
||||
|
||||
# 根据话题计算激活度
|
||||
topic = ""
|
||||
interested_rate = await hippocampus.memory_activate_value(message.processed_plain_text) / 100
|
||||
# interested_rate = await HippocampusManager.get_instance().memory_activate_value(message.processed_plain_text) / 100
|
||||
interested_rate = 0.1
|
||||
logger.debug(f"对{message.processed_plain_text}的激活度:{interested_rate}")
|
||||
# logger.info(f"\033[1;32m[主题识别]\033[0m 使用{global_config.topic_extract}主题: {topic}")
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import time
|
||||
from typing import Optional
|
||||
|
||||
from ...common.database import db
|
||||
from ..memory_system.memory import hippocampus, memory_graph
|
||||
from ..memory_system.Hippocampus import HippocampusManager
|
||||
from ..moods.moods import MoodManager
|
||||
from ..schedule.schedule_generator import bot_schedule
|
||||
from .config import global_config
|
||||
@@ -79,19 +79,20 @@ class PromptBuilder:
|
||||
start_time = time.time()
|
||||
|
||||
# 调用 hippocampus 的 get_relevant_memories 方法
|
||||
relevant_memories = await hippocampus.get_relevant_memories(
|
||||
text=message_txt, max_topics=3, similarity_threshold=0.5, max_memory_num=4
|
||||
relevant_memories = await HippocampusManager.get_instance().get_memory_from_text(
|
||||
text=message_txt, num=3, max_depth=2, fast_retrieval=True
|
||||
)
|
||||
memory_str = "\n".join(memory for topic, memories, _ in relevant_memories for memory in memories)
|
||||
print(f"memory_str: {memory_str}")
|
||||
|
||||
if relevant_memories:
|
||||
# 格式化记忆内容
|
||||
memory_str = "\n".join(m["content"] for m in relevant_memories)
|
||||
memory_prompt = f"你回忆起:\n{memory_str}\n"
|
||||
|
||||
# 打印调试信息
|
||||
logger.debug("[记忆检索]找到以下相关记忆:")
|
||||
for memory in relevant_memories:
|
||||
logger.debug(f"- 主题「{memory['topic']}」[相似度: {memory['similarity']:.2f}]: {memory['content']}")
|
||||
# for topic, memory_items, similarity in relevant_memories:
|
||||
# logger.debug(f"- 主题「{topic}」[相似度: {similarity:.2f}]: {memory_items}")
|
||||
|
||||
end_time = time.time()
|
||||
logger.info(f"回忆耗时: {(end_time - start_time):.3f}秒")
|
||||
@@ -192,7 +193,7 @@ class PromptBuilder:
|
||||
# print(f"\033[1;34m[调试]\033[0m 已从数据库获取群 {group_id} 的消息记录:{chat_talking_prompt}")
|
||||
|
||||
# 获取主动发言的话题
|
||||
all_nodes = memory_graph.dots
|
||||
all_nodes = HippocampusManager.get_instance().memory_graph.dots
|
||||
all_nodes = filter(lambda dot: len(dot[1]["memory_items"]) > 3, all_nodes)
|
||||
nodes_for_select = random.sample(all_nodes, 5)
|
||||
topics = [info[0] for info in nodes_for_select]
|
||||
@@ -245,7 +246,7 @@ class PromptBuilder:
|
||||
related_info = ""
|
||||
logger.debug(f"获取知识库内容,元消息:{message[:30]}...,消息长度: {len(message)}")
|
||||
embedding = await get_embedding(message, request_type="prompt_build")
|
||||
related_info += self.get_info_from_db(embedding, threshold=threshold)
|
||||
related_info += self.get_info_from_db(embedding, limit=1, threshold=threshold)
|
||||
|
||||
return related_info
|
||||
|
||||
|
||||
Reference in New Issue
Block a user