log:简化启动时log

This commit is contained in:
SengokuCola
2026-05-06 16:06:21 +08:00
parent 98294b39ad
commit 3bdc2a9f70
20 changed files with 35 additions and 77 deletions

View File

@@ -60,10 +60,10 @@ class EmbeddingAPIAdapter:
self._total_time = 0.0
logger.info(
"EmbeddingAPIAdapter 初始化: "
f"batch_size={self.batch_size}, "
f"max_concurrent={self.max_concurrent}, "
f"configured_dim={self.default_dimension}, "
"Embedding 初始化: "
f"batch={self.batch_size}, "
f"concurrent={self.max_concurrent}, "
f"dim={self.default_dimension}, "
f"model={self.model_name}"
)
@@ -258,10 +258,10 @@ class EmbeddingAPIAdapter:
if cached_dimension is not None:
self._dimension = int(cached_dimension)
self._dimension_detected = True
logger.info(f"嵌入维度命中进程缓存: {self._dimension}")
logger.debug(f"嵌入维度命中进程缓存: {self._dimension}")
return self._dimension
logger.info("正在检测嵌入模型维度...")
logger.info("检测嵌入维度...")
try:
target_dim = self.default_dimension
logger.debug(f"尝试请求指定维度: {target_dim}")
@@ -269,7 +269,7 @@ class EmbeddingAPIAdapter:
if test_embedding and isinstance(test_embedding, list):
detected_dim = len(test_embedding)
if detected_dim == target_dim:
logger.info(f"嵌入维度检测成功 (匹配 configured/requested): {detected_dim}")
logger.info(f"嵌入维度: {detected_dim}")
else:
logger.warning(
f"requested_dimension={target_dim} 但模型返回 detected_dimension={detected_dim},将使用真实输出维度"
@@ -288,7 +288,7 @@ class EmbeddingAPIAdapter:
self._dimension = detected_dim
self._dimension_detected = True
self._GLOBAL_DIMENSION_CACHE[cache_key] = int(detected_dim)
logger.info(f"嵌入维度检测成功 (自然维度): {detected_dim}")
logger.info(f"嵌入维度: {detected_dim} (自然输出)")
return detected_dim
logger.warning(f"嵌入维度检测失败,使用 configured_dimension: {self.default_dimension}")
except Exception as exc:

View File

@@ -249,7 +249,7 @@ class DualPathRetriever:
config=self.config.graph_recall,
)
logger.info(
logger.debug(
f"DualPathRetriever 初始化: "
f"strategy={self.config.retrieval_strategy.value}, "
f"top_k_para={self.config.top_k_paragraphs}, "

View File

@@ -88,7 +88,7 @@ class PersonalizedPageRank:
self._total_iterations = 0
self._convergence_history: List[int] = []
logger.info(
logger.debug(
f"PersonalizedPageRank 初始化: "
f"alpha={self.config.alpha}, "
f"max_iter={self.config.max_iter}"

View File

@@ -122,7 +122,7 @@ class SparseBM25Index:
self._conn = conn
self._loaded = True
self._prepare_tokenizer()
logger.info(
logger.debug(
"SparseBM25Index loaded: "
f"backend=fts5, tokenizer={self.config.tokenizer_mode}, mode={self.config.mode}"
)

View File

@@ -99,7 +99,7 @@ class DynamicThresholdFilter:
self._total_processed = 0
self._threshold_history: List[float] = []
logger.info(
logger.debug(
f"DynamicThresholdFilter 初始化: "
f"method={self.config.method.value}, "
f"min_threshold={self.config.min_threshold}"

View File

@@ -161,7 +161,7 @@ async def initialize_storage_async(plugin: Any) -> None:
try:
detected_dimension = await plugin.embedding_manager._detect_dimension()
logger.info(f"嵌入维度检测成功: {detected_dimension}")
logger.info(f"嵌入维度: {detected_dimension}")
except Exception as e:
logger.warning(f"嵌入维度检测失败: {e},使用默认值")
detected_dimension = plugin.embedding_manager.default_dimension
@@ -194,11 +194,11 @@ async def initialize_storage_async(plugin: Any) -> None:
matrix_format=matrix_format,
data_dir=data_dir / "graph",
)
logger.info("图存储初始化完成")
logger.debug("图存储初始化完成")
plugin.metadata_store = MetadataStore(data_dir=data_dir / "metadata")
plugin.metadata_store.connect()
logger.info("元数据存储初始化完成")
logger.debug("元数据存储初始化完成")
plugin.relation_write_service = RelationWriteService(
metadata_store=plugin.metadata_store,
@@ -233,7 +233,7 @@ async def initialize_storage_async(plugin: Any) -> None:
if plugin.vector_store.has_data():
try:
plugin.vector_store.load()
logger.info(f"向量数据已加载,共 {plugin.vector_store.num_vectors} 个向量")
logger.debug(f"向量数据已加载,共 {plugin.vector_store.num_vectors} 个向量")
except Exception as e:
logger.warning(f"加载向量数据失败: {e}")
@@ -259,7 +259,7 @@ async def initialize_storage_async(plugin: Any) -> None:
if plugin.graph_store.has_data():
try:
plugin.graph_store.load()
logger.info(f"图数据已加载,共 {plugin.graph_store.num_nodes} 个节点")
logger.debug(f"图数据已加载,共 {plugin.graph_store.num_nodes} 个节点")
except Exception as e:
logger.warning(f"加载图数据失败: {e}")

View File

@@ -222,7 +222,7 @@ def build_search_runtime(
)
runtime.threshold_filter = DynamicThresholdFilter(threshold_config)
runtime.error = ""
log.info(f"{prefix_text}[{owner}] 检索运行时初始化完成")
log.info(f"{prefix_text}[{owner}] 检索运行时就绪")
except Exception as e:
runtime.retriever = None
runtime.threshold_filter = None

View File

@@ -119,7 +119,7 @@ class GraphStore:
# V5: 简单的异步锁 (实际上 asyncio 环境下单线程主循环可能不需要,但为了安全保留)
self._lock = asyncio.Lock()
logger.info(f"GraphStore 初始化: format={matrix_format}")
logger.debug(f"图存储初始化: format={matrix_format}")
def _canonicalize(self, node: str) -> str:
"""规范化节点名称 (用于去重和内部索引)"""
@@ -1317,8 +1317,8 @@ class GraphStore:
self._adjacency_dirty = True
logger.info(
f"图存储已加载: {len(self._nodes)} 个节点, "
f"{self._adjacency.nnz if self._adjacency is not None else 0} 条边"
f"图存储已加载: 节点={len(self._nodes)}, "
f"边={self._adjacency.nnz if self._adjacency is not None else 0}"
)
def _expand_adjacency_matrix(self, added_nodes: int) -> None:

View File

@@ -72,7 +72,7 @@ class MetadataStore:
self._is_initialized = False
self._db_path: Optional[Path] = None
logger.info(f"MetadataStore 初始化: db={db_name}")
logger.debug(f"元数据存储初始化: db={db_name}")
def connect(
self,
@@ -114,7 +114,7 @@ class MetadataStore:
self._conn.execute("PRAGMA temp_store=MEMORY")
self._conn.execute("PRAGMA foreign_keys = ON") # 开启外键约束支持级联删除
logger.info(f"连接到数据库: {db_path}")
logger.info(f"数据库已连接: {db_path}")
# 初始化或校验 schema
if not self._is_initialized:

View File

@@ -108,7 +108,7 @@ class VectorStore:
# Thread safety lock
self._lock = threading.RLock()
logger.info(f"VectorStore Init: dim={dimension}, SQ8 Mode, Append-Only Storage")
logger.info(f"向量存储初始化: dim={dimension}, mode=SQ8")
def _init_index(self):
"""初始化空的 Faiss 索引"""
@@ -379,7 +379,7 @@ class VectorStore:
预热状态摘要
"""
started = time.perf_counter()
logger.info(f"metric.vector_index_prewarm_started=1 force_train={bool(force_train)}")
logger.debug(f"metric.vector_index_prewarm_started=1 force_train={bool(force_train)}")
try:
with self._lock:
@@ -435,7 +435,7 @@ class VectorStore:
)
return summary
logger.info(
logger.debug(
"metric.vector_index_prewarm_success=1 "
f"metric.vector_index_prewarm_duration_ms={summary['duration_ms']:.2f} "
f"trained={summary['trained']} "

View File

@@ -57,7 +57,7 @@ MODEL_CONFIG_PATH: Path = (CONFIG_DIR / "model_config.toml").resolve().absolute(
LEGACY_ENV_PATH: Path = (PROJECT_ROOT / ".env").resolve().absolute()
A_MEMORIX_LEGACY_CONFIG_PATH: Path = (CONFIG_DIR / "a_memorix.toml").resolve().absolute()
MMC_VERSION: str = "1.0.0-pre.11"
CONFIG_VERSION: str = "8.10.7"
CONFIG_VERSION: str = "8.10.8"
MODEL_CONFIG_VERSION: str = "1.15.3"
logger = get_logger("config")

View File

@@ -392,11 +392,6 @@ def try_migrate_legacy_bot_config_dict(data: dict[str, Any]) -> MigrationResult:
migrated_any = True
reasons.append("visual.visual_style_removed")
memory = _as_dict(data.get("memory"))
if memory is not None and _migrate_target_item_list(memory, "global_memory_blacklist"):
migrated_any = True
reasons.append("memory.global_memory_blacklist")
keyword_reaction = _as_dict(data.get("keyword_reaction"))
if keyword_reaction is not None:
if _drop_empty_keyword_rules(keyword_reaction, "keyword_rules"):

View File

@@ -472,26 +472,6 @@ class MemoryConfig(ConfigBase):
__ui_parent__ = "a_memorix"
global_memory: bool = Field(
default=False,
json_schema_extra={
"x-widget": "switch",
"x-icon": "globe",
},
)
"""是否允许记忆检索在聊天记录中进行全局查询忽略当前chat_id仅对 search_chat_history 等工具生效)"""
global_memory_blacklist: list[TargetItem] = Field(
default_factory=lambda: [],
json_schema_extra={
"x-widget": "custom",
"x-icon": "shield-off",
},
)
"""_wrap_全局记忆黑名单当启用全局记忆时不将特定聊天流纳入检索"""
enable_memory_query_tool: bool = Field(
default=True,
json_schema_extra={