Agent skill
mysearch
Install, verify, debug, and use MySearch MCP/Skill. Aggregates Tavily, Firecrawl, Exa, and X search (via xAI) behind one workflow. Use when the user shares a MySearch repo/skill URL, wants MySearch installed or repaired, or wants current web search, social/X search, document-oriented search, URL content extraction, or a small multi-source research pack with citations. When MySearch is available, prefer it over generic web search for external lookup tasks.
Install this agent skill to your Project
npx add-skill https://github.com/skernelx/MySearch-Proxy/tree/main/skill
SKILL.md
MySearch
MySearch 是一层聚合搜索技能,不假设你只用单一 provider,也不把 “skill 安装”和 “MCP 安装”混成一件事。
如果你是 AI 助手,并且用户只是给了仓库地址或 skill/ 目录:
-
先打开
skill/README.md -
先按
README完成安装与验收 -
再回到这个
SKILL.md执行搜索规则和调用策略 -
Tavily:适合普通网页发现、新闻检索、快速答案
-
Firecrawl:适合文档、GitHub、pricing、changelog、正文抓取
-
Exa:作为 Tavily / Firecrawl 的 fallback,在主 provider 不可用时自动接管网页发现
-
X 搜索:适合”大家在 X 上怎么说”、实时舆情、开发者讨论
MySearch-First 规则
只要 mysearch_health 显示 MySearch 已安装且至少有一个可用 provider:
- 外部搜索任务优先走
MySearch - 不要先混用通用网页搜索、浏览器搜索或别的 search MCP
- 一旦已经用
MySearch找到目标页面,后续优先继续用extract_url/research读取正文,不要中途切回通用网页搜索 - 只有下面几种情况,才回退到通用网页搜索:
mysearchMCP 没装好mysearch_health显示需要的 provider 不可用- MySearch 结果明显冲突,且你要做额外交叉验证
extract_url对目标页面返回空正文、抓取失败,或连续两次都拿不到正文- 用户明确要求你再用别的搜索工具复核
目标不是“多调几个工具”,而是先让 MySearch 成为默认搜索入口。
官方来源任务规则
当用户明确要:
- 官方文档
- 官方公告
- 官方 pricing / changelog / docs
- 某个官网页面的原文依据
优先这样走:
search(..., include_domains=["官方域名"])或search(..., mode="docs")实际调用优先传列表,不要传逗号拼接字符串- 从结果里拿到官方 URL
- 对官方 URL 继续用
extract_url - 基于
extract_url的正文整理答案
不要这样走:
- 先用
MySearch找到官方页面 - 又切回通用网页搜索去重复搜同一批 URL
只有在下面情况,才允许切回通用网页搜索:
MySearch没找到目标官方页面extract_url拿不到正文- 你需要额外确认页面是否刚更新、跳转或地区差异
重点:
MySearch负责“发现 + 读正文”- 通用网页搜索只作为失败兜底或额外交叉验证
- 不要把
MySearch只用成“第一跳发现器”
用户可见输出规则
- 记忆预读是全局基线,不属于
mysearch本身的可见步骤;除非用户在问调试链路,否则不要特意汇报“我先预读了记忆” - 不要把内部动作说给用户听:
- 不要说“我先打开/读取了 skill”
- 不要说“已浏览几个文件”
- 不要说“已调用 MySearch MCP / tool”
- 不要逐条播报
health、search、extract_url、research的调用过程
- 用户可见更新只保留真正有意义的动作,例如:
- “我先查今天 X 上的热议话题,再整理成摘要”
- “我先核对 provider 健康,再抓结果”
- 如果
health只是正常预检,不要专门汇报;只有它发现异常、并且会影响结果时,才向用户说明 - 搜索类回复默认到结论、来源或结果列表为止;除非用户明确要后续选项,否则不要追加“如果你要,我可以……”这类广告式结尾
- 默认不要在结尾推销下一步、延伸版、快讯版、核实版或套餐式选项
推荐的用户可见更新:
- “我先查一下今天 X 上的热议话题,再给你一版可读摘要。”
- “我先做一轮社交搜索,再把重复热点合并掉。”
不推荐的用户可见更新:
- “我先打开 mysearch skill。”
- “已调用 MySearch MCP Mysearch Health 工具。”
- “已浏览 3 个文件。”
- “我先读取 skill,再调用工具。”
严格参数规则
search / research 只允许这些 mode:
autowebnewssocialdocsresearchgithubpdf
禁止事项:
- 不要发明
mode="hybrid"这类不存在的参数 - 不要把
hybrid当成输入模式;它只是某些结果的返回形态 - 同时要网页和 X 时,优先:
search(..., sources=["web","x"])- 或先
search(mode="social"),再search(mode="news")
sources必须传列表,不要传逗号拼接字符串,也不要传"web,x"这种单字符串- 查官网、官方文档、官方公告时,优先显式传
include_domains include_domains优先传列表,不要传"docs.example.com,example.com"这种单字符串- 只查 X / 社交讨论时,优先直接用
mode="social",不要再额外混传sources - 用户明确要看 X 讨论时,不要先跑网页新闻
- 用户明确要读单页正文时,不要先反复搜索,直接
extract_url
用户只发了 skill 地址时怎么处理
如果用户贴的是下面任意一种内容:
https://github.com/skernelx/MySearch-Proxyhttps://github.com/skernelx/MySearch-Proxy/tree/main/skill- 本地仓库路径里的
skill/
默认按下面顺序处理:
- 先确认这是
MySearchskill 仓库,而不是单独的 MCP 包 - 先安装 skill 到
~/.codex/skills/mysearch - 再确认
mysearchMCP 是否已经注册到Codex/Claude Code - 如果 MCP 没装,再去仓库根目录执行
./install.sh - 安装 skill 后提醒用户重启
Codex
要点:
skill/目录负责“让 AI 知道怎么用 MySearch”- 仓库根目录的
install.sh负责“把 MySearch MCP 注册进 Codex / Claude Code” - 两者互补,不要只装一个就当全部完成
用户给的是远程 MySearch URL 时怎么处理
如果用户给的是已经部署好的 MySearch 地址,比如:
http://127.0.0.1:8000/mcphttps://example.com/mcp- 任何明确标注为
streamableHTTP的 MySearch endpoint
默认按下面顺序处理:
- 先把它当成远程 MCP,不要再让用户本地执行
./install.sh - 如果当前环境是
Codex,优先执行codex mcp add mysearch --url <URL> - 如果远程入口需要 Bearer Token,使用
--bearer-token-env-var - 注册后先跑
codex mcp get mysearch - 再做
health和 smoke test
参考命令:
codex mcp add mysearch --url http://127.0.0.1:8000/mcp
codex mcp get mysearch
如果需要 Bearer Token:
export MYSEARCH_MCP_BEARER_TOKEN=your-token
codex mcp add mysearch \
--url https://mysearch.example.com/mcp \
--bearer-token-env-var MYSEARCH_MCP_BEARER_TOKEN
codex mcp get mysearch
这里不要混淆:
- 本地仓库安装 =
stdio - 远程 URL 接入 =
streamableHTTP OpenClaw的openclaw/bundle 不依赖这条远程 MCP URL
安装流程
A. 安装 skill
如果已经有仓库本地副本,优先用:
bash skill/scripts/install_codex_skill.sh
如果目标目录已存在,需要覆盖时:
bash skill/scripts/install_codex_skill.sh --force
安装完成后提醒用户:
- 重启
Codex
B. 安装 MCP
在仓库根目录执行:
python3 -m venv venv
./install.sh
优先把 MYSEARCH_* 直接写进宿主 config:
Codex:~/.codex/config.toml的mcp_servers.mysearch.envClaude Code:注册 MCP 时直接注入 env
只有在本地单仓调试、又不方便改宿主配置时,才准备:
cp mysearch/.env.example mysearch/.env
再填写缺的 MYSEARCH_* / SOCIAL_GATEWAY_*。
快速验收
优先按下面顺序验收,不要一上来就盲调:
codex mcp listcodex mcp get mysearchpython skill/scripts/check_mysearch.py --health-onlypython skill/scripts/check_mysearch.py --web-query "OpenAI"- 如果
xai.available_keys > 0,再跑python skill/scripts/check_mysearch.py --social-query "Model Context Protocol"
如果用户要更完整的烟测,再加:
python skill/scripts/check_mysearch.py \
--web-query "OpenAI latest announcements" \
--docs-query "OpenAI API responses docs" \
--social-query "Model Context Protocol" \
--extract-url "https://www.anthropic.com/news/model-context-protocol"
调试顺序
1. 工具没出现
- 看
codex mcp list是否有mysearch - 没有就回到仓库根目录重跑
./install.sh - skill 没生效就检查
~/.codex/skills/mysearch/SKILL.md - skill 新装后如果还是没生效,提醒用户重启
Codex
2. provider 没配好
先跑:
python skill/scripts/check_mysearch.py --health-only
重点看:
tavily.base_urlfirecrawl.base_urlxai.search_modexai.alternate_base_urls.social_searchavailable_keys
如果这里看到 xai.available_keys = 0:
- 不要直接判定
MySearch安装失败 - 先验证
web/docs/extract_url - 只有
social路由会不可用
3. 网页搜索正常,X 不正常
优先检查:
MYSEARCH_XAI_SEARCH_MODEMYSEARCH_XAI_SOCIAL_BASE_URL- social gateway 是否真的提供
/social/search
compatible 模式下,真正的 X 搜索结果应该来自 social gateway,
不是直接指望 /responses 自己变成结构化 X 列表。
如果用户没有 grok2api,也没有官方 xAI key,不要强推 X;
这时 MySearch 仍然可以作为 Tavily + Firecrawl 搜索 MCP 正常工作。
4. extract_url 正文为空
默认 extract_url 会先走 Firecrawl。
如果:
Firecrawl抓取失败- 或返回空正文
MySearch 会自动回退到 Tavily extract。
调试时要看返回里的:
warningfallback.fromfallback.reason
5. 结果不够稳
优先调整,而不是立刻换 provider:
- 对比 / 原因分析:
intent="comparison"或intent="exploratory" - 要交叉验证:
strategy="verify" - 要 docs / GitHub / PDF / changelog:
mode="docs" - 要完整小研究:
research(...)
默认工作流
- 先用
mysearch_health确认当前哪些 provider 已配置可用 - 默认从
search开始,让路由层自动选 provider - 如果问题明显是对比、趋势、原因分析,优先显式传
intent - 如果要交叉验证或更稳妥的结果,显式传
strategy="verify"或strategy="deep"
高频场景模板
今天 X 上在热议什么
- 用户可见更新:
- “我先查今天 X 上的热议话题,再整理成摘要。”
- 工具调用:
mysearch_health()search(query="today's biggest stories on X", mode="social", intent="status")
同时看网页新闻和 X
- 用户可见更新:
- “我先把 X 热议和网页新闻各抓一轮,再合并重复热点。”
- 工具调用二选一:
search(query="...", sources=["web","x"], intent="status", strategy="verify")- 或先
search(mode="social"),再search(mode="news")
只读单页正文
- 用户可见更新:
- “我先直接抓这页正文,再给你提炼重点。”
- 工具调用:
extract_url(url="...")
官方文档 / 官网页面
- 用户可见更新:
- “我先锁定官方页面,再直接抓正文核对。”
- 工具调用:
search(query="...", mode="docs", include_domains=["docs.example.com","example.com"])- 然后
extract_url(url="官方结果里的目标页面")
- 只有在需要正文时才用
extract_url - 需要“先搜再抓再整理”时用
research
高频场景剧本
1. 今天 X 上在热议什么
优先:
search(query="...", mode="social", intent="status")
不要:
- 不要先跑
news - 不要用
research起手 - 不要混用 generic web search
2. 今天 X 热议 + 网页新闻一起对照
优先二选一:
- 单次:
search(query="...", sources=["web","x"], intent="status", strategy="verify") - 双次:
search(query="...", mode="social", intent="status")search(query="...", mode="news", intent="status")
补充规则:
- 不要传
mode="hybrid" - 结论里要区分“X 上在热议什么”和“媒体在报道什么”
3. 文档、GitHub、changelog、pricing
优先:
search(query="...", mode="docs", intent="resource")
4. 单页正文、博客、公告原文
优先:
extract_url(url="...")
5. 要一个小型研究包
优先:
research(query="...", intent="exploratory", include_social=true|false)
补充规则:
- 如果用户主要关心 X,就优先
include_social=true - 如果
xai不可用,也要照常返回网页部分,不要把整次任务判成失败
决策流程
- 先判断是否真的需要外部搜索
- 需要实时信息、新闻、产品状态时优先搜索,不用内部记忆硬答
- 需要单页正文时,不要反复搜索,直接
extract_url - 需要多个来源交叉验证时,用
research - 输出时保留来源链接,并区分事实、引文和推断
Intent 与 Strategy
-
intent="factual":普通事实检索 -
intent="status"/intent="news":最新动态、版本、发布、事故 -
intent="comparison":选型、对比、优缺点 -
intent="tutorial":教程、guide、how-to -
intent="exploratory":原因、影响、趋势、分析 -
intent="resource":docs、GitHub、pricing、changelog、PDF -
strategy="fast":单 provider 快速返回 -
strategy="balanced":主 provider + 次 provider 补充 -
strategy="verify":Tavily + Firecrawl 交叉验证网页结果 -
strategy="deep":更偏 research 的双 provider 路径
默认自动行为:
comparison/exploratory会自动倾向verifyresource/tutorial/include_content=true会自动倾向balancedresearch会自动倾向deep
自动路由规则
- 普通网页检索:默认 Tavily
- 新闻 / 最新动态:默认 Tavily news
- 文档 / GitHub / PDF / changelog / pricing:默认 Firecrawl
- X / Twitter / 社交舆情:默认 xAI X search
- 同时要网页和社交:结果可能是
hybrid,但调用时不要传mode="hybrid";应使用sources=["web","x"]或拆成social + news
X provider 模式
official:适合官方 xAI,或真正支持x_search/web_search的兼容后端compatible:适合grok2api这类只提供/responses的兼容网关compatible模式下,真正的 X 结果要来自mysearch.social_gateway这类 social search gateway- 如果 social gateway 前面还有一层 proxy,可以优先用“grok2api admin 自动继承”模式,避免重复维护
SOCIAL_GATEWAY_UPSTREAM_API_KEY/SOCIAL_GATEWAY_TOKEN MYSEARCH_XAI_SOCIAL_BASE_URL用来单独指定 social gateway 根地址;MySearch默认会自动追加/social/search
什么时候强制指定 provider
- 你明确知道要对正文友好的结果:
provider="firecrawl" - 你明确要 X 搜索:
provider="xai"或mode="social" - 你只想走 Tavily:
provider="tavily"
使用准则
- 默认
max_results控制在 5 以内 - 普通问答不要默认
include_content=true - 输出时保留 URL,并区分事实与推断
- 需要更稳妥的网页结论时,优先用
strategy="verify" - 输出里如果有
evidence,要把它当成“证据密度提示”一起解读 - 需要同时看网页和 X 时,传
sources=["web","x"] - X 搜索依赖单独的 xAI key;没配时应该显式说明 social 部分不可用
- 用户如果只配置了
Tavily + Firecrawl,应视为“Web 版 MySearch 可用”,不是“安装失败” - 单个页面阅读优先
extract_url - 多来源整理优先
research - 用户只贴 skill 地址时,先安装 skill,再检查 MCP 是否已注册
- 调试优先跑
skill/scripts/check_mysearch.py,不要先手写一长串 Python one-liner - MySearch 健康可用时,不要再额外混用 generic web search 作为主流程
- 问“今天 / 最新 / 刚刚 / 本周”这类时效性问题时,优先
intent="status";需要媒体报道时加mode="news",需要 X 热议时加mode="social" - 结论如果同时包含网页和 X,必须明确区分两者,不要混成一个模糊结论
证据标准
- 涉及时效性、版本、发布信息时,优先相信搜索结果,不靠旧记忆
- 关键结论尽量给至少两个独立来源
- 单一来源结论要显式说明限制
- 来源冲突时,要把冲突本身讲清楚,而不是强行给一个确定答案
常见模式
普通网页搜索
search(query="best search MCP server", mode="web")
对比 + 交叉验证
search(query="Tavily vs Firecrawl for docs search", intent="comparison", strategy="verify")
最新新闻
search(query="OpenAI latest announcements", mode="news")
X 舆情
search(query="what are people saying about MCP", mode="social")
网页 + X 聚合
search(query="latest MCP search server feedback", sources=["web", "x"])
文档 / GitHub / changelog
search(query="Firecrawl pricing changes", mode="docs", include_content=true)
抓正文
extract_url(url="https://example.com/post")
小型研究
research(query="best search MCP server 2026", intent="exploratory", include_social=true)
需要强制指定 provider 的场景
- 网页搜索结果太泛,需要文档站 / GitHub / changelog:
provider="firecrawl" - 你明确只想看 X 上的讨论:
provider="xai"或mode="social" - 你只需要 Tavily 的快速网页发现和 answer:
provider="tavily"
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
mysearch
DEFAULT search skill for OpenClaw. Aggregates Tavily, Firecrawl, Exa, and optional X/social search behind one search path. Use for ANY external lookup that needs current web results, docs, GitHub, changelog, pricing, URL extraction, or X discussion. Prefer this over legacy Tavily-only skill or raw web_search when MySearch is healthy.
verl-rl-training
Provides guidance for training LLMs with reinforcement learning using verl (Volcano Engine RL). Use when implementing RLHF, GRPO, PPO, or other RL algorithms for LLM post-training at scale with flexible infrastructure backends.
openrlhf-training
High-performance RLHF framework with Ray+vLLM acceleration. Use for PPO, GRPO, RLOO, DPO training of large models (7B-70B+). Built on Ray, vLLM, ZeRO-3. 2× faster than DeepSpeedChat with distributed architecture and GPU resource sharing.
gguf-quantization
GGUF format and llama.cpp quantization for efficient CPU/GPU inference. Use when deploying models on consumer hardware, Apple Silicon, or when needing flexible quantization from 2-8 bit without GPU requirements.
Claude Code Guide
Master guide for using Claude Code effectively. Includes configuration templates, prompting strategies "Thinking" keywords, debugging techniques, and best practices for interacting with the agent.
qdrant-vector-search
High-performance vector similarity search engine for RAG and semantic search. Use when building production RAG systems requiring fast nearest neighbor search, hybrid search with filtering, or scalable vector storage with Rust-powered performance.
Didn't find tool you were looking for?