实现 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 标记完成
26 lines
726 B
Rust
26 lines
726 B
Rust
//! 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()
|
|
}
|
|
}
|