| name | websearch-enhanced |
| description | 增强网页搜索(多源降级 + 垂直域 + 正文抽取)。Use when:(1) 用户点名"增强搜索""多源搜索""深度联网调研"(enhanced/deep/multi-source web search);(2) 内置网页搜索结果不足、过时、质量不够或不可用,需换源重查;(3) 需要内置搜索不具备的能力——垂直域搜索(金融/学术/专利/CVE)、批量并行检索、URL 正文抽取、整站抓取。一次性快速事实查询留在内置网页搜索,不走本技能。 |
WebSearch Enhanced
流程:Step 1 搜索简报 → Step 2 配置 → Step 3 降级链执行 → Step 4 综合引用。每步完成标准写在步尾。
Step 1 — Search Intent Brief(每次触发必做)
调用任何搜索引擎之前,先产出搜索简报(内部思考即可;复杂任务可展示给用户确认):
- Goal:一句话写完"搜索成功,我就能回答 ____"。写不出就先向用户澄清。
- 类型(单选主类型,决定子模式):
fact 单点事实 / news 时效新闻 / research 多源深度综合 / extract 已有 URL 读正文 / vertical 垂直域(金融行情、学术、专利、CVE、旅行、法规等)。
- 约束:时间范围、语言与地域、信源偏好(官方 > 媒体 > 社区)。
- 查询拆解:1–N 条互不重叠的子查询,每行
查询词 | 类型 | 期望拿到什么。fact 1 条;research 3–6 条覆盖不同角度(现状/数据/机制/对立观点/最新进展)。
- 验收:每条子查询写明"什么结果算够"(例:含具体数字的官方公告 + 1 条独立佐证)。
查询词纪律:写搜索词不写提示词——去客套和指令语气,留实体 + 关键限定,单条 <400 字符;跨语言主题中英各备一条;时效主题在查询词里加时间锚点(年份/月份),不只依赖过滤器。
完成标准:五项齐全,每条子查询都有验收条件。
Step 2 — 配置(首次运行必自检)
三家 provider 均为必装——缺一级,降级链就断一截。首次使用先跑自检:
${KIMI_SKILL_DIR}/scripts/check_deps.sh
source ${KIMI_SKILL_DIR}/scripts/env.sh
${KIMI_SKILL_DIR} 即本技能根目录(kimi code 原生展开;其他 runtime 不展开时替换为实际路径)。Key 优先级三家一致:环境变量 > skill 根目录 .env。
自检有缺失 → 把缺失项和补齐方式告知用户并请其配置;用户明确暂不补的级才跳过,并在最终答复注明。AnySearch 匿名访问(低配额)仅作应急,不算配置完成。
完成标准:自检全绿;或缺失项已报告用户并拿到处理决定。
Step 3 — 降级链执行
按 AnySearch → Tavily → Exa → 内置网页搜索 固定顺序逐级下落(用户点名某家则从该家起,其后仍按序)。
两种触发,两种动作:
| 触发 | 动作 |
|---|
| 结果不满足验收条件 | 同级重写查询词再试 1 次;仍不够 → 降级 |
| 调用失败(401/403 认证、429 配额、超时/5xx、CLI 不可用) | 重试 1 次;仍失败 → 立即降级,不再重写 |
配额纪律:三家都是固定配额,"失败即降级"正是为了不把配额烧在坏源上——每条子查询每级最多 2 次查询(首查 + 1 次重写)、错误最多 1 次重试,到量立刻走。每次降级记下原因(如 tavily: 429 配额耗尽);落到内置搜索或链路穷尽时,在答复中说明各级状态与原因。
场景路由(按 Brief 类型选子模式;命令语法不在本文件——调用某级前先读对应 provider 文档):
| Brief 类型 | AnySearch | Tavily | Exa |
|---|
fact 通用 | search(有域交集先走 vertical) | search | type auto |
vertical | get_sub_domains → domain search(默认路径) | search --topic | category |
news | search + 时间锚点 | search --time-range --topic news | category news + 日期过滤 |
research | batch_search 多角度并行 | research(30–120s) | type deep + highlights |
extract | extract | extract | /contents |
| 整站/批量 | 不支持,直接降级 | map → crawl | /contents + subpages |
Provider 文档(用到哪级读哪份):anysearch.md / tavily.md / exa.md。内置搜索无需文档。
成本纪律:research/deep 模式仅 research 类意图使用;fact 永远用最快档。
完成标准:每条子查询满足其验收条件,或链路穷尽且已说明。
Step 4 — 综合与引用
- 每条关键事实标来源(标题 + URL + 发布/抓取日期)与 provider;同一 URL 去重。
- 关键数字/结论两个独立信源交叉验证;冲突并列呈现,不擅自仲裁。
- snippet 不足以定论时,用
extract 模式读正文再答。
- 先一两句直接回应 Goal,再展开证据;区分"搜索到的"与"我的推断"。
完成标准:每条关键事实可溯源。
安全约定
- Key 只存在于环境变量或本地
.env(gitignore、chmod 600);聊天中收到 key 写入 .env,不回显、不写入任何会被提交的文件。
- 含密码、个人隐私、商业机密的查询词不发给任何外部搜索服务。
scripts/ 为 AnySearch 上游 vendor(Apache-2.0,见 scripts/ANYSEARCH-LICENSE);Tavily/Exa 为官方 CLI/REST 的文档级集成,二次分发保留出处。