From fcc8705fbe7bc0f7edb8238cfdfc79f611bad3e2 Mon Sep 17 00:00:00 2001 From: unknown <2916963017@qq.com> Date: Sat, 21 Mar 2026 22:46:07 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0=E7=9F=A5=E8=AF=86?= =?UTF-8?q?=E5=BA=93=E5=85=A8=E4=B8=BA=E7=A9=BA=E6=97=B6=E7=9A=84=E8=B7=B3?= =?UTF-8?q?=E8=BF=87=E6=A3=80=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- astrbot/core/astr_main_agent_resources.py | 21 +++++++++++++++++++++ astrbot/core/db/vec_db/faiss_impl/vec_db.py | 4 +++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/astrbot/core/astr_main_agent_resources.py b/astrbot/core/astr_main_agent_resources.py index d0ef33b815..971127d921 100644 --- a/astrbot/core/astr_main_agent_resources.py +++ b/astrbot/core/astr_main_agent_resources.py @@ -33,6 +33,7 @@ RunBrowserSkillTool, SyncSkillReleaseTool, ) +from astrbot.core.knowledge_base.kb_helper import KBHelper from astrbot.core.message.message_event_result import MessageChain from astrbot.core.platform.message_session import MessageSession from astrbot.core.star.context import Context @@ -396,6 +397,19 @@ async def call( return f"Message sent to session {target_session}" +def check_all_kb(kb_list: list[KBHelper]) -> bool: + """检查是否所有的知识库都为空 + Args: + kb_list: 所选的知识库 + Returns: + bool: 是否全为空 + """ + for kb in kb_list: + if kb is not None and (kb.kb.doc_count != 0 or kb.kb.chunk_count != 0): + return False + return True + + async def retrieve_knowledge_base( query: str, umo: str, @@ -454,6 +468,13 @@ async def retrieve_knowledge_base( if not kb_names: return + all_kbs = [] + for kb in kb_names: + all_kbs.append(await kb_mgr.get_kb_by_name(kb)) + if check_all_kb(all_kbs): + logger.debug("所配置的所有知识库全为空,跳过检索过程") + return + logger.debug(f"[知识库] 开始检索知识库,数量: {len(kb_names)}, top_k={top_k}") kb_context = await kb_mgr.retrieve( query=query, diff --git a/astrbot/core/db/vec_db/faiss_impl/vec_db.py b/astrbot/core/db/vec_db/faiss_impl/vec_db.py index f1b89768e9..bc729aac8c 100644 --- a/astrbot/core/db/vec_db/faiss_impl/vec_db.py +++ b/astrbot/core/db/vec_db/faiss_impl/vec_db.py @@ -75,7 +75,9 @@ async def insert_batch( ids = ids or [str(uuid.uuid4()) for _ in contents] if not contents: - logger.debug("No contents provided for batch insert; skipping embedding generation.") + logger.debug( + "No contents provided for batch insert; skipping embedding generation." + ) return [] start = time.time() From 7f0d1f1bbe2524ec406e4f27ea5b41355bcdcb66 Mon Sep 17 00:00:00 2001 From: unknown <2916963017@qq.com> Date: Sat, 21 Mar 2026 22:59:08 +0800 Subject: [PATCH 2/3] apply bot suggestions --- astrbot/core/astr_main_agent_resources.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/astrbot/core/astr_main_agent_resources.py b/astrbot/core/astr_main_agent_resources.py index 971127d921..4ad999fe8f 100644 --- a/astrbot/core/astr_main_agent_resources.py +++ b/astrbot/core/astr_main_agent_resources.py @@ -397,17 +397,14 @@ async def call( return f"Message sent to session {target_session}" -def check_all_kb(kb_list: list[KBHelper]) -> bool: +def check_all_kb(kb_list: list[KBHelper|None]) -> bool: """检查是否所有的知识库都为空 Args: kb_list: 所选的知识库 Returns: bool: 是否全为空 """ - for kb in kb_list: - if kb is not None and (kb.kb.doc_count != 0 or kb.kb.chunk_count != 0): - return False - return True + return not any(kb and (kb.kb.doc_count != 0 or kb.kb.chunk_count != 0) for kb in kb_list) async def retrieve_knowledge_base( @@ -468,9 +465,8 @@ async def retrieve_knowledge_base( if not kb_names: return - all_kbs = [] - for kb in kb_names: - all_kbs.append(await kb_mgr.get_kb_by_name(kb)) + all_kbs = [await kb_mgr.get_kb_by_name(kb) for kb in kb_names] + if check_all_kb(all_kbs): logger.debug("所配置的所有知识库全为空,跳过检索过程") return From dca3d997d5dcdda88de2bd9187b6cffbc47fee6e Mon Sep 17 00:00:00 2001 From: unknown <2916963017@qq.com> Date: Sat, 21 Mar 2026 23:00:35 +0800 Subject: [PATCH 3/3] style:reformat code --- astrbot/core/astr_main_agent_resources.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/astrbot/core/astr_main_agent_resources.py b/astrbot/core/astr_main_agent_resources.py index 4ad999fe8f..09e77b4cbe 100644 --- a/astrbot/core/astr_main_agent_resources.py +++ b/astrbot/core/astr_main_agent_resources.py @@ -397,14 +397,16 @@ async def call( return f"Message sent to session {target_session}" -def check_all_kb(kb_list: list[KBHelper|None]) -> bool: +def check_all_kb(kb_list: list[KBHelper | None]) -> bool: """检查是否所有的知识库都为空 Args: kb_list: 所选的知识库 Returns: bool: 是否全为空 """ - return not any(kb and (kb.kb.doc_count != 0 or kb.kb.chunk_count != 0) for kb in kb_list) + return not any( + kb and (kb.kb.doc_count != 0 or kb.kb.chunk_count != 0) for kb in kb_list + ) async def retrieve_knowledge_base(