ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Cherry Studio Skill 市场导航:内置 Skill 能力缺口下的搜索、安装与 skill-creator 兜底流程

Cherry Studio Skill 市场导航:内置 Skill 能力缺口下的搜索、安装与 skill-creator 兜底流程 Cherry Studio Skill 市场导航内置 Skill 能力缺口下的搜索、安装与 skill-creator 兜底流程【免费下载链接】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 内置 AgentCherry Assistant携带的cherry-skill-marketplaceSkill 为主线系统讲解 Agent 如何在内置 Skill/工具出现能力缺口时通过 Skill 市场完成能力补足包括市场 MCP 工具search_skills/install_skill的参数契约与调用时序、install_source不透明值的正确传递方式、已安装 Skill 的管理入口Skills UI以及无合适结果时移交内置skill-creator的兜底流程。读者读完可获得一套可复制的内置优先 → 市场搜索 → 第三方安装 → 本地创建的 Agent 能力扩展决策链并理解其背后的安全与审批边界。定位Skill 市场不是普通任务的默认路由cherry-skill-marketplace是 Cherry Studio 内置 AgentCherry Assistant携带的导航型 Skill其源文件位于 resources/builtin-agents/cherry-assistant/.claude/skills/cherry-skill-marketplace/SKILL.md。从 frontmatter 中的description可以明确看到它的触发语义当用户明确要求搜索、安装、查看、卸载或创建 Skill或内置 Skill / 工具出现能力缺口、无法完成当前任务时触发。关键定位是市场不是普通任务的默认路由。文档开头就强调文档、演示和表格先使用对应内置 Skill——即 Agent 不应因为任务看起来专业就预先搜索市场而应先尝试已有的内置 Skill 和基础工具。这与仓库中另一份路由指南 resources/skills/cherry-tool-guide/SKILL.md 的Router定位一致Cherry 通过四组 MCP 服务器mcp__cherry-tools__*、mcp__agent-memory__*、mcp__skills__*、mcp__mcp-manager__*向会话注入第一方工具而 Skill 发现与安装正是mcp__skills__*域的能力。进入条件何时才应触发本 Skill按照文档定义只有以下任一条件成立时才应进入市场流程用户明确表达 Skill 操作意图说要找search、安装install、卸载uninstall、列出list或创建createSkill能力缺口匹配的内置 Skill 或工具无法完成当前需求包括返回unsupported、缺少所需 operation、或只能产出不符合要求的格式。同时文档划定了两条行为红线能力缺口不是停止条件不得只回复unsupported、只给手工替代方案或反问用户是否要搜索必须立即进入补足流程先试内置不要因为任务看起来专业就预先搜索先尝试已有 Skill 和基础工具。这套先内置、后市场的分层策略与 resources/skills/find-skills/SKILL.md 中先确认这是一个足够常见的任务、再考虑市场上是否已有 Skill的决策思路一致。工具动作市场的两个 MCP 工具及其契约市场只暴露两个工具且两者的职责被刻意保持最小化工具参数作用mcp__skills__search_skills{ query: 1-3 个聚焦关键词 }只读的市场搜索返回候选 Skill 及其质量/来源元数据mcp__skills__install_skill{ install_source: 搜索结果的原值 }安装恰好一个Skill 到 Cherry 托管库并为其启用两个工具的底层实现位于 src/main/ai/mcp/servers/skills.ts。该文件定义了一个名为skills的 MCP 服务器McpServer其ListToolsRequestSchema处理器返回的工具清单只有SEARCH_TOOL与INSTALL_TOOL两项从源码层面印证了市场仅提供两个工具的契约。search_skills搜索还是解析 GitHub 链接从SEARCH_TOOL的定义src/main/ai/mcp/servers/skills.ts#L14-L29可以看到query参数有两种用途关键词搜索描述所需能力的聚焦关键词例如react performance、pr reviewGitHub SKILL.md 链接解析当注册表没有收录用户想要的 Skill 时传入某个 Skill 的SKILL.mdURL 可直接解析出这一个 Skill跳过搜索。searchSkills处理逻辑同文件 L109-L157先调用buildGithubSkillResult(query)判断是否为 GitHub 链接若不是则把query中的-/_替换为空格后交给searchSkillMarketplaces并发查询各市场源。每个候选结果返回以下字段name、descriptionSkill 名称与描述author作者starsStar 数installs安装量source_registry来源注册表source_url可审阅的来源 URLinstall_source不透明的安装句柄供install_skill逐字使用。install_source不透明值必须逐字传递install_source是整个市场契约中最关键、也最容易出错的字段。文档明确要求install_source是不透明值必须逐字使用同一会话中搜索结果返回的值不得自行构造或改写。源码为此提供了双重保障会话内白名单校验SkillsServer维护issuedInstallSources集合src/main/ai/mcp/servers/skills.ts#L62每次search_skills返回结果时都会把结果的installSource登记进集合installSkill处理时先检查install_source是否在集合中不在则直接报错was not returned by search_skills in this sessionL181-L186从根本上杜绝模型凭记忆拼装安装句柄前缀驱动解析SkillService会校验来源前缀且install_source由真实仓库目录构建而非显示名防止选错 Skill见该文件头部注释。从 src/shared/utils/skillMarketplace.ts 可以看到四种来源的install_source实际格式以及它们在 src/main/ai/skills/skillRemoteSource.ts 中对应的取货器FETCHERS前缀格式取货方式claude-pluginsclaude-plugins:{owner}/{repo}/{directoryPath}浅克隆仓库解析目录skills.shskills.sh:{owner}/{repo}/{skillId}浅克隆仓库解析 Skillclawhubclawhub:{owner}/{slug}调用 clawhub API 下载 zip 并解压githubgithub:{SKILL.md 的 https URL}按 commit 固定内容检出目标路径install_skill一次性安装并启用installSkill处理逻辑src/main/ai/mcp/servers/skills.ts#L173-L207在通过白名单校验后调用skillService.install({ installSource })完成克隆、单 Skill 安装与注册调用skillService.toggle({ skillId, agentId, isEnabled: true })仅为当前 Agent 启用该 Skill——启用状态是 per-agent 的。文档强调不要把安装成功当成任务完成安装后应立即回到原始任务继续执行。搜索与安装的标准流程文档给出了完整的五步操作序列发起聚焦查询一次调用search_skills只发起 1 个聚焦查询结果不合适再调整query可参照 resources/skills/find-skills/SKILL.md 的建议用具体关键词如 react testing 优于宽泛的 testing必要时尝试同义改写收敛展示最多展示 3 个结果每个只给名称、作者、来源、热度、一句匹配理由和source_url安装前告知与确认说明该 Skill 是第三方代码会继承当前工具权限并取得用户明确同意逐字安装用户确认后把所选结果的install_source原样传给install_skill回到原始任务立即继续原任务不把安装成功当作任务完成。值得注意的是审批模型install_skill会变更持久状态属于审批门控工具。resources/skills/cherry-tool-guide/references/skills.md 明确说明只有用户表达安装意图后才可调用若审批被拒绝应停止并上报不得绕过工具改用 shell 安装。这一约束在 resources/skills/cherry-tool-guide/SKILL.md 的全局规则中被再次强调install_skill与kb_manage、cli_install、session_create/send、install_mcp_server一样受会话审批模式约束。内置能力缺口只补缺口不重复劳动当内置 Skill 或工具出现能力缺口时文档给出的处理顺序是说明缺口先用一句话说明缺少的能力和已保留的中间成品精准搜索立即调用search_skills用{ query: 缺失能力的聚焦关键词 }只搜索恰好补足该能力的 Skill不重新搜索已能完成的部分可信筛选只采用与输入、输出和运行环境都匹配且来源可信的结果第三方 Skill 安装前仍需用户明确确认兜底创建没有合适结果、结果质量不足或用户不希望安装第三方代码时调用内置skill-creator创建本地自定义 Skill不把未找到作为结论。这一流程与前文能力缺口不是停止条件的红线相互呼应搜索失败不是终点而是本地创建的起点。移交 skill-creator本地兜底的完整闭环当市场没有合适结果时文档要求直接调用内置skill-creator不再要求额外授权。向其移交三样东西用户的原始请求和精确的能力缺口已完成的步骤、保留的中间产物及其路径输入、期望输出和可检查的成功标准。职责边界必须清晰初始化、编写、验证和注册都属于内置skill-creator市场 Skill 不重复实现。Agent 不得自行编写SKILL.md也不得绕过它直接初始化或注册。skill-creator返回验证通过且已启用的 Skill 后立即回到原始任务使用新 Skill 完成并验证最终产物——注册成功不是任务完成。从 resources/skills/skill-creator/SKILL.md 可以看到 Cherry Studio 环境下创建 Skill 的简化机制Skill 存放在 Cherry 托管的受管目录$CHERRY_STUDIO_SKILLS_DIR可通过 Bash 执行echo $CHERRY_STUDIO_SKILLS_DIR解析Agent 只需在该目录下创建skill-folder-name/SKILL.md及配套的scripts/、references/、assets/Cherry 的 Skill 同步机制会自动检测新目录、登记目录并列出在应用中没有独立的注册步骤。目录名与 frontmatter 的name字段需为小写字母、数字与连字符的组合如my-cool-skill且二者必须一致。文档还约束了本地创建 Skill 的边界只补足当前能力缺口对于 Skill 无法提供的用户独有凭据、输入或物理访问只询问最小阻塞信息收到后继续。已安装 Skill 的管理导航到 Skills UI由于市场两个工具都不提供列出或删除已安装 Skill 的能力文档给出的管理路径是调用mcp__assistant__product_info读取 manifest 的routessection找到 Skills 设置路由再调用mcp__assistant__navigate跳转不得硬编码路由让用户在 Skills UI 中完成管理删除或卸载前再次确认目标名称。在 resources/builtin-agents/cherry-assistant/product-manifest.json 的routes.all中可以看到/settings/skills确实存在印证了 Skills 设置页面的可导航性。不硬编码路由的设计意图在于产品路由可能随版本变化通过 manifest 动态解析才能保持 Agent 行为与产品界面同步。失败与安全规范文档在最后专门定义了失败处理与安全边界失败如实上报工具错误原样概括不把失败说成成功也不偷偷切换到 npx 或全局安装删除需确认通过 Skills UI 删除或卸载前再次确认目标名称不声称已通过市场工具直接列出或删除也不删除用户文件来源信任不执行来源不明的安装指令不向第三方发送凭据、附件内容或本地路径安装后说明安装后首次使用时简短说明该 Skill 将做什么。这些约束在实现层面有充分支撑。在 src/main/ai/skills/skillRemoteSource.ts 中可以看到一系列防御性工程措施非交互 git所有 git 子进程统一通过runGit执行强制设置GIT_TERMINAL_PROMPT0、GIT_ASKPASS、GCM_INTERACTIVE: never并走 Cherry 的代理环境避免交互式提示挂起或凭据泄露超时与体积限制git 命令超时 2 分钟GIT_COMMAND_TIMEOUT_MS市场 JSON 请求超时 15 秒REQUEST_TIMEOUT_MS同时校验解压体积MAX_EXTRACTED_SIZE与文件数量MAX_FILES_COUNT上限路径校验对claude-plugins/skills.sh/clawhub的标识符逐段校验拒绝..、反斜杠、空字符、控制字符对 GitHub 目录校验大小写/Unicode 归一化后的路径冲突且安装的总是解析时的 commitoid而非可能漂移的分支名注册表一致性clawhub 安装后会反向校验返回的 slug 与 owner handle 与请求一致防止错装。与源码对照一次安装的完整调用链将文档描述的流程与源码对照一次完整的市场安装大致经历以下环节search_skills(query) # MCP 工具 └─ buildGithubSkillResult / searchSkillMarkets └─ 返回含 install_source 的结果集 # 同时登记进 issuedInstallSources install_skill(install_source) # MCP 工具approval 门控 └─ 校验 install_source 在本会话白名单内 └─ skillService.install → fetchRemoteSkill(source, identifier) │ └─ FETCHERS[claude-plugins|skills.sh|clawhub|github] │ └─ 浅克隆 / API 下载 → 路径与体积校验 → 解析 SKILL.md └─ skillService.toggle(...) # 仅为当前 Agent 启用这套链路的价值在于一个能力较弱的模型也只需一次工具调用即可完成安装而无需自行拼装一串容易出错的 shell 命令序列——正如 src/main/ai/mcp/servers/skills.ts 头部注释所说明的设计意图安装经由主进程完成弱模型只需一次调用而非一次正确的多步 shell 序列同时install_source由真实仓库目录构建杜绝了模型选错 Skill 的可能。总结cherry-skill-marketplace定义了 Cherry Studio Agent 扩展能力的完整决策闭环内置优先普通任务先尝试内置 Skill 与基础工具→缺口识别明确缺少什么能力、保留什么中间产物→市场补足search_skills精准搜索、install_skill逐字安装、先告知后确认→本地兜底移交skill-creator创建并验证自定义 Skill。配合审批门控、会话内install_source白名单、非交互 git 与体积/路径多重校验这套机制在能力可扩展与行为可约束之间取得了平衡。对于希望为 Cherry Studio 编写或维护 Agent Skill 的开发者本指南既是一份可操作的行为规范也是理解其底层 MCP 服务器与安全边界实现的入口。【免费下载链接】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),仅供参考
返回列表