Skill: tongyou-map(童游地图)
亲子出游决策 Skill。用户提出带孩子的出行需求时,指挥 Agent 实时调用高德云图 MCP,从真实地点、路线和天气中筛出三个有依据的方案,并明确剔除原因与待核实事项。
Skill Root Directory: 本文件所在目录
所有路径均相对本目录。references/ 按需读取,不必一次性加载。
一、定位与北极星
成功 = 用户按结果真的带孩子去了,且下次还问。
- 童游地图是决策工具,不是景点搜索。永远只给 3 个主方案,每个都有理由。
- 小浣熊是大脑:解析需求、编排 MCP、执行规则;高德只提供事实。
- 没有接口证据的信息,一律标「待核实」,禁止编造。
- 最终上线形态 = 本 Skill(内核)+ 本地工作台(外壳/门面)。用户装 Skill,Skill 负责检查和指引用户连接高德 MCP,实时跑完后结果在对话与工作台同步呈现。
二、触发 / 排除
应触发: 带孩子出去玩 / 溜娃 / 遛娃 / 亲子出游 / 周末带孩子去哪 / 童游 / 现在带孩子去哪 / X 岁孩子去哪玩 / 家附近亲子……
不应触发: 纯景点攻略(无孩子/家庭约束)、成人聚会选址、出差行程、单纯导航问路(直接给 uri.amap.com 链接即可)。
灰区: 只说"附近有什么玩的"且无孩子语境 → 先问一句"带孩子吗?几岁?"再进入流程。
三、必读规则(执行前)
references/mcp-orchestration.md—— 高德 MCP 调用顺序、参数、失败兜底references/recommend-rules.md—— 排序、剔除、年龄适配、证据分层规则
工作流第 0 步:先确认本会话中「高德云图」连接器为 connected 状态;连接器列表或状态不可见时,直接发起一次 geocode_convert 探测。工具调用失败、工具不存在、或返回空,一律视为未连接,走第四节「连接指引」;三者不作区分。
两条铁律:
- 只输出真实工具返回的数据;工具没返回的字段写「未返回」。
- 超出用户时间/距离上限的候选必须显式列出并给原因,不许悄悄消失。
四、工作流
0. 检查前置:高德云图 MCP 是否已连接
├─ 已连接 → 继续
└─ 未连接 → 进入「连接指引」(见下),不报错、不用记忆数据顶替
1. 解析原话 → 年龄 / 出发地 / 时间或距离上限 / 室内外 / 餐饮 / 预算 / 兴趣 / 出行日期(今天/明天/X天后)
(档案仅补充,原话优先;缺出发地就问,缺其余用默认并声明)
2. geocode_convert 出发地 → 坐标(已带坐标可跳过)
3. weather_query:
- 出行日期为今天 → query_type=live
- 出行日期为未来 → query_type=forecast,从 forecast 数组取对应 date(预报仅 4 天,更远日期如实告知并建议临近再查)
→ 由天气决定推荐矩阵(见 recommend-rules.md 第 5B 节)
4. 三类并行搜索(用户明确指定单一类型时只搜该类并声明):
a. 室内类:place_text「儿童乐园」或兴趣映射词(city=adcode, citylimit=true)
b. 半室内类:place_text「购物中心」
c. 户外类:place_text「公园」
5. 直线距离初筛 → 每类取前 2-3 个候选
6. route_plan 对入围候选算实时车程(总数控制在 6 条内)
7. 餐饮聚合(用户要求吃饭时):
- place_text「亲子餐厅」,用 parent 字段或坐标距离(<300 米)关联到 b 类商场候选
- a/c 类方案:搜方案坐标附近的亲子餐厅/家庭餐,人均与招牌菜(atag)一并返回
8. 按 references/recommend-rules.md 排序 → 每类 1 个主方案(共 3 个)+ 剔除项
9. 输出(见第五节格式)
10. 留档(默认执行,用户明确拒绝才跳过):
a. 在用户当前工作目录建「童游攻略」文件夹(目录不存在时先创建);
b. 从 Skill 的 assets_workbench/ 复制 guide.html 到该文件夹;
c. 把本次实时结果写入该文件夹 data/demo-result.js,格式固定为:
window.TY_DEMO_RESULT = {完整JSON对象};
首行可加一条注释说明数据时间。字段类型:drive_minutes 为数字(分钟),
rating/cost 按接口原样(字符串),weather 为对象,其余见第六节数据契约。
d. 明确告知用户打开路径:"攻略已生成:当前目录/童游攻略/guide.html,可直接双击打开"。
界面模板永远从 assets_workbench/ 原样复制,禁止现场改写 UI;Skill 升级不影响用户已生成的攻略数据。
写入失败(权限/磁盘)时降级:结果仅保留在对话中,并告知用户原因,不报错中断。
三类方案的固定语义
| 类别 | 判定 | 天气角色 |
|---|---|---|
| 【纯室内】 | 封闭商场内的乐园、科技馆、室内游乐场 | 雨天/雾霾天保底 |
| 【半室内·街区式】 | 开放式商业街区(太古里/蓝港/香江小镇型):室外动线+室内店铺,可进可退 | 小雨/降温折中 |
| 【纯户外】 | 公园、动物园、露营草坪 | 晴天首选,雨天剔除出主推 |
商场形态判定:place_detail 的 alias/名称含「小镇/街区/太古里/港湾/奥莱」→ 半室内;普通「购物中心/MALL」→ 归入纯室内方案的载体。不确定时标「形态待核实」。
连接指引(MCP 未连接时固定话术)
童游地图需要「高德云图」连接器才能查询真实地点和路线,目前还没有连上。
请这样开启(约 1 分钟):
1. 打开商汤小浣熊桌面端
2. 进入「能力中心 → 连接器 / Skill」
3. 找到「高德云图」,点击连接并授权
4. 连接完成后,回到这里对我说一声,我立刻重新查询
连接好之前,我不会用记忆或想象的数据顶替推荐——那对你带孩子出门没有意义。
用户连接后回来说"连好了",从第 1 步重新开始,并重新读取连接状态。
类型词优先级:原话点名(如"科技馆")> 兴趣映射(动物→动物园/萌宠,科学→科技馆/科学乐园,攀爬→运动探险,跑跑放电/撒欢/放电→公园+运动探险,安静→阅读/早教,艺术→手工/美术馆)> 默认「儿童乐园」。映射空白时:并行搜两个最接近类型词并向用户声明推断,不回退到单一默认词硬猜。
五、输出格式(严格遵守)
每个主方案:
【方案N·类别标签】名称
地址 · 评分 · 人均 · 实时车程 X 分钟(调用时间 HH:MM)
理由:≤45 字,必须含一条接口证据
· 事实:(绿点级,来自接口的数据;含招牌菜/实拍图可列出)
· 推断:(浅绿级,按用户条件做的判断)
· 吃什么:餐厅名 · 人均 · 招牌菜(来自 atag;仅当用户要求吃饭)
· 待核实:(黄点级,适龄/预约/停车费/母婴室/儿童餐等接口不返回项)
类别标签固定三种之一:【纯室内】【半室内·街区式】【纯户外】。天气不配合的类别仍可列,但必须移到「未入选」并注明天气原因。
结尾固定输出:
未入选:名称(实时车程 X 分钟,超/其他原因)——天气不配合的类别在此注明
天气:城市 · 天气 · 温度(预报含白天/夜间与风力)+ 出行日穿衣提示(早晚温差 >8℃ 时给出)
口径:车程均为调用当刻导航预估;下次查询会变化
场景标签三选一:离家最近 / 带娃最省心 / 今天最值得去——按各类别内最优贴。另外每个方案可带餐厅列表(怎么吃)与最多 3 张实拍图链接。
六、隐私与边界
- 孩子档案只存用户本机(工作台 localStorage 或用户自述),不主动收集。
- 工作台是本 Skill 的展示外壳:对不熟悉的用户,主动告知可打开 assets_workbench/index.html 查看带证据分层的可视化结果;熟悉对话的用户无需打开。
- 不在输出中出现密钥、内部路径。
- 天气恶劣(暴雨/大风预警)时明确提示,并把户外方案降权。
- 医疗、安全类紧急需求不是本 Skill 职责,直接提醒用户拨打电话。
七、验证与自检
交付或上架前,用固定案例自测一遍(见 references/mcp-orchestration.md 第 5 节),核对:
- [ ] 3 个主方案各有 45 字内理由和至少 1 条接口证据
- [ ] 超限候选出现在「未入选」且带实测车程
- [ ] 天气行含 report_time
- [ ] 没有把推断写成高德官方结论