技能市场

钓鱼天气预报与鱼情分析·江河湖海水库出钓指数

@user_2ckqg/fishing-forecast

钓鱼天气预报与鱼情分析:江河湖海、水库野钓、路亚、海钓通用,按天气和地理给出未来 1–7 天出钓指数(钓鱼指数 0–100)、最佳钓鱼时间、钓点/水层/饵料建议、海边潮汐和安全提示。输入地名(太湖、千岛湖、舟山)或经纬度和目标鱼,自动识别水库/湖泊/河流/池塘/海边;雷暴、大风、大浪强制劝退;附钓获日志,用自己的渔获校准。按天气和经验估算,不保证有鱼。

来源:千问AI平台生活服务MIT

钓鱼天气预报与鱼情分析(钓鱼鱼情参谋)

什么时候用

用户问到出钓时机、鱼情、天气对钓鱼的影响时触发,例如:

  • 「明天去太湖钓鱼怎么样」「周末去千岛湖能钓翘嘴吗」
  • 「这周哪天适合钓鱼」「最近几天哪天出钓最好」
  • 「XX 水库鱼情」「舟山这两天海钓行不行」「几点去最好」
  • 「今天风这么大还能钓吗」「降温了鲫鱼还开口吗」
  • 用户报渔获:「今天钓了 12 条鲫鱼」「空军了」→ 用钓获日志记一笔

不适用:问某个钓场收费、开放时间、放了什么鱼;问禁渔区具体边界;问买什么竿。这些明说本技能不提供,请用户查当地公告或问钓场。

流程

  1. 问清三件事(缺哪个问哪个,别一次问一堆):

    • 去哪:地名或经纬度。地名越具体越好(「汤逊湖」比「武汉」准)。
    • 钓什么:目标鱼(默认鲫鱼)。可选:鲫鱼 crucian、鲤鱼 carp、草鱼 grass、鲢鳙 silver、罗非 tilapia、翘嘴 culter、鲈鱼 bass、黑鱼 snakehead、鳜鱼 mandarin、黄颡 catfish、海鲈 seabass、黑鲷 seabream(中文名也认)。
    • 什么水:水库/湖/河/塘/海。用户不知道就用默认 auto,脚本走 OpenStreetMap 自动识别。
  2. 跑脚本

    python {baseDir}/scripts/fishcast.py --place 太湖 --species crucian
    python {baseDir}/scripts/fishcast.py --place 舟山 --water sea --species seabass
    python {baseDir}/scripts/fishcast.py --lat 30.41 --lon 114.34 --water lake --days 3
    • 默认输出中文 Markdown 报告(今天、明天详讲,7 天一行一个概览);加 --json 输出结构化结果(结构见 references/model.md §8)。
    • 地名有多个同名地点时,报告顶部会列出候选,默认按第 1 个算。不是用户要的地方就用 --pick 序号 重跑,或者直接问用户是哪一个。
    • 报告里出现「未识别水域类型」时,问用户是什么水,再用 --water 重跑。
    • 网络:脚本读 HTTPS_PROXY / HTTP_PROXY 环境变量。取不到数据时脚本会说「天气数据暂时没取到,稍后再试」,照这句话告诉用户,不要编分数。stderr 里 [技术细节] 开头的行只给你排查用,不要转述给用户。
  3. 给用户讲:先一句结论(哪天几点去、多少分、什么等级和那句等级说明),再讲最佳时段和两三条最关键的理由和建议;有安全提示必须放在最前面说。结尾保留「按天气和经验估算,不保证有鱼;出发前查当地禁渔期」。说话规矩见下面「跟钓友说话」。

  4. 钓完记一笔(空军也记):

    python {baseDir}/scripts/journal.py add --date 2026-09-20 --time 06:30 --place 汤逊湖 --species crucian --count 12 --weight 2.1 --note 腥香商品饵
    python {baseDir}/scripts/journal.py add --date 2026-09-21 --lat 30.41 --lon 114.34 --water lake --count 0 --note 空军
    python {baseDir}/scripts/journal.py list
    python {baseDir}/scripts/journal.py stats
    python {baseDir}/scripts/journal.py delete --id 3      # 记错了删掉重记

    记的时候脚本自动算出当时的鱼情分一起存(~/.fishcast/journal.db,环境变量 FISHCAST_HOME 可改目录)。stats 按分数档(<35 / 35–49 / 50–64 / 65–79 / ≥80)统计平均渔获和空军率;少于 10 笔时脚本会说样本不够,照实转告,不要从几条记录里下结论。

跟钓友说话(必须遵守)

