下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-odeahxzi--crop-yield-model.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-odeahxzi/crop-yield-model。- 作物生长建模与产量区间预测:用公开可商用数据(NASA POWER 日气象)先联网取数、再离线建模,把"
- 这季能收多少"
- 从【拍脑袋】变成【带区间的可举证估计】,并在取数之前先判数据许可是否允许本场景使用。当用户说"
- 今年玉米大概能收多少"
- "
- 帮我预测一下产量"
- …(完整说明见下方「阅读全文」)
阅读全文 (展开查看完整说明)
概述
定位
「这季能收多少」是农业里最常被问、也最常被答错的一个问题。
答错的两种方式,方向相反:
| 答法 | 后果 |
|---|---|
| 拍脑袋给一个数(「去年 800 斤,今年差不多」) | 说的人不当真,听的人当真 —— 落到认养契约上就是虚假宣传 |
| 说「数据不够,算不了」 | 把本来能做的区域级估计也一起推掉了 |
本技能的存在,就是为了同时避开这两个坑:
**拿公开可得的合法数据,给一个带区间、带置信、带出处、能被举证的估计;
并且明确说清它是区域级而不是地块级。**
这句话的后半段和前半段一样重要。一个写清适用边界的估计,比一个含糊其辞的精确估计有用得多。
交互与引导(族级公共层)
遵循 references/interaction-protocol.md 的四回合骨架(T0 握手 → T1 收敛 → T2 交付 → T3 交接):
- T0 握手:复述用户原话(≤3 行);有歧义先确认意图——禁止直接开跑。
- T1 收敛:缺项最多问 2 个且每个都能改变结论,一律给选项;不得开放式追问、不得连环追问。
- T2 交付:默认只给首屏卡(≤12 行):结论第一句 + 唯一行动项 + 缺口总账 + 把握度;展开本按需给。
- T3 交接:给出下一步动作 + 族内可接着问清单 + 落盘前确认门。
话术一律取 templates/交互话术包.md,口语稿须过 5 条硬规则(单句 ≤25 字 / 无符号 / 结论前置 / 数字用汉字 / 用「您」)。
本技能裁剪:适用 G1/G2/G5/G6/G7/G8;G3 不适用(不吃影像输入)。G5 强制:取数前必须声明三步与耗时,且先过许可闸再联网(既有纪律要求「许可不通过,一个请求都不发」)。G6/G8 是本技能的灵魂:只给区间不给单点,把握度与尺度声明每次都要说,要『保证的数字』一律拒绝并给合规替代表述。
三条天花板能力
一、数据许可闸:取数之前先判能不能用
这是本技能与本领域多数做法的分水岭。绝大多数工具是先下载、再在文档里写一句"注意许可"。本技能反过来:许可不通过,就一个请求都不发。
判什么:
| 闸 | 内容 |
|---|---|
| G-L1 | 场景判定:research(科研/内部评估)还是 commercial(商用/对外交付) |
| G-L2 | 逐源判定:登记表里该源的 commercial_allowed 是否满足场景要求 |
| G-L3 | 阻断与替代:不满足则阻断(退出码 1),并给出该需求下的可商用替代源 |
| G-L4 | 署名登记:被使用的源,其署名文本必须写入溯源清单 |
为什么这条重要:本领域的数据许可不是「能拿到 vs 拿不到」,而是「能拿到但不一定能商用」。「开放获取」与「可商用」是两个独立维度,最常被混为一谈:
| 数据源 | 外观 | 实际约束 |
|---|---|---|
| 中国气象数据网 | 实名注册即可下载 | 使用协议明文禁止经营性活动 |
| 国家地球系统科学数据中心 | 注册即可下载 | 明文仅限非商业目的的科研与学术交流 |
| HWSD / GAEZ | 无需注册,直接下载 | CC BY-NC-SA,明文非商用,且 SA 要求衍生同许可 |
| NASA POWER | 无需注册,直接下载 | 公共领域,明文允许商用(须署名) |
「不用注册」经常被误读成「随便用」。 本技能把这张表做成了机读门禁。
二、三段式流水线:联网的只管取数,判定的绝不联网
① growth_forecaster.py --plan 产取数计划 【离线】
② fetch_sources.py --plan --yes 真实取数 【唯一联网,默认 dry-run,许可证通过才发请求】
③ growth_forecaster.py --forecast 建模与区间 【离线,只读快照】为什么必须拆开:如果判定脚本自己会联网,那么同一次判定在不同时间、不同网络下会得出不同结论——门禁就不再是门禁。拆开之后,任何人拿到快照都能离线复现同一个结论,争议可以被复核。
三、诚实披露:不确定性是功能,不是免责声明
输出强制包含:
| 必带项 | 为什么 |
|---|---|
| 区间 P10–P90 | 单点数字会被当结论使用,而它只是分布的一个抽样 |
| 置信档(高/中/低/不可用) | 让读者知道自己站在哪一层确定性上 |
| 不确定性来源清单 | 说清哪些参数是文献值、哪些是本地值 |
| 尺度声明 | 区域级 ≠ 地块级;55 km 格点 ≠ 你的那块地 |
| 数据溯源四要素 | 额度与密钥 / 许可原文 / 上游来源 / 待确认项 |
| 时间戳诚实字段 | issued_at_basis = fetch_time_proxy——抓取时刻不是起报时刻 |
给出数字比不给更危险,因为读者会把数字当结论使用。
覆盖率低于 80% 时,本技能不出产量区间,只出缺数据诊断。
一个写明「这季数据缺失 34%,无法给出产量区间」的报告,比一个悄悄用缺省值凑出「亩产 620」的报告诚实得多,也有用得多。
触发与路由
触发:「今年玉米大概能收多少」「帮我预测一下产量」「这季积温够不够成熟」「用气象数据跑产量」「这个估算是怎么来的」「这批数据能不能商用」「有没有能吃这套数据的公开源」
分流:
| 用户诉求 | 处理 |
|---|---|
| 问产量 / 积温 / 成熟度 / 需水 | → 本技能 |
| 问数据许可 / 能不能商用 | → 本技能(--sources / --gate) |
| 问病虫害 | → crop-pest-doctor(#27) |
| 问打药时机 / 作业窗口 | → agri-weather-advisor(#29) |
| 问什么时候播种 / 农事排产 | → smart-planting-assistant(#28) |
| 问买什么药 / 合不合规 | → agri-service-matcher(#32) |
| 问认养契约 / 收益 | → adoption-farm-steward(#31);收益测算归商务 |
| 问溯源码 | → shennong-code(#47)/ agri-trace-query(#35) |
| 要一个"保证"的产量数字 | 拒绝——合规红线,无人可做;改给区间 |
执行步骤
当用户要产量估计时:
- 先判场景。问清(或按上下文判断)是科研/内部评估,还是对外商用交付。不确定时默认
research但在报告中标注。 - 产取数计划(离线):
python scripts/growth_forecaster.py --plan --lon <经> --lat <纬> --crop <作物>
--sow <YYYY-MM-DD> --harvest <YYYY-MM-DD> [--scenario commercial] --out plan.json检查 license_gate_verdict 与 blocked_sources。被拦的源不要硬来,看 fallback_chains 给的可商用替代。
- 如实说明许可结论。若用户在商用场景但所需数据只有非商用源,先告知这个矛盾,再给替代方案(降分辨率用 NASA POWER,或改由用户提供本地土壤与产量数据)。
- 取数(需要用户明确确认后):
python scripts/fetch_sources.py --plan plan.json --yes --out-dir snapshots/不加 --yes 只打印计划、不发起任何请求。落盘会同时产出溯源四要素文件。
- 建模(离线):
python scripts/growth_forecaster.py --forecast --snapshot <快照> --crop <作物>
--sow <日期> --harvest <日期> --lat <纬> --lon <经>
[--soil <土壤剖面.json>] [--k-cal <校准系数>] [--water-regime rainfed|irrigated]
[--irrigation-mm <毫米>]水情体制默认 rainfed(雨养)。灌溉田必须显式声明,否则会被当雨养田算而系统性低估。
- 必报异常项:
maturity_verdict非「正常成熟」→ 必须显著提示,这是最影响结论的一条;confidence.tier = LOW→ 必须说明「这是潜力尺度、未校准」;confidence.tier = UNUSABLE→ 不出产量数字,只出缺数据诊断;- 有任何缺测日 → 报出覆盖率与缺测分项。
- 交付报告,按
templates/forecast-report.md的口径,四件必带(区间/置信档/尺度声明/署名)缺一不可。 - 若用户想要更准:给
templates/data-cooperation-request.md,说明补齐本地土壤剖面与区域历史产量可把置信档从 LOW 提到 HIGH。
并说明:这两项不是开工前置条件,而是增益项。
异常与兜底
| 情形 | 行为 |
|---|---|
| 快照文件为空 / 是目录 / 不存在 / 非 JSON | 可读阻断 SNAPSHOT_UNREADABLE,绝不升级为 traceback,绝不用缺省气象值放行 |
| 知识资产(登记表)不可读 | 硬阻断 REGISTRY_UNREADABLE——绝不以空规则集放行(空规则集会跑出"许可合规"的假结论) |
| 上游 HTTP 错误 / 网络不可达 / 返回非 JSON | 可读阻断 + 给出兜底路径;不内置镜像、不编造替代数据 |
| 覆盖率 < 80% | UNUSABLE——只出缺数据诊断 |
| 未知作物 | 阻断 CROP_UNKNOWN 并列出可用作物;不猜、不近似匹配 |
| 参数用法错误 | 退出码统一为 1(阻断),不用 argparse 默认的 2(本技能里 2 = 告警) |
| 用户坚持要"保证"的数字 | 拒绝并给合规替代表述;这不是立场问题,是法律红线 |
退出码语义:0 通过 / 1 阻断 / 2 告警。
输出规范
- 一律先讲结论、再讲怎么来的、最后讲有多不确定。不要用方法淹没结论。
- 所有数字必须可溯源到字段名;不得出现"经模型测算"这类无信息量的措辞。
- 尺度、置信、缺口三件事每次都要说,哪怕结论看起来很好。
- 落盘交付:报告 JSON + 溯源文件;文字说明按
templates/forecast-report.md。
本技能明确不做
| 不做 | 归属 |
|---|---|
| 病虫害诊断与处方 | #27 crop-pest-doctor |
| 作业窗口与打药时机 | #29 agri-weather-advisor |
| 田块级农事排产 | #28 smart-planting-assistant |
| 农资推荐与合规校验 | #32 agri-service-matcher |
| 认养契约与生长反馈 | #31 adoption-farm-steward |
| 溯源码签发与查询 | #47 / #35 |
| 地块级产量承诺 | 无人可做——合规红线 |
| 收益测算与收购定价 | 商务渠道 |
| 灾损定损与保险赔付 | 保险与司法渠道 |
越界即为失职:一个技能把别人的活也干了,通常意味着它自己的活没干好。