天气决策助手
触发条件(Trigger)
当用户意图属于以下任一类别时,应加载本 skill(而非仅调用通用天气查询):
- 查询天气,且需要决策建议(适不适合做某件事),而非单纯温度/降水播报
- 涉及历史同期对比("今年是不是比往年异常""往年这时候热不热")
- 需要垂直场景判定(钓鱼/骑行/洗车/晾晒/跑步/户外带娃/登山)
- 需要周期性天气推送(每周/每日天气决策、极端天气提醒)
- 涉及天气数据本地积累与校准(反馈回填、规则调优)
- 反馈实际体验("上周去跑步了,风大难受""登山很舒服,记一下")
示例输入提示词
以下是可直接触发本 skill 的用户输入示例:
- "杭州今天适不适合钓鱼?"
- "这周末北京能洗车吗,给个建议"
- "帮我看看接下来 7 天深圳适不适合骑行,按天列出来"
- "杭州 8 月比往年同期热吗?历史对比一下"
- "本周末适合带孩子户外吗,有没有雨"
- "给我做个登山天气周报,风大不大"
- "每周一早上推送杭州的骑行/跑步天气决策"
- "上周去爬了山,风大但没下雨,体验还行,记一下"
- "深圳 跑步 实际风18温29没下雨,体验差"
- "把我攒的天气反馈重新校准一下阈值"
隐私与数据声明
- 本 skill 默认不会上传/回传/外发任何用户数据。用户查询的城市、订阅偏好只存本地
data/与subscriptions.json。 - 历史气候库(
data/history_*.json)由本 skill 在用户本地自动积累,不随 skill 分发包走;上架包只含规则骨架与空数据槽位。 - 涉及推送订阅、数据清理,必须
human_review并由用户显式确认。
定位
把"查天气"这个无差别动作,升级成"只有你有数据/有判断/有沉淀"的专属天气决策能力。
护城河 = 本地气候历史库(越攒越厚)+ 垂直场景判定规则(私有经验编码)+ 用户订阅关系(迁移成本)。
> 判断标准:别人复制 SKILL.md 后,还得重建你的历史库、重写场景阈值、重新攒用户订阅才能追上你 = 有护城河;否则 = 无。
数据源(公开层)
- Open-Meteo(免费、无需 API key):
- 预报:
https://api.open-meteo.com/v1/forecast?latitude=..&longitude=..&daily=..&current=.. - 历史:
https://archive-api.open-meteo.com/v1/archive?latitude=..&longitude=..&start_date=..&end_date=..&daily=.. - 经纬度解析用
https://geocoding-api.open-meteo.com/v1/search?name=<城市>&count=1&language=zh。
订阅推送(用户如何开通)
本 skill 支持对话式自助订阅:用户说一句话即可开通每周天气决策推送,无需手动改文件。
- 开通:对 skill 说「订阅<城市>的<场景>周报」,例如「订阅杭州的登山和跑步周报」「订阅成都的钓鱼和骑行周报」。
- 命令行等价:python scripts/weekly_report.py --add-sub 杭州 --scenes 登山 跑步
- 查看:「我订了哪些城市的天气周报?」或 python scripts/weekly_report.py --list-subs
- 取消:「取消杭州的天气周报」或 python scripts/weekly_report.py --rm-sub 杭州
- 推送机制(用户自己收得到):订阅成功后,脚本同时生成一份用户侧自动化配置(终端打印 + 落盘 data/user_automations/<城市>_<日期>.json)。用户在自己的 WorkBuddy 里:设置 → 自动化 → 新建,填入配置里的 rrule(FREQ=WEEKLY;BYDAY=MO;BYHOUR=7)+ 提示词(指向用户自己本地的 skill 路径),启用后每周一早 7 点周报自动推到【用户自己的】会话。
- 开发者侧的 automation-1787540343062 仅作示范/自用;真正的多用户推送出口在每个用户自己的 WorkBuddy 自动化。
- 订阅关系存本地 data/subscriptions.json,不上架、不联网、不回传——这是护城河第三层(用户关系沉淀)。data/user_automations/ 同样不进包。
反馈回填(用户如何提交 · 护城河数据入口)
订阅 → 周报/查询 → 用户回填真实体验 → feedback.json → 攒够 5 条 --recalibrate → scene_tuning.json 校准增厚。这是"使用行为 → 私有数据沉淀 → 输出更准"闭环的最关键一环。
- 对话式提交(推荐,零门槛):用户用大白话描述实际体验,skill 自动解析场景+好坏+天气数值并写入 feedback.json。用户不需要填任何数字、不需要敲命令。
- 示例:「深圳 跑步 实际风18温29没下雨,体验差」「杭州 登山 风小没雨很舒服」「骑行 太闷了难受」
- 命令行等价:python scripts/scene_rules.py --scene 跑步 --feedback-text "深圳 跑步 风18温29没雨,体验差"
- 解析规则:话里带场景名(钓鱼/骑行/洗车/晾晒/跑步/带娃/登山)即识别场景;带"差/难受/糟糕"等判 bad,带"好/舒服/爽"等判 good;"风X/温Y/没雨"自动提取数值,缺省时留空待补全。
- 结构化提交(精确):python scripts/scene_rules.py --scene 跑步 --feedback good --wind 18 --temp 29 --precip 0
- 周报自动引导:每周周一的周报末尾,会自动带一句可复制的反馈模板(已代入用户订阅的城市和场景),用户照着说一句话即可回填,无需看文档。
- 校准生效:攒够 5 条(--min-n 5)后跑 python scripts/scene_rules.py --scene 跑步 --recalibrate,区分度强的因子权重上调、默认偏严/松的给 ±5 偏移,写入本地 scene_tuning.json(不进包)。下次同场景评分即体现校准。
- 反馈存本地 data/feedback.json,不联网、不回传——这是护城河第二层(私有经验编码)的喂养源。
工作流(带护城河增强)
- 解析城市 → 经纬度(geocoding-api)。
- 查实时/预报(Open-Meteo forecast)。
- 历史同期对比(调用
scripts/climate_lib.py):
- 若该城市历史库已积累 → 输出"今年 vs 过去 N 年同期"的温度/降水偏差、极端日频次。
- 若未积累 → 自动回源 archive-api 补抓近 5 年同期,写入data/history_<city>.json,标注needs_more_data(首次查询即开始攒护城河)。 - 场景决策(调用
scripts/scene_rules.py):
- 支持场景:钓鱼 / 骑行 / 洗车 / 晾晒 / 跑步 / 户外带娃 / 登山。
- 输出:适不适合(二值)+ 评分(0-100)+ 关键因子拆解 + 建议。 - 预警提示:若预报含高温/暴雨/大风/寒潮等极端值,附风险提醒。
- (可选)订阅:用户设"每周 X 推送天气决策" → 写入
subscriptions.json,由 WorkBuddy automation 周期触发本 skill。
护城河工程化
- 物理隔离:真实历史库存于
data/,由.packignore排除,不进分发包;拿到包的人只有规则骨架 + 空槽位。 - 本地积累回路:每次查询自动补抓历史并写库,护城河随使用自动增厚(区别于纯查询 skill 跑一万次还是原样)。
- 打包校验闸:上架前运行
python scripts/pack_check.py,确认data/与subscriptions.json未被误带入公开区。
场景规则(私有经验编码 · 阈值可迭代)
规则阈值写在 references/scene_rules_seed.md(公开骨架,标注待真实数据校准),
真实校准后的阈值与权重由使用者在本地 data/scene_tuning.json 沉淀(不进包)。
- 例:钓鱼 = 气压趋势(权重 0.3) + 风速(0.25) + 降水概率(0.2) + 月相(0.15) + 温度(0.1)。
- 逻辑:综合评分 ≥70 适合,50-70 勉强,<50 不适合;每个因子给出"拉高/拉低"理由。
订阅推送(用户关系沉淀)
- 配置示例见
references/subscription_proto.md。 - 用 WorkBuddy automation(recurring,rrule 每周)触发本 skill 的"周报模式",主动推送该市本周适户外/洗车/晾晒决策。
- 用户订阅关系存
subscriptions.json(本地),迁移成本 = 护城河。
验证回路
- 历史库补抓失败:回退纯预报,标注
needs_history,不阻断主流程。 - 场景评分:规则 vs 用户反馈(可选回写
data/feedback.json)双源校准,偏差过大告警。
权限门
- 仅查询、对比、决策、推送;不调用任何付费 API、不收集用户隐私、不上传数据、不代付。
- 订阅/清理须
human_review。
壁垒复利机制
每次查询 → 历史库 +1 天数据;每设一个订阅 → 用户关系 +1;每条反馈 → 场景阈值校准 +1。
参考资料
references/scene_rules_seed.md:场景判定规则骨架(公开,待校准)。references/subscription_proto.md:订阅推送配置原型。scripts/climate_lib.py:历史气候库采集 + 同期对比(已实现)。scripts/scene_rules.py:场景决策判定(已实现)。scripts/pack_check.py:上架打包校验(已实现)。