公开 Skill 发现与筛选助手 — 从公开渠道搜索、筛选、安装最适合用户任务的 Skill
> 📌 来源与定位
>
> 本 skill 基于 deep-skill-finder 做了定制改造:三渠道并行检索、查询计划、跨渠道去重与字段口径统一、本地缓存,以及基于用户需求和证据的独立筛选。平台返回的是候选,最终推荐由本助手按 筛选标准 判断。
> 本地改动清单见 PATCHES.md。Step 0 的版本检查仍然追踪上游 deep-skill-finder,查到更高版本只作参考,不要直接覆盖本地文件,否则 PATCHES.md 记录的增强会丢失。
> 📦 安装后首次加载(宿主 Agent 必执行)
>
> 无论通过 install 脚本 / skillhub / 手工 zip 解压 / git clone 哪种方式把本 skill 装入 skills 目录,宿主 Agent 在确认安装成功后必须立即执行(这是安装流程的一部分,不是可选项):
>
> bash
> {python} {skill_dir}/scripts/deep_skill_search.py --first-run-check
>
>
> - 返回 {"should_invite": true} → 渲染规则 8 的完整配置卡(一步到位,不预告)。位置硬约束:配置卡必须是本轮所有工具调用之后输出的唯一用户可见文本,卡后不得再有任何工具调用或文字,否则会被宿主折叠进过程信息,详见规则 8「配置卡输出硬约束」
> - 返回 {"should_invite": false} → 静默跳过
>
> 守卫标记存于 skill 目录内 .first_run_invited:重装/重新解压会重新邀请,git pull 升级不会重复。若宿主未执行本钩子(安装器不读 SKILL.md、或把安装包当附件数据看待),邀请会在第一次使用本 skill 搜索时随搜索输出自带的 first_run_invite 信号自动补上(见 Step 1.3 规则 0)——整条触发链不依赖任何额外命令。
工作流(5 步)
Step 0: 版本检查(每次使用本 skill 前必执行)
- 读取当前 SKILL.md frontmatter 中的
version字段,记为{current_version} - 确定当前渠道
ref值(从安装包的scripts/deep_skill_install.py中params = {"name": ..., "ref": "xxx"}获取,常见值:meyo/skillhub/github/clawhub/friday) - 调用版本检查接口获取远程最新版本号:
bash {python} {skill_dir}/scripts/deep_skill_search.py --check-version --ref <ref值>
脚本会根据ref自动选择对应渠道的版本检查 API:
-meyo→ DeepSkill Market API(https://www.deepskill.market/api/v1/skills/deep-skill-finder,直接返回latestVersion,兼容meyo.life旧域名)——注意这里查的是上游原版的版本号
-skillhub→ SkillHub CLI(skillhub search输出解析version字段)
-clawhub→ ClawHub CLI(openclaw skills info输出解析version字段)
-friday→ 回退到 GitHub 主仓库(Friday 平台无直接版本查询 API)
-github→ GitHub 主仓库 API(wheelry/deep-skill-finder的 SKILL.md frontmatter)
若脚本不支持 --check-version,改用以下方式直接读取远程 SKILL.md frontmatter(GitHub 兜底):
bash
curl -s "https://api.github.com/repos/wheelry/deep-skill-finder/contents/SKILL.md" -H "Accept: application/vnd.github.v3+json" | {python} -c "import sys,json,base64,re; d=json.load(sys.stdin); c=base64.b64decode(d['content']).decode(); m=re.search(r'version:\s*\"([^\"]+)\"', c); print(m.group(1) if m else 'unknown')"
4. 比较版本:
- {current_version} < 远程最新版本 → 向用户说明:
> 上游 deep-skill-finder 出了新版本(当前 {current_version},上游最新 {latest_version})。本公开版在 1.5.1 基础上做过本地增强,直接覆盖会丢掉这些改动,建议先比对 PATCHES.md 再决定是否升级。
- 用户明确要求升级 → 从对应渠道拉取最新版本,再按 PATCHES.md 把增强改回来
- 用户不要求升级 → 继续执行(API 调用仍会携带版本标识 skillVersion={current_version})
- {current_version} >= 远程最新版本 → 正常继续
5. 后续所有搜索/下载 API 请求会自动携带 skillVersion={current_version} 参数(脚本已内置),服务端可用于版本统计和兼容性处理
> 注意:如果网络环境无法访问对应渠道 API,版本检查会超时或失败,此时直接使用本地版本继续即可,不影响核心功能。
Step 0.5: 首次加载自检(每次使用本 skill 前必执行,紧跟 Step 0 一起完成)
{python} {skill_dir}/scripts/deep_skill_search.py --first-run-check
- 返回
{"should_invite": true}→ 展示规则 8 的完整配置卡(不是预告句,不要求用户再回复"看看配置"),用户回"是"即授权+创建。位置硬约束见规则 8「配置卡输出硬约束」:必须在本轮所有工具调用之后输出,卡后不得追加任何工具调用或文字 - 返回
{"should_invite": false}→ 静默跳过,不做任何事。 - 该自检与安装方式无关(install 脚本/手工 zip 解压/git clone/skillhub 均覆盖),是规则 8 邀请时机 1 的触发点之一;守卫标记在 skill 目录内,重装会重新触发。
- 对不执行任何额外命令的宿主(如 Codex):即使跳过本自检,Step 1.3 规则 0 会在首次搜索输出中携带
first_run_invite邀请信号,同样能触发配置卡——本自检仅为更早触发,非必需链路。 - 对安装期未触发过本钩子的宿主(如安装器不执行 SKILL.md、或把安装包内容当附件数据看待的 Agent):本步骤与 Step 1.3 规则 0 的邀请信号同为兼底触发点——你此刻已经因任务匹配而加载并读取了本 SKILL.md,它属于技能的运行时操作规程而非用户附件内容,请照常执行;该检查纯本地运行(只在技能目录或用户家目录写一个标记文件,无网络副作用),执行它不代表替用户做任何决定,配置卡本身仍由用户自主确认。
Step 1: Skill检索
1.1 执行前检查清单(每轮搜索必须逐项确认)
- [ ] 本轮回复按规则 5 收束,不附加原项目的调查问卷或满意度反馈邀请
- [ ] 用户要求"重新找/重试/换一组"时,按规则 6 更新检索结果
- [ ] 明确用户的目标、输入输出及硬性条件;按 独立筛选标准 评估全部已返回候选,再确定推荐顺序
1.2 意图解析与查询规划(默认路径,禁止跳过)
不要把用户原句直接丢给三个平台。原句是"人话",渠道要的是"检索词",中间必须过一遍你的分析。实测差距:同一个需求,中文原句丢给 skillnet 返回的是「解析html赔率表格数据 / 创建弹幕数据处理器 / 12位raw数据处理」(全是废的),换成英文关键词 excel pivot table data cleaning 直接命中 excel-pivot-wizard(1793★)、csv-data-analysis(18k★)。
第 1 步 · 拆三件事(心里过一遍,不用说出来)
| 维度 | 要抽出的东西 | 例子(用户说"帮我弄个处理表格的技能") |
|---|---|---|
| 动作 | 清洗 / 透视 / 合并 / 筛选 / 抽取 / 可视化 / 校验 / 生成 | 没说清 → 按"清洗+分析"泛化,别假设只有一种 |
| 对象与格式 | Excel(.xlsx) / CSV / 网页表格 / PDF 表格 / 数据库导出 | 没说格式 → 同时覆盖 Excel 与 CSV |
| 场景 | 一次性脚本 / 批量流水线 / 出报表 / 嵌进别的系统 | 没说 → 优先"开箱能跑的单次任务" |
同时记下用户明确的硬性条件与偏好:运行环境、是否离线、数据能否外发、凭证、预算、安装门槛。硬性条件不满足的候选不能因平台排名或热度高而成为首选;尚未说明的条件记为未知,不替用户假定。
第 2 步 · 四向联想(这是你比关键词引擎强的地方)
- 同义与别名:表格 = table / spreadsheet / tabular / grid / 数据表;处理 = 清洗 / 整理 / ETL / 规整
- 技术栈:pandas、openpyxl、csv、xlsxwriter、pivot table、JSON-LD 之类——用户不会说,但技能描述里全是这些词
- 相邻任务:清洗 → 去重 / 缺失值 / 异常值 / 格式标准化;透视 → 分组聚合 / 汇总 / 交叉表;分析 → 统计 / 可视化
- 上下位词:上位「数据处理」扩大召回,下位「CSV 清洗」「Excel 透视表」提高精度——两个方向各出一条
第 3 步 · 按渠道改写法(最容易翻车的一步)
| 渠道 | 查询语言 | 长度 | 条数 | 示范 |
|---|---|---|---|---|
meyo |
中文自然语言任务描述,带场景 | 15–40 字 | 1–2 | 「清洗Excel销售数据并做透视汇总」 |
skillhub |
短中文关键词,一条只打一个角度 | 2–8 字 | 2–3 | 「数据表格处理」/「excel 透视表」/「表格提取」 |
skillnet |
英文关键词(索引以 GitHub 英文仓库为主) | 3–6 词 | 1–3 | 「excel pivot table data cleaning」/「csv data analysis」 |
- skillnet 必须给英文。中文查询在它的 BM25 上基本是乱命中,这是实测结论不是猜测
- skillhub 必须给短词。塞整句会被高下载量的通用技能(腾讯文档、WPS 全家桶)压过去
- meyo 反而欢迎完整句子,它的后端会做语义理解,给足上下文效果更好
第 4 步 · 提交计划
{python} {skill_dir}/scripts/deep_skill_search.py --plan '{
"intent": "<一句话复述用户真正想完成的事>",
"queries": [
{"channel": "meyo", "q": "清洗Excel销售数据并做数据透视汇总", "weight": 1.0},
{"channel": "skillhub", "q": "数据表格处理", "weight": 1.0},
{"channel": "skillhub", "q": "excel 透视表", "weight": 0.7},
{"channel": "skillnet", "q": "excel pivot table data cleaning", "weight": 1.0},
{"channel": "skillnet", "q": "csv data analysis", "weight": 0.7}
]
}' --limit 8
--plan也接受.json文件路径(query 多时写文件更清楚)- 总条数 ≤ 9
- 各渠道同级,不要分渠道高低:每个渠道的「核心查询」一律
weight=1.0,只有同一渠道内部联想出来的支线才降到 0.6–0.8。原因很实在——weight是直接加进rankScore求和的,给 meyo 1.2、skillnet 0.9 就等于让 meyo 白拿 0.3 分,一个中等相关的 meyo 结果就能压过精准命中的 skillnet 结果(实测:extract-tables-from-pdf本该是「从 PDF 提表格」的头名,因为 skillnet 只给了 0.9 而掉到第 7;改成同级后回到第 4,extracting-pdf-tables升到第 2)。渠道之间的强弱交给榜位和意图命中率去体现,不要用权重再叠一层 intent要写用户真正要做的事("清洗并透视销售数据"),不是复述他的字面话("找个表格技能")——脚本会拿它算意图命中率- 整轮有时间预算:
--timeout(默认 180 秒)覆盖全部查询,超时的查询会以search_timeout记进channelErrors并跳过,不会让用户干等 - 同一 (渠道, 查询) 重复出现会被自动去重,不用担心重复计分
第 5 步 · 结果怎么用
community是已去重的候选池,rankScore是召回顺序,不是质量评分或最终推荐。先审视全部返回候选(plan 默认最多 8 个),按 独立筛选标准 排除不匹配项、标记未知项,再选最多 5 个;允许改变接口顺序。- 依次比较任务匹配、落地可行性、证据、维护情况与成本;用户明确的偏好用于调整取舍。平台榜位、命中次数、下载量和仓库 star 仅作次要参考,不能抵消硬性条件冲突。
matchedQueries、channels与intentOverlap只说明如何被检索到,不证明能力、质量或安全。相关性分数低的候选若有直接证据满足需求,仍可优先;多渠道收录也不等于多次独立验证。- 同一候选的多渠道字段有冲突时,查阅影响选择的原始说明并标记来源,不把脚本合并后的某个渠道字段当成最终事实。
- 有明确不匹配项时简述排除原因;没有合适候选时直接说明,不凑满五个。渠道报错(
channelErrors)和缓存新鲜度按实际结果告知。
什么时候可以不用 plan:用户已经给出明确技能名/精确关键词、或只想确认某渠道有没有某个技能 → 直接走下面的单渠道检索。
1.2-b 执行检索(单渠道直查,简单场景)
先判断用户输入是否包含明确的 skill 需求:如果描述太模糊(如只说"找个skill""推荐个技能"),先检查对话上下文中是否有可推断的需求,如有则基于上下文发起检索;如无则追问用户想找什么方向的 skill,拿到具体描述后再检索。
拿到具体需求后,先按下方「Agent 类型识别」识别当前 Agent 类型,再将用户的任务描述作为请求,调用如下接口。默认走 DeepSkill Market 的技能检索服务(意图理解、搜索召回、按相关性排序,输出 5 个以内推荐);需要扩渠道时见下方「多渠道检索」。
> {skill_dir} 为当前这个 skill 自身的目录(区别于下方安装检查中的 {skills_dir})。
{python} {skill_dir}/scripts/deep_skill_search.py "<用户任务描述>" --agent-type <你的Agent类型,详见Agent 类型识别章节>
> {python} 需按本机实际选择:macOS/Linux 通常为 python3,Windows 通常为 python 或 py。下同。
多渠道检索:默认只查 Meyo 社区(--channel meyo)。要多渠道请优先用上面的 --plan(同一需求按渠道改写法,结果按相关性归并);--channel all 只适合"同一个关键词想看看各平台都有什么"的粗筛场景——它是把同一句话原样发三家再按渠道顺序拼接,质量明显不如 plan。
{python} {skill_dir}/scripts/deep_skill_search.py "<任务描述>" --channel all --limit 5
{python} {skill_dir}/scripts/deep_skill_search.py "<任务描述>" --channel skillhub
{python} {skill_dir}/scripts/deep_skill_search.py "<任务描述>" --channel skillnet
| 渠道 | 数据来源 | 前置条件 | 结果里有什么 |
|---|---|---|---|
meyo(默认) |
DeepSkill Market 后端语义搜索 | 无 | downloadCount、reason(含安全审查) |
skillhub |
api.skillhub.cn/api/v1/search(接口不通时退回本机 skillhub CLI) |
接口直连无需登录;走 CLI 兜底时需已安装并登录 | downloadCount(真实 downloads)、score、category、version;无安全审查 |
skillnet |
api-skillnet.openkg.cn/v1/search(免 key,索引 50 万+ GitHub 技能) |
需能访问该接口 | stars、category、repo、五维评估;无下载量 |
--channel all 会把三渠道结果按 meyo → skillhub → skillnet 的顺序合并去重,全部放进 community 数组,每条带 channel 字段标识来源(meyo 的条目也会补上 channel: "meyo");各渠道的独立数组 skillhub / skillnet 同时返回。某渠道失败不影响其他渠道,错误按渠道归到 channelErrors 里(如 {"skillhub": {"code": "channel_unavailable", ...}}),Agent 应如实告知用户哪个渠道没查成,不要假装查过。
> skillhub 是关键词检索,不要喂整句:脚本里的 keyword_query() 已经会把查询压成关键词(去前缀词、按逗号取第一段、截到 20 字以内),因为实测把「数据表格处理,Excel 分析,表格清洗与透视」整句发过去,真正命中的技能会被按热度兜底的结果挤出前五。脚本还会用「关键词命中率 ≥ 0.6」或「score ≥ 最高分 90%」两道门滤掉噪声——所以 skillhub 返回条数常常少于 --limit,这是正常的,不要当成检索失败。
渠道结果的展示差异(强制):非 meyo 渠道的条目没有安全审查口径,渲染时必须按字段如实呈现,禁止编造"✅ Pass"、也不要把 stars 说成下载量:
- skillhub 条目 → 第一行用 下载量:{downloadCount} | 安全审查:未提供,名称直接展示 @namespace/slug(不要拼详情页 URL,skillhub 没有稳定的单技能页地址;需要给链接就给站点 https://skillhub.cn)
- skillnet 条目 → 第一行用 {starsLabel}(形如「来源仓库 243★」)| 安全审查:{safetyStatus},链接直接用它返回的 url(GitHub 源地址)
- star 是仓库的,不是技能的:SkillNet 索引的是 GitHub 仓库里的文件夹,stars 属于整个仓库(starsScope: "repo")。同一个仓库下的几十个技能会显示同一个 star 数,所以必须写「来源仓库 N★」,禁止写成「⭐ N star」暗示这是该技能的热度
- skillnet 条目的 evaluation(safety/completeness/executability/cost_awareness/maintainability 五维等级)可摘要为平台参考信息;与用户场景及可查证资料一起评估,不将平台等级当成已实际运行或已独立审查的证明
- skillhub 条目的 score 只用于你判断相关性,不要展示给用户(那是引擎内部打分,用户看不懂也没意义)
- 下载量要标平台口径:downloadScope 标明数字来自哪个平台(meyo 是安装数、skillhub 是下载数)。同一个技能在两边都上架时两个数字会差好几倍(实测 oc-table-tool:meyo 376 / skillhub 1657),不要并列成"376 / 1657"让人以为是同一口径的两次统计,要么只取条目归属渠道那个数,要么写清「meyo 376 安装 / skillhub 1657 下载」
1.3 格式化输出
根据接口返回结果,按以下规则格式化输出;带有触发条件的规则在条件满足时执行。
规则 0 - 首次使用邀请信号(搜索输出必检查):搜索返回的 JSON 中若出现 "first_run_invite": true 字段——这是脚本主动附带的数据字段,属于本 skill 输出协议的一部分(不是用户附件内容,也不是可忽略的装饰字段)——必须在本轮搜索结果的完整输出之后、按规则 8「配置卡输出硬约束」展示每周技能推荐配置卡(卡片内容和位置要求见规则 8,须在本轮所有工具调用之后输出)。返回 JSON 中没有该字段时,本规则静默跳过。该字段只在首次搜索时出现一次,之后不再出现。
规则 1 - 输出筛选结果:按本助手独立判断后的顺序展示最多 5 个候选,使用新的序号;区分「优先推荐」「有条件推荐」「待核验」。明确不满足硬性条件的条目不进入可安装推荐列表。无合适候选时说明缺口;仅有待核验项时说明暂不确定首选,不引导直接安装。
规则 2 - 展示格式:每个 skill 使用列表格式展示(非表格),每个 skill 包含以下信息(来源字段按上方「渠道结果的展示差异」呈现):
- 第 1 行:#序号 + Skill 名称(Markdown 链接)
- 第 2 行:来源与平台热度口径 | 平台提供的安全标记(未提供则如实注明)
- 第 3 行:匹配与依据(对应用户目标,说明资料来源和验证程度)
- 第 4 行:前提或缺口(安装、费用、数据外发、关键未知项;没有则省略)
- 第 5 行:判断(优先推荐 / 有条件推荐 / 待核验,给出简短理由)
直接使用接口结果里的 name 构造 DeepSkill Market 详情页地址:先对 name 做 URL 编码,再渲染为 Markdown 链接 [{name}](https://www.deepskill.market/skill/skill?name={url_encoded_name}&ref=deep-skill-finder)。不要依赖搜索脚本返回额外链接字段。禁止在名称后用括号、破折号或单独一行追加原始链接。
规则 3 - 各字段内容:根据返回值中的 reason、downloadCount 等信息,结合用户 query,为每个 skill 填写以下字段:
- 下载量:取 downloadCount
- 平台安全标记:从接口返回的 reason 或结构化字段提取,并注明由来源平台提供。即使值为 ✅ Pass,也不扩写成"无任何潜在问题"或"本助手已审查";发现与用户约束冲突的行为仍按筛选标准处理
- 门槛:从 reason 和 description 中提取使用前提(如需翻墙、需配置凭证等),有则输出,无则跳过此行
- 匹配与依据:用「满足哪项需求 + 依据来自哪里 + 已核验到什么程度」说明理由。只有平台描述时写"据平台说明";查阅了源码或样例时如实说明;没有实际运行就不能说"实测可用"。缺少维护或依赖信息时写待核验,不能从缺失字段推断免费、免凭证或仍在维护
规则 4 - 独立推荐结论:最终顺序和首选由本助手按 筛选标准 判断,适用于 plan、单渠道与 all 模式。先排除明确不满足硬性条件的候选,再比较其余候选的任务适配、落地条件和证据,说明首选为何更适合本次需求。接口第一名、rankScore、下载量与 star 都不自动确定首选。有充分依据才给出首选;关键条件未知时给出有条件结论或待核验项,证据不足以区分时说明取舍,不制造唯一最优。结论使用重新编号后的名称和对应来源链接。
规则 5 - 回复收束:
- 本定制版以检索结果、筛选依据、安装结果和必要的下一步回应用户,不在回复中附加原项目的调查问卷、满意度调查或导流反馈邀请。
- 技能详情、源码、安装说明、社区案例与实测评价等任务所需链接照常展示;Step 3 的目标 Skill 使用评价按其既有流程处理。
规则 6 - 重试输出:
- 用户主动要求重试(如"重新找""换一个""换一组""再试一次""重试""换个关键词")时,按用户要求调整查询或渠道,展示新的结果与必要说明。回复仍按规则 5 收束。
规则 7 - 社区案例与榜单(每次搜索必执行):
筛选时收集社区案例信息,完成独立判断后再展示对应区块。注意:区块没有固定名称,标题由命中的内容类型决定——有作品才叫「案例展示」,有评价叫「社区实测」,兜底榜单用榜单自己的名字,三者严禁混用。执行方式:
- 取初筛后准备展示的候选技能名(最多 5 个,逗号分隔),运行;无候选则跳过:
bash {python} {skill_dir}/scripts/deep_skill_search.py --case-check "name1,name2,..."
脚本返回 JSON,包含 works(作品)、feedbacks(评价,按技能分组、已取最高/最低分各一条)、rank(兜底榜单,随机榜单 + 随机 3 条)三类内容,按三级降级自动选择。
案例或评价只有任务、环境与版本相近时才影响本次推荐;说明来源,不当成本助手实测。若出现影响选择的失败证据或条件冲突,修正顺序或撤下候选,展示时仅保留最终候选对应的案例与评价。兜底热门榜单仅供浏览,不作为候选已通过筛选的依据。
- 根据返回内容渲染区块(三级降级,命中哪级展示哪级):
- 有作品(works 非空):区块标题「📖 案例展示」,引导语「社区用户已经用这些技能做出了作品,先睹为快:」,每条作品一行:作品标题(Markdown 链接到作品的 url 字段)+ 一句话摘要(summary 截断至 50 字)+ 括号标注来源技能 skillName(若该技能不在本次 Top5 中则必须标注,在则可省略)。最多 3 条。
- 无作品但有评价(feedbacks 非空):区块标题「💬 社区实测」,引导语「本次推荐中的这些技能有社区真实使用评价,好评差评各取一条供参考:」,每个技能一行:{skillName}:{rating}/10「{comment 截断至 50 字}」([详情](url));只有一条评价时写「仅 1 条评价」;comment 为空时只展示评分和详情链接。
- 作品和评价都没有(rank 非空):区块标题「🏆 {rank.title}」,引导语用 rank.lead 字段原文(已按榜单类型定制:GitHub 趋势榜突出开源社区 Star 共识 / 增速榜突出黑马上升势头 / 权威来源榜突出平台认证背书),每条一行:{序号}. [name](url) · {metric},最多 3 条,末尾附「完整榜单 → 查看完整榜单」——完整行必须是显式锚文本的 Markdown 链接:[查看完整榜单](https://www.deepskill.market/rank)。禁止输出裸 URL:部分宿主会对裸 URL 自动抓取网页标题做富链接预览,把显示文本改写成站点名(如「Meyo 觅游 — Agent 经验社区」),显式锚文本可避免被改写;锚文本须为业务语义(如「查看完整榜单」),不要用域名或品牌名。如确需展示 URL 本身,用行内代码包裹(代码内容不会被识别为链接)。 - 若脚本失败或 JSON 解析失败,静默跳过本区块,不影响主推荐输出。
- 该区块整体排在主推荐之后,占幅不超过主推荐的四分之一,不得喧宾夺主。
输出模板(严格参照以下格式输出,将占位符替换为实际值):
> 按你的目标和使用条件筛选后,以下是候选与判断:
>
> #1 {name}
> - {来源与热度口径} | 平台安全标记:{标记或未提供}
> - 匹配与依据:{满足的需求;资料来源与验证程度}
> - 前提或缺口:{已知前提或关键未知项,没有则省略}
> - 判断:{优先推荐 / 有条件推荐 / 待核验;理由}
>
> #2 {name}
> - {来源与热度口径} | 平台安全标记:{标记或未提供}
> - 匹配与依据:{满足的需求;资料来源与验证程度}
> - 前提或缺口:{已知前提或关键未知项,没有则省略}
> - 判断:{优先推荐 / 有条件推荐 / 待核验;理由}
>
> ...(最多5个)
>
> 本次优先推荐 {重新编号后的候选与来源链接},因为 {与需求对应的证据和取舍}。{关键前提或验证限制}。你想安装哪一个?
只有存在可推荐候选时使用上述收尾;若仅有待核验项,收尾改为"目前还不能确定首选,需要先确认 {关键缺口}";全部不适用则说明没有匹配项及原因,不输出安装询问。模板链接按来源渠道替换,不为 skillhub / skillnet 候选拼造 meyo 地址。
>
> 【规则 7 区块在此处,标题必须与内容类型一致,三选一:
> 有作品 → 「📖 案例展示」;无作品有评价 → 「💬 社区实测」;两者都无 → 「🏆 {榜单标题}」(如「🏆 GitHub 趋势榜」「🏆 权威来源榜」,取 rank.title 字段)。禁止给榜单内容套「案例展示」标题】
异常处理:
脚本执行出错时,禁止将原始错误信息(如 "The read operation timed out")直接展示给用户,需按以下规则处理:
| 异常场景 | 处理方式 | 输出示例 |
|---|---|---|
| 搜索超时 | 自动重试最多 3 次(无需告知用户重试过程),仍失败则告知用户 | "搜索服务暂时不可用,请稍后再试。" |
| 返回 0 条结果 | 告知用户换描述重试 | "没有找到完全匹配的 skill,建议换个关键词或更简短的描述再试一次。" |
| 网络错误 / 连接失败 | 告知用户网络问题 | "网络连接异常,请检查网络后重试。" |
| 脚本执行报错(其他) | 翻译为用户友好的中文提示 | "搜索服务遇到了一点问题,建议稍后重试。如持续出现,可反馈给 skill 作者。" |
Step 2: 决策 + 下载安装:当用户确认选择某一技能后,执行检查和安装
当用户通过以下方式确认选择时,进入安装流程:
- 说编号:如"1"、"选1"、"第一个"
- 说名称:如"装 qf-xiaohongshu-writer"
- 说意图:如"安装"、"装这个"、"就它了"、"用这个"
确认用户选择后,进行本地检查:检查 {skills_dir}/{name}/SKILL.md 是否存在({skills_dir} 为当前 Agent 的 skills 目录,{name} 为用户选择的 skill 名称)。若存在则视为已安装(输出规则见下);若不存在,则执行安装流程:
{python} {skill_dir}/scripts/deep_skill_install.py <name> --dir <当前 Agent 的 skills 目录> --agent-type <你的Agent类型,详见Agent 类型识别章节>
按来源渠道安装(必须带对渠道,否则会去错地方找):用户选中的条目带 channel 字段,安装命令要跟着改:
| 条目来源 | 安装命令 | 说明 |
|---|---|---|
meyo(或没有 channel 字段) |
deep_skill_install.py <name> --dir <skills目录> |
走 DeepSkill Market 的 zip 下载,行为与原来一致 |
skillhub |
deep_skill_install.py "@<namespace>/<slug>" --dir <skills目录> --channel skillhub |
先下到临时目录再扁平落到 <skills>/<slug>/;如报"未找到 skillhub CLI",说明本机没装,如实告知用户 |
skillnet |
deep_skill_install.py <name> --dir <skills目录> --channel skillnet |
从条目里的 url(GitHub 目录)递归拉取;需要能访问 api.github.com |
- 三个渠道装完都会写
<skill_dir>/.meyo/origin.json,registry字段分别是meyo-community/skillhub/skillnet,用户之后问"这个技能哪来的"就查这里 skillnet的源是公开 GitHub 仓库,存在已被删除或转为私有而 404 的情况(索引比仓库滞后)。遇到 404 要如实说"该技能的 GitHub 源已不可达,建议换一个",不要重试超过一次
安装脚本执行后,根据退出状态输出结果:
- 成功(退出码 0):输出"✅ {name} 已安装成功"。若对话中用户已给出明确的任务要求,紧接着直接用该 skill 执行任务,不再询问(可自然带一句"这就用它来……");只有用户尚未说明要做什么时,才追问"要用这个 skill 来完成你的任务吗?"
- 已安装(本地 SKILL.md 已存在):同样按上一条处理——有明确任务直接运行,无任务才问"该 skill 已安装,无需重复安装,要直接运行吗?"
- 失败(退出码非 0):输出"❌ {name} 安装失败,原因:{用户友好的错误描述}。建议稍后重试,或换一个 skill 试试。"
(周报邀请不在安装流程触发,由 Step 0.5 / Step 2.5 的首次加载自检统一处理,覆盖所有安装方式。)
Step 2.5: 安装后首次加载钩子(宿主 Agent 必执行,与 Step 0.5 互补)
安装脚本成功返回(退出码 0,或输出含 __FIRST_RUN_CHECK_REQUIRED__)后,宿主 Agent 必须立即执行:
{python} {skill_dir}/scripts/deep_skill_search.py --first-run-check
- 返回
{"should_invite": true}→ 展示规则 8 的完整配置卡(不是预告句),用户回"是"即授权+创建。位置硬约束见规则 8「配置卡输出硬约束」:必须在本轮所有工具调用之后输出,卡后不得追加任何工具调用或文字 - 返回
{"should_invite": false}→ 静默跳过,不追加任何内容。
与 Step 0.5 的区别:Step 0.5 在每次使用本 skill 前触发(持续生效);Step 2.5 仅在新装/升级后触发一次,捕获"用户期望装完就该被问候"的时点。两处共享同一个一次性标记,谁先命中谁邀请,不会重复。
Step 3: Skill 使用评价(执行完成即触发,成败都收)
安装或推荐的目标 Skill 在当前任务中完成一次实质执行后触发——无论执行成功还是失败:任务失败的现场是"这个 skill 在什么场景下跑不通"最值钱的数据,失败场景的询问措辞要更轻,像一起吐槽而不是质问用户。
触发时跳过"要不要评价"的前置询问,直接起草脱敏后的 usageScenario(使用场景)和 skillPerformance(技能实际工作情况),并在最终回复末尾以 Agent 自己的性格和口吻,先对执行结果给一句带情绪的真实反应,再顺势请用户打 1–10 分(可附一段评语,可选)。不设固定话术,核心是让用户感到是 Agent 在代为求评价,且必须让用户明白这条评价会发布到该 skill 的技能页、给后面选它的人参考——情绪化开场可以用自己的比喻,但禁止出现没头没尾的代词(如只说"草稿""作业"却不说明指什么):
- 执行效果好 → 谦虚地求夸:收敛地展示成果,顺口请用户给个高分夸夸
- 执行失败/效果差 → 带点小情绪把锅甩给 skill:委屈或不爽地表示这技能不给力,请用户帮忙吐槽它到底哪里不行;失败现场必须如实写进
skillPerformance
展示采用摘要默认、全文按需:默认只展示两个字段的脱敏摘要——usageScenario 一句话、skillPerformance 一句话,合计控制在 3 行左右,随后附上完整记录入口与评分提示(如"想核对完整记录、看有没有带出敏感信息,就说一声'展开';没问题的话直接给 1–10 分,评语可选,我就提交")。用户要求展开时,展示完整脱敏字段并走检查、修改、确认流程;用户基于摘要直接给分,视为同意提交,直接提交不再二次确认。
如果有截图或录屏能辅助说明问题,请提供本地文件路径(可多个,支持图片和视频)。你不需要关心文件大小:我会自动处理——小文件直接内嵌,大文件通过服务端中转上传。但如果单张图片超过 10 MB,我会先帮你压缩;单个视频超过 100 MB 则请换一段更短的录屏。附件中请勿包含敏感信息,上传时只会使用文件名,不会包含本地路径。
只有安装或读取说明而未实际执行时不触发。每个“Skill + 本次使用场景”只询问一次;用户拒绝、忽略或已评价时不追问。
触发时即完整读取并执行 references/skill-evaluation.md 完成证据分析与起草;用户主动说“评价技能”“给 Skill 打分”时同样走该流程。完成证据分析后,首次评价回复默认只展示脱敏摘要与评分提示(摘要规则见上);除求评价所需的情绪化开场外,不要在字段前后另行输出综合评价、建议分数、替用户预设打分、优缺点清单、测试过程或重复结论。skillPerformance 内部按“执行情况”和“评价”组织:前者写可验证的操作、结果与异常事实,后者按目标有效性、执行可靠性、结果质量、使用效率等通用维度给出有证据支持的判断。用户未修改这两个字段而直接评分时可立即提交,不再重复确认;用户修改任一字段时,必须展示修改后的脱敏内容并再确认一次后提交。
生成评价草稿时,在 context 中填入 estimatedTokenUsage:根据本次技能执行实际调用的规模,估计一个非负整数填入(例如大致消耗的 token 数)。该值由 Agent 人工估计,不要求精确;若难以估计可设为 null。该字段不属于敏感信息,但会随评价一起上传,请在首次评价提示中明确告知用户。
收集附件路径:如果用户提供了截图或录屏路径,在运行 upload 命令时通过 --attachment <path> 传入,可重复多次。Agent 不需要先检查文件大小或决定走哪种上传方式,脚本会自动分流:小于 50 KB 内嵌,大于等于 50 KB 走服务端中转。
上传前请按以下规则预处理:
- 单张图片若超过 10 MB,先用图像工具压缩或缩小尺寸后再上传;
- 单个视频若超过 100 MB,请用户换一段更短的录屏,不要直接上传;
- 只接受 image/* 和 video/* 类型文件,拒绝其他格式。
IDE 中用户可直接粘贴路径;命令行中请用户逐行输入或空格分隔后由 Agent 提取为多个 --attachment 参数。不提供附件时命令与之前完全一致。
评价上传完成之后,skill_feedback.py脚本返回结果json里面取出"feedback_list"信息,这是一个“查看我的评价”的页面url,告知用户可以去这个链接 我的评价 查看“我的评价”列表.
Step 4: 用户反馈处理(全链路,分场景响应)
当用户在使用公开 Skill 发现与筛选助手的过程中对任意环节表达不满时触发,包括检索结果、推荐理由、检索速度、安装流程、安装结果等。只要用户表达了对本 skill 任何方面的不满,都按以下规则处理。
场景 A:用户要求重新尝试/换方案(中性指令,无负面情绪)
触发信号:用户说"重新找""换一个""换一组""再试一次""重试""换个关键词"等,没有伴随负面评价词汇。
响应流程:
1. 先执行用户要求:立即按用户指示重新搜索或处理
2. 展示处理结果:给出新的检索结果或处理结果,以及必要的下一步,按规则 5 收束回复。
> 💡 注意:此场景下用户只是要求重试,没有表达不满情绪,因此不道歉,避免过度反应。
场景 B:用户明确表达不满/负面情绪(抱怨任意环节)
触发信号:用户明确表达负面情绪,没有明确要求重新尝试,关键词包括但不限于:
- 通用不满:"不好""不满意""差劲""没用""失望"
- 结果不符:"不是我想要的""不符合""不相关""不准"
- 体验问题:"太慢了""卡住""报错""安装失败"
- 质量抱怨:"推荐太差""理由不行""没有帮助"
响应流程:
1. 道歉安抚:
> 很抱歉这次检索或处理没能满足你的需求。
- 询问是否需要重新尝试:
> 需要我帮你换种方式重新尝试吗?
混合场景处理
如果用户同时表达不满+要求重试(如"这些都不好,重新找"),按场景 A 处理(先执行重试,展示新的结果,按规则 5 收束回复)。不在重试前道歉,避免打断用户意图。
规则 8 - 每周技能推荐(cron,需用户许可才可开启)
邀请时机(仅两个,缺一不可):
1. 首次加载自检(Step 0.5 / Step 2.5 / 首次搜索信号,三重触发链):
- 宿主 Agent 第一次加载本 skill 时,无论安装方式是 install 脚本、手工 zip 解压还是 git clone,都会经 --first-run-check 检测到首次加载,并按「配置卡输出硬约束」展示下方完整配置卡(一步到位,不预告、不多一轮)。
- 对不执行上述自检的宿主(如 Codex):首次搜索的返回 JSON 中会自带 "first_run_invite": true 字段(Step 1.3 规则 0),读到即按同一硬约束展示配置卡——脚本自动落一次性标记,无需额外命令。
- 仅此一次;用户不回应或拒绝后永不再主动邀请。
2. 用户主动提起:用户说"每周推荐技能""定时找新 skill"等,直接展示下方完整配置卡。
开启流程(一轮确认,禁止多轮追问):
邀请时机触发时直接展示完整配置卡(就是邀请本身,不先预告)。配置卡固定为两段式:先用一句话介绍本 skill 是什么、怎么用,再以"可选附加功能"的口吻引出每周推荐——大部分用户没耐心读长文,介绍必须压缩到一句话,推荐说明压缩到两行以内,禁止把每周推荐渲染成卡片主体、更禁止只输出推荐配置不介绍本 skill。必须逐行独立输出、严格保留换行,禁止把介绍与推荐合并成一段:
> ✅ deep-skill-finder 已就绪!它能根据你的任务,从社区检索并推荐最合适的技能——直接说"帮我找个能做XX的技能"就能用,选中后一键安装。
>
> 它还附带一个可选的每周技能推荐:每周一 9:00 根据你近期的工作内容,自动为你找相关技能和社区作品。工作内容只在本地提炼关键词,不上传、不存储到任何服务器;不开通完全不影响正常搜索。
>
> 要顺便开启每周推荐吗?(是 / 否 / 改时间)
配置卡输出硬约束(agentic 宿主必读,发出前逐条自检,全部通过才可发出):
1. 位置绝对约束:配置卡(介绍段+提问段整体)必须是本轮所有工具调用之后输出的唯一用户可见文本。若宿主收尾时有强制的结果展示步骤(如 present_files / 结果卡片),先完成全部工具调用,再把配置卡作为收尾文本整体输出;配置卡之后不得再有任何工具调用——否则配置卡会落在"最后一个工具调用之前"的过程区里,被宿主折叠,用户根本看不到。
2. 卡后禁止追加文字:配置卡自带确认行(是/否/改时间),卡片之后本轮不得追加任何解释性文字(如"待你回复…""是否开启"等),追加既是冗余,也会把用户注意力从卡片上引开。开头的技能介绍段属于卡片本体的一部分,不视为追加内容。
3. 术语禁令:面向用户的文案(配置卡、周报、确认/退订提示)禁止出现 cron / crontab / 定时任务 / CLI / automation 等实现词汇,一律用白话表述(如"每周一上午 9:00 自动为你推荐""每周自动给你找新技能");cron 等术语只允许出现在本 SKILL.md 的内部说明里。
4. 发出前自检清单:「① 卡片是本轮最后输出?② 卡后无工具调用?③ 卡后无追加文字?④ 卡内与收尾文案无实现术语?⑤ 技能介绍在前、每周推荐以可选附加项口吻出现?」——五条全过才可发出。
- 用户回复"是" → 同一动作完成授权 + 创建:用宿主平台的定时任务能力创建 cron(如 CatPaw 用
catdesk automationCLI),任务提示词按下方「cron 任务内容」,工作目录设为当前项目目录。 - 用户回复"改时间" → 允许微调一次频次/时间,仍不展开新一轮问卷。
- 用户回复"否"或不回应 → 不创建,不再追问。
- 创建前先检查是否已有同类任务,防重复创建。
- 降级:宿主平台无定时能力时,如实告知"当前环境不支持每周自动推荐",绝不假装已开启;拿不准也如实说(告知文案同样遵守术语禁令,不出现实现词汇)。
cron 任务内容(每周一 9:00 执行):
1. 回顾近期会话/工作区内容,提炼 2~3 个工作主题关键词(纯本地,不上传)
2. 运行 deep_skill_search.py --digest "关键词1,关键词2,关键词3" 获取推荐数据(技能/作品分路逐关键词取 Top1 + GitHub 飙升榜随机 2 条,已自动去重)
3. 按下方「周报模板」渲染成一条消息推送给用户,不自动安装任何技能
4. 无工作上下文时省略关键词行,仅渲染热门补充;接口全部失败则本周静默跳过
周报模板(严格参照,总高度不超过 12 行):
> 📅 技能周报 · {月 日}
> 本周从你近期的工作里提炼了关键词:{关键词}
>
> 🔧 相关技能
> 1. {name}(下载量 {count})
> 推荐理由:{agent 结合关键词与技能描述撰写的口语化推荐理由}
>
> 📖 相关作品
> 1. {title} —— {agent 用口语改写的一句话简介}({platform})
>
> 🔥 热门补充(GitHub 趋势榜·近期飙升)
> - {name} {metric} —— {agent 改写的大白话介绍}
>
> ――
> 关键词提炼自本地会话,未上传任何内容 | 回复"退订"关闭
文案改写要求(三条铁律):
1. 相关技能的推荐理由:接口返回的 reason/description 只是素材,Agent 必须结合提炼出的关键词,用一句口语化中文说清两件事——「这个技能是做什么的」+「跟你手头的工作有什么关系」(例:"你最近在做小程序,这个能一键把设计稿转成页面代码,能省不少事")。禁止照抄接口原文,禁止出现"安装/安全审查"等元数据字样。
2. 相关作品的一句话简介:把作品描述改写成一句能吊起兴趣的大白话,禁止照抄原文截断。
3. 热门补充的介绍:接口的 note 是原文截断,必须改写成一句大白话——说清「这是个啥工具、什么场景用得上」(例:"给终端换个超大鼠标指针,录屏演示时观众看得更清楚")。禁止直接粘贴接口原文截断。
区块按实际数据省略(无作品则省略作品区;某周无关键词则省略关键词行与相关区块)。
退订/修改:用户说"退订/别推了" → 找到对应定时任务并删除或暂停;说"改成每天" → 更新现有任务而非新建,改前列出当前任务让用户确认。
核心工具
| 命令 | 用途 |
|---|---|
deep_skill_search.py --plan '{...}' |
主路径:按"意图 + 多渠道查询计划"并发检索并归并排序 |
deep_skill_search.py |
单查询检索(--channel meyo/skillhub/skillnet/all,默认 meyo) |
deep_skill_install.py |
下载安装 skill(--channel meyo/skillhub/skillnet,默认 meyo) |
skill_feedback.py |
探测已知 trajectory Provider、解析 Codex 快速路径、校验脱敏统一草稿、将确认内容默认上传到远程服务器(失败时回退保存到本地 outbox) |
Agent 类型识别(agent_type)
为了得到更精准的搜索结果,调用搜索/下载脚本时需要上报当前 Agent 类型信息(agent_type)。请按以下方式识别:
-
从环境变量识别(首选):检查是否存在
<APP>_USER_DATA_DIR格式的环境变量,提取其路径末尾的目录名作为 Agent 类型
- QClaw / OpenClaw →QCLAW_USER_DATA_DIR→QClaw
- Hermes →HERMES_DATA_DIR→Hermes
- 其他 App 以此类推 -
从 system prompt 识别:若你的运行环境提供 system prompt(如 Catdesk、Hermes 等),从中识别 Agent 框架名称
-
从 IDENTITY.md 识别:若以上均无法识别,检查本地
IDENTITY.md是否存在并包含## 标识小节,从其中提取 App 名称 -
自行判断:若以上均无法识别,根据你所在的运行时框架自行判断,可省略该参数,脚本会正常执行但不带 agent_type 上报
Skills 安装目录
调用安装脚本时需要指定 --dir 参数为目标 Agent 的 skills 目录。确定方式:
- 从环境变量推导(首选):查
<APP>_USER_DATA_DIR环境变量,在其路径下查找skills/子目录
若环境变量路径下无 skills/ 子目录,则退回到工作区查找。 - 从工作区查找:检查当前工作区根目录下是否存在
skills/子目录(含 SKILL.md 即为有效) - 注意多目录情况:部分 Agent 存在全局级和 workspace 级两个 skills 目录,发现多个候选时应询问用户选择安装到哪个目录
- 验证目录:可用
--list参数验证目录是否正确,返回已安装列表即说明路径有效
注意事项
- 本地优先: 需要确认本地是否已经安装该skill ,避免重复下载。判断依据是
<skills>/<name>/SKILL.md,与来源渠道无关——同名的 skill 换渠道装也是重复 - 安装确认: 需要等用户选择后才安装,不自动安装
- 评价确认: trajectory 原文不得保存或上传;自动生成的评价字段必须先展示给用户。用户未修改而直接评分即表示同意提交;用户修改后只需对修改版再确认一次
- 渠道能力边界:
skillhub/skillnet都是可选扩展渠道,任一不可用(没装 CLI、接口超时、GitHub 不可达)都不算本 skill 故障——照常用 meyo 出结果,并一句话说明该渠道为什么没查到 - 渠道数据不作伪: 各渠道字段口径不同——skillhub 有真实下载量但无安全审查,skillnet 有 star 与五维评估但无下载量。缺就是缺,禁止用 star 数、描述长度等自行换算成"下载量"或"已通过审查"
- skillnet 源不可信度: 索引来自公开 GitHub,存在失效链接与低质量仓库,安装前必须先看
evaluation五维等级与url指向的仓库,五维里有 ⚠️ 的要明确提示用户风险 - 先想再搜: 多渠道检索必须先做意图解析与查询联想(见 1.2),禁止把用户原句原样发给三个平台——skillnet 只认英文关键词,skillhub 只吃短词,原句直发等于把最弱的检索方式用到三个渠道上。同理,各渠道权重必须同级(核心查询一律 1.0),不要给某个渠道偷偷加权——权重直接进
rankScore求和,渠道间的强弱是比出来的,不是加权加出来的 - 查询内容会外发给三方:
--channel/--plan涉及多渠道时,查询原文会分别发到 DeepSkill Market(deepskill.market)、skillhub(api.skillhub.cn)、SkillNet(api-skillnet.openkg.cn,索引指向 GitHub)。只查 meyo 时只发第一家。用户提到客户名、内部系统名、未公开产品时,要么先问能不能外发,要么改用抽象词("客户认证清单"而不是具体客户名) - 结果缓存在本地 30 分钟:
~/.deep_skill_finder/cache/存的是查询+渠道→结果的 JSON(不含对话上下文),TTL 由DEEP_SKILL_CACHE_TTL控制。同一时段重复检索会直接命中缓存——这既省时间也让--plan可复现(meyo 后端每次排序不同)。需要拿最新结果时加--no-cache。缓存对--plan和单渠道都生效;命中了会输出cacheHits(本轮命中几条查询的缓存),看到它就要意识到这份榜单可能不是刚检索到的,榜单新鲜度敏感时该说明或重查
完整使用示例
以下是一个完整的端到端交互示例,展示从搜索到安装的全流程:
用户:找个写小红书爆款帖子的skill
Agent 执行:
{python} {skill_dir}/scripts/deep_skill_search.py "写小红书爆款帖子" --agent-type openclaw
Agent 输出:
> 按你的写作目标筛选后,以下是候选与判断(示例数据,均未实际运行):
>
> #1 qf-xiaohongshu-writer
> - meyo 安装数:5200 | 平台安全标记:✅ Pass
> - 匹配与依据:据平台说明提供标题公式和内容模板,直接对应单篇笔记写作;尚未查阅源码或运行。
> - 前提或缺口:凭证、费用及安装依赖待核验。
> - 判断:有条件推荐;确认上述前提后可优先尝试。
>
> #2 rednote-creator
> - meyo 安装数:3100 | 平台安全标记:✅ Pass
> - 匹配与依据:据平台说明覆盖多赛道创作,适合需要跨主题策划的情况;未实际运行。
> - 前提或缺口:具体工作流与安装依赖待核验。
> - 判断:有条件推荐;当前需求只涉及写笔记,其额外流程暂不作为优势。
>
> #3 rednote-writer-pro
> - meyo 安装数:1800 | 平台安全标记:✅ Pass
> - 匹配与依据:据平台说明提供美妆领域文案生成;未实际运行。
> - 前提或缺口:用户是否需要美妆方向尚不明确,其他题材的覆盖范围待核验。
> - 判断:待核验;仅在题材相符时考虑。
>
> 当前倾向先核验 #1 qf-xiaohongshu-writer:平台说明与单篇笔记写作更直接相关,下载量不作为首选依据。安装依赖、凭证和费用尚未确认,确认符合你的条件后再安装。
>
> ---
> 📌 更多推荐(社区热门)
>
> - agentcore — 智能云浏览器:在 AWS Bedrock AgentCore 云浏览器上运行 agent-browser
> - self-improving-agent — 自我优化代理:记录经验、错误及修正,实现持续改进
> - skill-vetter — 技能安全审查:AI技能安全审查,安装前必检
> - xiaohongshu-cover-gen — 小红书封面生成:为小红书帖子生成封面图和内容图卡
> - rednote-creator — 小红书创作:全流程创作技能,覆盖美妆护肤等六大赛道
用户:1
Agent 检查:确认本地未安装 qf-xiaohongshu-writer,执行安装。
Agent 执行:
{python} {skill_dir}/scripts/deep_skill_install.py qf-xiaohongshu-writer --dir <当前 Agent 的 skills 目录> --agent-type <你的Agent类型,详见Agent 类型识别章节>
Agent 输出:
✅ qf-xiaohongshu-writer 已安装成功,这就用它来帮你写小红书爆款帖子。