tiny-agent 0.2.0

一个小而完整的 Rust LLM Agent 运行时:可中断、可恢复、可观测、可插拔的 agent loop / A small but complete LLM agent runtime in Rust — an interruptible, resumable, observable, pluggable agent loop.
Documentation
use crate::{skills::SkillManager, tools::ToolRegistry};
use schemars::JsonSchema;
use serde::Deserialize;
use std::sync::Arc;

#[derive(Deserialize, JsonSchema)]
pub struct ReadSkillArgs {
    /// 要读取的 skill id。
    skill_id: String,
    /// 可选资源路径。不填时读取该 skill 的主说明。
    path: Option<String>,
}

pub(super) fn register_read_skill(registry: &mut ToolRegistry, skills: Arc<SkillManager>) {
    registry.register(
        "readSkill",
        "读取指定 skill 的完整说明,或读取该 skill 暴露的某个资源文件",
        true,
        move |_sandbox, args: ReadSkillArgs| {
            let skills = skills.clone();
            async move {
                let result = skills
                    .read(&args.skill_id, args.path.as_deref())
                    .map_err(|e| e.to_string())?;
                Ok(result.into_value().into())
            }
        },
    );
}