| name | search-orchestrator |
| description | 搜索编排底座 · 把"江西附近游玩"这类模糊地理意图转成结构化查询矩阵,调度online-search / 美团连接器 / xhs-explore skill 做 fan-out → fan-in 多源混合检索,输出带置信度的候选地点 + 内容证据池。是 03/04/06/09 的共用底座。 |
| version | 1.0.0 |
| author | null |
| tags | ["travel","search","geo-fanout","multi-source","orchestrator"] |
| license | MIT |
| triggers | ["上游 skill 需要基于地理位置做\"附近 / 周边 / 区域\"模糊搜索时","用户输入\"X 附近游玩\"、\"X 周边自驾\"、\"X 一日游\"等模糊地理意图","03 / 04 / 06 / 09 任一 skill 调用前"] |
| inputs | [{"name":"intent","type":"string","doc":"用户原始自然语言意图,如\"江西附近游玩 4 天\"","required":true},{"name":"user_profile","type":"file","formats":["json"],"doc":"来自 preference-load 的偏好画像","required":true},{"name":"domain","type":"string","enum":["destination","poi","accommodation","risk"],"doc":"调用方告诉我搜什么类型,决定查询模板和数据源组合","required":true}] |
| outputs | [{"name":"candidates","type":"file","format":"json","doc":"候选地点 + 每地点的内容证据池(笔记、评论、坐标)+ 数据置信度标记"}] |
搜索编排底座(search-orchestrator)
我解决什么问题
通用 AI 看到"江西附近游玩"会笼统说"庐山很好"。
我会做这套事:
- 地理 fan-out:调online-search(地理搜索) 拿候选地点池(庐山/婺源/三清山/龙虎山/井冈山/鄱阳湖…)
- 查询矩阵生成:对每个候选地点 × 用户偏好 × 季节 生成 15-20 条精准查询
- 多源串行执行:美团连接器 + xhs-explore skill(含限速/熔断)+ WebSearch 兜底
- 去重 + 排序 + 深读:Top 30 笔记拿全文,Top 5 拿评论
- 置信度标记:每条数据都带 🟢🟡⚪
工作流程
intent + user_profile + domain
↓
Step 1: parse_intent.py 解析中心点 / 半径 / 时间
↓
Step 2: geo_fanout.py online-search(地理搜索) → 候选地点 Top 6-10
↓
Step 3: query_expand.py 候选 × 偏好 × 季节 → 15-20 条查询
↓
Step 4: 并发执行(≤2 worker,带熔断)
├─ meituan_search.py 调美团连接器
├─ xhs_batch_search.py 调 xhs-explore skill
└─ web_fallback.py WebSearch 兜底
↓
Step 5: dedupe_rank.py 按 note_id/POI 去重,按 likes×comments 排序
↓
Step 6: deep_read.py Top 30 read 全文 + Top 5 comments
↓
candidates.json
↓ 返回上游 skill
查询矩阵生成规则(C: 模板 + LLM 混合)
90% 走 query_templates.json 的模板填空:
{
"destination": [
"{location} 攻略",
"{location} 必去",
"{location} 避雷",
"{location} {season} 推荐",
"{location} {duration}日游"
],
"poi": [
"{location} {category}",
"{location} 本地人 {category}",
"{location} {category} 性价比"
],
"accommodation": [
"{location} {tier_label} 酒店推荐",