> 基于权威论文与品种学资料构建。支持读图分析 + 现场动作反馈协议。
> 给一颗未开壳的榴莲打分:品种、成熟度(外壳木质化)、死包风险、值不值得买、什么时候吃。
本 Skill 不是确定性判别器。Agent 在使用本 Skill 时必须遵守:
必须让用户在现场做出动作并反馈,否则相应字段标 unknown。
综合分被自动压低。
actions_suggested 字段列出了精准的动作请求,Agent 应逐字转达给用户。
| 类型 | 位置 | 性质 | 本 Skill 处理 |
|---|---|---|---|
| --- | --- | --- | --- |
| 外壳/果柄/刺木质化 (RLI) | 果实外部 | 正常成熟过程 | 成熟度主维度 → rind-lignification.md |
| 果肉硬核 / 死包 (UFR) | 果实内部果肉 | 病理性缺陷 | 品质一票否决项 → hardened-flesh.md |
> 用户说"这颗木质化了"时,需要先主动澄清是指外壳(熟不熟)还是果肉(死包没死包)。
按需读取:
prompts/photo-protocol.md — 必读:拍摄要求 + 图片质量门禁(降级评估规则)+ 用户动作协议(C1–C6)prompts/batch-selection.md — 群选模式必读:粗筛评分表 + 两轮流程 + 标注图输出规范(多颗或同框图时读取)scripts/annotate.py — 标注图工具:接受图片路径/base64 + JSON 标注列表,用 Pillow 画框并返回标注图路径prompts/visual_checklist.md — 18 项视觉 + RLI(L1–L5) + UFR(H1–H5) checklistreferences/varieties.md — 8 大品种形态学卡片(含品种 UFR 风险表)references/ripeness-criteria.md — 4 档成熟度标准references/rind-lignification.md — 外壳木质化 RLI 专题(含 L1–L5 视觉教科书)references/hardened-flesh.md — 死包/果肉硬核 UFR 专题assets/papers/MANIFEST.md — 论文实物图清单(CC BY 4.0),可作 LLM 视觉锚点参考视觉锚点重点图:
assets/papers/openagric2025_Fig8_MK_DAFS_stages.jpg — 猫山王 8 个发育阶段实物图(L4 颜色基准)assets/papers/openagric2025_Fig9_hardened_flesh_tip_burn.jpg — 正常 vs hardened flesh 对照(UFR 基准)assets/papers/sciRep2021_Fig1_peduncle_anatomy.png — 果柄解剖示意(L1 教学)收到图片后,Agent 第一步是回答 photo-protocol.md 中的 8 个 yes/no:
Q1. 能清楚看到刺的颜色? Q2. 能看到果柄基部? Q3. 能看到底部?
Q4. 光线正常? Q5. 没有遮挡? Q6. 整果占画面≥50%?
Q7. 分辨率足够? Q8. 没有滤镜偏色?
| Yes 数 | 处理 |
|---|---|
| --- | --- |
| 8 | ✅ 进入 Step 3 |
| 6–7 | 🟡 进入 Step 3,置信度自动降一档,标"信息不全" |
| 4–5 | 🟠 降级评估:只输出能确定的项,逐项标 unknown,引导用户补图/补做动作 |
| ≤ 3 | 🔴 拒绝评估,告知具体不达标项,要求重拍 |
Q3(底部可见)为软硬结合门禁:若 No,H1/H2 UFR 评估失效须注明,但不整体拒绝评估。
> 若用户提供的是多颗榴莲照片(或同框拍了多颗),先执行本步骤,再对候选逐颗进入 Step 3–5。
> 单颗场景跳过本步骤。
执行流程:
prompts/batch-selection.mdscripts/annotate.py 生成标注图,用 Read 工具把标注图直接显示在对话中(必须,不能仅输出文字表格)视觉部分(Agent 看图):填写 visual_checklist 的 1–18 项 + L1/L3/L4 + H1/H2/H5。
对每项明确标注:✓ 视觉清晰 / ? 视觉模糊(标 unknown) / ✗ 该角度看不到(要求补图)。
用户动作部分(Agent 必须主动请求):
采集字段时:所有触觉/听觉/嗅觉字段,必须在 score.py 输入里附 _source: "user_reported"。
若 Agent 自己看图脑补的,标 _source: "visual_inferred" —— score.py 会自动剔除这类信号。
输入完整 features dict + eat_when,输出 JSON。
特别注意 score.py 可能返回:
decision: "INSUFFICIENT_INFO" → 信息严重不足,不要硬编一个分数, 直接告诉用户缺什么、怎么补,附上 actions_suggested
decision: "OK" 但 overall_confidence: "low" → 综合分已被自动压到 ≤5.5,仍应主动建议补充信息
按以下结构产出最终回答:
### 📷 我看到了什么
[列出视觉判定的项 + 置信度]
### ❓ 我不确定的
[列出 unknown / 模糊的项]
### 🤝 请你帮我做(如果还在现场)
[逐字转达 actions_suggested 里的精准动作请求]
### 📊 当前评估(基于现有信息)
- 外壳木质化 RLI = X.X (置信度 XXX)
- 成熟度档位 = X (置信度 XXX)
- 🔴/🟡/🟢 UFR 风险 = XXX
- 综合 X.X / 10 → 建议 XXX
### 🎯 总体置信度:HIGH / MEDIUM / LOW
### 📚 判断依据
[引用具体 references/ 条目]
多果同图标注规则(图中有多颗榴莲时)
为每颗榴莲输出一行标注,格式:
🟢/🟡/🔴 #{序号} {品质分}/10 {食用窗口图标} {食用建议}
示例:
🔴 #1 3.2/10 ⌛ 等3天后最佳
🟡 #2 5.8/10 ⏰ 等1天后最佳
🟢 #3 8.1/10 ✅ 今天吃
🔴 #4 2.0/10 ⚠️ 已过熟
品质分(0–10)= 这颗果子本身有多好,与成熟度无关,由 5 个子维度加权:
| 子维度 | 权重 | 内容 |
|---|---|---|
| --- | --- | --- |
| Q1 UFR安全性 | 40% | 死包/果肉硬核风险(一票否决项) |
| Q2 新鲜度 | 25% | 果柄颜色与完整性 |
| Q3 形态完整性 | 20% | 对称性、刺尖完整度、黑斑 |
| Q4 出肉率 | 10% | 房数与饱满度 |
| Q5 品种溢价 | 5% | 高端品种(猫山王/黑刺/甘耀)加分 |
> 成熟度由食用窗口图标单独表达(⌛/⏰/✅/⚠️),不进入品质分。
> ❌ 严禁出现 X/8 格式。/8 是图片质量门禁(Q1–Q8)的答对题数,
> 是拍照清晰度指标,与果子质量无关,绝不能作为果子评分展示给用户。
>
> ❌ 序号不带成熟度字母前缀(禁止 A1、C2 这类写法)。
> A/B/C/D 是成熟度档位,不是品质等级;字母前缀会触发 LLM 的"A=优=绿"通用联想。
> 果子编号统一用 #1、#2……,成熟度信息由 RLI 数值和食用窗口图标承载。
颜色圆点规则(锚定最佳食用窗口,调用 score.py 时传 eat_when="auto"):
| 颜色 | 条件 | 含义 |
|---|---|---|
| --- | --- | --- |
| 🟢 绿色 | 最佳窗口 composite_score ≥ 6,UFR 风险 < 高 | 这颗值得买 |
| 🟡 黄色 | 最佳窗口 composite_score 4–5.9 | 一般,可还价 |
| 🔴 红色 | 最佳窗口 composite_score < 4 或 UFR 风险 ≥ 高风险 | 不建议,UFR 风险或潜力不足 |
食用窗口图标(由成熟度档位 tier 决定):
| tier | 图标 | 说明 |
|---|---|---|
| --- | --- | --- |
| A | ⌛ | 等 2–5 天 |
| B | ⏰ | 等 1–2 天 |
| C | ✅ | 今天吃最佳 |
| D | ⚠️ | 已过熟,风味劣化 |
判定逻辑来源于 references/papers.md 列出的同行评审论文(共 35 篇)。
关键学术声明:
关于两类"木质化":
当用户说"木质化榴莲"时,Agent 应主动澄清是问成熟度还是死包。
关于 LLM 视觉判别的局限性:
共 4 个版本