feat(skills): SemanticSkillRouter — TF-IDF + Embedding 混合路由
实现 SemanticSkillRouter 核心模块 (zclaw-skills): - Embedder trait + NoOpEmbedder (TF-IDF fallback) - SkillTfidfIndex 全文索引 - retrieve_candidates() Top-K 检索 - route() 置信度阈值路由 (0.85) - cosine_similarity 公共函数 - 单元测试覆盖 Kernel 适配层 (zclaw-kernel): - EmbeddingAdapter: zclaw-growth EmbeddingClient → Embedder 文档同步: - 01-intelligent-routing.md Phase 1+2 标记完成
This commit is contained in:
25
crates/zclaw-kernel/src/skill_router.rs
Normal file
25
crates/zclaw-kernel/src/skill_router.rs
Normal file
@@ -0,0 +1,25 @@
|
||||
//! Skill router integration for the Kernel
|
||||
//!
|
||||
//! Bridges zclaw-growth's `EmbeddingClient` to zclaw-skills' `Embedder` trait,
|
||||
//! enabling the `SemanticSkillRouter` to use real embedding APIs.
|
||||
|
||||
use std::sync::Arc;
|
||||
use async_trait::async_trait;
|
||||
|
||||
/// Adapter: zclaw-growth EmbeddingClient → zclaw-skills Embedder
|
||||
pub struct EmbeddingAdapter {
|
||||
client: Arc<dyn zclaw_runtime::EmbeddingClient>,
|
||||
}
|
||||
|
||||
impl EmbeddingAdapter {
|
||||
pub fn new(client: Arc<dyn zclaw_runtime::EmbeddingClient>) -> Self {
|
||||
Self { client }
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl zclaw_skills::semantic_router::Embedder for EmbeddingAdapter {
|
||||
async fn embed(&self, text: &str) -> Option<Vec<f32>> {
|
||||
self.client.embed(text).await.ok()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user