""" 知识库加载器 — 支持按需加载单个知识库文件 """ from pathlib import Path def load_knowledge_base(kb_dir: Path) -> str: """ 加载指定目录下的所有 .md 文件内容,按文件名排序后拼接。 Args: kb_dir: 知识库目录路径 Returns: 所有 md 文件内容的拼接文本 """ if not kb_dir.exists(): return "" files = sorted(kb_dir.glob("*.md")) if not files: return "" parts = [] for f in files: parts.append(f"\n# {f.name}\n") parts.append(f.read_text(encoding="utf-8")) return "\n".join(parts) def load_knowledge_file(kb_dir: Path, filename: str) -> str: """ 按需加载单个知识库文件。 Args: kb_dir: 知识库目录路径 filename: 文件名(如 "01_课程底层逻辑与场景路由.md") Returns: 文件内容,文件不存在时返回空字符串 """ f = kb_dir / filename if not f.exists(): return "" return f.read_text(encoding="utf-8") def list_knowledge_files(kb_dir: Path) -> list[str]: """ 列出知识库目录下所有 .md 文件名。 Args: kb_dir: 知识库目录路径 Returns: 按文件名排序的列表 """ if not kb_dir.exists(): return [] return sorted([f.name for f in kb_dir.glob("*.md")])