From 2d17bde790a486b663cbab3208d9c4a403f2ec75 Mon Sep 17 00:00:00 2001 From: Jason Date: Wed, 21 Jan 2026 16:20:28 +0800 Subject: [PATCH] feat(skills): add baoyu-skills preset repo and auto-supplement missing defaults - Add JimLiu/baoyu-skills to default skill repositories - Change init_default_skill_repos() from "first-run only" to "supplement missing" - New preset repos will now auto-appear for existing users on upgrade --- src-tauri/src/database/dao/skills.rs | 24 ++++++++++++++++-------- src-tauri/src/services/skill.rs | 6 ++++++ 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src-tauri/src/database/dao/skills.rs b/src-tauri/src/database/dao/skills.rs index 67df0d2c1..2254cb061 100644 --- a/src-tauri/src/database/dao/skills.rs +++ b/src-tauri/src/database/dao/skills.rs @@ -203,24 +203,32 @@ impl Database { Ok(()) } - /// 初始化默认的 Skill 仓库(首次启动时调用) + /// 初始化默认的 Skill 仓库(启动时调用,补充缺失的默认仓库) pub fn init_default_skill_repos(&self) -> Result { - // 检查是否已有仓库 + // 获取已有仓库列表 let existing = self.get_skill_repos()?; - if !existing.is_empty() { - return Ok(0); - } + let existing_keys: std::collections::HashSet<(String, String)> = existing + .iter() + .map(|r| (r.owner.clone(), r.name.clone())) + .collect(); // 获取默认仓库列表 let default_store = crate::services::skill::SkillStore::default(); let mut count = 0; + // 仅插入缺失的默认仓库 for repo in &default_store.repos { - self.save_skill_repo(repo)?; - count += 1; + let key = (repo.owner.clone(), repo.name.clone()); + if !existing_keys.contains(&key) { + self.save_skill_repo(repo)?; + count += 1; + log::info!("补充默认 Skill 仓库: {}/{}", repo.owner, repo.name); + } } - log::info!("初始化默认 Skill 仓库完成,共 {count} 个"); + if count > 0 { + log::info!("补充默认 Skill 仓库完成,新增 {count} 个"); + } Ok(count) } } diff --git a/src-tauri/src/services/skill.rs b/src-tauri/src/services/skill.rs index 78feec7e5..85b661d8d 100644 --- a/src-tauri/src/services/skill.rs +++ b/src-tauri/src/services/skill.rs @@ -128,6 +128,12 @@ impl Default for SkillStore { branch: "master".to_string(), enabled: true, }, + SkillRepo { + owner: "JimLiu".to_string(), + name: "baoyu-skills".to_string(), + branch: "main".to_string(), + enabled: true, + }, ], } }