feat: manage_skill + 全局 skills 目录

新增:
- manage_skill: LLM 可调用的 Skill 创建/删除/列出工具 (High)
- 全局 skills 支持: ~/.ias/skills/ 自动加载
- SkillRegistry::register_skill() 动态注册
- SkillRegistry::load() 三元加载: system → global → user

manage_skill 操作:
  create: 写 SKILL.md + 执行脚本到 skills/<name>/
  delete: 移除 skills/<name>/
  list: 列出所有自定义 Skill

目前一共 9 个系统 Skills
This commit is contained in:
2026-06-01 21:08:38 +08:00
parent a31afaba80
commit f51b5c100f
7 changed files with 342 additions and 81 deletions
+16 -1
View File
@@ -34,7 +34,15 @@ impl SkillRegistry {
registry.load_from_dir(system_dir, SkillSource::System, &mut errors);
}
// 加载用户 skills
// 加载全局 skills (~/.ias/skills/)
if let Ok(home) = std::env::var("HOME") {
let global_dir = format!("{}/.ias/skills", home);
if Path::new(&global_dir).exists() {
registry.load_from_dir(&global_dir, SkillSource::User, &mut errors);
}
}
// 加载用户 skills(项目目录)
if Path::new(user_dir).exists() {
registry.load_from_dir(user_dir, SkillSource::User, &mut errors);
}
@@ -110,6 +118,13 @@ impl SkillRegistry {
self.skills.len()
}
/// 动态注册一个技能(运行时添加,不持久化到文件)
pub fn register_skill(&mut self, spec: SkillSpec, dir: std::path::PathBuf, execute_command: String) {
let skill = Arc::new(Skill::new(spec, SkillSource::User, dir, execute_command));
let name = skill.spec.name.clone();
self.skills.insert(name, skill);
}
// ─── 执行 ───
/// 执行技能(含审批流程)