rucora_skills/lib.rs
1//! Skills(技能)模块
2//!
3//! # 概述
4//!
5//! 本模块提供 Skills 的加载、执行和与 Agent 的集成功能。
6//!
7//! 参考 zeroclaw 项目的设计:
8//! - 支持多种配置文件格式(TOML/YAML/JSON)
9//! - 支持多种提示词注入模式(Full/Compact)
10//! - 提供 read_skill 工具读取 skill 详细信息
11//! - 根据 skill 模式构建不同的系统提示词
12//!
13//! # 核心组件
14//!
15//! ## SkillLoader(技能加载器)
16//!
17//! 用于从目录加载技能定义:
18//!
19//! ```rust,no_run
20//! use rucora_skills::SkillLoader;
21//!
22//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
23//! let mut loader = SkillLoader::new("skills/");
24//! let skills = loader.load_from_dir().await?;
25//! # Ok(())
26//! # }
27//! ```
28//!
29//! ## SkillExecutor(技能执行器)
30//!
31//! 用于执行技能:
32//!
33//! ```rust,no_run
34//! use rucora_skills::{SkillContext, SkillDefinition, SkillExecutor};
35//! use serde_json::json;
36//! use std::sync::Arc;
37//!
38//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
39//! let executor = Arc::new(SkillExecutor::new());
40//! let definition = SkillDefinition::new("my_skill", "My custom skill");
41//! let context = SkillContext::new(json!({}), definition);
42//! // 执行技能...
43//! # Ok(())
44//! # }
45//! ```
46//!
47//! ## SkillTool(技能工具)
48//!
49//! 将技能转换为 Agent 可使用的工具:
50//!
51//! ```rust,no_run
52//! use rucora_skills::{SkillTool, SkillExecutor, SkillDefinition};
53//! use std::sync::Arc;
54//!
55//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
56//! let executor = Arc::new(SkillExecutor::new());
57//! let skill = SkillDefinition::new("my_skill", "My custom skill");
58//! let tool = SkillTool::new(skill, executor, "skills/my_skill".into());
59//! # Ok(())
60//! # }
61//! ```
62//!
63//! ## SkillsAutoIntegrator(技能自动集成器)
64//!
65//! 自动将技能集成到 Agent 中:
66//!
67//! ```rust,no_run
68//! use rucora_skills::SkillsAutoIntegrator;
69//!
70//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
71//! let integrator = SkillsAutoIntegrator::new("skills/");
72//! // 集成技能...
73//! # Ok(())
74//! # }
75//! ```
76//!
77//! # 子模块
78//!
79//! - [`cache`][]: 技能缓存,用于缓存加载的技能定义
80//! - [`config`][]: 技能配置解析,支持 TOML/YAML/JSON 格式
81//! - [`integrator`][]: 技能自动集成器
82//! - [`loader`][]: 技能加载器和执行器
83//! - [`tool_adapter`][]: 技能到工具的适配器
84
85pub mod cache;
86pub mod config;
87pub mod integrator;
88pub mod loader;
89pub mod tool_adapter;
90
91pub use cache::{CachedSkillLoader, SkillCache};
92pub use config::{SkillConfig, SkillMeta};
93pub use integrator::SkillsAutoIntegrator;
94pub use loader::{SkillExecutor, SkillImplementation, SkillLoader};
95pub use rucora_core::skill::{SkillContext, SkillDefinition, SkillResult};
96pub use tool_adapter::{
97 ReadSkillTool, SkillTool, read_skill, skills_to_prompt_with_mode, skills_to_tools,
98};
99
100/// Skills 提示词注入模式
101///
102/// 参考 zeroclaw 的 SkillsPromptInjectionMode
103#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
104pub enum SkillsPromptMode {
105 /// 完整模式:包含所有 skill 的详细说明和工具
106 Full,
107 /// 简洁模式:只包含 skill 摘要,详细信息通过 read_skill 工具获取
108 #[default]
109 Compact,
110}