脚本输出已经是钓友能看懂的话,你转述、解释时也一样:

  • 不许说的词:Overpass、Nominatim、Open-Meteo、OSM、接口、API、JSON、fixture、null/None、weather_code、S_temp、g、闸门、solunar、major/minor、hPa、m/s、脚本参数名(--pick--water 等)。数据来源只在报告末尾那行小字里出现,你不用提。
  • 换成人话
    • 水温打折 →「水温太低(太高)了,鱼不爱动,整体打折」;冰钓鲫鱼 →「冰钓鲫鱼照样能钓,打折少一些」
    • solunar / 中天 →「月亮时段」
    • 水域没识别 →「没认出是什么水,你告诉我是河、湖、水库、池塘还是海」
    • 地名有好几个 →「叫这个名字的地方不止一个,你说的是第几个」
    • 网络失败 →「天气数据暂时没取到,稍后再试」
    • 气压说「百帕」;风速说「几级风」(可以带米/秒);浪高说「米」
  • 每个等级都带一句人话解释(报告里有),不要只报一个数字。
  • 不解释公式和权重,用户追问「为什么扣分」就用报告「说明」那一列的原话讲。
  • 结尾一句:「按天气和经验估算,不保证有鱼;出发前查当地禁渔期。」

分数怎么解读

分数 等级 怎么跟用户说
≥80 极佳 条件都在线,挑最佳时段去
65–79 值得去,注意报告里扣分最多的那项
50–64 一般 能钓,别期望太高,时段比日子更重要
35–49 偏差 能不去就不去,去就只钓最佳时段
<35 不建议 多半是雷暴、大风、强降水或水温离谱
  • 日分六成看「挑对时间去能有多好」(当天最好的几个小时),四成看「这一天整体怎么样」——跟用户就这么说。
  • 有雷暴、大风、大浪的日子,日分最高只给 60(严重的只给 45),报告里会写「今天有雷暴,只建议在安全时段短钓,或者改天」;这句话一定要转告,并点明危险时段。
  • 看 8 样东西:水温、气压、温变、风、天空、时段、月相/潮、水域;水温最要紧,水温太离谱整体打折。水温是按前几天气温估的,海边用实测海水温度。
  • 冷季(估算水温 <12℃)重午间、怕北风降温;热季(>26℃)重早晚和夜钓、怕闷热缺氧。
  • 公式在 references/model.md(给你看的,不用讲给用户),用户问「为什么是这个分」时按报告里的说明解释,不要自己加原因。

边界(必须遵守)

  • 不是保证:这是经验规则模型,没有用真实渔获校准过。不要说「肯定上鱼」「必爆护」。
  • 安全优先:报告里有雷暴、阵风 7 级以上、浪高 ≥2.5 m、强降水的时段,分数已经被封顶;跟用户讲时先说安全,明确劝退,不要因为别的时段分高就淡化。雷暴天不在水边、收起碳素竿;可能结冰时冰厚 <10 cm 不上冰;高温防中暑。夜钓、礁石、水库陡坡提醒结伴。
  • 禁渔与规定:本技能不掌握禁渔区、禁钓区、收费钓场信息。每次给出建议时都要提醒用户自查当地禁渔期:长江流域重点水域 2021–2030 年十年禁渔(垂钓按各地管理办法,多数要求一人一竿一线一钩)、各大流域春季禁渔期、海洋伏季休渔(大致 5 月 1 日起,各海区结束时间不同)。细节见 references/china-rules.md,一律以当地农业农村(渔政)部门最新公告为准。
  • 不提供钓场收费、放鱼量、具体钓位坐标;不教电鱼、网捕、锚鱼等违法或各地禁止的钓法。

配合 WorkBuddy「自动化」每周提醒

用户想每周自动收到周末鱼情时,教用户在客户端「自动化 → 添加」里建一条(技能选本技能「钓鱼天气预报与鱼情分析」,打开「推送到小程序」):

名称 时间 提示词
周末鱼情 每周五 18:00 用钓鱼天气预报与鱼情分析跑 fishcast.py --place <我的常去钓点> --species <目标鱼> --days 3,只讲周六、周日:各自分数、最佳时段、有没有安全提示;最后提醒我钓完用 journal.py 记渔获。

电脑需要开机、客户端在线才会触发。常去钓点和目标鱼问一次记下来,别每周都问。

文件

  • scripts/fishcast.py:主程序(Open-Meteo 天气/海况 + Nominatim 地名 + Overpass 水域识别,全部免 key)
  • scripts/model.py:打分模型(纯计算);scripts/astro.py:日月算法(suncalc 移植)
  • scripts/journal.py:钓获日志
  • scripts/test_fixtures.pyscripts/test_astro.pyfixtures/:回归样例(--fixture 可离线跑)
  • references/model.md:模型唯一口径;references/impl-notes.md:实现澄清;references/species.md:鱼种习性;references/china-rules.md:禁渔与垂钓规定
  • assets/species.json:鱼种表