{"id":"464b2601-2004-461a-94b5-4720a8bbfacd","entityType":"agent","slug":"clawhub-fmls-web-tools-guide","name":"web-tools-guide","canonicalUrl":"https://www.xpersona.co/agent/clawhub-fmls-web-tools-guide","canonicalPath":"/agent/clawhub-fmls-web-tools-guide","generatedAt":"2026-10-09T18:06:19.372Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T03:59:13.030Z","emptyReason":null},"description":"MANDATORY before calling web_search, web_fetch, browser, or opencli. Contains required error-handling procedures (web_search failure → must guide user to con...","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 5.5K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s178hjnqgjn4ng01wyttsvdzx583hfaw:web-tools-guide","sourceUrl":"https://clawhub.ai/fmls/web-tools-guide","homepage":"https://clawhub.ai/fmls/skills/web-tools-guide","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/fmls/web-tools-guide","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/fmls/skills/web-tools-guide","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":54,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"web-tools-guide technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T03:59:13.030Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T03:59:13.030Z","emptyReason":null},"stars":null,"forks":null,"downloads":5456,"packageName":null,"latestVersion":"1.0.2","tractionLabel":"5.5K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T03:59:13.029Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T03:59:13.030Z","lastCrawledAt":"2026-10-09T03:59:13.029Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T03:59:13.029Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.2","createdAt":"2026-04-14T03:55:00.895Z","changelog":"- Added OpenCLI integration as a fallback tool (covering 70+ sites) between web_fetch and browser, with setup script and user guidance. - Updated decision process: tools are now parallel branches—not a strict escalation—to choose the most efficient path based on scenario. - Enhanced error handling: failures in web_search or web_fetch now require explicit configuration guidance and OpenCLI fallback before using the browser. - Expanded documentation: included references to opencli usage guide and setup instructions for smoother onboarding. - Modified skill to be MANDATORY before using web_search, web_fetch, browser, or opencli, emphasizing correct fallback and error procedures.","fileCount":7,"zipByteSize":15101},{"version":"1.0.1","createdAt":"2026-03-31T16:18:58.355Z","changelog":"- No user-facing or internal changes in this version. - All documentation and logic remain unchanged.","fileCount":4,"zipByteSize":6980},{"version":"1.0.0","createdAt":"2026-03-28T10:56:56.475Z","changelog":"Web 工具策略指南上线，分级选用 web_search, web_fetch, browser 工具： - 明确三层工具选择：先搜索（web_search），再抓取（web_fetch），最后必要时使用浏览器自动化（browser） - 每次升级工具层级时须向用户解释原因，严禁静默切换 - 登录、敏感和不可逆操作需用户授权或二次确认 - 明确 web_search 失败后的用户引导与降级方案 - 强调科学元素等待、保持浏览器状态、对验证码问题告知用户","fileCount":4,"zipByteSize":6923}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s178hjnqgjn4ng01wyttsvdzx583hfaw:web-tools-guide","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s178hjnqgjn4ng01wyttsvdzx583hfaw:web-tools-guide` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/fmls/web-tools-guide before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fmls-web-tools-guide/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fmls-web-tools-guide/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fmls-web-tools-guide/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-fmls-web-tools-guide/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-fmls-web-tools-guide/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-fmls-web-tools-guide/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-09T18:06:19.371Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fmls-web-tools-guide/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fmls-web-tools-guide/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fmls-web-tools-guide/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fmls-web-tools-guide/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T03:59:13.030Z","emptyReason":null},"readme":"Skill: web-tools-guide\n\nOwner: fmls\n\nSummary: MANDATORY before calling web_search, web_fetch, browser, or opencli. Contains required error-handling procedures (web_search failure → must guide user to con...\n\nTags: latest:1.0.2\n\nVersion history:\n\nv1.0.2 | 2026-04-14T03:55:00.895Z | user\n\n- Added OpenCLI integration as a fallback tool (covering 70+ sites) between web_fetch and browser, with setup script and user guidance.\n- Updated decision process: tools are now parallel branches—not a strict escalation—to choose the most efficient path based on scenario.\n- Enhanced error handling: failures in web_search or web_fetch now require explicit configuration guidance and OpenCLI fallback before using the browser.\n- Expanded documentation: included references to opencli usage guide and setup instructions for smoother onboarding.\n- Modified skill to be MANDATORY before using web_search, web_fetch, browser, or opencli, emphasizing correct fallback and error procedures.\n\nv1.0.1 | 2026-03-31T16:18:58.355Z | user\n\n- No user-facing or internal changes in this version.\n- All documentation and logic remain unchanged.\n\nv1.0.0 | 2026-03-28T10:56:56.475Z | user\n\nWeb 工具策略指南上线，分级选用 web_search, web_fetch, browser 工具：\n\n- 明确三层工具选择：先搜索（web_search），再抓取（web_fetch），最后必要时使用浏览器自动化（browser）\n- 每次升级工具层级时须向用户解释原因，严禁静默切换\n- 登录、敏感和不可逆操作需用户授权或二次确认\n- 明确 web_search 失败后的用户引导与降级方案\n- 强调科学元素等待、保持浏览器状态、对验证码问题告知用户\n\nArchive index:\n\nArchive v1.0.2: 7 files, 15101 bytes\n\nFiles: references/opencli-guide.md (3303b), references/web-search-config.md (4227b), references/well-known-sites.json (8100b), scripts/setup-opencli.sh (12494b), skill-card.md (2466b), SKILL.md (6255b), _meta.json (134b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: web-tools-guide\ndescription: \"MANDATORY before calling web_search, web_fetch, browser, or opencli. Contains required error-handling procedures (web_search failure → must guide user to configure API), fallback chain (opencli CLI covers 70+ sites as structured fallback before browser), and site-specific login URLs. Without reading this skill, you WILL handle failures incorrectly and miss available tools. Trigger on: 搜索/上网/查资料/打开网站/抓取网页/新闻/热点/web search/fetch/browser/opencli.\"\n---\n\n<!-- baseDir = /root/.openclaw/workspace/skills/web-tools-guide -->\n\n# Web 工具策略\n\n遵循 ReAct 范式。**四个工具不是层级关系，是分支决策**：\n\n```\n┌─ 没有 URL，需要搜索 ──────→ web_search   （关键词搜索）\n│\n├─ 已知 URL，静态内容 ──────→ web_fetch    （直取页面）\n│\n├─ 以上失败 / 不适用 ──────→ opencli      （CLI 结构化访问，70+ 站点）\n│\n└─ 全都不行 ───────────────→ browser      （浏览器自动化，兜底）\n```\n\n先按场景选 web_search 或 web_fetch；失败时先试 opencli，最后才上 browser。\n每次切换工具告知用户原因，不要静默降级。\n\n---\n\n## 决策流程\n\n```\n有明确 URL？\n├─ YES → 静态内容（文章/文档/API/RSS）？\n│        ├─ YES → web_fetch\n│        │        失败（空白/403/CAPTCHA）？→ opencli → browser\n│        └─ NO（需要 JS/登录/交互/截图）→ opencli → browser\n└─ NO  → web_search\n         ├─ 成功 → 对结果 URL 按上述逻辑选 fetch/opencli/browser\n         ├─ 失败（API 错误）→ 引导配置（见\"web_search 失败处理\"）\n         └─ 无结果/不适用 → opencli → browser\n```\n\n---\n\n## web_search\n\n**何时用**：没有明确 URL，需要搜索信息（新闻、热点、查资料、比较信息）。\n\n**怎么用**：直接调用 `web_search`，传入搜索关键词。\n\n**结果处理**：返回的 URL 按决策流程选 `web_fetch`、`opencli` 或 `browser` 深入获取。\n\n**失败时**：见下方\"web_search 失败处理\"。\n\n---\n\n## web_fetch\n\n**何时用**：已知 URL，页面为静态内容——新闻文章、博客、技术文档、API 端点、RSS 源。\n\n**怎么用**：直接调用 `web_fetch`，传入 URL。\n\n**失败信号**：返回空白页、403、CAPTCHA、骨架 HTML → 尝试 `opencli`，仍不行再升级到 `browser`。\n\n---\n\n## opencli（Fallback，优先于 browser）\n\n**何时用**：web_search / web_fetch 失败或不适用时，先试 opencli 再考虑 browser。覆盖 70+ 主流网站，秒级返回结构化数据。\n\n**首次使用前**：如果执行 `opencli` 提示 command not found，需要先运行安装脚本（幂等，可重复运行）：\n```bash\nbash {baseDir}/scripts/setup-opencli.sh\n```\n该脚本会自动完成：安装 opencli CLI → 编译 Browser Bridge 插件 → 重启浏览器加载插件。\n\n**渐进式发现（不需要记命令）**：\n```bash\nopencli --help                    # 有没有这个站？\nopencli <site> --help             # 这个站能做什么？\nopencli <site> <command> --help   # 这个命令怎么用？\n```\n\n**详细用法**：`read {baseDir}/references/opencli-guide.md`\n\n**失败时**：告知用户 opencli 失败原因，降级到 browser。\n\n---\n\n## browser（最后手段）\n\n这是最重量级的工具，也是当前问题最多的场景。以下是详细操作指引。\n\n### 何时用\n\n- **JS 渲染页面**：SPA、动态加载内容（微博 feed、知乎回答、小红书瀑布流）\n- **需要登录态**：登录后才可见的内容、管理后台\n- **页面交互**：点击按钮、填写表单、翻页、滚动加载更多\n- **截图需求**：需要页面视觉信息\n- **其他工具全部失败的兜底**\n\n### 操作流程\n\n**信息获取（只读）：**\n1. 导航到目标 URL\n2. 等待关键元素出现（不要用固定时间等待）\n3. 提取所需内容（文本、链接、图片等）\n4. 返回结果给用户\n\n**登录操作：**\n1. 查找登录页 URL → `read {baseDir}/references/well-known-sites.json`\n2. **告知用户即将执行登录操作，获取确认**\n3. 导航到登录页\n4. 填写凭证（用户提供）或提示用户扫码\n5. 等待登录成功，确认后继续后续操作\n\n**页面交互：**\n1. 导航到目标页面\n2. 使用 CSS 选择器定位元素（辅以文本内容匹配）\n3. 执行交互：点击、输入、选择、滚动\n4. 等待响应/页面变化\n5. 提取结果或截图\n\n### 关键注意事项\n\n- **登录操作必须获得用户授权** — 任何涉及账号登录的操作前，先告知用户并等待确认\n- **敏感操作必须二次确认** — 发帖、删除、支付等不可逆操作\n- **优先 CSS 选择器** — 比 XPath 更稳定，辅以文本匹配\n- **智能等待** — 等待目标元素出现，而非 `sleep(3)` 式固定等待\n- **CAPTCHA/验证码** — 无法自动处理时告知用户需手动介入\n- **页面加载超时** — 设置合理超时，失败时告知用户并建议重试\n- **多步操作保持状态** — 登录后的后续操作复用同一浏览器上下文，不要重新打开\n\n---\n\n## web_search 失败处理\n\n**当 `web_search` 返回错误时，不要静默降级，必须引导配置：**\n\n1. **`read {baseDir}/references/web-search-config.md`**\n2. 按文件中 Step 1 **原样输出**配置引导给用户（不要改写表格或省略内容）\n3. 等待用户回复：\n   - 用户提供 API Key → 再次 `read {baseDir}/references/web-search-config.md`，按 Step 2-5 执行\n   - 用户说\"暂不配置\" → 进入降级方案\n   - 其他回复 → 正常响应\n4. **降级方案**（仅在用户明确拒绝配置后）：\n   - `read {baseDir}/references/well-known-sites.json` 获取常用网站 URL\n   - 用 `web_fetch` 直接获取目标网站内容\n   - 仍不行 → 升级到 `browser`\n\n---\n\n## 常用网站\n\n需要常用网站 URL 时（登录页、搜索引擎、热搜榜等）：\n\n```\nread {baseDir}/references/well-known-sites.json\n```\n\n通过 key 查找（如 `social.weibo.login`、`search.baidu`）。带 `{query}` 的 URL 替换为实际搜索词。\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn7ekx2kqw6f5krp4yb0qfex5n831k1k\",\n  \"slug\": \"web-tools-guide\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1776138900895\n}\n\nFile v1.0.2:references/opencli-guide.md\n\n# opencli 使用指引\n\n`opencli` 是一个命令行工具，将 70+ 主流网站封装为 CLI 命令。相比 browser 自动化，它更快（秒级）、更精准（结构化数据）、更稳定（不依赖 DOM 变化）。\n\n## 核心理念\n\n不需要记住任何命令。通过 `--help` 逐层探索即可：\n\n```bash\nopencli --help                         # 我能操作哪些网站？\nopencli <site> --help                  # 这个网站有哪些操作？\nopencli <site> <command> --help        # 这个操作怎么用？\n```\n\n## 典型场景映射\n\n以下是常见用户需求到 opencli 命令的映射示例（不完整，遇到新场景先 `--help` 探索）：\n\n| 用户需求 | opencli 命令 |\n|---------|-------------|\n| 看微博热搜 | `opencli weibo hot` |\n| 搜索小红书笔记 | `opencli xiaohongshu search <关键词>` |\n| 看知乎热榜 | `opencli zhihu hot` |\n| B站热门视频 | `opencli bilibili hot` |\n| 搜索 Twitter | `opencli twitter search <关键词>` |\n| 看 HackerNews 头条 | `opencli hackernews top` |\n| GitHub trending | `opencli gh trending` |\n| 获取笔记详情/评论 | `opencli xiaohongshu note <note-id>` |\n| 获取 YouTube 字幕 | `opencli youtube transcript <video-id>` |\n| 读取任意网页为 Markdown | `opencli web read --url <URL>` |\n\n## 输出格式\n\n所有命令支持 `-f` / `--format` 选项：\n\n| 格式 | 用途 |\n|------|------|\n| `table` | 默认，终端可读 |\n| `json` | 程序化处理、需要完整结构化数据 |\n| `yaml` | 人类可读的结构化数据 |\n| `md` | Markdown 格式 |\n| `csv` | 表格导出 |\n| `plain` | 纯文本 |\n\n推荐：给用户展示时用 `table` 或 `md`，需要后续处理时用 `-f json`。\n\n## 常见参数\n\n- `--limit <N>`：限制返回条数\n- `-f <format>`：输出格式\n- `-v` / `--verbose`：调试输出\n\n## 覆盖的网站类别\n\n以下是 opencli 覆盖的主要网站类别（可通过 `opencli --help` 查看完整列表）：\n\n- **中文社交**：微博、小红书、知乎、豆瓣、即刻、V2EX、贴吧\n- **中文视频**：B站、抖音\n- **中文资讯**：36氪、雪球、什么值得买\n- **阅读**：微信读书、知识星球\n- **国际社交**：Twitter/X、Reddit、LinkedIn、Instagram、Facebook、Bluesky\n- **国际视频**：YouTube、TikTok\n- **国际资讯**：HackerNews、ProductHunt、Medium、Substack、BBC、Bloomberg、Reuters\n- **开发者**：GitHub (gh)、StackOverflow、Dev.to、ArXiv、HuggingFace\n- **AI 工具**：ChatGPT、Gemini、Grok、Doubao\n- **购物**：JD、Amazon、Coupang、Steam\n- **播客**：Apple Podcasts、小宇宙、Spotify\n- **通用**：`opencli web read` — 任意网页转 Markdown\n\n## 写操作注意\n\n部分命令支持写操作（发帖、关注、点赞等），执行前必须告知用户并获取确认：\n\n- `opencli twitter post <text>` — 发推文\n- `opencli xiaohongshu publish <content>` — 发小红书笔记\n- `opencli twitter follow/block/like` — 关注/拉黑/点赞\n- 其他涉及修改数据的操作\n\n## 故障排查\n\n如果 opencli 命令执行失败：\n\n1. **检查 daemon 状态**：`opencli doctor` — 诊断浏览器桥接连接\n2. **查看详细错误**：加 `-v` 参数获取调试信息\n3. **降级处理**：告知用户 opencli 失败原因，降级到 web_search/web_fetch/browser\n\nFile v1.0.2:references/web-search-config.md\n\n# Web Search API 配置流程\n\n当 `web_search` 返回错误后，Agent 读取此文件并按步骤执行。\n\n---\n\n## Step 1: 初始引导（检测到未配置状态）\n\n**⚠️ 关键约束**：停止 fallback 链。将下方引用块（`>` 开头的部分）**原样输出**给用户。不要重新组织、改写表格结构、或编造额外信息（如\"无需绑定信用卡\"）。直接复制粘贴：\n\n> 搜索功能需要配置 API Key 才能使用。\n>\n> **推荐方案**（二选一）：\n> - **Tavily**: https://app.tavily.com — 国际内容效果好，每月 1000 免费积分\n> - **Kimi**: https://platform.moonshot.cn — 中文内容效果佳\n>\n> **计费对比**：\n>\n> | 对比维度 | Tavily | Kimi |\n> |---------|--------|------|\n> | **免费额度** | 每月 1000 次基础搜索免费 | 无免费额度，每次≈0.03元 |\n> | **计费模式** | 失败不收费 | 固定0.03元/次+Token费 |\n>\n> 请提供您的 API Key（格式：`tvly-xxx...` 或 `sk-xxx...`），或回复\"暂不配置\"使用备选方案。\n\n**如果用户选择\"暂不配置\"：**\n1. 回到 SKILL.md 的降级决策流程（使用 web_fetch 配合搜索引擎 URL，或 browser）\n2. 告知用户：\"已切换到备选方案。如需更好体验，可随时配置 API Key。\"\n\n---\n\n## Step 2: 接收 API Key 并分析\n\n**⚠️ 收到用户的 Key 后，必须先执行本步骤。禁止跳过分析和确认直接进入 Step 3 配置。**\n\n**当用户提供 API Key 时：**\n\n1. **通过前缀自动检测提供商**：\n   - `tvly-*` → Tavily\n   - `sk-*` → Kimi\n   - 未知前缀 → 询问用户使用哪个提供商\n\n2. **分析并告知用户**（先不配置）：\n   - 如果 `tvly-*`：\"检测到您提供的是 **Tavily** 的 API Key ✅\"\n   - 如果 `sk-*`：\"检测到您提供的是 **Kimi** 的 API Key ✅\"\n\n3. **在操作前请求确认**（原样输出以下内容）：\n   > 接下来我将进行以下操作：\n   > 1. 配置 API Key 到 openclaw.json\n   > 2. 重启 gateway 以应用配置\n   >\n   > ⚠️ **重要提示**：\n   > - 稍待片刻，请主动发送消息（如\"继续\"）唤醒会话\n   > - 我将继续为您执行搜索\n   >\n   > 请回复\"确认\"开始配置，或回复\"取消\"放弃配置。\n\n4. **等待用户确认** — 用户回复前不要继续操作\n\n---\n\n## Step 3: 执行配置（用户确认后）\n\n**仅在用户确认后执行（如\"确认\"、\"好\"、\"开始\"）：**\n\n1. **配置 openclaw.json**：\n   ```bash\n   # Tavily（tvly-* 前缀）\n   openclaw config set plugins.entries.tavily.enabled true\n   openclaw config set plugins.entries.tavily.config.webSearch.apiKey <user-provided-key>\n\n   # Kimi（sk-* 前缀）\n   openclaw config set plugins.entries.kimi.enabled true\n   openclaw config set plugins.entries.kimi.config.webSearch.apiKey <user-provided-key>\n   ```\n\n2. **告知用户配置完成**：\n   > ✅ API Key 已保存！\n\n---\n\n## Step 4: 重启 Gateway\n\n1. **执行重启**：\n   ```bash\n   # 重启 gateway 以应用配置变更\n   openclaw restart gateway\n   # 或使用 Docker\n   docker restart openclaw-gateway\n   # 或查找并重启 gateway 进程\n   pkill -f \"openclaw-gateway\" || pkill -f \"gateway\"\n   ```\n\n2. **告知用户等待并唤醒会话**：\n   > 正在重启 gateway 以应用配置...\n   >\n   > ⏳ 稍待片刻，请发送任意消息（如\"继续\"）唤醒会话，我将继续为您搜索。\n\n---\n\n## Step 5: 等待用户唤醒会话\n\n**停止并等待用户消息。**\n\n当用户发送任意消息（如\"继续\"、\"已重启\"、\"好了\"、\"在吗\"）后：\n\n1. **验证 API Key 是否配置成功**：\n   ```bash\n   # 检查 Tavily\n   openclaw config get plugins.entries.tavily.config.webSearch.apiKey\n   # 检查 Kimi\n   openclaw config get plugins.entries.kimi.config.webSearch.apiKey\n   ```\n\n2. 如果已配置 → 执行用户原始搜索请求（使用 `web_search` 工具）\n3. 如果未配置 → 重新进入配置流程\n\n---\n\n## 快速参考\n\n| 提供商 | 网站 | Key 前缀 | 中文支持 |\n|--------|------|---------|---------|\n| Tavily | https://app.tavily.com | `tvly-` | 良好 |\n| Kimi/Moonshot | https://platform.moonshot.cn | `sk-` | 优秀 |\n\n**自动检测规则**：系统通过 Key 前缀自动识别提供商。\n\nFile v1.0.2:references/well-known-sites.json\n\n{\n  \"_description\": \"常用网站地址索引 — 供 Agent 快速定位目标地址，按类别组织。key 为语义化标识，value 包含 url / description / category。\",\n\n  \"search.baidu\": {\n    \"url\": \"https://www.baidu.com/s?wd={query}\",\n    \"description\": \"百度搜索（中文首选），{query} 替换为搜索关键词\",\n    \"category\": \"search_engine\"\n  },\n  \"search.google\": {\n    \"url\": \"https://www.google.com/search?q={query}\",\n    \"description\": \"Google 搜索（英文/国际首选），{query} 替换为搜索关键词\",\n    \"category\": \"search_engine\"\n  },\n  \"search.bing\": {\n    \"url\": \"https://www.bing.com/search?q={query}\",\n    \"description\": \"Bing 搜索（中英文均可），{query} 替换为搜索关键词\",\n    \"category\": \"search_engine\"\n  },\n  \"search.duckduckgo\": {\n    \"url\": \"https://duckduckgo.com/?q={query}\",\n    \"description\": \"DuckDuckGo 搜索（隐私友好），{query} 替换为搜索关键词\",\n    \"category\": \"search_engine\"\n  },\n  \"search.sogou\": {\n    \"url\": \"https://www.sogou.com/web?query={query}\",\n    \"description\": \"搜狗搜索，{query} 替换为搜索关键词\",\n    \"category\": \"search_engine\"\n  },\n\n  \"social.weibo.login\": {\n    \"url\": \"https://passport.weibo.com/sso/signin?entry=miniblog&source=miniblog&disp=popup&url=https%3A%2F%2Fweibo.com%2Fnewlogin%3Ftabtype%3Dweibo%26gid%3D102803%26openLoginLayer%3D0%26url%3Dhttps%3A%2F%2Fweibo.com%2F&from=weibopro\",\n    \"description\": \"微博登录页面（SSO 单点登录入口）,注意在此页面截图时不要使用全页截图，fullpage:false\",\n    \"category\": \"social_platform\"\n  },\n  \"social.weibo.home\": {\n    \"url\": \"https://weibo.com/\",\n    \"description\": \"微博首页\",\n    \"category\": \"social_platform\"\n  },\n  \"social.weibo.hot\": {\n    \"url\": \"https://s.weibo.com/top/summary\",\n    \"description\": \"微博热搜榜\",\n    \"category\": \"social_platform\"\n  },\n  \"social.zhihu.home\": {\n    \"url\": \"https://www.zhihu.com/\",\n    \"description\": \"知乎首页\",\n    \"category\": \"social_platform\"\n  },\n  \"social.zhihu.hot\": {\n    \"url\": \"https://www.zhihu.com/hot\",\n    \"description\": \"知乎热榜\",\n    \"category\": \"social_platform\"\n  },\n  \"social.zhihu.search\": {\n    \"url\": \"https://www.zhihu.com/search?type=content&q={query}\",\n    \"description\": \"知乎搜索，{query} 替换为搜索关键词\",\n    \"category\": \"social_platform\"\n  },\n  \"social.douyin.home\": {\n    \"url\": \"https://www.douyin.com/\",\n    \"description\": \"抖音首页（Web 版）\",\n    \"category\": \"social_platform\"\n  },\n  \"social.xiaohongshu.home\": {\n    \"url\": \"https://www.xiaohongshu.com/\",\n    \"description\": \"小红书首页（Web 版）\",\n    \"category\": \"social_platform\"\n  },\n  \"social.twitter.home\": {\n    \"url\": \"https://x.com/\",\n    \"description\": \"X (Twitter) 首页\",\n    \"category\": \"social_platform\"\n  },\n\n  \"video.bilibili.home\": {\n    \"url\": \"https://www.bilibili.com/\",\n    \"description\": \"哔哩哔哩首页\",\n    \"category\": \"video_platform\"\n  },\n  \"video.bilibili.hot\": {\n    \"url\": \"https://www.bilibili.com/v/popular/rank/all\",\n    \"description\": \"哔哩哔哩全站排行榜\",\n    \"category\": \"video_platform\"\n  },\n  \"video.bilibili.search\": {\n    \"url\": \"https://search.bilibili.com/all?keyword={query}\",\n    \"description\": \"哔哩哔哩搜索，{query} 替换为搜索关键词\",\n    \"category\": \"video_platform\"\n  },\n  \"video.youtube.home\": {\n    \"url\": \"https://www.youtube.com/\",\n    \"description\": \"YouTube 首页\",\n    \"category\": \"video_platform\"\n  },\n\n  \"news.toutiao\": {\n    \"url\": \"https://www.toutiao.com/\",\n    \"description\": \"今日头条首页\",\n    \"category\": \"news\"\n  },\n  \"news.36kr\": {\n    \"url\": \"https://36kr.com/\",\n    \"description\": \"36氪首页（科技/创投资讯）\",\n    \"category\": \"news\"\n  },\n  \"news.hackernews\": {\n    \"url\": \"https://news.ycombinator.com/\",\n    \"description\": \"Hacker News 首页（技术/创业资讯）\",\n    \"category\": \"news\"\n  },\n  \"news.sspai\": {\n    \"url\": \"https://sspai.com/\",\n    \"description\": \"少数派首页（效率/数码资讯）\",\n    \"category\": \"news\"\n  },\n\n  \"dev.github.home\": {\n    \"url\": \"https://github.com/\",\n    \"description\": \"GitHub 首页\",\n    \"category\": \"dev_tool\"\n  },\n  \"dev.github.trending\": {\n    \"url\": \"https://github.com/trending\",\n    \"description\": \"GitHub Trending（热门项目）\",\n    \"category\": \"dev_tool\"\n  },\n  \"dev.github.search\": {\n    \"url\": \"https://github.com/search?q={query}&type=repositories\",\n    \"description\": \"GitHub 仓库搜索，{query} 替换为搜索关键词\",\n    \"category\": \"dev_tool\"\n  },\n  \"dev.npm.search\": {\n    \"url\": \"https://www.npmjs.com/search?q={query}\",\n    \"description\": \"npm 包搜索，{query} 替换为包名/关键词\",\n    \"category\": \"dev_tool\"\n  },\n  \"dev.pypi.search\": {\n    \"url\": \"https://pypi.org/search/?q={query}\",\n    \"description\": \"PyPI 包搜索，{query} 替换为包名/关键词\",\n    \"category\": \"dev_tool\"\n  },\n  \"dev.stackoverflow\": {\n    \"url\": \"https://stackoverflow.com/search?q={query}\",\n    \"description\": \"Stack Overflow 搜索，{query} 替换为问题关键词\",\n    \"category\": \"dev_tool\"\n  },\n  \"dev.mdn\": {\n    \"url\": \"https://developer.mozilla.org/zh-CN/search?q={query}\",\n    \"description\": \"MDN Web Docs 搜索（中文版），{query} 替换为关键词\",\n    \"category\": \"dev_tool\"\n  },\n\n  \"wechat.mp.login\": {\n    \"url\": \"https://mp.weixin.qq.com/\",\n    \"description\": \"微信公众平台登录页\",\n    \"category\": \"wechat\"\n  },\n  \"wechat.mp.admin\": {\n    \"url\": \"https://mp.weixin.qq.com/cgi-bin/home?t=home/index\",\n    \"description\": \"微信公众平台管理后台首页（需登录态）\",\n    \"category\": \"wechat\"\n  },\n\n  \"ai.chatgpt\": {\n    \"url\": \"https://chatgpt.com/\",\n    \"description\": \"ChatGPT 首页\",\n    \"category\": \"ai_tool\"\n  },\n  \"ai.claude\": {\n    \"url\": \"https://claude.ai/\",\n    \"description\": \"Claude AI 首页\",\n    \"category\": \"ai_tool\"\n  },\n  \"ai.huggingface\": {\n    \"url\": \"https://huggingface.co/\",\n    \"description\": \"Hugging Face 首页（AI 模型/数据集平台）\",\n    \"category\": \"ai_tool\"\n  },\n\n  \"doc.wikipedia.zh\": {\n    \"url\": \"https://zh.wikipedia.org/wiki/{query}\",\n    \"description\": \"中文维基百科条目，{query} 替换为条目名\",\n    \"category\": \"reference\"\n  },\n  \"doc.wikipedia.en\": {\n    \"url\": \"https://en.wikipedia.org/wiki/{query}\",\n    \"description\": \"英文维基百科条目，{query} 替换为条目名\",\n    \"category\": \"reference\"\n  },\n  \"doc.baike.baidu\": {\n    \"url\": \"https://baike.baidu.com/item/{query}\",\n    \"description\": \"百度百科条目，{query} 替换为条目名\",\n    \"category\": \"reference\"\n  },\n\n  \"cloud.tencent.login\": {\n    \"url\": \"https://cloud.tencent.com/login\",\n    \"description\": \"腾讯云登录页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.tencent.console\": {\n    \"url\": \"https://cloud.tencent.com/\",\n    \"description\": \"腾讯云控制台首页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.aliyun.login\": {\n    \"url\": \"https://account.aliyun.com/\",\n    \"description\": \"阿里云登录页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.aliyun.console\": {\n    \"url\": \"https://www.aliyun.com/\",\n    \"description\": \"阿里云控制台首页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.aws.login\": {\n    \"url\": \"https://signin.aws.amazon.com/\",\n    \"description\": \"AWS 登录页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.aws.console\": {\n    \"url\": \"https://console.aws.amazon.com/\",\n    \"description\": \"AWS 控制台首页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.huawei.login\": {\n    \"url\": \"https://auth.huaweicloud.com/\",\n    \"description\": \"华为云登录页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.huawei.console\": {\n    \"url\": \"https://www.huaweicloud.com/\",\n    \"description\": \"华为云控制台首页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.google.login\": {\n    \"url\": \"https://console.cloud.google.com/\",\n    \"description\": \"Google Cloud 登录页/控制台\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.azure.login\": {\n    \"url\": \"https://portal.azure.com/\",\n    \"description\": \"Microsoft Azure 登录页/控制台\",\n    \"category\": \"cloud_provider\"\n  }\n}\n\nFile v1.0.2:skill-card.md\n\n## Description:\n\nGuides agents in choosing web_search, web_fetch, OpenCLI, or browser automation for web research, including fallback behavior, search API configuration, and site-specific login references.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[fmls](https://clawhub.ai/user/fmls)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agents use this skill to select an appropriate web access path, recover from web search or fetch failures, configure search provider keys when needed, and use OpenCLI or browser automation with explicit user confirmation for login or sensitive actions.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The setup path can download OpenCLI code and a browser extension from external sources.\n\nMitigation: Install only after confirming trust in the OpenCLI npm package and GitHub release source.\n\nRisk: The OpenCLI setup script can change browser state by loading an extension and restarting Chrome.\n\nMitigation: Run setup only in an environment where browser extension loading and browser restarts are acceptable.\n\nRisk: Search API keys may be exposed if pasted into chat or surfaced in logs, process arguments, or configuration output.\n\nMitigation: Prefer local secret setup outside chat and rotate any key already shared through the agent conversation.\n\n## Reference(s):\n\n- [OpenCLI Usage Guide](artifact/references/opencli-guide.md)\n- [Web Search API Configuration](artifact/references/web-search-config.md)\n- [Well-Known Sites Index](artifact/references/well-known-sites.json)\n- [OpenCLI GitHub Releases](https://github.com/jackwener/opencli/releases)\n- [ClawHub Skill Page](https://clawhub.ai/fmls/skills/web-tools-guide)\n- [Publisher Profile](https://clawhub.ai/user/fmls)\n\n## Skill Output:\n\n**Output Type(s):** [guidance, shell commands, configuration, markdown, json]\n\n**Output Format:** [Markdown guidance with inline shell commands and JSON reference data]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Includes fallback decision guidance for web tools and setup instructions for OpenCLI.]\n\n## Skill Version(s):\n\n1.0.2 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.1: 4 files, 6980 bytes\n\nFiles: references/web-search-config.md (4227b), references/well-known-sites.json (8100b), SKILL.md (4767b), _meta.json (134b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: web-tools-guide\ndescription: \"Web 工具策略指南。MUST trigger when 用户提到：搜索/上网/查资料/打开网站/抓取网页/获取网络信息/新闻/热点/web search/web fetch/browser use/浏览器自动化/JS 渲染页面，或需要使用 web_search/web_fetch/browser 工具时。按 search → fetch → browser 三级策略选择工具。\"\n---\n\n<!-- baseDir = /root/.openclaw/workspace/skills/web-tools-guide -->\n\n# Web 工具策略\n\n遵循 ReAct 范式，按**从轻到重、从通用到具体**选择工具：\n\n```\nLevel 1: web_search  — 关键词搜索，快速获取信息入口\nLevel 2: web_fetch   — 已知 URL，直接获取静态内容\nLevel 3: browser     — 浏览器自动化，处理复杂网页操作\n```\n\n逐级升级，每次升级告知用户原因，不要静默切换。\n\n---\n\n## 决策流程\n\n```\n有明确 URL？\n├─ YES → 静态内容（文章/文档/API/RSS）？→ web_fetch\n│        需要 JS 渲染/登录/交互/截图？  → browser\n└─ NO  → web_search\n         ├─ 成功 → 对结果 URL 按上述逻辑选 fetch/browser\n         └─ 失败 → 引导配置（见\"web_search 失败处理\"）\n```\n\n---\n\n## Level 1: web_search\n\n**何时用**：没有明确 URL，需要搜索信息（新闻、热点、查资料、比较信息）。\n\n**怎么用**：直接调用 `web_search`，传入搜索关键词。\n\n**结果处理**：返回的 URL 按决策流程选 `web_fetch` 或 `browser` 深入获取。\n\n**失败时**：见下方\"web_search 失败处理\"。\n\n---\n\n## Level 2: web_fetch\n\n**何时用**：已知 URL，页面为静态内容——新闻文章、博客、技术文档、API 端点、RSS 源。\n\n**怎么用**：直接调用 `web_fetch`，传入 URL。\n\n**失败信号**：返回空白页、403、CAPTCHA、骨架 HTML → 说明需要 JS 渲染或登录态，告知用户后升级到 browser。\n\n---\n\n## Level 3: browser\n\n这是最重量级的工具，也是当前问题最多的场景。以下是详细操作指引。\n\n### 何时用\n\n- **JS 渲染页面**：SPA、动态加载内容（微博 feed、知乎回答、小红书瀑布流）\n- **需要登录态**：登录后才可见的内容、管理后台\n- **页面交互**：点击按钮、填写表单、翻页、滚动加载更多\n- **截图需求**：需要页面视觉信息\n- **web_fetch 失败的兜底**：前一级工具无法获取有效内容\n\n### 操作流程\n\n**信息获取（只读）：**\n1. 导航到目标 URL\n2. 等待关键元素出现（不要用固定时间等待）\n3. 提取所需内容（文本、链接、图片等）\n4. 返回结果给用户\n\n**登录操作：**\n1. 查找登录页 URL → `read {baseDir}/references/well-known-sites.json`\n2. **告知用户即将执行登录操作，获取确认**\n3. 导航到登录页\n4. 填写凭证（用户提供）或提示用户扫码\n5. 等待登录成功，确认后继续后续操作\n\n**页面交互：**\n1. 导航到目标页面\n2. 使用 CSS 选择器定位元素（辅以文本内容匹配）\n3. 执行交互：点击、输入、选择、滚动\n4. 等待响应/页面变化\n5. 提取结果或截图\n\n### 关键注意事项\n\n- **登录操作必须获得用户授权** — 任何涉及账号登录的操作前，先告知用户并等待确认\n- **敏感操作必须二次确认** — 发帖、删除、支付等不可逆操作\n- **优先 CSS 选择器** — 比 XPath 更稳定，辅以文本匹配\n- **智能等待** — 等待目标元素出现，而非 `sleep(3)` 式固定等待\n- **CAPTCHA/验证码** — 无法自动处理时告知用户需手动介入\n- **页面加载超时** — 设置合理超时，失败时告知用户并建议重试\n- **多步操作保持状态** — 登录后的后续操作复用同一浏览器上下文，不要重新打开\n\n---\n\n## web_search 失败处理\n\n**当 `web_search` 返回错误时，不要静默降级，必须引导配置：**\n\n1. **`read {baseDir}/references/web-search-config.md`**\n2. 按文件中 Step 1 **原样输出**配置引导给用户（不要改写表格或省略内容）\n3. 等待用户回复：\n   - 用户提供 API Key → 再次 `read {baseDir}/references/web-search-config.md`，按 Step 2-5 执行\n   - 用户说\"暂不配置\" → 进入降级方案\n   - 其他回复 → 正常响应\n4. **降级方案**（仅在用户明确拒绝配置后）：\n   - `read {baseDir}/references/well-known-sites.json` 获取常用网站 URL\n   - 用 `web_fetch` 直接获取目标网站内容\n   - 仍不行 → 升级到 `browser`\n\n---\n\n## 常用网站\n\n需要常用网站 URL 时（登录页、搜索引擎、热搜榜等）：\n\n```\nread {baseDir}/references/well-known-sites.json\n```\n\n通过 key 查找（如 `social.weibo.login`、`search.baidu`）。带 `{query}` 的 URL 替换为实际搜索词。\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn7ekx2kqw6f5krp4yb0qfex5n831k1k\",\n  \"slug\": \"web-tools-guide\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1774973938355\n}\n\nFile v1.0.1:references/web-search-config.md\n\n# Web Search API 配置流程\n\n当 `web_search` 返回错误后，Agent 读取此文件并按步骤执行。\n\n---\n\n## Step 1: 初始引导（检测到未配置状态）\n\n**⚠️ 关键约束**：停止 fallback 链。将下方引用块（`>` 开头的部分）**原样输出**给用户。不要重新组织、改写表格结构、或编造额外信息（如\"无需绑定信用卡\"）。直接复制粘贴：\n\n> 搜索功能需要配置 API Key 才能使用。\n>\n> **推荐方案**（二选一）：\n> - **Tavily**: https://app.tavily.com — 国际内容效果好，每月 1000 免费积分\n> - **Kimi**: https://platform.moonshot.cn — 中文内容效果佳\n>\n> **计费对比**：\n>\n> | 对比维度 | Tavily | Kimi |\n> |---------|--------|------|\n> | **免费额度** | 每月 1000 次基础搜索免费 | 无免费额度，每次≈0.03元 |\n> | **计费模式** | 失败不收费 | 固定0.03元/次+Token费 |\n>\n> 请提供您的 API Key（格式：`tvly-xxx...` 或 `sk-xxx...`），或回复\"暂不配置\"使用备选方案。\n\n**如果用户选择\"暂不配置\"：**\n1. 回到 SKILL.md 的降级决策流程（使用 web_fetch 配合搜索引擎 URL，或 browser）\n2. 告知用户：\"已切换到备选方案。如需更好体验，可随时配置 API Key。\"\n\n---\n\n## Step 2: 接收 API Key 并分析\n\n**⚠️ 收到用户的 Key 后，必须先执行本步骤。禁止跳过分析和确认直接进入 Step 3 配置。**\n\n**当用户提供 API Key 时：**\n\n1. **通过前缀自动检测提供商**：\n   - `tvly-*` → Tavily\n   - `sk-*` → Kimi\n   - 未知前缀 → 询问用户使用哪个提供商\n\n2. **分析并告知用户**（先不配置）：\n   - 如果 `tvly-*`：\"检测到您提供的是 **Tavily** 的 API Key ✅\"\n   - 如果 `sk-*`：\"检测到您提供的是 **Kimi** 的 API Key ✅\"\n\n3. **在操作前请求确认**（原样输出以下内容）：\n   > 接下来我将进行以下操作：\n   > 1. 配置 API Key 到 openclaw.json\n   > 2. 重启 gateway 以应用配置\n   >\n   > ⚠️ **重要提示**：\n   > - 稍待片刻，请主动发送消息（如\"继续\"）唤醒会话\n   > - 我将继续为您执行搜索\n   >\n   > 请回复\"确认\"开始配置，或回复\"取消\"放弃配置。\n\n4. **等待用户确认** — 用户回复前不要继续操作\n\n---\n\n## Step 3: 执行配置（用户确认后）\n\n**仅在用户确认后执行（如\"确认\"、\"好\"、\"开始\"）：**\n\n1. **配置 openclaw.json**：\n   ```bash\n   # Tavily（tvly-* 前缀）\n   openclaw config set plugins.entries.tavily.enabled true\n   openclaw config set plugins.entries.tavily.config.webSearch.apiKey <user-provided-key>\n\n   # Kimi（sk-* 前缀）\n   openclaw config set plugins.entries.kimi.enabled true\n   openclaw config set plugins.entries.kimi.config.webSearch.apiKey <user-provided-key>\n   ```\n\n2. **告知用户配置完成**：\n   > ✅ API Key 已保存！\n\n---\n\n## Step 4: 重启 Gateway\n\n1. **执行重启**：\n   ```bash\n   # 重启 gateway 以应用配置变更\n   openclaw restart gateway\n   # 或使用 Docker\n   docker restart openclaw-gateway\n   # 或查找并重启 gateway 进程\n   pkill -f \"openclaw-gateway\" || pkill -f \"gateway\"\n   ```\n\n2. **告知用户等待并唤醒会话**：\n   > 正在重启 gateway 以应用配置...\n   >\n   > ⏳ 稍待片刻，请发送任意消息（如\"继续\"）唤醒会话，我将继续为您搜索。\n\n---\n\n## Step 5: 等待用户唤醒会话\n\n**停止并等待用户消息。**\n\n当用户发送任意消息（如\"继续\"、\"已重启\"、\"好了\"、\"在吗\"）后：\n\n1. **验证 API Key 是否配置成功**：\n   ```bash\n   # 检查 Tavily\n   openclaw config get plugins.entries.tavily.config.webSearch.apiKey\n   # 检查 Kimi\n   openclaw config get plugins.entries.kimi.config.webSearch.apiKey\n   ```\n\n2. 如果已配置 → 执行用户原始搜索请求（使用 `web_search` 工具）\n3. 如果未配置 → 重新进入配置流程\n\n---\n\n## 快速参考\n\n| 提供商 | 网站 | Key 前缀 | 中文支持 |\n|--------|------|---------|---------|\n| Tavily | https://app.tavily.com | `tvly-` | 良好 |\n| Kimi/Moonshot | https://platform.moonshot.cn | `sk-` | 优秀 |\n\n**自动检测规则**：系统通过 Key 前缀自动识别提供商。\n\nFile v1.0.1:references/well-known-sites.json\n\n{\n  \"_description\": \"常用网站地址索引 — 供 Agent 快速定位目标地址，按类别组织。key 为语义化标识，value 包含 url / description / category。\",\n\n  \"search.baidu\": {\n    \"url\": \"https://www.baidu.com/s?wd={query}\",\n    \"description\": \"百度搜索（中文首选），{query} 替换为搜索关键词\",\n    \"category\": \"search_engine\"\n  },\n  \"search.google\": {\n    \"url\": \"https://www.google.com/search?q={query}\",\n    \"description\": \"Google 搜索（英文/国际首选），{query} 替换为搜索关键词\",\n    \"category\": \"search_engine\"\n  },\n  \"search.bing\": {\n    \"url\": \"https://www.bing.com/search?q={query}\",\n    \"description\": \"Bing 搜索（中英文均可），{query} 替换为搜索关键词\",\n    \"category\": \"search_engine\"\n  },\n  \"search.duckduckgo\": {\n    \"url\": \"https://duckduckgo.com/?q={query}\",\n    \"description\": \"DuckDuckGo 搜索（隐私友好），{query} 替换为搜索关键词\",\n    \"category\": \"search_engine\"\n  },\n  \"search.sogou\": {\n    \"url\": \"https://www.sogou.com/web?query={query}\",\n    \"description\": \"搜狗搜索，{query} 替换为搜索关键词\",\n    \"category\": \"search_engine\"\n  },\n\n  \"social.weibo.login\": {\n    \"url\": \"https://passport.weibo.com/sso/signin?entry=miniblog&source=miniblog&disp=popup&url=https%3A%2F%2Fweibo.com%2Fnewlogin%3Ftabtype%3Dweibo%26gid%3D102803%26openLoginLayer%3D0%26url%3Dhttps%3A%2F%2Fweibo.com%2F&from=weibopro\",\n    \"description\": \"微博登录页面（SSO 单点登录入口）,注意在此页面截图时不要使用全页截图，fullpage:false\",\n    \"category\": \"social_platform\"\n  },\n  \"social.weibo.home\": {\n    \"url\": \"https://weibo.com/\",\n    \"description\": \"微博首页\",\n    \"category\": \"social_platform\"\n  },\n  \"social.weibo.hot\": {\n    \"url\": \"https://s.weibo.com/top/summary\",\n    \"description\": \"微博热搜榜\",\n    \"category\": \"social_platform\"\n  },\n  \"social.zhihu.home\": {\n    \"url\": \"https://www.zhihu.com/\",\n    \"description\": \"知乎首页\",\n    \"category\": \"social_platform\"\n  },\n  \"social.zhihu.hot\": {\n    \"url\": \"https://www.zhihu.com/hot\",\n    \"description\": \"知乎热榜\",\n    \"category\": \"social_platform\"\n  },\n  \"social.zhihu.search\": {\n    \"url\": \"https://www.zhihu.com/search?type=content&q={query}\",\n    \"description\": \"知乎搜索，{query} 替换为搜索关键词\",\n    \"category\": \"social_platform\"\n  },\n  \"social.douyin.home\": {\n    \"url\": \"https://www.douyin.com/\",\n    \"description\": \"抖音首页（Web 版）\",\n    \"category\": \"social_platform\"\n  },\n  \"social.xiaohongshu.home\": {\n    \"url\": \"https://www.xiaohongshu.com/\",\n    \"description\": \"小红书首页（Web 版）\",\n    \"category\": \"social_platform\"\n  },\n  \"social.twitter.home\": {\n    \"url\": \"https://x.com/\",\n    \"description\": \"X (Twitter) 首页\",\n    \"category\": \"social_platform\"\n  },\n\n  \"video.bilibili.home\": {\n    \"url\": \"https://www.bilibili.com/\",\n    \"description\": \"哔哩哔哩首页\",\n    \"category\": \"video_platform\"\n  },\n  \"video.bilibili.hot\": {\n    \"url\": \"https://www.bilibili.com/v/popular/rank/all\",\n    \"description\": \"哔哩哔哩全站排行榜\",\n    \"category\": \"video_platform\"\n  },\n  \"video.bilibili.search\": {\n    \"url\": \"https://search.bilibili.com/all?keyword={query}\",\n    \"description\": \"哔哩哔哩搜索，{query} 替换为搜索关键词\",\n    \"category\": \"video_platform\"\n  },\n  \"video.youtube.home\": {\n    \"url\": \"https://www.youtube.com/\",\n    \"description\": \"YouTube 首页\",\n    \"category\": \"video_platform\"\n  },\n\n  \"news.toutiao\": {\n    \"url\": \"https://www.toutiao.com/\",\n    \"description\": \"今日头条首页\",\n    \"category\": \"news\"\n  },\n  \"news.36kr\": {\n    \"url\": \"https://36kr.com/\",\n    \"description\": \"36氪首页（科技/创投资讯）\",\n    \"category\": \"news\"\n  },\n  \"news.hackernews\": {\n    \"url\": \"https://news.ycombinator.com/\",\n    \"description\": \"Hacker News 首页（技术/创业资讯）\",\n    \"category\": \"news\"\n  },\n  \"news.sspai\": {\n    \"url\": \"https://sspai.com/\",\n    \"description\": \"少数派首页（效率/数码资讯）\",\n    \"category\": \"news\"\n  },\n\n  \"dev.github.home\": {\n    \"url\": \"https://github.com/\",\n    \"description\": \"GitHub 首页\",\n    \"category\": \"dev_tool\"\n  },\n  \"dev.github.trending\": {\n    \"url\": \"https://github.com/trending\",\n    \"description\": \"GitHub Trending（热门项目）\",\n    \"category\": \"dev_tool\"\n  },\n  \"dev.github.search\": {\n    \"url\": \"https://github.com/search?q={query}&type=repositories\",\n    \"description\": \"GitHub 仓库搜索，{query} 替换为搜索关键词\",\n    \"category\": \"dev_tool\"\n  },\n  \"dev.npm.search\": {\n    \"url\": \"https://www.npmjs.com/search?q={query}\",\n    \"description\": \"npm 包搜索，{query} 替换为包名/关键词\",\n    \"category\": \"dev_tool\"\n  },\n  \"dev.pypi.search\": {\n    \"url\": \"https://pypi.org/search/?q={query}\",\n    \"description\": \"PyPI 包搜索，{query} 替换为包名/关键词\",\n    \"category\": \"dev_tool\"\n  },\n  \"dev.stackoverflow\": {\n    \"url\": \"https://stackoverflow.com/search?q={query}\",\n    \"description\": \"Stack Overflow 搜索，{query} 替换为问题关键词\",\n    \"category\": \"dev_tool\"\n  },\n  \"dev.mdn\": {\n    \"url\": \"https://developer.mozilla.org/zh-CN/search?q={query}\",\n    \"description\": \"MDN Web Docs 搜索（中文版），{query} 替换为关键词\",\n    \"category\": \"dev_tool\"\n  },\n\n  \"wechat.mp.login\": {\n    \"url\": \"https://mp.weixin.qq.com/\",\n    \"description\": \"微信公众平台登录页\",\n    \"category\": \"wechat\"\n  },\n  \"wechat.mp.admin\": {\n    \"url\": \"https://mp.weixin.qq.com/cgi-bin/home?t=home/index\",\n    \"description\": \"微信公众平台管理后台首页（需登录态）\",\n    \"category\": \"wechat\"\n  },\n\n  \"ai.chatgpt\": {\n    \"url\": \"https://chatgpt.com/\",\n    \"description\": \"ChatGPT 首页\",\n    \"category\": \"ai_tool\"\n  },\n  \"ai.claude\": {\n    \"url\": \"https://claude.ai/\",\n    \"description\": \"Claude AI 首页\",\n    \"category\": \"ai_tool\"\n  },\n  \"ai.huggingface\": {\n    \"url\": \"https://huggingface.co/\",\n    \"description\": \"Hugging Face 首页（AI 模型/数据集平台）\",\n    \"category\": \"ai_tool\"\n  },\n\n  \"doc.wikipedia.zh\": {\n    \"url\": \"https://zh.wikipedia.org/wiki/{query}\",\n    \"description\": \"中文维基百科条目，{query} 替换为条目名\",\n    \"category\": \"reference\"\n  },\n  \"doc.wikipedia.en\": {\n    \"url\": \"https://en.wikipedia.org/wiki/{query}\",\n    \"description\": \"英文维基百科条目，{query} 替换为条目名\",\n    \"category\": \"reference\"\n  },\n  \"doc.baike.baidu\": {\n    \"url\": \"https://baike.baidu.com/item/{query}\",\n    \"description\": \"百度百科条目，{query} 替换为条目名\",\n    \"category\": \"reference\"\n  },\n\n  \"cloud.tencent.login\": {\n    \"url\": \"https://cloud.tencent.com/login\",\n    \"description\": \"腾讯云登录页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.tencent.console\": {\n    \"url\": \"https://cloud.tencent.com/\",\n    \"description\": \"腾讯云控制台首页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.aliyun.login\": {\n    \"url\": \"https://account.aliyun.com/\",\n    \"description\": \"阿里云登录页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.aliyun.console\": {\n    \"url\": \"https://www.aliyun.com/\",\n    \"description\": \"阿里云控制台首页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.aws.login\": {\n    \"url\": \"https://signin.aws.amazon.com/\",\n    \"description\": \"AWS 登录页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.aws.console\": {\n    \"url\": \"https://console.aws.amazon.com/\",\n    \"description\": \"AWS 控制台首页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.huawei.login\": {\n    \"url\": \"https://auth.huaweicloud.com/\",\n    \"description\": \"华为云登录页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.huawei.console\": {\n    \"url\": \"https://www.huaweicloud.com/\",\n    \"description\": \"华为云控制台首页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.google.login\": {\n    \"url\": \"https://console.cloud.google.com/\",\n    \"description\": \"Google Cloud 登录页/控制台\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.azure.login\": {\n    \"url\": \"https://portal.azure.com/\",\n    \"description\": \"Microsoft Azure 登录页/控制台\",\n    \"category\": \"cloud_provider\"\n  }\n}\n\nArchive v1.0.0: 4 files, 6923 bytes\n\nFiles: references/web-search-config.md (4227b), references/well-known-sites.json (8031b), SKILL.md (4767b), _meta.json (134b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: web-tools-guide\ndescription: \"Web 工具策略指南。MUST trigger when 用户提到：搜索/上网/查资料/打开网站/抓取网页/获取网络信息/新闻/热点/web search/web fetch/browser use/浏览器自动化/JS 渲染页面，或需要使用 web_search/web_fetch/browser 工具时。按 search → fetch → browser 三级策略选择工具。\"\n---\n\n<!-- baseDir = /root/.openclaw/workspace/skills/web-tools-guide -->\n\n# Web 工具策略\n\n遵循 ReAct 范式，按**从轻到重、从通用到具体**选择工具：\n\n```\nLevel 1: web_search  — 关键词搜索，快速获取信息入口\nLevel 2: web_fetch   — 已知 URL，直接获取静态内容\nLevel 3: browser     — 浏览器自动化，处理复杂网页操作\n```\n\n逐级升级，每次升级告知用户原因，不要静默切换。\n\n---\n\n## 决策流程\n\n```\n有明确 URL？\n├─ YES → 静态内容（文章/文档/API/RSS）？→ web_fetch\n│        需要 JS 渲染/登录/交互/截图？  → browser\n└─ NO  → web_search\n         ├─ 成功 → 对结果 URL 按上述逻辑选 fetch/browser\n         └─ 失败 → 引导配置（见\"web_search 失败处理\"）\n```\n\n---\n\n## Level 1: web_search\n\n**何时用**：没有明确 URL，需要搜索信息（新闻、热点、查资料、比较信息）。\n\n**怎么用**：直接调用 `web_search`，传入搜索关键词。\n\n**结果处理**：返回的 URL 按决策流程选 `web_fetch` 或 `browser` 深入获取。\n\n**失败时**：见下方\"web_search 失败处理\"。\n\n---\n\n## Level 2: web_fetch\n\n**何时用**：已知 URL，页面为静态内容——新闻文章、博客、技术文档、API 端点、RSS 源。\n\n**怎么用**：直接调用 `web_fetch`，传入 URL。\n\n**失败信号**：返回空白页、403、CAPTCHA、骨架 HTML → 说明需要 JS 渲染或登录态，告知用户后升级到 browser。\n\n---\n\n## Level 3: browser\n\n这是最重量级的工具，也是当前问题最多的场景。以下是详细操作指引。\n\n### 何时用\n\n- **JS 渲染页面**：SPA、动态加载内容（微博 feed、知乎回答、小红书瀑布流）\n- **需要登录态**：登录后才可见的内容、管理后台\n- **页面交互**：点击按钮、填写表单、翻页、滚动加载更多\n- **截图需求**：需要页面视觉信息\n- **web_fetch 失败的兜底**：前一级工具无法获取有效内容\n\n### 操作流程\n\n**信息获取（只读）：**\n1. 导航到目标 URL\n2. 等待关键元素出现（不要用固定时间等待）\n3. 提取所需内容（文本、链接、图片等）\n4. 返回结果给用户\n\n**登录操作：**\n1. 查找登录页 URL → `read {baseDir}/references/well-known-sites.json`\n2. **告知用户即将执行登录操作，获取确认**\n3. 导航到登录页\n4. 填写凭证（用户提供）或提示用户扫码\n5. 等待登录成功，确认后继续后续操作\n\n**页面交互：**\n1. 导航到目标页面\n2. 使用 CSS 选择器定位元素（辅以文本内容匹配）\n3. 执行交互：点击、输入、选择、滚动\n4. 等待响应/页面变化\n5. 提取结果或截图\n\n### 关键注意事项\n\n- **登录操作必须获得用户授权** — 任何涉及账号登录的操作前，先告知用户并等待确认\n- **敏感操作必须二次确认** — 发帖、删除、支付等不可逆操作\n- **优先 CSS 选择器** — 比 XPath 更稳定，辅以文本匹配\n- **智能等待** — 等待目标元素出现，而非 `sleep(3)` 式固定等待\n- **CAPTCHA/验证码** — 无法自动处理时告知用户需手动介入\n- **页面加载超时** — 设置合理超时，失败时告知用户并建议重试\n- **多步操作保持状态** — 登录后的后续操作复用同一浏览器上下文，不要重新打开\n\n---\n\n## web_search 失败处理\n\n**当 `web_search` 返回错误时，不要静默降级，必须引导配置：**\n\n1. **`read {baseDir}/references/web-search-config.md`**\n2. 按文件中 Step 1 **原样输出**配置引导给用户（不要改写表格或省略内容）\n3. 等待用户回复：\n   - 用户提供 API Key → 再次 `read {baseDir}/references/web-search-config.md`，按 Step 2-5 执行\n   - 用户说\"暂不配置\" → 进入降级方案\n   - 其他回复 → 正常响应\n4. **降级方案**（仅在用户明确拒绝配置后）：\n   - `read {baseDir}/references/well-known-sites.json` 获取常用网站 URL\n   - 用 `web_fetch` 直接获取目标网站内容\n   - 仍不行 → 升级到 `browser`\n\n---\n\n## 常用网站\n\n需要常用网站 URL 时（登录页、搜索引擎、热搜榜等）：\n\n```\nread {baseDir}/references/well-known-sites.json\n```\n\n通过 key 查找（如 `social.weibo.login`、`search.baidu`）。带 `{query}` 的 URL 替换为实际搜索词。\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7ekx2kqw6f5krp4yb0qfex5n831k1k\",\n  \"slug\": \"web-tools-guide\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1774695416475\n}\n\nFile v1.0.0:references/web-search-config.md\n\n# Web Search API 配置流程\n\n当 `web_search` 返回错误后，Agent 读取此文件并按步骤执行。\n\n---\n\n## Step 1: 初始引导（检测到未配置状态）\n\n**⚠️ 关键约束**：停止 fallback 链。将下方引用块（`>` 开头的部分）**原样输出**给用户。不要重新组织、改写表格结构、或编造额外信息（如\"无需绑定信用卡\"）。直接复制粘贴：\n\n> 搜索功能需要配置 API Key 才能使用。\n>\n> **推荐方案**（二选一）：\n> - **Tavily**: https://app.tavily.com — 国际内容效果好，每月 1000 免费积分\n> - **Kimi**: https://platform.moonshot.cn — 中文内容效果佳\n>\n> **计费对比**：\n>\n> | 对比维度 | Tavily | Kimi |\n> |---------|--------|------|\n> | **免费额度** | 每月 1000 次基础搜索免费 | 无免费额度，每次≈0.03元 |\n> | **计费模式** | 失败不收费 | 固定0.03元/次+Token费 |\n>\n> 请提供您的 API Key（格式：`tvly-xxx...` 或 `sk-xxx...`），或回复\"暂不配置\"使用备选方案。\n\n**如果用户选择\"暂不配置\"：**\n1. 回到 SKILL.md 的降级决策流程（使用 web_fetch 配合搜索引擎 URL，或 browser）\n2. 告知用户：\"已切换到备选方案。如需更好体验，可随时配置 API Key。\"\n\n---\n\n## Step 2: 接收 API Key 并分析\n\n**⚠️ 收到用户的 Key 后，必须先执行本步骤。禁止跳过分析和确认直接进入 Step 3 配置。**\n\n**当用户提供 API Key 时：**\n\n1. **通过前缀自动检测提供商**：\n   - `tvly-*` → Tavily\n   - `sk-*` → Kimi\n   - 未知前缀 → 询问用户使用哪个提供商\n\n2. **分析并告知用户**（先不配置）：\n   - 如果 `tvly-*`：\"检测到您提供的是 **Tavily** 的 API Key ✅\"\n   - 如果 `sk-*`：\"检测到您提供的是 **Kimi** 的 API Key ✅\"\n\n3. **在操作前请求确认**（原样输出以下内容）：\n   > 接下来我将进行以下操作：\n   > 1. 配置 API Key 到 openclaw.json\n   > 2. 重启 gateway 以应用配置\n   >\n   > ⚠️ **重要提示**：\n   > - 稍待片刻，请主动发送消息（如\"继续\"）唤醒会话\n   > - 我将继续为您执行搜索\n   >\n   > 请回复\"确认\"开始配置，或回复\"取消\"放弃配置。\n\n4. **等待用户确认** — 用户回复前不要继续操作\n\n---\n\n## Step 3: 执行配置（用户确认后）\n\n**仅在用户确认后执行（如\"确认\"、\"好\"、\"开始\"）：**\n\n1. **配置 openclaw.json**：\n   ```bash\n   # Tavily（tvly-* 前缀）\n   openclaw config set plugins.entries.tavily.enabled true\n   openclaw config set plugins.entries.tavily.config.webSearch.apiKey <user-provided-key>\n\n   # Kimi（sk-* 前缀）\n   openclaw config set plugins.entries.kimi.enabled true\n   openclaw config set plugins.entries.kimi.config.webSearch.apiKey <user-provided-key>\n   ```\n\n2. **告知用户配置完成**：\n   > ✅ API Key 已保存！\n\n---\n\n## Step 4: 重启 Gateway\n\n1. **执行重启**：\n   ```bash\n   # 重启 gateway 以应用配置变更\n   openclaw restart gateway\n   # 或使用 Docker\n   docker restart openclaw-gateway\n   # 或查找并重启 gateway 进程\n   pkill -f \"openclaw-gateway\" || pkill -f \"gateway\"\n   ```\n\n2. **告知用户等待并唤醒会话**：\n   > 正在重启 gateway 以应用配置...\n   >\n   > ⏳ 稍待片刻，请发送任意消息（如\"继续\"）唤醒会话，我将继续为您搜索。\n\n---\n\n## Step 5: 等待用户唤醒会话\n\n**停止并等待用户消息。**\n\n当用户发送任意消息（如\"继续\"、\"已重启\"、\"好了\"、\"在吗\"）后：\n\n1. **验证 API Key 是否配置成功**：\n   ```bash\n   # 检查 Tavily\n   openclaw config get plugins.entries.tavily.config.webSearch.apiKey\n   # 检查 Kimi\n   openclaw config get plugins.entries.kimi.config.webSearch.apiKey\n   ```\n\n2. 如果已配置 → 执行用户原始搜索请求（使用 `web_search` 工具）\n3. 如果未配置 → 重新进入配置流程\n\n---\n\n## 快速参考\n\n| 提供商 | 网站 | Key 前缀 | 中文支持 |\n|--------|------|---------|---------|\n| Tavily | https://app.tavily.com | `tvly-` | 良好 |\n| Kimi/Moonshot | https://platform.moonshot.cn | `sk-` | 优秀 |\n\n**自动检测规则**：系统通过 Key 前缀自动识别提供商。\n\nFile v1.0.0:references/well-known-sites.json\n\n{\n  \"_description\": \"常用网站地址索引 — 供 Agent 快速定位目标地址，按类别组织。key 为语义化标识，value 包含 url / description / category。\",\n\n  \"search.baidu\": {\n    \"url\": \"https://www.baidu.com/s?wd={query}\",\n    \"description\": \"百度搜索（中文首选），{query} 替换为搜索关键词\",\n    \"category\": \"search_engine\"\n  },\n  \"search.google\": {\n    \"url\": \"https://www.google.com/search?q={query}\",\n    \"description\": \"Google 搜索（英文/国际首选），{query} 替换为搜索关键词\",\n    \"category\": \"search_engine\"\n  },\n  \"search.bing\": {\n    \"url\": \"https://www.bing.com/search?q={query}\",\n    \"description\": \"Bing 搜索（中英文均可），{query} 替换为搜索关键词\",\n    \"category\": \"search_engine\"\n  },\n  \"search.duckduckgo\": {\n    \"url\": \"https://duckduckgo.com/?q={query}\",\n    \"description\": \"DuckDuckGo 搜索（隐私友好），{query} 替换为搜索关键词\",\n    \"category\": \"search_engine\"\n  },\n  \"search.sogou\": {\n    \"url\": \"https://www.sogou.com/web?query={query}\",\n    \"description\": \"搜狗搜索，{query} 替换为搜索关键词\",\n    \"category\": \"search_engine\"\n  },\n\n  \"social.weibo.login\": {\n    \"url\": \"https://passport.weibo.com/sso/signin?entry=miniblog&source=miniblog&disp=popup&url=https%3A%2F%2Fweibo.com%2Fnewlogin%3Ftabtype%3Dweibo%26gid%3D102803%26openLoginLayer%3D0%26url%3Dhttps%3A%2F%2Fweibo.com%2F&from=weibopro\",\n    \"description\": \"微博登录页面（SSO 单点登录入口）\",\n    \"category\": \"social_platform\"\n  },\n  \"social.weibo.home\": {\n    \"url\": \"https://weibo.com/\",\n    \"description\": \"微博首页\",\n    \"category\": \"social_platform\"\n  },\n  \"social.weibo.hot\": {\n    \"url\": \"https://s.weibo.com/top/summary\",\n    \"description\": \"微博热搜榜\",\n    \"category\": \"social_platform\"\n  },\n  \"social.zhihu.home\": {\n    \"url\": \"https://www.zhihu.com/\",\n    \"description\": \"知乎首页\",\n    \"category\": \"social_platform\"\n  },\n  \"social.zhihu.hot\": {\n    \"url\": \"https://www.zhihu.com/hot\",\n    \"description\": \"知乎热榜\",\n    \"category\": \"social_platform\"\n  },\n  \"social.zhihu.search\": {\n    \"url\": \"https://www.zhihu.com/search?type=content&q={query}\",\n    \"description\": \"知乎搜索，{query} 替换为搜索关键词\",\n    \"category\": \"social_platform\"\n  },\n  \"social.douyin.home\": {\n    \"url\": \"https://www.douyin.com/\",\n    \"description\": \"抖音首页（Web 版）\",\n    \"category\": \"social_platform\"\n  },\n  \"social.xiaohongshu.home\": {\n    \"url\": \"https://www.xiaohongshu.com/\",\n    \"description\": \"小红书首页（Web 版）\",\n    \"category\": \"social_platform\"\n  },\n  \"social.twitter.home\": {\n    \"url\": \"https://x.com/\",\n    \"description\": \"X (Twitter) 首页\",\n    \"category\": \"social_platform\"\n  },\n\n  \"video.bilibili.home\": {\n    \"url\": \"https://www.bilibili.com/\",\n    \"description\": \"哔哩哔哩首页\",\n    \"category\": \"video_platform\"\n  },\n  \"video.bilibili.hot\": {\n    \"url\": \"https://www.bilibili.com/v/popular/rank/all\",\n    \"description\": \"哔哩哔哩全站排行榜\",\n    \"category\": \"video_platform\"\n  },\n  \"video.bilibili.search\": {\n    \"url\": \"https://search.bilibili.com/all?keyword={query}\",\n    \"description\": \"哔哩哔哩搜索，{query} 替换为搜索关键词\",\n    \"category\": \"video_platform\"\n  },\n  \"video.youtube.home\": {\n    \"url\": \"https://www.youtube.com/\",\n    \"description\": \"YouTube 首页\",\n    \"category\": \"video_platform\"\n  },\n\n  \"news.toutiao\": {\n    \"url\": \"https://www.toutiao.com/\",\n    \"description\": \"今日头条首页\",\n    \"category\": \"news\"\n  },\n  \"news.36kr\": {\n    \"url\": \"https://36kr.com/\",\n    \"description\": \"36氪首页（科技/创投资讯）\",\n    \"category\": \"news\"\n  },\n  \"news.hackernews\": {\n    \"url\": \"https://news.ycombinator.com/\",\n    \"description\": \"Hacker News 首页（技术/创业资讯）\",\n    \"category\": \"news\"\n  },\n  \"news.sspai\": {\n    \"url\": \"https://sspai.com/\",\n    \"description\": \"少数派首页（效率/数码资讯）\",\n    \"category\": \"news\"\n  },\n\n  \"dev.github.home\": {\n    \"url\": \"https://github.com/\",\n    \"description\": \"GitHub 首页\",\n    \"category\": \"dev_tool\"\n  },\n  \"dev.github.trending\": {\n    \"url\": \"https://github.com/trending\",\n    \"description\": \"GitHub Trending（热门项目）\",\n    \"category\": \"dev_tool\"\n  },\n  \"dev.github.search\": {\n    \"url\": \"https://github.com/search?q={query}&type=repositories\",\n    \"description\": \"GitHub 仓库搜索，{query} 替换为搜索关键词\",\n    \"category\": \"dev_tool\"\n  },\n  \"dev.npm.search\": {\n    \"url\": \"https://www.npmjs.com/search?q={query}\",\n    \"description\": \"npm 包搜索，{query} 替换为包名/关键词\",\n    \"category\": \"dev_tool\"\n  },\n  \"dev.pypi.search\": {\n    \"url\": \"https://pypi.org/search/?q={query}\",\n    \"description\": \"PyPI 包搜索，{query} 替换为包名/关键词\",\n    \"category\": \"dev_tool\"\n  },\n  \"dev.stackoverflow\": {\n    \"url\": \"https://stackoverflow.com/search?q={query}\",\n    \"description\": \"Stack Overflow 搜索，{query} 替换为问题关键词\",\n    \"category\": \"dev_tool\"\n  },\n  \"dev.mdn\": {\n    \"url\": \"https://developer.mozilla.org/zh-CN/search?q={query}\",\n    \"description\": \"MDN Web Docs 搜索（中文版），{query} 替换为关键词\",\n    \"category\": \"dev_tool\"\n  },\n\n  \"wechat.mp.login\": {\n    \"url\": \"https://mp.weixin.qq.com/\",\n    \"description\": \"微信公众平台登录页\",\n    \"category\": \"wechat\"\n  },\n  \"wechat.mp.admin\": {\n    \"url\": \"https://mp.weixin.qq.com/cgi-bin/home?t=home/index\",\n    \"description\": \"微信公众平台管理后台首页（需登录态）\",\n    \"category\": \"wechat\"\n  },\n\n  \"ai.chatgpt\": {\n    \"url\": \"https://chatgpt.com/\",\n    \"description\": \"ChatGPT 首页\",\n    \"category\": \"ai_tool\"\n  },\n  \"ai.claude\": {\n    \"url\": \"https://claude.ai/\",\n    \"description\": \"Claude AI 首页\",\n    \"category\": \"ai_tool\"\n  },\n  \"ai.huggingface\": {\n    \"url\": \"https://huggingface.co/\",\n    \"description\": \"Hugging Face 首页（AI 模型/数据集平台）\",\n    \"category\": \"ai_tool\"\n  },\n\n  \"doc.wikipedia.zh\": {\n    \"url\": \"https://zh.wikipedia.org/wiki/{query}\",\n    \"description\": \"中文维基百科条目，{query} 替换为条目名\",\n    \"category\": \"reference\"\n  },\n  \"doc.wikipedia.en\": {\n    \"url\": \"https://en.wikipedia.org/wiki/{query}\",\n    \"description\": \"英文维基百科条目，{query} 替换为条目名\",\n    \"category\": \"reference\"\n  },\n  \"doc.baike.baidu\": {\n    \"url\": \"https://baike.baidu.com/item/{query}\",\n    \"description\": \"百度百科条目，{query} 替换为条目名\",\n    \"category\": \"reference\"\n  },\n\n  \"cloud.tencent.login\": {\n    \"url\": \"https://cloud.tencent.com/login\",\n    \"description\": \"腾讯云登录页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.tencent.console\": {\n    \"url\": \"https://cloud.tencent.com/\",\n    \"description\": \"腾讯云控制台首页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.aliyun.login\": {\n    \"url\": \"https://account.aliyun.com/\",\n    \"description\": \"阿里云登录页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.aliyun.console\": {\n    \"url\": \"https://www.aliyun.com/\",\n    \"description\": \"阿里云控制台首页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.aws.login\": {\n    \"url\": \"https://signin.aws.amazon.com/\",\n    \"description\": \"AWS 登录页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.aws.console\": {\n    \"url\": \"https://console.aws.amazon.com/\",\n    \"description\": \"AWS 控制台首页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.huawei.login\": {\n    \"url\": \"https://auth.huaweicloud.com/\",\n    \"description\": \"华为云登录页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.huawei.console\": {\n    \"url\": \"https://www.huaweicloud.com/\",\n    \"description\": \"华为云控制台首页\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.google.login\": {\n    \"url\": \"https://console.cloud.google.com/\",\n    \"description\": \"Google Cloud 登录页/控制台\",\n    \"category\": \"cloud_provider\"\n  },\n  \"cloud.azure.login\": {\n    \"url\": \"https://portal.azure.com/\",\n    \"description\": \"Microsoft Azure 登录页/控制台\",\n    \"category\": \"cloud_provider\"\n  }\n}","readmeExcerpt":"Skill: web-tools-guide Owner: fmls Summary: MANDATORY before calling web_search, web_fetch, browser, or opencli. Contains required error-handling procedures (web_search failure → must guide user to con... Tags: latest:1.0.2 Version history: v1.0.2 | 2026-04-14T03:55:00.895Z | user - Added OpenCLI integration as a fallback tool (covering 70+ sites) between web_fetch and browser, with setup script and user guidance. - ","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"┌─ 没有 URL，需要搜索 ──────→ web_search   （关键词搜索）\n│\n├─ 已知 URL，静态内容 ──────→ web_fetch    （直取页面）\n│\n├─ 以上失败 / 不适用 ──────→ opencli      （CLI 结构化访问，70+ 站点）\n│\n└─ 全都不行 ───────────────→ browser      （浏览器自动化，兜底）"},{"language":"text","snippet":"有明确 URL？\n├─ YES → 静态内容（文章/文档/API/RSS）？\n│        ├─ YES → web_fetch\n│        │        失败（空白/403/CAPTCHA）？→ opencli → browser\n│        └─ NO（需要 JS/登录/交互/截图）→ opencli → browser\n└─ NO  → web_search\n         ├─ 成功 → 对结果 URL 按上述逻辑选 fetch/opencli/browser\n         ├─ 失败（API 错误）→ 引导配置（见\"web_search 失败处理\"）\n         └─ 无结果/不适用 → opencli → browser"},{"language":"bash","snippet":"bash {baseDir}/scripts/setup-opencli.sh"},{"language":"bash","snippet":"opencli --help                    # 有没有这个站？\nopencli <site> --help             # 这个站能做什么？\nopencli <site> <command> --help   # 这个命令怎么用？"},{"language":"text","snippet":"read {baseDir}/references/well-known-sites.json"},{"language":"bash","snippet":"opencli --help                         # 我能操作哪些网站？\nopencli <site> --help                  # 这个网站有哪些操作？\nopencli <site> <command> --help        # 这个操作怎么用？"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: web-tools-guide\ndescription: \"MANDATORY before calling web_search, web_fetch, browser, or opencli. Contains required error-handling procedures (web_search failure → must guide user to configure API), fallback chain (opencli CLI covers 70+ sites as structured fallback before browser), and site-specific login URLs. Without reading this skill, you WILL handle failures incorrectly and miss available tools. Trigger on: 搜索/上网/查资料/打开网站/抓取网页/新闻/热点/web search/fetch/browser/opencli.\"\n---\n\n<!-- baseDir = /root/.openclaw/workspace/skills/web-tools-guide -->\n\n# Web 工具策略\n\n遵循 ReAct 范式。**四个工具不是层级关系，是分支决策**：\n\n```\n┌─ 没有 URL，需要搜索 ──────→ web_search   （关键词搜索）\n│\n├─ 已知 URL，静态内容 ──────→ web_fetch    （直取页面）\n│\n├─ 以上失败 / 不适用 ──────→ opencli      （CLI 结构化访问，70+ 站点）\n│\n└─ 全都不行 ───────────────→ browser      （浏览器自动化，兜底）\n```\n\n先按场景选 web_search 或 web_fetch；失败时先试 opencli，最后才上 browser。\n每次切换工具告知用户原因，不要静默降级。\n\n---\n\n## 决策流程\n\n```\n有明确 URL？\n├─ YES → 静态内容（文章/文档/API/RSS）？\n│        ├─ YES → web_fetch\n│        │        失败（空白/403/CAPTCHA）？→ opencli → browser\n│        └─ NO（需要 JS/登录/交互/截图）→ opencli → browser\n└─ NO  → web_search\n         ├─ 成功 → 对结果 URL 按上述逻辑选 fetch/opencli/browser\n         ├─ 失败（API 错误）→ 引导配置（见\"web_search 失败处理\"）\n         └─ 无结果/不适用 → opencli → browser\n```\n\n---\n\n## web_search\n\n**何时用**：没有明确 URL，需要搜索信息（新闻、热点、查资料、比较信息）。\n\n**怎么用**：直接调用 `web_search`，传入搜索关键词。\n\n**结果处理**：返回的 URL 按决策流程选 `web_fetch`、`opencli` 或 `browser` 深入获取。\n\n**失败时**：见下方\"web_search 失败处理\"。\n\n---\n\n## web_fetch\n\n**何时用**：已知 URL，页面为静态内容——新闻文章、博客、技术文档、API 端点、RSS 源。\n\n**怎么用**：直接调用 `web_fetch`，传入 URL。\n\n**失败信号**：返回空白页、403、CAPTCHA、骨架 HTML → 尝试 `opencli`，仍不行再升级到 `browser`。\n\n---\n\n## opencli（Fallback，优先于 browser）\n\n**何时用**：web_search / web_fetch 失败或不适用时，先试 opencli 再考虑 browser。覆盖 70+ 主流网站，秒级返回结构化数据。\n\n**首次使用前**：如果执行 `opencli` 提示 command not found，需要先运行安装脚本（幂等，可重复运行）：\n```bash\nbash {baseDir}/scripts/setup-opencli.sh\n```\n该脚本会自动完成：安装 opencli CLI → 编译 Browser Bridge 插件 → 重启浏览器加载插件。\n\n**渐进式发现（不需要记命令）**：\n```bash\nopencli --help                    # 有没有这个站？\nopencli <site> --help             # 这个站能做什么？\nopencli <site> <command> --help   # 这个命令怎么用？\n```\n\n**详细用法**：`read {baseDir}/references/opencli-guide.md`\n\n**失败时**：告知用户 opencli 失败原因，降级到 browser。\n\n---\n\n## browser（最后手段）\n\n这是最重量级的工具，也是当前问题最多的场景。以下是详细操作指引。\n\n### 何时用\n\n- **JS 渲染页面**：SPA、动态加载内容（微博 feed、知乎回答、小红书瀑布流）\n- **需要登录态**：登录后才可见的内容、管理后台\n- **页面交互**：点击按钮、填写表单、翻页、滚动加载更多\n- **截图需求**：需要页面视觉信息\n- **其他工具全部失败的兜底**\n\n### 操作流程\n\n**信息获取（只读）：**\n1. 导航到目标 URL\n2. 等待关键元素出现（不要用固定时间等待）\n3. 提取所需内容（文本、链接、图片等）\n4. 返回结果给用户\n\n**登录操作：**\n1. 查找登录页 URL → `read {baseDir}/references/well-known-sites.json`\n2. **告知用户即将执行登录操作，获取确认**\n3. 导航到登录页\n4. 填写凭证（用户提供）或提示用户扫码\n5. 等待登录成功，确认后继续后续操作\n\n**页面交互：**\n1. 导航到目标页面\n2. 使用 CSS 选择器定位元素（辅以文本内容匹配）\n3. 执行交互：点击、输入、选择、滚动\n4. 等待响应/页面变化\n5. 提取结果或截图\n\n### 关键注意事项\n\n- **登录操作必须获得用户授权** — 任何涉及账号登录的操作前，先告知用户并等待确认\n- **敏感操作必须二次确认** — 发帖、删除、支付等不可逆操作\n- **优先 CSS 选择器** — 比 XPath 更稳定，辅以文本匹配\n- **智能等待** — 等待目标元素出现，而非 `sleep(3)` 式固定等待\n- **CAPTCHA/验证码** — 无法自动处理时告知用户需手动介入\n- **页面加载超时** — 设置合理超时，失败时告知用户并建议重试\n- **多步操作保持状态** — 登录"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7ekx2kqw6f5krp4yb0qfex5n831k1k\",\n  \"slug\": \"web-tools-guide\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1776138900895\n}"},{"path":"references/opencli-guide.md","content":"# opencli 使用指引\n\n`opencli` 是一个命令行工具，将 70+ 主流网站封装为 CLI 命令。相比 browser 自动化，它更快（秒级）、更精准（结构化数据）、更稳定（不依赖 DOM 变化）。\n\n## 核心理念\n\n不需要记住任何命令。通过 `--help` 逐层探索即可：\n\n```bash\nopencli --help                         # 我能操作哪些网站？\nopencli <site> --help                  # 这个网站有哪些操作？\nopencli <site> <command> --help        # 这个操作怎么用？\n```\n\n## 典型场景映射\n\n以下是常见用户需求到 opencli 命令的映射示例（不完整，遇到新场景先 `--help` 探索）：\n\n| 用户需求 | opencli 命令 |\n|---------|-------------|\n| 看微博热搜 | `opencli weibo hot` |\n| 搜索小红书笔记 | `opencli xiaohongshu search <关键词>` |\n| 看知乎热榜 | `opencli zhihu hot` |\n| B站热门视频 | `opencli bilibili hot` |\n| 搜索 Twitter | `opencli twitter search <关键词>` |\n| 看 HackerNews 头条 | `opencli hackernews top` |\n| GitHub trending | `opencli gh trending` |\n| 获取笔记详情/评论 | `opencli xiaohongshu note <note-id>` |\n| 获取 YouTube 字幕 | `opencli youtube transcript <video-id>` |\n| 读取任意网页为 Markdown | `opencli web read --url <URL>` |\n\n## 输出格式\n\n所有命令支持 `-f` / `--format` 选项：\n\n| 格式 | 用途 |\n|------|------|\n| `table` | 默认，终端可读 |\n| `json` | 程序化处理、需要完整结构化数据 |\n| `yaml` | 人类可读的结构化数据 |\n| `md` | Markdown 格式 |\n| `csv` | 表格导出 |\n| `plain` | 纯文本 |\n\n推荐：给用户展示时用 `table` 或 `md`，需要后续处理时用 `-f json`。\n\n## 常见参数\n\n- `--limit <N>`：限制返回条数\n- `-f <format>`：输出格式\n- `-v` / `--verbose`：调试输出\n\n## 覆盖的网站类别\n\n以下是 opencli 覆盖的主要网站类别（可通过 `opencli --help` 查看完整列表）：\n\n- **中文社交**：微博、小红书、知乎、豆瓣、即刻、V2EX、贴吧\n- **中文视频**：B站、抖音\n- **中文资讯**：36氪、雪球、什么值得买\n- **阅读**：微信读书、知识星球\n- **国际社交**：Twitter/X、Reddit、LinkedIn、Instagram、Facebook、Bluesky\n- **国际视频**：YouTube、TikTok\n- **国际资讯**：HackerNews、ProductHunt、Medium、Substack、BBC、Bloomberg、Reuters\n- **开发者**：GitHub (gh)、StackOverflow、Dev.to、ArXiv、HuggingFace\n- **AI 工具**：ChatGPT、Gemini、Grok、Doubao\n- **购物**：JD、Amazon、Coupang、Steam\n- **播客**：Apple Podcasts、小宇宙、Spotify\n- **通用**：`opencli web read` — 任意网页转 Markdown\n\n## 写操作注意\n\n部分命令支持写操作（发帖、关注、点赞等），执行前必须告知用户并获取确认：\n\n- `opencli twitter post <text>` — 发推文\n- `opencli xiaohongshu publish <content>` — 发小红书笔记\n- `opencli twitter follow/block/like` — 关注/拉黑/点赞\n- 其他涉及修改数据的操作\n\n## 故障排查\n\n如果 opencli 命令执行失败：\n\n1. **检查 daemon 状态**：`opencli doctor` — 诊断浏览器桥接连接\n2. **查看详细错误**：加 `-v` 参数获取调试信息\n3. **降级处理**：告知用户 opencli 失败原因，降级到 web_search/web_fetch/browser"},{"path":"references/web-search-config.md","content":"# Web Search API 配置流程\n\n当 `web_search` 返回错误后，Agent 读取此文件并按步骤执行。\n\n---\n\n## Step 1: 初始引导（检测到未配置状态）\n\n**⚠️ 关键约束**：停止 fallback 链。将下方引用块（`>` 开头的部分）**原样输出**给用户。不要重新组织、改写表格结构、或编造额外信息（如\"无需绑定信用卡\"）。直接复制粘贴：\n\n> 搜索功能需要配置 API Key 才能使用。\n>\n> **推荐方案**（二选一）：\n> - **Tavily**: https://app.tavily.com — 国际内容效果好，每月 1000 免费积分\n> - **Kimi**: https://platform.moonshot.cn — 中文内容效果佳\n>\n> **计费对比**：\n>\n> | 对比维度 | Tavily | Kimi |\n> |---------|--------|------|\n> | **免费额度** | 每月 1000 次基础搜索免费 | 无免费额度，每次≈0.03元 |\n> | **计费模式** | 失败不收费 | 固定0.03元/次+Token费 |\n>\n> 请提供您的 API Key（格式：`tvly-xxx...` 或 `sk-xxx...`），或回复\"暂不配置\"使用备选方案。\n\n**如果用户选择\"暂不配置\"：**\n1. 回到 SKILL.md 的降级决策流程（使用 web_fetch 配合搜索引擎 URL，或 browser）\n2. 告知用户：\"已切换到备选方案。如需更好体验，可随时配置 API Key。\"\n\n---\n\n## Step 2: 接收 API Key 并分析\n\n**⚠️ 收到用户的 Key 后，必须先执行本步骤。禁止跳过分析和确认直接进入 Step 3 配置。**\n\n**当用户提供 API Key 时：**\n\n1. **通过前缀自动检测提供商**：\n   - `tvly-*` → Tavily\n   - `sk-*` → Kimi\n   - 未知前缀 → 询问用户使用哪个提供商\n\n2. **分析并告知用户**（先不配置）：\n   - 如果 `tvly-*`：\"检测到您提供的是 **Tavily** 的 API Key ✅\"\n   - 如果 `sk-*`：\"检测到您提供的是 **Kimi** 的 API Key ✅\"\n\n3. **在操作前请求确认**（原样输出以下内容）：\n   > 接下来我将进行以下操作：\n   > 1. 配置 API Key 到 openclaw.json\n   > 2. 重启 gateway 以应用配置\n   >\n   > ⚠️ **重要提示**：\n   > - 稍待片刻，请主动发送消息（如\"继续\"）唤醒会话\n   > - 我将继续为您执行搜索\n   >\n   > 请回复\"确认\"开始配置，或回复\"取消\"放弃配置。\n\n4. **等待用户确认** — 用户回复前不要继续操作\n\n---\n\n## Step 3: 执行配置（用户确认后）\n\n**仅在用户确认后执行（如\"确认\"、\"好\"、\"开始\"）：**\n\n1. **配置 openclaw.json**：\n   ```bash\n   # Tavily（tvly-* 前缀）\n   openclaw config set plugins.entries.tavily.enabled true\n   openclaw config set plugins.entries.tavily.config.webSearch.apiKey <user-provided-key>\n\n   # Kimi（sk-* 前缀）\n   openclaw config set plugins.entries.kimi.enabled true\n   openclaw config set plugins.entries.kimi.config.webSearch.apiKey <user-provided-key>\n   ```\n\n2. **告知用户配置完成**：\n   > ✅ API Key 已保存！\n\n---\n\n## Step 4: 重启 Gateway\n\n1. **执行重启**：\n   ```bash\n   # 重启 gateway 以应用配置变更\n   openclaw restart gateway\n   # 或使用 Docker\n   docker restart openclaw-gateway\n   # 或查找并重启 gateway 进程\n   pkill -f \"openclaw-gateway\" || pkill -f \"gateway\"\n   ```\n\n2. **告知用户等待并唤醒会话**：\n   > 正在重启 gateway 以应用配置...\n   >\n   > ⏳ 稍待片刻，请发送任意消息（如\"继续\"）唤醒会话，我将继续为您搜索。\n\n---\n\n## Step 5: 等待用户唤醒会话\n\n**停止并等待用户消息。**\n\n当用户发送任意消息（如\"继续\"、\"已重启\"、\"好了\"、\"在吗\"）后：\n\n1. **验证 API Key 是否配置成功**：\n   ```bash\n   # 检查 Tavily\n   openclaw config get plugins.entries.tavily.config.webSearch.apiKey\n   # 检查 Kimi\n   openclaw config get plugins.entries.kimi.config.webSearch.apiKey\n   ```\n\n2. 如果已配置 → 执行用户原始搜索请求（使用 `web_search` 工具）\n3. 如果未配置 → 重新进入配置流程\n\n---\n\n## 快速参考\n\n| 提供商 | 网站 | Key 前缀 | 中文支持 |\n|--------|------|---------|---------|\n| Tavily | https://app.tavily.com | `tvly-` | 良好 |\n| Kimi/Moonshot | https://platform.moonshot.cn | `sk-` | 优秀 |\n\n**自动检测规则**：系统通过 Key 前缀自动识别提供商。"},{"path":"references/well-known-sites.json","content":"{\n  \"_description\": \"常用网站地址索引 — 供 Agent 快速定位目标地址，按类别组织。key 为语义化标识，value 包含 url / description / category。\",\n\n  \"search.baidu\": {\n    \"url\": \"https://www.baidu.com/s?wd={query}\",\n    \"description\": \"百度搜索（中文首选），{query} 替换为搜索关键词\",\n    \"category\": \"search_engine\"\n  },\n  \"search.google\": {\n    \"url\": \"https://www.google.com/search?q={query}\",\n    \"description\": \"Google 搜索（英文/国际首选），{query} 替换为搜索关键词\",\n    \"category\": \"search_engine\"\n  },\n  \"search.bing\": {\n    \"url\": \"https://www.bing.com/search?q={query}\",\n    \"description\": \"Bing 搜索（中英文均可），{query} 替换为搜索关键词\",\n    \"category\": \"search_engine\"\n  },\n  \"search.duckduckgo\": {\n    \"url\": \"https://duckduckgo.com/?q={query}\",\n    \"description\": \"DuckDuckGo 搜索（隐私友好），{query} 替换为搜索关键词\",\n    \"category\": \"search_engine\"\n  },\n  \"search.sogou\": {\n    \"url\": \"https://www.sogou.com/web?query={query}\",\n    \"description\": \"搜狗搜索，{query} 替换为搜索关键词\",\n    \"category\": \"search_engine\"\n  },\n\n  \"social.weibo.login\": {\n    \"url\": \"https://passport.weibo.com/sso/signin?entry=miniblog&source=miniblog&disp=popup&url=https%3A%2F%2Fweibo.com%2Fnewlogin%3Ftabtype%3Dweibo%26gid%3D102803%26openLoginLayer%3D0%26url%3Dhttps%3A%2F%2Fweibo.com%2F&from=weibopro\",\n    \"description\": \"微博登录页面（SSO 单点登录入口）,注意在此页面截图时不要使用全页截图，fullpage:false\",\n    \"category\": \"social_platform\"\n  },\n  \"social.weibo.home\": {\n    \"url\": \"https://weibo.com/\",\n    \"description\": \"微博首页\",\n    \"category\": \"social_platform\"\n  },\n  \"social.weibo.hot\": {\n    \"url\": \"https://s.weibo.com/top/summary\",\n    \"description\": \"微博热搜榜\",\n    \"category\": \"social_platform\"\n  },\n  \"social.zhihu.home\": {\n    \"url\": \"https://www.zhihu.com/\",\n    \"description\": \"知乎首页\",\n    \"category\": \"social_platform\"\n  },\n  \"social.zhihu.hot\": {\n    \"url\": \"https://www.zhihu.com/hot\",\n    \"description\": \"知乎热榜\",\n    \"category\": \"social_platform\"\n  },\n  \"social.zhihu.search\": {\n    \"url\": \"https://www.zhihu.com/search?type=content&q={query}\",\n    \"description\": \"知乎搜索，{query} 替换为搜索关键词\",\n    \"category\": \"social_platform\"\n  },\n  \"social.douyin.home\": {\n    \"url\": \"https://www.douyin.com/\",\n    \"description\": \"抖音首页（Web 版）\",\n    \"category\": \"social_platform\"\n  },\n  \"social.xiaohongshu.home\": {\n    \"url\": \"https://www.xiaohongshu.com/\",\n    \"description\": \"小红书首页（Web 版）\",\n    \"category\": \"social_platform\"\n  },\n  \"social.twitter.home\": {\n    \"url\": \"https://x.com/\",\n    \"description\": \"X (Twitter) 首页\",\n    \"category\": \"social_platform\"\n  },\n\n  \"video.bilibili.home\": {\n    \"url\": \"https://www.bilibili.com/\",\n    \"description\": \"哔哩哔哩首页\",\n    \"category\": \"video_platform\"\n  },\n  \"video.bilibili.hot\": {\n    \"url\": \"https://www.bilibili.com/v/popular/rank/all\",\n    \"description\": \"哔哩哔哩全站排行榜\",\n    \"category\": \"video_platform\"\n  },\n  \"video.bilibili.search\": {\n    \"url\": \"https://search.bilibili.com/all?keyword={query}\",\n    \"description\": \"哔哩哔哩搜索，{query} 替换为搜索关键词\",\n    \"category\": \"video_platform\"\n  },\n  \"video.youtube.home\": {\n    \"url\": \"https://www.youtube.com/\",\n    \"description\": \"YouTube 首页\",\n    \"category\": \"video_platfor"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1192,"uniquenessScore":43,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T03:59:13.030Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T03:59:13.030Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T18:06:19.372Z","emptyReason":null},"items":[{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-10T18:48:31.762Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}