From 3a614506420f30186c55a3cab62ebadba0cae18e Mon Sep 17 00:00:00 2001 From: SengokuCola <1026294844@qq.com> Date: Wed, 12 Mar 2025 15:32:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E6=97=A0=E6=B3=95=E8=AF=BB=E5=8F=96=E8=AE=B0=E5=BF=86?= =?UTF-8?q?=E5=92=8C=E7=9F=A5=E8=AF=86=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=8C?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E5=9B=BE=E7=89=87=E4=BF=9D=E5=AD=98=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/chat/emoji_manager.py | 6 ++-- src/plugins/chat/utils.py | 8 ++--- src/plugins/memory_system/memory.py | 20 +++++------ .../memory_system/memory_manual_build.py | 30 ++++++++-------- src/plugins/memory_system/memory_test1.py | 34 +++++++++---------- src/plugins/zhishi/knowledge_library.py | 10 +++--- 6 files changed, 54 insertions(+), 54 deletions(-) diff --git a/src/plugins/chat/emoji_manager.py b/src/plugins/chat/emoji_manager.py index f15251077..9532db4f0 100644 --- a/src/plugins/chat/emoji_manager.py +++ b/src/plugins/chat/emoji_manager.py @@ -246,7 +246,7 @@ class EmojiManager: # 即使表情包已存在,也检查是否需要同步到images集合 description = existing_emoji.get('discription') # 检查是否在images集合中存在 - existing_image = image_manager.db.db.images.find_one({'hash': image_hash}) + existing_image = image_manager.db.images.find_one({'hash': image_hash}) if not existing_image: # 同步到images集合 image_doc = { @@ -256,7 +256,7 @@ class EmojiManager: 'description': description, 'timestamp': int(time.time()) } - image_manager.db.db.images.update_one( + image_manager.db.images.update_one( {'hash': image_hash}, {'$set': image_doc}, upsert=True @@ -318,7 +318,7 @@ class EmojiManager: 'description': description, 'timestamp': int(time.time()) } - image_manager.db.db.images.update_one( + image_manager.db.images.update_one( {'hash': image_hash}, {'$set': image_doc}, upsert=True diff --git a/src/plugins/chat/utils.py b/src/plugins/chat/utils.py index cf3e59f73..0d1afd055 100644 --- a/src/plugins/chat/utils.py +++ b/src/plugins/chat/utils.py @@ -88,13 +88,13 @@ def get_cloest_chat_from_db(db, length: int, timestamp: str): list: 消息记录列表,每个记录包含时间和文本信息 """ chat_records = [] - closest_record = db.db.messages.find_one({"time": {"$lte": timestamp}}, sort=[('time', -1)]) + closest_record = db.messages.find_one({"time": {"$lte": timestamp}}, sort=[('time', -1)]) if closest_record: closest_time = closest_record['time'] chat_id = closest_record['chat_id'] # 获取chat_id # 获取该时间戳之后的length条消息,保持相同的chat_id - chat_records = list(db.db.messages.find( + chat_records = list(db.messages.find( { "time": {"$gt": closest_time}, "chat_id": chat_id # 添加chat_id过滤 @@ -128,7 +128,7 @@ async def get_recent_group_messages(db, chat_id:str, limit: int = 12) -> list: """ # 从数据库获取最近消息 - recent_messages = list(db.db.messages.find( + recent_messages = list(db.messages.find( {"chat_id": chat_id}, ).sort("time", -1).limit(limit)) @@ -162,7 +162,7 @@ async def get_recent_group_messages(db, chat_id:str, limit: int = 12) -> list: def get_recent_group_detailed_plain_text(db, chat_stream_id: int, limit: int = 12, combine=False): - recent_messages = list(db.db.messages.find( + recent_messages = list(db.messages.find( {"chat_id": chat_stream_id}, { "time": 1, # 返回时间字段 diff --git a/src/plugins/memory_system/memory.py b/src/plugins/memory_system/memory.py index 48fc19261..d9e867e63 100644 --- a/src/plugins/memory_system/memory.py +++ b/src/plugins/memory_system/memory.py @@ -349,7 +349,7 @@ class Hippocampus: def sync_memory_to_db(self): """检查并同步内存中的图结构与数据库""" # 获取数据库中所有节点和内存中所有节点 - db_nodes = list(self.memory_graph.db.db.graph_data.nodes.find()) + db_nodes = list(self.memory_graph.db.graph_data.nodes.find()) memory_nodes = list(self.memory_graph.G.nodes(data=True)) # 转换数据库节点为字典格式,方便查找 @@ -377,7 +377,7 @@ class Hippocampus: 'created_time': created_time, 'last_modified': last_modified } - self.memory_graph.db.db.graph_data.nodes.insert_one(node_data) + self.memory_graph.db.graph_data.nodes.insert_one(node_data) else: # 获取数据库中节点的特征值 db_node = db_nodes_dict[concept] @@ -385,7 +385,7 @@ class Hippocampus: # 如果特征值不同,则更新节点 if db_hash != memory_hash: - self.memory_graph.db.db.graph_data.nodes.update_one( + self.memory_graph.db.graph_data.nodes.update_one( {'concept': concept}, {'$set': { 'memory_items': memory_items, @@ -396,7 +396,7 @@ class Hippocampus: ) # 处理边的信息 - db_edges = list(self.memory_graph.db.db.graph_data.edges.find()) + db_edges = list(self.memory_graph.db.graph_data.edges.find()) memory_edges = list(self.memory_graph.G.edges(data=True)) # 创建边的哈希值字典 @@ -428,11 +428,11 @@ class Hippocampus: 'created_time': created_time, 'last_modified': last_modified } - self.memory_graph.db.db.graph_data.edges.insert_one(edge_data) + self.memory_graph.db.graph_data.edges.insert_one(edge_data) else: # 检查边的特征值是否变化 if db_edge_dict[edge_key]['hash'] != edge_hash: - self.memory_graph.db.db.graph_data.edges.update_one( + self.memory_graph.db.graph_data.edges.update_one( {'source': source, 'target': target}, {'$set': { 'hash': edge_hash, @@ -451,7 +451,7 @@ class Hippocampus: self.memory_graph.G.clear() # 从数据库加载所有节点 - nodes = list(self.memory_graph.db.db.graph_data.nodes.find()) + nodes = list(self.memory_graph.db.graph_data.nodes.find()) for node in nodes: concept = node['concept'] memory_items = node.get('memory_items', []) @@ -468,7 +468,7 @@ class Hippocampus: if 'last_modified' not in node: update_data['last_modified'] = current_time - self.memory_graph.db.db.graph_data.nodes.update_one( + self.memory_graph.db.graph_data.nodes.update_one( {'concept': concept}, {'$set': update_data} ) @@ -485,7 +485,7 @@ class Hippocampus: last_modified=last_modified) # 从数据库加载所有边 - edges = list(self.memory_graph.db.db.graph_data.edges.find()) + edges = list(self.memory_graph.db.graph_data.edges.find()) for edge in edges: source = edge['source'] target = edge['target'] @@ -501,7 +501,7 @@ class Hippocampus: if 'last_modified' not in edge: update_data['last_modified'] = current_time - self.memory_graph.db.db.graph_data.edges.update_one( + self.memory_graph.db.graph_data.edges.update_one( {'source': source, 'target': target}, {'$set': update_data} ) diff --git a/src/plugins/memory_system/memory_manual_build.py b/src/plugins/memory_system/memory_manual_build.py index 736a50e97..adf972a06 100644 --- a/src/plugins/memory_system/memory_manual_build.py +++ b/src/plugins/memory_system/memory_manual_build.py @@ -56,13 +56,13 @@ def get_cloest_chat_from_db(db, length: int, timestamp: str): list: 消息记录字典列表,每个字典包含消息内容和时间信息 """ chat_records = [] - closest_record = db.db.messages.find_one({"time": {"$lte": timestamp}}, sort=[('time', -1)]) + closest_record = db.messages.find_one({"time": {"$lte": timestamp}}, sort=[('time', -1)]) if closest_record and closest_record.get('memorized', 0) < 4: closest_time = closest_record['time'] group_id = closest_record['group_id'] # 获取该时间戳之后的length条消息,且groupid相同 - records = list(db.db.messages.find( + records = list(db.messages.find( {"time": {"$gt": closest_time}, "group_id": group_id} ).sort('time', 1).limit(length)) @@ -74,7 +74,7 @@ def get_cloest_chat_from_db(db, length: int, timestamp: str): return '' # 更新memorized值 - db.db.messages.update_one( + db.messages.update_one( {"_id": record["_id"]}, {"$set": {"memorized": current_memorized + 1}} ) @@ -323,7 +323,7 @@ class Hippocampus: self.memory_graph.G.clear() # 从数据库加载所有节点 - nodes = self.memory_graph.db.db.graph_data.nodes.find() + nodes = self.memory_graph.db.graph_data.nodes.find() for node in nodes: concept = node['concept'] memory_items = node.get('memory_items', []) @@ -334,7 +334,7 @@ class Hippocampus: self.memory_graph.G.add_node(concept, memory_items=memory_items) # 从数据库加载所有边 - edges = self.memory_graph.db.db.graph_data.edges.find() + edges = self.memory_graph.db.graph_data.edges.find() for edge in edges: source = edge['source'] target = edge['target'] @@ -371,7 +371,7 @@ class Hippocampus: 使用特征值(哈希值)快速判断是否需要更新 """ # 获取数据库中所有节点和内存中所有节点 - db_nodes = list(self.memory_graph.db.db.graph_data.nodes.find()) + db_nodes = list(self.memory_graph.db.graph_data.nodes.find()) memory_nodes = list(self.memory_graph.G.nodes(data=True)) # 转换数据库节点为字典格式,方便查找 @@ -394,7 +394,7 @@ class Hippocampus: 'memory_items': memory_items, 'hash': memory_hash } - self.memory_graph.db.db.graph_data.nodes.insert_one(node_data) + self.memory_graph.db.graph_data.nodes.insert_one(node_data) else: # 获取数据库中节点的特征值 db_node = db_nodes_dict[concept] @@ -403,7 +403,7 @@ class Hippocampus: # 如果特征值不同,则更新节点 if db_hash != memory_hash: # logger.info(f"更新节点内容: {concept}") - self.memory_graph.db.db.graph_data.nodes.update_one( + self.memory_graph.db.graph_data.nodes.update_one( {'concept': concept}, {'$set': { 'memory_items': memory_items, @@ -416,10 +416,10 @@ class Hippocampus: for db_node in db_nodes: if db_node['concept'] not in memory_concepts: # logger.info(f"删除多余节点: {db_node['concept']}") - self.memory_graph.db.db.graph_data.nodes.delete_one({'concept': db_node['concept']}) + self.memory_graph.db.graph_data.nodes.delete_one({'concept': db_node['concept']}) # 处理边的信息 - db_edges = list(self.memory_graph.db.db.graph_data.edges.find()) + db_edges = list(self.memory_graph.db.graph_data.edges.find()) memory_edges = list(self.memory_graph.G.edges()) # 创建边的哈希值字典 @@ -445,12 +445,12 @@ class Hippocampus: 'num': 1, 'hash': edge_hash } - self.memory_graph.db.db.graph_data.edges.insert_one(edge_data) + self.memory_graph.db.graph_data.edges.insert_one(edge_data) else: # 检查边的特征值是否变化 if db_edge_dict[edge_key]['hash'] != edge_hash: logger.info(f"更新边: {source} - {target}") - self.memory_graph.db.db.graph_data.edges.update_one( + self.memory_graph.db.graph_data.edges.update_one( {'source': source, 'target': target}, {'$set': {'hash': edge_hash}} ) @@ -461,7 +461,7 @@ class Hippocampus: if edge_key not in memory_edge_set: source, target = edge_key logger.info(f"删除多余边: {source} - {target}") - self.memory_graph.db.db.graph_data.edges.delete_one({ + self.memory_graph.db.graph_data.edges.delete_one({ 'source': source, 'target': target }) @@ -487,9 +487,9 @@ class Hippocampus: topic: 要删除的节点概念 """ # 删除节点 - self.memory_graph.db.db.graph_data.nodes.delete_one({'concept': topic}) + self.memory_graph.db.graph_data.nodes.delete_one({'concept': topic}) # 删除所有涉及该节点的边 - self.memory_graph.db.db.graph_data.edges.delete_many({ + self.memory_graph.db.graph_data.edges.delete_many({ '$or': [ {'source': topic}, {'target': topic} diff --git a/src/plugins/memory_system/memory_test1.py b/src/plugins/memory_system/memory_test1.py index 72accc2b3..f86c8ea3d 100644 --- a/src/plugins/memory_system/memory_test1.py +++ b/src/plugins/memory_system/memory_test1.py @@ -115,13 +115,13 @@ def get_cloest_chat_from_db(db, length: int, timestamp: str): list: 消息记录字典列表,每个字典包含消息内容和时间信息 """ chat_records = [] - closest_record = db.db.messages.find_one({"time": {"$lte": timestamp}}, sort=[('time', -1)]) + closest_record = db.messages.find_one({"time": {"$lte": timestamp}}, sort=[('time', -1)]) if closest_record and closest_record.get('memorized', 0) < 4: closest_time = closest_record['time'] group_id = closest_record['group_id'] # 获取该时间戳之后的length条消息,且groupid相同 - records = list(db.db.messages.find( + records = list(db.messages.find( {"time": {"$gt": closest_time}, "group_id": group_id} ).sort('time', 1).limit(length)) @@ -133,7 +133,7 @@ def get_cloest_chat_from_db(db, length: int, timestamp: str): return '' # 更新memorized值 - db.db.messages.update_one( + db.messages.update_one( {"_id": record["_id"]}, {"$set": {"memorized": current_memorized + 1}} ) @@ -163,7 +163,7 @@ class Memory_cortex: default_time = datetime.datetime.now().timestamp() # 从数据库加载所有节点 - nodes = self.memory_graph.db.db.graph_data.nodes.find() + nodes = self.memory_graph.db.graph_data.nodes.find() for node in nodes: concept = node['concept'] memory_items = node.get('memory_items', []) @@ -180,7 +180,7 @@ class Memory_cortex: created_time = default_time last_modified = default_time # 更新数据库中的节点 - self.memory_graph.db.db.graph_data.nodes.update_one( + self.memory_graph.db.graph_data.nodes.update_one( {'concept': concept}, {'$set': { 'created_time': created_time, @@ -196,7 +196,7 @@ class Memory_cortex: last_modified=last_modified) # 从数据库加载所有边 - edges = self.memory_graph.db.db.graph_data.edges.find() + edges = self.memory_graph.db.graph_data.edges.find() for edge in edges: source = edge['source'] target = edge['target'] @@ -212,7 +212,7 @@ class Memory_cortex: created_time = default_time last_modified = default_time # 更新数据库中的边 - self.memory_graph.db.db.graph_data.edges.update_one( + self.memory_graph.db.graph_data.edges.update_one( {'source': source, 'target': target}, {'$set': { 'created_time': created_time, @@ -256,7 +256,7 @@ class Memory_cortex: current_time = datetime.datetime.now().timestamp() # 获取数据库中所有节点和内存中所有节点 - db_nodes = list(self.memory_graph.db.db.graph_data.nodes.find()) + db_nodes = list(self.memory_graph.db.graph_data.nodes.find()) memory_nodes = list(self.memory_graph.G.nodes(data=True)) # 转换数据库节点为字典格式,方便查找 @@ -280,7 +280,7 @@ class Memory_cortex: 'created_time': data.get('created_time', current_time), 'last_modified': data.get('last_modified', current_time) } - self.memory_graph.db.db.graph_data.nodes.insert_one(node_data) + self.memory_graph.db.graph_data.nodes.insert_one(node_data) else: # 获取数据库中节点的特征值 db_node = db_nodes_dict[concept] @@ -288,7 +288,7 @@ class Memory_cortex: # 如果特征值不同,则更新节点 if db_hash != memory_hash: - self.memory_graph.db.db.graph_data.nodes.update_one( + self.memory_graph.db.graph_data.nodes.update_one( {'concept': concept}, {'$set': { 'memory_items': memory_items, @@ -301,10 +301,10 @@ class Memory_cortex: memory_concepts = set(node[0] for node in memory_nodes) for db_node in db_nodes: if db_node['concept'] not in memory_concepts: - self.memory_graph.db.db.graph_data.nodes.delete_one({'concept': db_node['concept']}) + self.memory_graph.db.graph_data.nodes.delete_one({'concept': db_node['concept']}) # 处理边的信息 - db_edges = list(self.memory_graph.db.db.graph_data.edges.find()) + db_edges = list(self.memory_graph.db.graph_data.edges.find()) memory_edges = list(self.memory_graph.G.edges(data=True)) # 创建边的哈希值字典 @@ -332,11 +332,11 @@ class Memory_cortex: 'created_time': data.get('created_time', current_time), 'last_modified': data.get('last_modified', current_time) } - self.memory_graph.db.db.graph_data.edges.insert_one(edge_data) + self.memory_graph.db.graph_data.edges.insert_one(edge_data) else: # 检查边的特征值是否变化 if db_edge_dict[edge_key]['hash'] != edge_hash: - self.memory_graph.db.db.graph_data.edges.update_one( + self.memory_graph.db.graph_data.edges.update_one( {'source': source, 'target': target}, {'$set': { 'hash': edge_hash, @@ -350,7 +350,7 @@ class Memory_cortex: for edge_key in db_edge_dict: if edge_key not in memory_edge_set: source, target = edge_key - self.memory_graph.db.db.graph_data.edges.delete_one({ + self.memory_graph.db.graph_data.edges.delete_one({ 'source': source, 'target': target }) @@ -365,9 +365,9 @@ class Memory_cortex: topic: 要删除的节点概念 """ # 删除节点 - self.memory_graph.db.db.graph_data.nodes.delete_one({'concept': topic}) + self.memory_graph.db.graph_data.nodes.delete_one({'concept': topic}) # 删除所有涉及该节点的边 - self.memory_graph.db.db.graph_data.edges.delete_many({ + self.memory_graph.db.graph_data.edges.delete_many({ '$or': [ {'source': topic}, {'target': topic} diff --git a/src/plugins/zhishi/knowledge_library.py b/src/plugins/zhishi/knowledge_library.py index 2411e3112..ad309814b 100644 --- a/src/plugins/zhishi/knowledge_library.py +++ b/src/plugins/zhishi/knowledge_library.py @@ -176,7 +176,7 @@ class KnowledgeLibrary: try: current_hash = self.calculate_file_hash(file_path) - processed_record = self.db.db.processed_files.find_one({"file_path": file_path}) + processed_record = self.db.processed_files.find_one({"file_path": file_path}) if processed_record: if processed_record.get("hash") == current_hash: @@ -197,14 +197,14 @@ class KnowledgeLibrary: "split_length": knowledge_length, "created_at": datetime.now() } - self.db.db.knowledges.insert_one(knowledge) + self.db.knowledges.insert_one(knowledge) result["chunks_processed"] += 1 split_by = processed_record.get("split_by", []) if processed_record else [] if knowledge_length not in split_by: split_by.append(knowledge_length) - self.db.db.processed_files.update_one( + self.db.knowledges.processed_files.update_one( {"file_path": file_path}, { "$set": { @@ -322,7 +322,7 @@ class KnowledgeLibrary: {"$project": {"content": 1, "similarity": 1, "file_path": 1}} ] - results = list(self.db.db.knowledges.aggregate(pipeline)) + results = list(self.db.knowledges.aggregate(pipeline)) return results # 创建单例实例 @@ -346,7 +346,7 @@ if __name__ == "__main__": elif choice == '2': confirm = input("确定要删除所有知识吗?这个操作不可撤销!(y/n): ").strip().lower() if confirm == 'y': - knowledge_library.db.db.knowledges.delete_many({}) + knowledge_library.db.knowledges.delete_many({}) console.print("[green]已清空所有知识![/green]") continue elif choice == '1':