Skip to main content

Crate sz_rust_capability

Crate sz_rust_capability 

Source
Expand description

§SZ-Rust Capability Registry

统一能力注册表,将 Skills(AI 内置能力)与 Plugins(业务插件)抽象为统一的 Capability 接口。

§核心组件

  • Capability trait — 统一能力抽象(name/description/schema/tags/source/call)
  • CapabilityRegistry — 中心注册表(注册/发现/调用)
  • Cap facade — 静态 API(OnceLock 全局实例)
  • CapabilitySource — 能力来源枚举(Skill/Plugin/Service)
  • CapError — 错误类型(6 变体,non_exhaustive)
  • McpCapabilityAdapter — MCP 工具适配为 Capability

§快速开始

§使用 facade(推荐)

use std::sync::Arc;
use async_trait::async_trait;
use serde_json::{json, Value};
use sz_rust_capability::{Cap, Capability, CapabilitySource, CapError, CapResult};

struct MyCapability;

#[async_trait]
impl Capability for MyCapability {
    fn name(&self) -> &'static str { "my.cap" }
    fn description(&self) -> &'static str { "自定义能力" }
    fn schema(&self) -> Value { json!({}) }
    fn tags(&self) -> &[&'static str] { &["custom"] }
    fn source(&self) -> CapabilitySource { CapabilitySource::Plugin }
    async fn call(&self, args: Value) -> CapResult<Value> { Ok(args) }
}

// 初始化 facade
Cap::init().ok();

// 注册能力
Cap::register(Arc::new(MyCapability)).unwrap();

// 发现能力
let caps = Cap::find_by_tags(&["custom"], None).unwrap();
assert_eq!(caps.len(), 1);

§使用 Registry 实例(多实例场景)

use std::sync::Arc;
use async_trait::async_trait;
use serde_json::{json, Value};
use sz_rust_capability::{Capability, CapabilityRegistry, CapabilitySource, CapResult};

struct EchoCap;
#[async_trait]
impl Capability for EchoCap {
    fn name(&self) -> &'static str { "echo" }
    fn description(&self) -> &'static str { "回显" }
    fn schema(&self) -> Value { json!({}) }
    fn tags(&self) -> &[&'static str] { &["test"] }
    fn source(&self) -> CapabilitySource { CapabilitySource::Skill }
    async fn call(&self, args: Value) -> CapResult<Value> { Ok(args) }
}

let registry = CapabilityRegistry::new();
registry.register(Arc::new(EchoCap));
assert_eq!(registry.len(), 1);

§注册 MCP 工具

use sz_rust_capability::{CapabilityRegistry, register_mcp_tools};

let registry = CapabilityRegistry::new();
let names = register_mcp_tools(&registry).unwrap();
assert_eq!(names.len(), 7); // 7 个 MCP 工具

§性能指标

操作延迟spec 要求
注册187 ns<1 ms
查找38 ns<100 μs
标签搜索(1000 能力)20 μs<5 ms

Re-exports§

pub use builtin::register_builtin_skills;
pub use builtin::register_extended_mcp_tools;
pub use builtin::register_mcp_tools;
pub use builtin::ExtendedMcpAdapter;
pub use builtin::McpCapabilityAdapter;
pub use capability::Capability;
pub use capability::CapabilityInfo;
pub use error::CapError;
pub use error::CapResult;
pub use facade::Cap;
pub use metrics::CapMetrics;
pub use permission::AllowAll;
pub use permission::PermissionChecker;
pub use permission::TenantScopeChecker;
pub use registry::CapabilityRegistry;
pub use source::CapabilitySource;

Modules§

builtin
capability
error
facade
metrics
permission
registry
source