修复: 知识工具检索接分词与晋升补嵌入

knowledge_search 整句 LIKE 改分词检索,自然语言查询可命中
晋升(手动/复用达标)后补 spawn 嵌入,进入向量检索面
本地截断改调 audit truncate_chars
配置加载下沉 load_knowledge_config 供工具路径共用
This commit is contained in:
lxy
2026-10-01 08:27:48 +08:00
parent cfccba863c
commit 7c62d8dbe7
4 changed files with 76 additions and 36 deletions
+23
View File
@@ -1,5 +1,10 @@
use std::sync::Arc;
use serde::{Deserialize, Serialize};
use df_storage::crud::SettingsRepo;
use df_storage::db::Database;
// ============================================================
// 知识库配置(提取 + 注入)
// ============================================================
@@ -80,6 +85,24 @@ fn default_auto_publish_reuse_threshold() -> i64 {
5
}
/// 从 Settings KV 加载知识库配置,缺 KV/读失败/反序列化失败一律回退 default(不阻断调用方)。
///
/// AppState::reload_knowledge_config(启动恢复)与只持 db 的调用方(AI 工具 handler 无
/// AppState 上下文)共用,保证两条路径同一真相源、同一降级语义。
pub async fn load_knowledge_config(db: &Arc<Database>) -> KnowledgeConfig {
match SettingsRepo::new(db).get(KNOWLEDGE_CONFIG_KEY).await {
Ok(Some(json)) => serde_json::from_str::<KnowledgeConfig>(&json).unwrap_or_else(|e| {
tracing::warn!("[KNOWLEDGE-CONFIG] KV 反序列化失败,保持 default: {}", e);
KnowledgeConfig::default()
}),
Ok(None) => KnowledgeConfig::default(),
Err(e) => {
tracing::warn!("[KNOWLEDGE-CONFIG] 读 KV 失败,保持 default: {}", e);
KnowledgeConfig::default()
}
}
}
impl Default for KnowledgeConfig {
fn default() -> Self {
Self {