ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Cherry Studio 技能发现与安装指南:find-skills 工作流与 search_skills / install_skill 底层实现

Cherry Studio 技能发现与安装指南:find-skills 工作流与 search_skills / install_skill 底层实现 Cherry Studio 技能发现与安装指南find-skills 工作流与 search_skills / install_skill 底层实现【免费下载链接】cherry-studioAI productivity studio with smart chat, autonomous agents, and 300 assistants. Unified access to frontier LLMs项目地址: https://gitcode.com/GitHub_Trending/ch/cherry-studio本指南以 Cherry Studio 内置的find-skills技能resources/skills/find-skills/SKILL.md为线索完整讲解 Agent 如何在开放的技能生态中帮助用户发现、评估并安装第三方技能Skill。读完本文你将掌握从需求识别、排行榜排查、市场搜索、质量校验到权限安全安装的六步标准流程并从源码层面理解search_skills与install_skill两个内置工具在 MCP 服务器中的真实实现、市场数据来源、install_source标识符格式以及技能在 Cherry Studio 中的存储与镜像机制。一、find-skills 是什么、何时启用find-skills是一个元技能——它的职责不是直接执行某个任务而是指导 Agent 去发现和安装其他技能。其核心定位是当用户表达的诉求可能已经存在现成的可安装技能时主动帮助用户找到它。根据 find-skills/SKILL.md 的定义当用户出现以下任一信号时应当启用该技能问怎么做 XHow do I do X且 X 属于已有技能覆盖的常见任务说帮我找一个做 X 的技能或有没有做 X 的技能问你能做 X 吗而 X 是某种专业化能力表达出扩展 Agent 能力的兴趣想搜索工具、模板或工作流提到希望某个特定领域设计、测试、部署等有人帮忙。判断的关键在于需求是否足够常见、是否大概率已有社区沉淀的技能可直接复用。如果用户要的是高度定制的一次性任务则更适合直接用 Agent 通用能力完成或通过skill-creator技能现场创作见下文无技能可找时的兜底路径。二、两个内置工具search_skills 与 install_skillCherry Studio 为技能发现与安装提供了两个内置工具由主进程的 MCP 服务器对外暴露。文档明确要求必须使用这两个工具严禁绕过它们去执行npx skills、git或任何包管理器命令。原因在于search_skills(query)—— 按关键词搜索技能市场返回带质量与来源元数据的匹配结果其中包含一个不透明的install_source值install_skill(install_source)—— 将恰好一个技能安装进 Cherry 托管库并为当前 Agent 启用。Cherry 会克隆仓库、只安装这一个技能并以单个确定性步骤完成注册。权限处理遵循当前生效的 Claude 权限模式详见第六步。两个工具的 MCP 定义可以在 skills MCP 服务器实现 中看到search_skills只接收一个必填的query字符串支持关键词也支持直接传入某个技能仓库SKILL.md文件的 GitHub 链接以精确解析单个技能install_skill只接收一个必填的install_source字符串其描述中明确强调必须原样传递search_skills的返回结果不要自行构造也不要运行npx skills add、git clone或任何 shell 命令。该 MCP 服务器类名SkillsServer见 skills.ts在构造时接收agentId通过ListToolsRequestSchema只暴露SEARCH_TOOL与INSTALL_TOOL两个工具。设计注释skills.ts点明了几个关键工程决策只做两个确定性动作搜索是只读的市场查询安装是克隆并安装恰好一个技能到 Cherry 托管库搜索复用共享的normalizeClaudePluginsinstall_source从真实仓库目录构建、而非显示名称模型把这个不透明字符串原样回传就不可能装错技能创作不在此处编写技能属于skill-creator技能的职责它把文件写入$CHERRY_STUDIO_SKILLS_DIR由SkillService.reconcileSkills纳入目录安装走主进程一个能力较弱的模型只需一次工具调用即可完成安装而不是要求它拼出正确的多步 shell 命令序列。三、标准工作流六步发现与安装find-skills将完整的技能发现过程拆分为六个步骤环环相扣。Step 1理解用户真实需求当用户寻求帮助时先做三项拆解领域domain——例如 React、测试、设计、部署具体任务task——例如写测试、做动画、审阅 PR判断该任务是否足够常见、以致大概率已存在现成技能。Step 2先查排行榜在发起 CLI 式搜索之前先查看 skills.sh 的技能排行榜。排行榜按总安装量排序能优先暴露最流行、经过最多实战检验的选项。例如 Web 开发领域的顶级技能包括vercel-labs/agent-skills—— React、Next.js、Web 设计方向单项安装量超过 10 万anthropics/skills—— 前端设计与文档处理方向单项安装量超过 10 万。注原文档所列安装量数字为市场当时的统计快照实际数值以排行榜实时数据为准此处保留原始信息用于说明用安装量判断流行度的方法。Step 3调用 search_skills 搜索如果排行榜未覆盖用户需求调用search_skills工具。原文档给出了三个典型的映射示例用户问怎么让我的 React 应用更快 →search_skills(react performance)用户问能帮我审阅 PR 吗 →search_skills(pr review)用户说我需要创建一个 changelog →search_skills(changelog)每个搜索结果都包含一个不透明的install_source、来源注册表source registry、评审链接、安装量与可用的 star 数。把确切的install_source值原样传给install_skill即可安装。从源码看搜索的执行路径是 skills.ts 中的searchSkills它会先把query中的连字符/下划线统一替换为空格并去除首尾空白然后做两件事——先用buildGithubSkillResult(query)尝试把查询解析为 GitHub 上某个SKILL.md的链接若解析成功说明用户已精确定位到某一个技能直接返回单个结果不再走市场搜索否则调用searchSkillMarketplaces并发查询所有受支持的市场见下文第四节。返回给模型的结果视图skills.ts包含名称、描述、作者、stars、安装量、来源注册表、来源 URL 与install_source。同时本次会话中返回过的所有install_source都会被记入issuedInstallSources集合——这为安装环节提供了只认本会话签发结果的防护。Step 4推荐前先验证质量绝不能仅凭搜索结果就推荐技能。安装前必须做三重校验安装量——优先选择安装量 1000 的技能对安装量低于 100 的技能保持警惕来源信誉——官方来源vercel-labs、anthropics、microsoft比未知作者更可信GitHub stars——检查源仓库来自 star 数不足 100 的仓库的技能应持怀疑态度。这一fail-closed宁可失败也不猜测的思路在代码中也有体现normalizeClaudePlugins对无法可靠解析出安装标识的条目缺少仓库 owner/name或没有directoryPath会直接丢弃——因为克隆并扫描一个没有精确目录的仓库可能装出与用户所选不同的技能见 skillMarketplace.ts 与 normalizeClaudePlugins。Step 5向用户呈现候选找到相关技能后向用户呈现以下信息技能名称及其功能安装量与来源你可以帮其安装进 Cherry提供 skills.sh 上的链接以便进一步了解。原文档给出了一个可直接套用的回答模板I found a skill that might help! The react-best-practices skill provides React and Next.js performance optimization guidelines from Vercel Engineering. (185K installs) I can install it into Cherrys skill library for you — want me to go ahead? Learn more: https://skills.sh/vercel-labs/agent-skills/react-best-practicesStep 6安装遵循当前生效的权限模式安全警告技能是第三方代码将以 Agent 的完整权限运行。恶意技能可能读取、修改甚至删除你系统上的文件。因此在安装任何技能之前必须展示安全警告——告知用户该技能是第三方代码将以完整 Agent 权限运行提供评审链接——给出 skills.sh 页面或源仓库让用户审查技能的SKILL.md及其包含的任何脚本确认安装意图——只有当用户明确要求安装、或接受了已展示的某个选项时才调用install_skill。仅搜索的请求绝不能改动技能库。一旦用户表达了安装意图就应把搜索结果的install_source原样传给install_skill不要再增加一层模型级确认Claude 当前生效的权限模式才是权威。默认default与接受编辑accept-edits模式可能通过 SDK 弹窗提示绕过权限bypass-permissions模式则直接执行。原文档给出的调用示例install_skill(claude-plugins:vercel-labs/agent-skills/skills/react-best-practices)这条规则的落地在 内置工具审批策略 中可以看到search_skills被标记为auto自动放行因为它是只读搜索而install_skill被标记为runtime运行时权限裁决取决于当前权限模式——两处策略与文档描述完全一致也印证了搜索自动、安装受权限模式约束的设计意图。四、底层实现市场来源与 install_source 格式4.1 三个受支持的市场searchSkillMarketplaces见 skillMarketplace.ts使用Promise.allSettled并发查询三个市场任一来源失败不阻塞其他来源仅当全部来源都失败时才抛出错误错误码skill_search_failed最后再按技能名称去重合并结果市场查询接口归一化函数install_source 格式skills.shskills.sh/api/search?q...normalizeSkillsShskills.sh:{owner}/{repo}/{skillId}claude-plugins.devclaude-plugins.dev/api/skills?q...limit20normalizeClaudePluginsclaude-plugins:{owner}/{repo}/{directoryPath}clawhub.aiclawhub.ai/api/v1/search?q...normalizeClawhubclawhub:{ownerHandle}/{slug}此外GitHub 本身作为第四类来源存在当query是一个指向某技能SKILL.md的链接时buildGithubSkillResultskillMarketplace.ts通过parseGithubSkillUrl严格解析出{owner}/{repo}/{refAndPath}生成github:{SKILL.md 的 URL}形式的安装标识使注册表里没收录但确实存在的技能也能被精确安装。4.2 为什么不透明install_source 的设计意图install_source被刻意设计为不透明字符串模型不需要理解其内部结构只需从搜索结果原样回传。代码层面有双重保障会话内签发校验SkillsServer用issuedInstallSources集合记录本次会话中search_skills返回过的所有标识installSkill会先校验install_source是否在集合中否则直接报错该值不是本会话由 search_skills 返回的请重新搜索并使用确切结果skills.ts真实目录而非显示名称normalizeClaudePlugins从市场响应的metadata.directoryPath必要时回退解析 GitHub tree URL提取技能在仓库中的真实目录来构建标识杜绝显示名相同但目录不同导致装错技能。网络请求侧还有 15 秒超时保护REQUEST_TIMEOUT_MS 15_000通过AbortController实现见 skills.ts任一市场源超时或失败时只记录告警日志、不中断整体搜索。五、安装链路从 install_source 到托管库install_skill的最终落地在SkillService.installSkillService.ts。主进程的SkillsServer.installSkill完成会话内来源校验后将install_source交给skillService.install按前缀分派以:切分install_source取第一段作为来源类型claude-plugins、skills.sh、clawhub或github其余部分交给fetchRemoteSkill做远端拉取与克隆只装一个技能installSkillDir(fetched.skillDir, marketplace, fetched.sourceUrl)把该技能目录作为唯一安装对象绝不把整个仓库的几十个技能一并装进来清理临时目录finally中安全移除克隆用的临时目录安装完成后仓库残留不留在系统其他位置按 Agent 启用SkillService.toggle({ skillId, agentId, isEnabled: true })把新装的技能在当前 Agent 上启用——启用状态是按 Agent 隔离的skills.ts。5.1 存储、镜像与对账从 SkillService 类注释 可以了解技能的整体生命周期管理主存储技能存放在{dataPath}/Skills/{folderName}/这是应用自有的规范库canonical librarySDK 镜像安装/卸载/启动对账时把主库镜像到CLAUDE_CONFIG_DIR/skills——这是 Claude Agent SDK 发现技能文件的位置linkMirror/unlinkMirror见 SkillService.ts。镜像采用幂等设计且按会话只下发白名单buildSkillWhitelist会话构建期绝不改动镜像元数据存储技能库元数据存于agent_global_skill表按 Agent 的启用状态存于agent_skill关联表启动对账reconcileSkillsSkillService.ts在启动时把磁盘文件系统作为事实来源修复应用自有的镜像、清理数据库中已不存在的条目并发保护所有库变更安装/卸载/内置同步/对账由mutationLockasync-mutex串行化避免对账读到安装中途的中间快照SkillService.ts。这解释了文档中不要用npx skills add/git clone绕过的深意外部命令会把整个仓库几十个技能装进来、在其他工具中散落符号链接最终落在 Cherry 技能库之外而install_skill走的是主进程内的确定性单步安装装完即注册、出现在应用列表中系统其他位置不留任何残留。六、常见技能分类与搜索技巧6.1 常见分类速查表当不确定如何组织关键词时可参考以下常见分类原文档完整保留分类示例查询关键词Web 开发react, nextjs, typescript, css, tailwind测试testing, jest, playwright, e2eDevOpsdeploy, docker, kubernetes, ci-cd文档docs, readme, changelog, api-docs代码质量review, lint, refactor, best-practices设计ui, ux, design-system, accessibility生产力workflow, automation, git6.2 高效搜索的三条技巧使用具体关键词react testing好过单独的testing尝试同义替换如果deploy搜不到试试deployment或ci-cd关注热门来源大量技能出自vercel-labs/agent-skills或ComposioHQ/awesome-claude-skills等知名仓库。从实现角度补充一点search_skills在发请求前会把查询中的连字符与下划线替换为空格query.replace(/[-_]/g, )见 skills.ts所以用pr-review与pr review搜出的结果等价可放心使用短语形式。七、无技能可找时的兜底路径如果搜索后没有任何相关技能遵循以下顺序坦承未找到现有技能提出直接用通用能力帮助完成任务提出为该任务现场创作自定义技能由skill-creator技能负责。原文档给出了可直接使用的应答模板I searched for skills related to xyz but didnt find any matches. I can still help you with this task directly! Would you like me to proceed? If this is something you do often, I can author a custom skill for you — just ask me to create a skill for task and Ill write one into Cherrys skills directory.这条兜底路径在 Cherry Studio 的生态中确实有对应实体skill-creator 技能 负责技能创作含package_skill.py、run_eval.py、quick_validate.py等脚本支撑打包、评测与快速校验而 cherry-tool-guide 技能 则负责向 Agent 讲解 Cherry 自身的工具使用方式。三个技能各司其职find-skills负责找到并装好别人的技能skill-creator负责写出自己的技能cherry-tool-guide负责用对 Cherry 内置能力。八、测试与验证仓库为技能发现链路提供了完整的测试保障可作为实现正确性的佐证skills MCP 服务器测试覆盖search_skills/install_skill的工具暴露、参数校验、会话内install_source签发校验等行为skillMarketplace 测试验证三个市场的响应归一化、GitHub SKILL.md URL 解析、directoryPath缺失时的 fail-closed 行为与去重逻辑内置工具审批策略测试验证search_skills为自动放行、install_skill走运行时权限裁决的策略配置。结语find-skills把搜索—评估—安装这一看似简单、实则充满安全与正确性陷阱的流程沉淀为一份可复用的 Agent 工作流先用排行榜和关键词搜索快速定位再用安装量、来源信誉与 star 数三重校验质量最后经由会话内签发的install_source走主进程确定性安装并把权限决定权交给 Claude 当前的权限模式。理解其背后的 MCP 服务器、市场归一化与技能库镜像机制不仅能帮你更熟练地使用这两个内置工具也能让你在为 Cherry Studio 扩展技能生态时做出更符合平台设计意图的选择。【免费下载链接】cherry-studioAI productivity studio with smart chat, autonomous agents, and 300 assistants. Unified access to frontier LLMs项目地址: https://gitcode.com/GitHub_Trending/ch/cherry-studio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表