{"id":"1d2a4b34-7f93-4f53-bf16-7d7ea2011eb4","entityType":"agent","slug":"clawhub-kobenfang-fruit-pi","name":"🍓 Fruit Pi · 水果派（全球水果·实时价格·水果价格）","canonicalUrl":"https://www.xpersona.co/agent/clawhub-kobenfang-fruit-pi","canonicalPath":"/agent/clawhub-kobenfang-fruit-pi","generatedAt":"2026-10-10T21:53:41.599Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T17:49:34.358Z","emptyReason":null},"description":"全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。Fruit price tracker for global fruits, wholesale market data, agricultural commodity prices. Skill: 🍓 Fruit Pi · 水果派（全球水果·实时价格·水果价格） Owner: kobenfang Summary: 全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。Fruit price tracker for global fruits, wholesale market data, agricultural commodity prices. Tags: agriculture:1.1.3, china:1.1.3, fruit:1.1.3, global:1.1.3, latest:1.1.3, market:1.1.3, price:1.1.3 Version history: v1.1.3 | 2026-06-17T10:45:02.248Z | user 新增功能概览描述，提升搜索匹配度（保留全部规则） v1.1.2 | 2026-06","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.3K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17d3b7awhw6q33gb5epw1jkqn85c871:fruit-pi","sourceUrl":"https://clawhub.ai/kobenfang/fruit-pi","homepage":"https://clawhub.ai/kobenfang/skills/fruit-pi","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/kobenfang/fruit-pi","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/kobenfang/skills/fruit-pi","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":62,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。Fruit price tracker for global fruits, wholesale market data, agricultural commodity prices. Skill: 🍓 F"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T17:49:34.358Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T17:49:34.358Z","emptyReason":null},"stars":null,"forks":null,"downloads":1310,"packageName":null,"latestVersion":"1.1.3","tractionLabel":"1.3K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T17:49:34.357Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T17:49:34.358Z","lastCrawledAt":"2026-10-10T17:49:34.357Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T17:49:34.357Z","lastVerifiedAt":null,"highlights":[{"version":"1.1.3","createdAt":"2026-06-17T10:45:02.248Z","changelog":"新增功能概览描述，提升搜索匹配度（保留全部规则）","fileCount":4,"zipByteSize":12104},{"version":"1.1.2","createdAt":"2026-06-03T02:51:33.190Z","changelog":"修复：添加图标 🍓","fileCount":4,"zipByteSize":11762},{"version":"1.1.1","createdAt":"2026-05-28T09:12:06.625Z","changelog":"更新显示名称（覆盖latest版本）","fileCount":4,"zipByteSize":11923},{"version":"1.0.7","createdAt":"2026-05-28T09:11:37.116Z","changelog":"更新显示名称（强制最新版本）","fileCount":4,"zipByteSize":11777},{"version":"1.0.6","createdAt":"2026-05-28T06:52:58.856Z","changelog":"更新显示名称","fileCount":4,"zipByteSize":11661},{"version":"1.0.5","createdAt":"2026-05-20T08:49:55.233Z","changelog":"更新搜索索引","fileCount":3,"zipByteSize":10500},{"version":"1.1.0","createdAt":"2026-05-17T13:48:37.476Z","changelog":"No file changes detected in this version. No updates or new features introduced.","fileCount":4,"zipByteSize":11715},{"version":"1.0.3","createdAt":"2026-05-14T13:32:57.569Z","changelog":"fix name: bilingual Fruit Pi + Chinese","fileCount":3,"zipByteSize":10499}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17d3b7awhw6q33gb5epw1jkqn85c871:fruit-pi","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-kobenfang-fruit-pi/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-kobenfang-fruit-pi/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-kobenfang-fruit-pi/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-kobenfang-fruit-pi/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-kobenfang-fruit-pi/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-kobenfang-fruit-pi/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T21:53:41.597Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-kobenfang-fruit-pi/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-kobenfang-fruit-pi/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-kobenfang-fruit-pi/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-kobenfang-fruit-pi/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T17:49:34.358Z","emptyReason":null},"readme":"Skill: 🍓 Fruit Pi · 水果派（全球水果·实时价格·水果价格）\n\nOwner: kobenfang\n\nSummary: 全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。Fruit price tracker for global fruits, wholesale market data, agricultural commodity prices.\n\nTags: agriculture:1.1.3, china:1.1.3, fruit:1.1.3, global:1.1.3, latest:1.1.3, market:1.1.3, price:1.1.3\n\nVersion history:\n\nv1.1.3 | 2026-06-17T10:45:02.248Z | user\n\n新增功能概览描述，提升搜索匹配度（保留全部规则）\n\nv1.1.2 | 2026-06-03T02:51:33.190Z | user\n\n修复：添加图标 🍓\n\nv1.1.1 | 2026-05-28T09:12:06.625Z | user\n\n更新显示名称（覆盖latest版本）\n\nv1.0.7 | 2026-05-28T09:11:37.116Z | user\n\n更新显示名称（强制最新版本）\n\nv1.0.6 | 2026-05-28T06:52:58.856Z | user\n\n更新显示名称\n\nv1.0.5 | 2026-05-20T08:49:55.233Z | user\n\n更新搜索索引\n\nv1.1.0 | 2026-05-17T13:48:37.476Z | auto\n\nNo file changes detected in this version. No updates or new features introduced.\n\nv1.0.3 | 2026-05-14T13:32:57.569Z | user\n\nfix name: bilingual Fruit Pi + Chinese\n\nv1.0.2 | 2026-05-14T11:27:17.591Z | user\n\nfix name: 水果派\n\nv1.0.1 | 2026-05-14T10:07:44.601Z | user\n\nFix: amplitude index(39→43), segment_text duplicate, openclaw path(shutil.which), send-segments generic(un-hardcode target), markdown pool parse(pp_). Add auto-segment fallback for send-segments. Clean SKILL.md rules: remove openclaw message send manual flow, enforce send-segments.\n\nv1.0.0 | 2026-05-12T01:51:58.568Z | user\n\n初版发布：全球水果价格收集与查询工具\n\nArchive index:\n\nArchive v1.1.3: 4 files, 12104 bytes\n\nFiles: _meta.json (127b), fruit-pi.py (22572b), skill-card.md (2166b), SKILL.md (8274b)\n\nFile v1.1.3:SKILL.md\n\n---\nname: fruit-pi\ndescription: 全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。Fruit price tracker for global fruits, wholesale market data, agricultural commodity prices.\ntags:\n  - fruit-price\n  - 水果价格\n  - 农产品行情\n  - 批发价\n  - 榴莲价格\n  - 全球果价\n  - 每日报价\n  - Data & APIs\ntriggers:\n  - fruit pi\n  - Fruit Pi\n  - 水果派\n  - 水果价格\n  - 全球水果价格\n  - 果价\n  - 水果池\n  - 看看水果池\n---\n\n# 🥧 Fruit Pi · 水果派\n\n全球水果价格收集助手。管理您的水果池，定时收集价格，按 RMB/公斤 展示。\n\n## 📋 功能概览\n\nFruit Pi 是一款 **全球水果价格查询与追踪工具**，采集国内外水果批发价格，支持多币种换算。\n\n**核心功能：**\n- **🍉 水果价格查询** — 榴莲、荔枝、樱桃、蓝莓、山竹等热门水果实时价格\n- **🌐 全球市场覆盖** — 国内批发市场 + 国际主要水果产地报价\n- **💰 单位换算** — 自动换算 RMB/公斤，支持多种计价单位\n- **📅 价格走势** — 跟踪水果历史价格，把握采购时机\n- **🔔 价格提醒** — 设置目标价，价格达标时自动通知\n\n## 时区规则\n\n读取 `USER.md` 中的 `Timezone:` 字段。若无配置则用 `date +%Z` 回退。\n\n## 行为规则\n\n**触发即执行**：用户说出任意触发词，按不同规则执行：\n\n**区分两种触发模式：**\n- 🍎 **价格模式**：`水果派 / 水果价格 / 全球水果价格 / 果价 / fruit pi`\n  → 执行完整收集流程：读池→拉价格→搜补→展示\n- 📋 **列表模式**：`水果池 / 看看水果池`\n  → **只列出水果池中的水果，不搜索不收集**\n\n**主动感知与初始化**：首次触发或无水果池时，自动创建水果池文件并以默认水果启动跟踪。若水果池为空则主动提示添加水果。\n\n## 文件索引\n\n### 运行时（`workspace/memory/`）\n- `fruit-pool.json` - 水果池（用户区，不上传）\n\n### 脚本\n- `skills/fruit-pi/fruit-pi.py` - 核心收集器\n\n## 核心流程\n\n### 1. 水果池管理\n\n水果池文件：`workspace/memory/fruit-pool.json`\n\n**水果池结构：**\n```json\n{\n  \"fruits\": {\n    \"金枕头榴莲\": {\n      \"en_name\": \"Monthong Durian\",\n      \"sources\": [\n        {\"name\": \"惠农网\", \"url\": \"https://...\", \"currency\": \"CNY\"},\n        {\"name\": \"泰国市场\", \"url\": \"https://...\", \"currency\": \"THB\"}\n      ],\n      \"last_price\": {\"price_rmb\": 89.5, \"original_price\": 450, \"original_currency\": \"THB\"},\n      \"last_updated\": \"2026-05-11\"\n    }\n  },\n  \"seasonal_fruits\": [\n    {\"name\": \"荔枝\", \"season\": \"5-7月\", \"en_name\": \"Lychee\"},\n    {\"name\": \"樱桃\", \"season\": \"5-7月\", \"en_name\": \"Cherry\"}\n  ],\n  \"metadata\": {\n    \"version\": 1,\n    \"last_collected\": null\n  }\n}\n```\n\n**管理操作（通过自然语言）：**\n- 「把榴莲加入水果池」 → `--add \"榴莲\" --en \"Durian\"`\n- 「给榴莲加个新的价格来源」 → 询问URL后 `--add-source`\n- 「把荔枝移出水果池」 → `--remove \"荔枝\"`\n- 「看看水果池」 → `--list`\n\n### 2. 价格收集流程\n\n#### 2a. 脚本自动收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py\n```\n脚本依次尝试每个水果的配置来源URL：\n- 成功提取价格 → 输出结构化价格\n- 失败 → 输出 search_hints（建议在哪个平台搜索）\n\n#### 2b. 手动触发收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py --collect \"金枕头榴莲\"\n```\n\n#### 2c. 搜索补充（脚本无法获取时）\n\n当脚本返回 `status: \"no_price\"` 或脚本无法运行时，使用 web_search 手动搜索价格。\n\n**价格新鲜度规则（按顺序执行）：**\n1. **先尝试当前配置的平台** —— 用脚本或用 fetch 从当前 sources 拉取价格\n2. **检查拉取结果的新鲜度**：\n   - 若成功获取 **48小时以内**的价格 → 直接使用，更新 `last_price` + `last_updated`\n   - 若获取失败，或获取到的价格标记已 **超过48小时** → 按后面流程搜索新平台\n3. **搜索新平台**：用 search_hints 或搜索策略搜索 → 成功则更新水果池（含 sources），失败则保持当前状态，不强行填数\n\n**搜索策略（按优先级）：**\n1. 国内水果：`<水果名> 批发价 今日 <年>`\n2. 泰国水果：`<fruit_en> wholesale price Thailand <month> <year>`\n3. 进口水果：`<fruit_en> import price China <month> <year>`\n4. 东南亚水果：`<fruit_en> price <country> market <month> <year>`\n\n**推荐平台（按地区）：**\n\n| 地区 | 平台 |\n|------|------|\n| 中国 | 惠农网(www.cnhnb.com), 一亩田(www.ymt.com), 广州江南市场, 北京新发地 |\n| 泰国 | Talad Thai, 泰国农业部, Tridge |\n| 越南 | 越南海关, 边贸市场 |\n| 全球 | FAO, Trading Economics, Selina Wamucii |\n\n#### 2d. 价格提取与归化\n\n从搜索结果提取价格后，统一处理：\n1. **单位归化**：斤→×2=kg, 磅(lb)→×2.2046=kg\n2. **货币转换**：外币→RMB（使用脚本汇率工具或按市场汇率，在回复中注明汇率来源）\n3. **保留原始价**：同时显示外币原价 + 换算后 RMB/公斤\n\n### 3. 输出格式\n\n```\n🥧 Fruit Pi · 水果派 · <日期>\n\n━━━ 🍎 水果池 ━━━\n\n<报价来源1>  ← 来源平台\n  🥇 金枕头榴莲 · ¥89.5/kg\n     泰国 ฿450/kg（≈¥89.5，汇率฿1=¥0.20）\n  🥇 山竹 · ¥45.2/kg\n     ...\n\n<报价来源2>  ← 其他来源\n  🥇 阿克苏苹果 · ¥12.8/kg\n     ...\n\n━━━ 🌟 当季推荐 ━━━\n\n🔥 荔枝（5-7月） | 樱桃（5-7月） | 杨梅（5-6月）\n不在水果池中，可回复\"加入荔枝\"开始跟踪\n\n━━━ 📖 什么是水果池？━━━\n\n水果池是你关注的水果清单。把想跟踪价格的水果加入池中，\n我会每天收集最新价格。\n\n用法：\n  \"把榴莲加入水果池\" → 开始跟踪\n  \"看看水果池\" → 查看当前池中水果\n  \"刷新水果池\" → 手动更新一次价格\n\n💬 回复\"水果派\"查看最新价格\n```\n\n### 4. 消息格式要求\n\n- 使用 `━━━` 分隔段落\n- 报价来源用小标题 `← 来源平台`\n- 每个水果一行：`🥇 名称 · RMB价格/kg` + 外币原价\n- 价格来源标注清晰\n- 末尾附水果池用法提示\n\n### 5. 用户交互\n\n| 用户说 | 动作 |\n|--------|------|\n| 「水果派/水果价格/果价」 | 完整收集：拉价格+搜索补采+展示 |\n| 「水果池/看看水果池」 | **只列出水果清单，不收集价格** |\n| 「加入<水果名>」 | `--add \"<fruit>\"` |\n| 「移除<水果名>」 | `--remove \"<fruit>\"` |\n| 「看看水果池」 | `--list` |\n| 「刷新水果池」 | 执行完整收集流程 |\n| 「刷新<水果名>」 | `--collect \"<fruit>\"` |\n| 「<水果名>什么价」 | 尝试收集该水果价格 |\n| 「推荐水果」 | 当季推荐 |\n\n### 6. 工作流程（用户触发时）\n\n**第一步：检查水果池**\n```bash\npython3 skills/fruit-pi/fruit-pi.py --status\n```\n- 无 `fruit-pool.json` → 自动创建\n- 池为空 → 提示添加水果\n\n**第二步：价格采集**\n```bash\npython3 skills/fruit-pi/fruit-pi.py\n```\n收集结果分三类：\n- ✅ 有价格 → 直接使用\n- ❌ 无价格但有 search_hints → web_search 补采\n- ❌ 无价格无 hint → 按「搜索策略」手动搜索\n\n**第三步：搜索补采（针对获取不到或过期的数据）**\n对脚本获取失败、或获取到的价格已超48小时的水果，执行 web_search：\n1. 用 search_hints 或搜索策略生成查询\n2. 从搜索结果提取价格\n3. 单位归化 + 货币换算\n4. 成功 → 更新水果池的 last_price / sources\n5. 失败 → 保持当前状态，不强行填数\n\n**第四步：格式化输出**\n按「输出格式」组织所有水果价格。\n\n### 7. 异常处理\n\n- URL失效爬不下 → 搜索新来源，提示用户添加\n- 汇率API超时 → 使用脚本内建默认汇率，标注为估算\n- 所有来源都无法获取 → 显示「暂无数据」，给出搜索建议\n\n### 8. 输出约束\n\n- **严禁输出思考过程、中间步骤、调试信息**\n- 不要输出脚本运行的JSON原始数据\n- 只推送最终整理后的内容\n- 价格统一用 ¥/kg 格式\n- 外币始终保留原价标注\n\nFile v1.1.3:_meta.json\n\n{\n  \"ownerId\": \"kn74nyzntdcr43y9jyj89wb2qx85c8pf\",\n  \"slug\": \"fruit-pi\",\n  \"version\": \"1.1.3\",\n  \"publishedAt\": 1781693102248\n}\n\nFile v1.1.3:skill-card.md\n\n## Description:\n\n全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。Fruit price tracker for global fruits, wholesale market data, agricultural commodity prices.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[kobenfang](https://clawhub.ai/user/kobenfang)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and agents use Fruit Pi to manage a fruit watchlist, collect current wholesale fruit prices from configured or discovered sources, normalize prices to RMB per kilogram, and present concise price summaries with source context.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can persist and repeatedly fetch unvalidated user-added or web-discovered price-source URLs.\n\nMitigation: Review source URLs before adding them, remove unexpected sources from the fruit pool, and avoid internal, local, or otherwise sensitive URLs.\n\nRisk: Casual trigger phrases can initiate collection behavior that fetches configured sources.\n\nMitigation: Prefer explicit commands such as list, refresh, add, and remove so collection happens only when intended.\n\n## Reference(s):\n\n- [Fruit Pi on ClawHub](https://clawhub.ai/kobenfang/skills/fruit-pi)\n- [kobenfang publisher profile](https://clawhub.ai/user/kobenfang)\n- [Frankfurter exchange-rate API](https://api.frankfurter.app/latest?from=USD)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown-style price summary with concise text, source labels, and inline command guidance]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May update a local fruit-pool JSON file and cache exchange-rate data during collection.]\n\n## Skill Version(s):\n\n1.1.3 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.1.2: 4 files, 11762 bytes\n\nFiles: _meta.json (127b), fruit-pi.py (22572b), skill-card.md (2095b), SKILL.md (7687b)\n\nFile v1.1.2:SKILL.md\n\n---\nname: fruit-pi\ndescription: 全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。Fruit price tracker for global fruits, wholesale market data, agricultural commodity prices.\ntags:\n  - fruit-price\n  - 水果价格\n  - 农产品行情\n  - 批发价\n  - 榴莲价格\n  - 全球果价\n  - 每日报价\n  - Data & APIs\ntriggers:\n  - fruit pi\n  - Fruit Pi\n  - 水果派\n  - 水果价格\n  - 全球水果价格\n  - 果价\n  - 水果池\n  - 看看水果池\n---\n\n# 🥧 Fruit Pi · 水果派\n\n全球水果价格收集助手。管理您的水果池，定时收集价格，按 RMB/公斤 展示。\n\n## 时区规则\n\n读取 `USER.md` 中的 `Timezone:` 字段。若无配置则用 `date +%Z` 回退。\n\n## 行为规则\n\n**触发即执行**：用户说出任意触发词，按不同规则执行：\n\n**区分两种触发模式：**\n- 🍎 **价格模式**：`水果派 / 水果价格 / 全球水果价格 / 果价 / fruit pi`\n  → 执行完整收集流程：读池→拉价格→搜补→展示\n- 📋 **列表模式**：`水果池 / 看看水果池`\n  → **只列出水果池中的水果，不搜索不收集**\n\n**主动感知与初始化**：首次触发或无水果池时，自动创建水果池文件并以默认水果启动跟踪。若水果池为空则主动提示添加水果。\n\n## 文件索引\n\n### 运行时（`workspace/memory/`）\n- `fruit-pool.json` - 水果池（用户区，不上传）\n\n### 脚本\n- `skills/fruit-pi/fruit-pi.py` - 核心收集器\n\n## 核心流程\n\n### 1. 水果池管理\n\n水果池文件：`workspace/memory/fruit-pool.json`\n\n**水果池结构：**\n```json\n{\n  \"fruits\": {\n    \"金枕头榴莲\": {\n      \"en_name\": \"Monthong Durian\",\n      \"sources\": [\n        {\"name\": \"惠农网\", \"url\": \"https://...\", \"currency\": \"CNY\"},\n        {\"name\": \"泰国市场\", \"url\": \"https://...\", \"currency\": \"THB\"}\n      ],\n      \"last_price\": {\"price_rmb\": 89.5, \"original_price\": 450, \"original_currency\": \"THB\"},\n      \"last_updated\": \"2026-05-11\"\n    }\n  },\n  \"seasonal_fruits\": [\n    {\"name\": \"荔枝\", \"season\": \"5-7月\", \"en_name\": \"Lychee\"},\n    {\"name\": \"樱桃\", \"season\": \"5-7月\", \"en_name\": \"Cherry\"}\n  ],\n  \"metadata\": {\n    \"version\": 1,\n    \"last_collected\": null\n  }\n}\n```\n\n**管理操作（通过自然语言）：**\n- 「把榴莲加入水果池」 → `--add \"榴莲\" --en \"Durian\"`\n- 「给榴莲加个新的价格来源」 → 询问URL后 `--add-source`\n- 「把荔枝移出水果池」 → `--remove \"荔枝\"`\n- 「看看水果池」 → `--list`\n\n### 2. 价格收集流程\n\n#### 2a. 脚本自动收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py\n```\n脚本依次尝试每个水果的配置来源URL：\n- 成功提取价格 → 输出结构化价格\n- 失败 → 输出 search_hints（建议在哪个平台搜索）\n\n#### 2b. 手动触发收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py --collect \"金枕头榴莲\"\n```\n\n#### 2c. 搜索补充（脚本无法获取时）\n\n当脚本返回 `status: \"no_price\"` 或脚本无法运行时，使用 web_search 手动搜索价格。\n\n**价格新鲜度规则（按顺序执行）：**\n1. **先尝试当前配置的平台** —— 用脚本或用 fetch 从当前 sources 拉取价格\n2. **检查拉取结果的新鲜度**：\n   - 若成功获取 **48小时以内**的价格 → 直接使用，更新 `last_price` + `last_updated`\n   - 若获取失败，或获取到的价格标记已 **超过48小时** → 按后面流程搜索新平台\n3. **搜索新平台**：用 search_hints 或搜索策略搜索 → 成功则更新水果池（含 sources），失败则保持当前状态，不强行填数\n\n**搜索策略（按优先级）：**\n1. 国内水果：`<水果名> 批发价 今日 <年>`\n2. 泰国水果：`<fruit_en> wholesale price Thailand <month> <year>`\n3. 进口水果：`<fruit_en> import price China <month> <year>`\n4. 东南亚水果：`<fruit_en> price <country> market <month> <year>`\n\n**推荐平台（按地区）：**\n\n| 地区 | 平台 |\n|------|------|\n| 中国 | 惠农网(www.cnhnb.com), 一亩田(www.ymt.com), 广州江南市场, 北京新发地 |\n| 泰国 | Talad Thai, 泰国农业部, Tridge |\n| 越南 | 越南海关, 边贸市场 |\n| 全球 | FAO, Trading Economics, Selina Wamucii |\n\n#### 2d. 价格提取与归化\n\n从搜索结果提取价格后，统一处理：\n1. **单位归化**：斤→×2=kg, 磅(lb)→×2.2046=kg\n2. **货币转换**：外币→RMB（使用脚本汇率工具或按市场汇率，在回复中注明汇率来源）\n3. **保留原始价**：同时显示外币原价 + 换算后 RMB/公斤\n\n### 3. 输出格式\n\n```\n🥧 Fruit Pi · 水果派 · <日期>\n\n━━━ 🍎 水果池 ━━━\n\n<报价来源1>  ← 来源平台\n  🥇 金枕头榴莲 · ¥89.5/kg\n     泰国 ฿450/kg（≈¥89.5，汇率฿1=¥0.20）\n  🥇 山竹 · ¥45.2/kg\n     ...\n\n<报价来源2>  ← 其他来源\n  🥇 阿克苏苹果 · ¥12.8/kg\n     ...\n\n━━━ 🌟 当季推荐 ━━━\n\n🔥 荔枝（5-7月） | 樱桃（5-7月） | 杨梅（5-6月）\n不在水果池中，可回复\"加入荔枝\"开始跟踪\n\n━━━ 📖 什么是水果池？━━━\n\n水果池是你关注的水果清单。把想跟踪价格的水果加入池中，\n我会每天收集最新价格。\n\n用法：\n  \"把榴莲加入水果池\" → 开始跟踪\n  \"看看水果池\" → 查看当前池中水果\n  \"刷新水果池\" → 手动更新一次价格\n\n💬 回复\"水果派\"查看最新价格\n```\n\n### 4. 消息格式要求\n\n- 使用 `━━━` 分隔段落\n- 报价来源用小标题 `← 来源平台`\n- 每个水果一行：`🥇 名称 · RMB价格/kg` + 外币原价\n- 价格来源标注清晰\n- 末尾附水果池用法提示\n\n### 5. 用户交互\n\n| 用户说 | 动作 |\n|--------|------|\n| 「水果派/水果价格/果价」 | 完整收集：拉价格+搜索补采+展示 |\n| 「水果池/看看水果池」 | **只列出水果清单，不收集价格** |\n| 「加入<水果名>」 | `--add \"<fruit>\"` |\n| 「移除<水果名>」 | `--remove \"<fruit>\"` |\n| 「看看水果池」 | `--list` |\n| 「刷新水果池」 | 执行完整收集流程 |\n| 「刷新<水果名>」 | `--collect \"<fruit>\"` |\n| 「<水果名>什么价」 | 尝试收集该水果价格 |\n| 「推荐水果」 | 当季推荐 |\n\n### 6. 工作流程（用户触发时）\n\n**第一步：检查水果池**\n```bash\npython3 skills/fruit-pi/fruit-pi.py --status\n```\n- 无 `fruit-pool.json` → 自动创建\n- 池为空 → 提示添加水果\n\n**第二步：价格采集**\n```bash\npython3 skills/fruit-pi/fruit-pi.py\n```\n收集结果分三类：\n- ✅ 有价格 → 直接使用\n- ❌ 无价格但有 search_hints → web_search 补采\n- ❌ 无价格无 hint → 按「搜索策略」手动搜索\n\n**第三步：搜索补采（针对获取不到或过期的数据）**\n对脚本获取失败、或获取到的价格已超48小时的水果，执行 web_search：\n1. 用 search_hints 或搜索策略生成查询\n2. 从搜索结果提取价格\n3. 单位归化 + 货币换算\n4. 成功 → 更新水果池的 last_price / sources\n5. 失败 → 保持当前状态，不强行填数\n\n**第四步：格式化输出**\n按「输出格式」组织所有水果价格。\n\n### 7. 异常处理\n\n- URL失效爬不下 → 搜索新来源，提示用户添加\n- 汇率API超时 → 使用脚本内建默认汇率，标注为估算\n- 所有来源都无法获取 → 显示「暂无数据」，给出搜索建议\n\n### 8. 输出约束\n\n- **严禁输出思考过程、中间步骤、调试信息**\n- 不要输出脚本运行的JSON原始数据\n- 只推送最终整理后的内容\n- 价格统一用 ¥/kg 格式\n- 外币始终保留原价标注\n\nFile v1.1.2:_meta.json\n\n{\n  \"ownerId\": \"kn74nyzntdcr43y9jyj89wb2qx85c8pf\",\n  \"slug\": \"fruit-pi\",\n  \"version\": \"1.1.2\",\n  \"publishedAt\": 1780455093190\n}\n\nFile v1.1.2:skill-card.md\n\n## Description: <br>\n全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。Fruit price tracker for global fruits, wholesale market data, agricultural commodity prices. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[kobenfang](https://clawhub.ai/user/kobenfang) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and agents use this skill to maintain a personal fruit pool, collect current wholesale fruit prices, convert prices to RMB per kilogram, and present concise fruit-market summaries. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Broad trigger phrases may start network price collection unexpectedly. <br>\nMitigation: Use explicit invocations for price refreshes and list-only requests when no collection is intended. <br>\nRisk: The skill can maintain or update a local fruit-pool cache. <br>\nMitigation: Review the local fruit-pool cache before relying on it, and choose read-only or no-refresh behavior when local state changes are not wanted. <br>\n\n\n## Reference(s): <br>\n- [Fruit Pi on ClawHub](https://clawhub.ai/kobenfang/fruit-pi) <br>\n- [Frankfurter exchange-rate API](https://api.frankfurter.app/latest?from=USD) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration] <br>\n**Output Format:** [Markdown summaries with shell command invocations and JSON-backed local state] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Maintains a local fruit-pool cache and may fetch configured fruit-price pages or exchange-rate data.] <br>\n\n## Skill Version(s): <br>\n1.1.2 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.1.1: 4 files, 11923 bytes\n\nFiles: _meta.json (127b), fruit-pi.py (22572b), skill-card.md (2442b), SKILL.md (7687b)\n\nFile v1.1.1:SKILL.md\n\n---\nname: fruit-pi\ndescription: 全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。Fruit price tracker for global fruits, wholesale market data, agricultural commodity prices.\ntags:\n  - fruit-price\n  - 水果价格\n  - 农产品行情\n  - 批发价\n  - 榴莲价格\n  - 全球果价\n  - 每日报价\n  - Data & APIs\ntriggers:\n  - fruit pi\n  - Fruit Pi\n  - 水果派\n  - 水果价格\n  - 全球水果价格\n  - 果价\n  - 水果池\n  - 看看水果池\n---\n\n# 🥧 Fruit Pi · 水果派\n\n全球水果价格收集助手。管理您的水果池，定时收集价格，按 RMB/公斤 展示。\n\n## 时区规则\n\n读取 `USER.md` 中的 `Timezone:` 字段。若无配置则用 `date +%Z` 回退。\n\n## 行为规则\n\n**触发即执行**：用户说出任意触发词，按不同规则执行：\n\n**区分两种触发模式：**\n- 🍎 **价格模式**：`水果派 / 水果价格 / 全球水果价格 / 果价 / fruit pi`\n  → 执行完整收集流程：读池→拉价格→搜补→展示\n- 📋 **列表模式**：`水果池 / 看看水果池`\n  → **只列出水果池中的水果，不搜索不收集**\n\n**主动感知与初始化**：首次触发或无水果池时，自动创建水果池文件并以默认水果启动跟踪。若水果池为空则主动提示添加水果。\n\n## 文件索引\n\n### 运行时（`workspace/memory/`）\n- `fruit-pool.json` - 水果池（用户区，不上传）\n\n### 脚本\n- `skills/fruit-pi/fruit-pi.py` - 核心收集器\n\n## 核心流程\n\n### 1. 水果池管理\n\n水果池文件：`workspace/memory/fruit-pool.json`\n\n**水果池结构：**\n```json\n{\n  \"fruits\": {\n    \"金枕头榴莲\": {\n      \"en_name\": \"Monthong Durian\",\n      \"sources\": [\n        {\"name\": \"惠农网\", \"url\": \"https://...\", \"currency\": \"CNY\"},\n        {\"name\": \"泰国市场\", \"url\": \"https://...\", \"currency\": \"THB\"}\n      ],\n      \"last_price\": {\"price_rmb\": 89.5, \"original_price\": 450, \"original_currency\": \"THB\"},\n      \"last_updated\": \"2026-05-11\"\n    }\n  },\n  \"seasonal_fruits\": [\n    {\"name\": \"荔枝\", \"season\": \"5-7月\", \"en_name\": \"Lychee\"},\n    {\"name\": \"樱桃\", \"season\": \"5-7月\", \"en_name\": \"Cherry\"}\n  ],\n  \"metadata\": {\n    \"version\": 1,\n    \"last_collected\": null\n  }\n}\n```\n\n**管理操作（通过自然语言）：**\n- 「把榴莲加入水果池」 → `--add \"榴莲\" --en \"Durian\"`\n- 「给榴莲加个新的价格来源」 → 询问URL后 `--add-source`\n- 「把荔枝移出水果池」 → `--remove \"荔枝\"`\n- 「看看水果池」 → `--list`\n\n### 2. 价格收集流程\n\n#### 2a. 脚本自动收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py\n```\n脚本依次尝试每个水果的配置来源URL：\n- 成功提取价格 → 输出结构化价格\n- 失败 → 输出 search_hints（建议在哪个平台搜索）\n\n#### 2b. 手动触发收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py --collect \"金枕头榴莲\"\n```\n\n#### 2c. 搜索补充（脚本无法获取时）\n\n当脚本返回 `status: \"no_price\"` 或脚本无法运行时，使用 web_search 手动搜索价格。\n\n**价格新鲜度规则（按顺序执行）：**\n1. **先尝试当前配置的平台** —— 用脚本或用 fetch 从当前 sources 拉取价格\n2. **检查拉取结果的新鲜度**：\n   - 若成功获取 **48小时以内**的价格 → 直接使用，更新 `last_price` + `last_updated`\n   - 若获取失败，或获取到的价格标记已 **超过48小时** → 按后面流程搜索新平台\n3. **搜索新平台**：用 search_hints 或搜索策略搜索 → 成功则更新水果池（含 sources），失败则保持当前状态，不强行填数\n\n**搜索策略（按优先级）：**\n1. 国内水果：`<水果名> 批发价 今日 <年>`\n2. 泰国水果：`<fruit_en> wholesale price Thailand <month> <year>`\n3. 进口水果：`<fruit_en> import price China <month> <year>`\n4. 东南亚水果：`<fruit_en> price <country> market <month> <year>`\n\n**推荐平台（按地区）：**\n\n| 地区 | 平台 |\n|------|------|\n| 中国 | 惠农网(www.cnhnb.com), 一亩田(www.ymt.com), 广州江南市场, 北京新发地 |\n| 泰国 | Talad Thai, 泰国农业部, Tridge |\n| 越南 | 越南海关, 边贸市场 |\n| 全球 | FAO, Trading Economics, Selina Wamucii |\n\n#### 2d. 价格提取与归化\n\n从搜索结果提取价格后，统一处理：\n1. **单位归化**：斤→×2=kg, 磅(lb)→×2.2046=kg\n2. **货币转换**：外币→RMB（使用脚本汇率工具或按市场汇率，在回复中注明汇率来源）\n3. **保留原始价**：同时显示外币原价 + 换算后 RMB/公斤\n\n### 3. 输出格式\n\n```\n🥧 Fruit Pi · 水果派 · <日期>\n\n━━━ 🍎 水果池 ━━━\n\n<报价来源1>  ← 来源平台\n  🥇 金枕头榴莲 · ¥89.5/kg\n     泰国 ฿450/kg（≈¥89.5，汇率฿1=¥0.20）\n  🥇 山竹 · ¥45.2/kg\n     ...\n\n<报价来源2>  ← 其他来源\n  🥇 阿克苏苹果 · ¥12.8/kg\n     ...\n\n━━━ 🌟 当季推荐 ━━━\n\n🔥 荔枝（5-7月） | 樱桃（5-7月） | 杨梅（5-6月）\n不在水果池中，可回复\"加入荔枝\"开始跟踪\n\n━━━ 📖 什么是水果池？━━━\n\n水果池是你关注的水果清单。把想跟踪价格的水果加入池中，\n我会每天收集最新价格。\n\n用法：\n  \"把榴莲加入水果池\" → 开始跟踪\n  \"看看水果池\" → 查看当前池中水果\n  \"刷新水果池\" → 手动更新一次价格\n\n💬 回复\"水果派\"查看最新价格\n```\n\n### 4. 消息格式要求\n\n- 使用 `━━━` 分隔段落\n- 报价来源用小标题 `← 来源平台`\n- 每个水果一行：`🥇 名称 · RMB价格/kg` + 外币原价\n- 价格来源标注清晰\n- 末尾附水果池用法提示\n\n### 5. 用户交互\n\n| 用户说 | 动作 |\n|--------|------|\n| 「水果派/水果价格/果价」 | 完整收集：拉价格+搜索补采+展示 |\n| 「水果池/看看水果池」 | **只列出水果清单，不收集价格** |\n| 「加入<水果名>」 | `--add \"<fruit>\"` |\n| 「移除<水果名>」 | `--remove \"<fruit>\"` |\n| 「看看水果池」 | `--list` |\n| 「刷新水果池」 | 执行完整收集流程 |\n| 「刷新<水果名>」 | `--collect \"<fruit>\"` |\n| 「<水果名>什么价」 | 尝试收集该水果价格 |\n| 「推荐水果」 | 当季推荐 |\n\n### 6. 工作流程（用户触发时）\n\n**第一步：检查水果池**\n```bash\npython3 skills/fruit-pi/fruit-pi.py --status\n```\n- 无 `fruit-pool.json` → 自动创建\n- 池为空 → 提示添加水果\n\n**第二步：价格采集**\n```bash\npython3 skills/fruit-pi/fruit-pi.py\n```\n收集结果分三类：\n- ✅ 有价格 → 直接使用\n- ❌ 无价格但有 search_hints → web_search 补采\n- ❌ 无价格无 hint → 按「搜索策略」手动搜索\n\n**第三步：搜索补采（针对获取不到或过期的数据）**\n对脚本获取失败、或获取到的价格已超48小时的水果，执行 web_search：\n1. 用 search_hints 或搜索策略生成查询\n2. 从搜索结果提取价格\n3. 单位归化 + 货币换算\n4. 成功 → 更新水果池的 last_price / sources\n5. 失败 → 保持当前状态，不强行填数\n\n**第四步：格式化输出**\n按「输出格式」组织所有水果价格。\n\n### 7. 异常处理\n\n- URL失效爬不下 → 搜索新来源，提示用户添加\n- 汇率API超时 → 使用脚本内建默认汇率，标注为估算\n- 所有来源都无法获取 → 显示「暂无数据」，给出搜索建议\n\n### 8. 输出约束\n\n- **严禁输出思考过程、中间步骤、调试信息**\n- 不要输出脚本运行的JSON原始数据\n- 只推送最终整理后的内容\n- 价格统一用 ¥/kg 格式\n- 外币始终保留原价标注\n\nFile v1.1.1:_meta.json\n\n{\n  \"ownerId\": \"kn74nyzntdcr43y9jyj89wb2qx85c8pf\",\n  \"slug\": \"fruit-pi\",\n  \"version\": \"1.1.1\",\n  \"publishedAt\": 1779959526625\n}\n\nFile v1.1.1:skill-card.md\n\n## Description: <br>\n全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。 <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[kobenfang](https://clawhub.ai/user/kobenfang) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nConsumers, analysts, and agents use this skill to manage a personal fruit watchlist, collect recent wholesale fruit prices, normalize units and currencies to RMB/kg, and present concise fruit-price summaries. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Broad fruit-price trigger phrases may cause the price collection workflow to run when the user expected only a lightweight interaction. <br>\nMitigation: Use the documented list-only trigger for pool inspection, and reserve price-mode triggers for times when web collection and price refresh are intended. <br>\nRisk: The skill makes web requests to configured market-data URLs and an exchange-rate API. <br>\nMitigation: Review source URLs before adding them, and keep only trusted market or exchange-rate sources in the fruit pool. <br>\nRisk: Add, remove, and source-management commands update the local fruit tracking file. <br>\nMitigation: Use list/status commands to confirm the current fruit pool before removing fruits or changing sources. <br>\n\n\n## Reference(s): <br>\n- [ClawHub release page](https://clawhub.ai/kobenfang/fruit-pi) <br>\n- [Frankfurter exchange-rate API](https://api.frankfurter.app/latest?from=USD) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown summaries with inline shell commands and JSON-backed local state] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Prices are normalized to RMB/kg, foreign-currency source prices are preserved, and final user-facing replies suppress raw script JSON.] <br>\n\n## Skill Version(s): <br>\n1.1.1 (source: server release evidence; artifact metadata and script header still mention 1.0.0) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.7: 4 files, 11777 bytes\n\nFiles: _meta.json (127b), fruit-pi.py (22572b), skill-card.md (2129b), SKILL.md (7687b)\n\nFile v1.0.7:SKILL.md\n\n---\nname: fruit-pi\ndescription: 全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。Fruit price tracker for global fruits, wholesale market data, agricultural commodity prices.\ntags:\n  - fruit-price\n  - 水果价格\n  - 农产品行情\n  - 批发价\n  - 榴莲价格\n  - 全球果价\n  - 每日报价\n  - Data & APIs\ntriggers:\n  - fruit pi\n  - Fruit Pi\n  - 水果派\n  - 水果价格\n  - 全球水果价格\n  - 果价\n  - 水果池\n  - 看看水果池\n---\n\n# 🥧 Fruit Pi · 水果派\n\n全球水果价格收集助手。管理您的水果池，定时收集价格，按 RMB/公斤 展示。\n\n## 时区规则\n\n读取 `USER.md` 中的 `Timezone:` 字段。若无配置则用 `date +%Z` 回退。\n\n## 行为规则\n\n**触发即执行**：用户说出任意触发词，按不同规则执行：\n\n**区分两种触发模式：**\n- 🍎 **价格模式**：`水果派 / 水果价格 / 全球水果价格 / 果价 / fruit pi`\n  → 执行完整收集流程：读池→拉价格→搜补→展示\n- 📋 **列表模式**：`水果池 / 看看水果池`\n  → **只列出水果池中的水果，不搜索不收集**\n\n**主动感知与初始化**：首次触发或无水果池时，自动创建水果池文件并以默认水果启动跟踪。若水果池为空则主动提示添加水果。\n\n## 文件索引\n\n### 运行时（`workspace/memory/`）\n- `fruit-pool.json` - 水果池（用户区，不上传）\n\n### 脚本\n- `skills/fruit-pi/fruit-pi.py` - 核心收集器\n\n## 核心流程\n\n### 1. 水果池管理\n\n水果池文件：`workspace/memory/fruit-pool.json`\n\n**水果池结构：**\n```json\n{\n  \"fruits\": {\n    \"金枕头榴莲\": {\n      \"en_name\": \"Monthong Durian\",\n      \"sources\": [\n        {\"name\": \"惠农网\", \"url\": \"https://...\", \"currency\": \"CNY\"},\n        {\"name\": \"泰国市场\", \"url\": \"https://...\", \"currency\": \"THB\"}\n      ],\n      \"last_price\": {\"price_rmb\": 89.5, \"original_price\": 450, \"original_currency\": \"THB\"},\n      \"last_updated\": \"2026-05-11\"\n    }\n  },\n  \"seasonal_fruits\": [\n    {\"name\": \"荔枝\", \"season\": \"5-7月\", \"en_name\": \"Lychee\"},\n    {\"name\": \"樱桃\", \"season\": \"5-7月\", \"en_name\": \"Cherry\"}\n  ],\n  \"metadata\": {\n    \"version\": 1,\n    \"last_collected\": null\n  }\n}\n```\n\n**管理操作（通过自然语言）：**\n- 「把榴莲加入水果池」 → `--add \"榴莲\" --en \"Durian\"`\n- 「给榴莲加个新的价格来源」 → 询问URL后 `--add-source`\n- 「把荔枝移出水果池」 → `--remove \"荔枝\"`\n- 「看看水果池」 → `--list`\n\n### 2. 价格收集流程\n\n#### 2a. 脚本自动收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py\n```\n脚本依次尝试每个水果的配置来源URL：\n- 成功提取价格 → 输出结构化价格\n- 失败 → 输出 search_hints（建议在哪个平台搜索）\n\n#### 2b. 手动触发收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py --collect \"金枕头榴莲\"\n```\n\n#### 2c. 搜索补充（脚本无法获取时）\n\n当脚本返回 `status: \"no_price\"` 或脚本无法运行时，使用 web_search 手动搜索价格。\n\n**价格新鲜度规则（按顺序执行）：**\n1. **先尝试当前配置的平台** —— 用脚本或用 fetch 从当前 sources 拉取价格\n2. **检查拉取结果的新鲜度**：\n   - 若成功获取 **48小时以内**的价格 → 直接使用，更新 `last_price` + `last_updated`\n   - 若获取失败，或获取到的价格标记已 **超过48小时** → 按后面流程搜索新平台\n3. **搜索新平台**：用 search_hints 或搜索策略搜索 → 成功则更新水果池（含 sources），失败则保持当前状态，不强行填数\n\n**搜索策略（按优先级）：**\n1. 国内水果：`<水果名> 批发价 今日 <年>`\n2. 泰国水果：`<fruit_en> wholesale price Thailand <month> <year>`\n3. 进口水果：`<fruit_en> import price China <month> <year>`\n4. 东南亚水果：`<fruit_en> price <country> market <month> <year>`\n\n**推荐平台（按地区）：**\n\n| 地区 | 平台 |\n|------|------|\n| 中国 | 惠农网(www.cnhnb.com), 一亩田(www.ymt.com), 广州江南市场, 北京新发地 |\n| 泰国 | Talad Thai, 泰国农业部, Tridge |\n| 越南 | 越南海关, 边贸市场 |\n| 全球 | FAO, Trading Economics, Selina Wamucii |\n\n#### 2d. 价格提取与归化\n\n从搜索结果提取价格后，统一处理：\n1. **单位归化**：斤→×2=kg, 磅(lb)→×2.2046=kg\n2. **货币转换**：外币→RMB（使用脚本汇率工具或按市场汇率，在回复中注明汇率来源）\n3. **保留原始价**：同时显示外币原价 + 换算后 RMB/公斤\n\n### 3. 输出格式\n\n```\n🥧 Fruit Pi · 水果派 · <日期>\n\n━━━ 🍎 水果池 ━━━\n\n<报价来源1>  ← 来源平台\n  🥇 金枕头榴莲 · ¥89.5/kg\n     泰国 ฿450/kg（≈¥89.5，汇率฿1=¥0.20）\n  🥇 山竹 · ¥45.2/kg\n     ...\n\n<报价来源2>  ← 其他来源\n  🥇 阿克苏苹果 · ¥12.8/kg\n     ...\n\n━━━ 🌟 当季推荐 ━━━\n\n🔥 荔枝（5-7月） | 樱桃（5-7月） | 杨梅（5-6月）\n不在水果池中，可回复\"加入荔枝\"开始跟踪\n\n━━━ 📖 什么是水果池？━━━\n\n水果池是你关注的水果清单。把想跟踪价格的水果加入池中，\n我会每天收集最新价格。\n\n用法：\n  \"把榴莲加入水果池\" → 开始跟踪\n  \"看看水果池\" → 查看当前池中水果\n  \"刷新水果池\" → 手动更新一次价格\n\n💬 回复\"水果派\"查看最新价格\n```\n\n### 4. 消息格式要求\n\n- 使用 `━━━` 分隔段落\n- 报价来源用小标题 `← 来源平台`\n- 每个水果一行：`🥇 名称 · RMB价格/kg` + 外币原价\n- 价格来源标注清晰\n- 末尾附水果池用法提示\n\n### 5. 用户交互\n\n| 用户说 | 动作 |\n|--------|------|\n| 「水果派/水果价格/果价」 | 完整收集：拉价格+搜索补采+展示 |\n| 「水果池/看看水果池」 | **只列出水果清单，不收集价格** |\n| 「加入<水果名>」 | `--add \"<fruit>\"` |\n| 「移除<水果名>」 | `--remove \"<fruit>\"` |\n| 「看看水果池」 | `--list` |\n| 「刷新水果池」 | 执行完整收集流程 |\n| 「刷新<水果名>」 | `--collect \"<fruit>\"` |\n| 「<水果名>什么价」 | 尝试收集该水果价格 |\n| 「推荐水果」 | 当季推荐 |\n\n### 6. 工作流程（用户触发时）\n\n**第一步：检查水果池**\n```bash\npython3 skills/fruit-pi/fruit-pi.py --status\n```\n- 无 `fruit-pool.json` → 自动创建\n- 池为空 → 提示添加水果\n\n**第二步：价格采集**\n```bash\npython3 skills/fruit-pi/fruit-pi.py\n```\n收集结果分三类：\n- ✅ 有价格 → 直接使用\n- ❌ 无价格但有 search_hints → web_search 补采\n- ❌ 无价格无 hint → 按「搜索策略」手动搜索\n\n**第三步：搜索补采（针对获取不到或过期的数据）**\n对脚本获取失败、或获取到的价格已超48小时的水果，执行 web_search：\n1. 用 search_hints 或搜索策略生成查询\n2. 从搜索结果提取价格\n3. 单位归化 + 货币换算\n4. 成功 → 更新水果池的 last_price / sources\n5. 失败 → 保持当前状态，不强行填数\n\n**第四步：格式化输出**\n按「输出格式」组织所有水果价格。\n\n### 7. 异常处理\n\n- URL失效爬不下 → 搜索新来源，提示用户添加\n- 汇率API超时 → 使用脚本内建默认汇率，标注为估算\n- 所有来源都无法获取 → 显示「暂无数据」，给出搜索建议\n\n### 8. 输出约束\n\n- **严禁输出思考过程、中间步骤、调试信息**\n- 不要输出脚本运行的JSON原始数据\n- 只推送最终整理后的内容\n- 价格统一用 ¥/kg 格式\n- 外币始终保留原价标注\n\nFile v1.0.7:_meta.json\n\n{\n  \"ownerId\": \"kn74nyzntdcr43y9jyj89wb2qx85c8pf\",\n  \"slug\": \"fruit-pi\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1779959497116\n}\n\nFile v1.0.7:skill-card.md\n\n## Description: <br>\n全球水果价格收集与查询；管理水果池，自动采集榴莲、荔枝、樱桃等水果每日批发价，支持国内外报价和 RMB/公斤换算。 <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[kobenfang](https://clawhub.ai/user/kobenfang) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and agents use this skill to manage a fruit watchlist, fetch current wholesale fruit prices from configured or searched web sources, normalize units and currencies to RMB/kg, and present seasonal recommendations. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Broad trigger phrases may start web fetching and update the local fruit-pool file. <br>\nMitigation: Use the list-only trigger when you only want to inspect the fruit pool, and review configured sources before enabling price collection. <br>\nRisk: Fetched prices and exchange-rate conversions can be stale, unavailable, or approximate. <br>\nMitigation: Show source labels, preserve original prices and currencies, and mark fallback exchange rates as estimates. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/kobenfang/fruit-pi) <br>\n- [Frankfurter exchange-rate API](https://api.frankfurter.app/latest?from=USD) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown with formatted price summaries and inline shell commands] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May update a local fruit-pool JSON file and include normalized RMB/kg prices, original currency prices, source labels, and seasonal recommendations.] <br>\n\n## Skill Version(s): <br>\n1.0.7 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.6: 4 files, 11661 bytes\n\nFiles: _meta.json (127b), fruit-pi.py (22572b), skill-card.md (2161b), SKILL.md (7687b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: fruit-pi\ndescription: 全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。Fruit price tracker for global fruits, wholesale market data, agricultural commodity prices.\ntags:\n  - fruit-price\n  - 水果价格\n  - 农产品行情\n  - 批发价\n  - 榴莲价格\n  - 全球果价\n  - 每日报价\n  - Data & APIs\ntriggers:\n  - fruit pi\n  - Fruit Pi\n  - 水果派\n  - 水果价格\n  - 全球水果价格\n  - 果价\n  - 水果池\n  - 看看水果池\n---\n\n# 🥧 Fruit Pi · 水果派\n\n全球水果价格收集助手。管理您的水果池，定时收集价格，按 RMB/公斤 展示。\n\n## 时区规则\n\n读取 `USER.md` 中的 `Timezone:` 字段。若无配置则用 `date +%Z` 回退。\n\n## 行为规则\n\n**触发即执行**：用户说出任意触发词，按不同规则执行：\n\n**区分两种触发模式：**\n- 🍎 **价格模式**：`水果派 / 水果价格 / 全球水果价格 / 果价 / fruit pi`\n  → 执行完整收集流程：读池→拉价格→搜补→展示\n- 📋 **列表模式**：`水果池 / 看看水果池`\n  → **只列出水果池中的水果，不搜索不收集**\n\n**主动感知与初始化**：首次触发或无水果池时，自动创建水果池文件并以默认水果启动跟踪。若水果池为空则主动提示添加水果。\n\n## 文件索引\n\n### 运行时（`workspace/memory/`）\n- `fruit-pool.json` - 水果池（用户区，不上传）\n\n### 脚本\n- `skills/fruit-pi/fruit-pi.py` - 核心收集器\n\n## 核心流程\n\n### 1. 水果池管理\n\n水果池文件：`workspace/memory/fruit-pool.json`\n\n**水果池结构：**\n```json\n{\n  \"fruits\": {\n    \"金枕头榴莲\": {\n      \"en_name\": \"Monthong Durian\",\n      \"sources\": [\n        {\"name\": \"惠农网\", \"url\": \"https://...\", \"currency\": \"CNY\"},\n        {\"name\": \"泰国市场\", \"url\": \"https://...\", \"currency\": \"THB\"}\n      ],\n      \"last_price\": {\"price_rmb\": 89.5, \"original_price\": 450, \"original_currency\": \"THB\"},\n      \"last_updated\": \"2026-05-11\"\n    }\n  },\n  \"seasonal_fruits\": [\n    {\"name\": \"荔枝\", \"season\": \"5-7月\", \"en_name\": \"Lychee\"},\n    {\"name\": \"樱桃\", \"season\": \"5-7月\", \"en_name\": \"Cherry\"}\n  ],\n  \"metadata\": {\n    \"version\": 1,\n    \"last_collected\": null\n  }\n}\n```\n\n**管理操作（通过自然语言）：**\n- 「把榴莲加入水果池」 → `--add \"榴莲\" --en \"Durian\"`\n- 「给榴莲加个新的价格来源」 → 询问URL后 `--add-source`\n- 「把荔枝移出水果池」 → `--remove \"荔枝\"`\n- 「看看水果池」 → `--list`\n\n### 2. 价格收集流程\n\n#### 2a. 脚本自动收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py\n```\n脚本依次尝试每个水果的配置来源URL：\n- 成功提取价格 → 输出结构化价格\n- 失败 → 输出 search_hints（建议在哪个平台搜索）\n\n#### 2b. 手动触发收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py --collect \"金枕头榴莲\"\n```\n\n#### 2c. 搜索补充（脚本无法获取时）\n\n当脚本返回 `status: \"no_price\"` 或脚本无法运行时，使用 web_search 手动搜索价格。\n\n**价格新鲜度规则（按顺序执行）：**\n1. **先尝试当前配置的平台** —— 用脚本或用 fetch 从当前 sources 拉取价格\n2. **检查拉取结果的新鲜度**：\n   - 若成功获取 **48小时以内**的价格 → 直接使用，更新 `last_price` + `last_updated`\n   - 若获取失败，或获取到的价格标记已 **超过48小时** → 按后面流程搜索新平台\n3. **搜索新平台**：用 search_hints 或搜索策略搜索 → 成功则更新水果池（含 sources），失败则保持当前状态，不强行填数\n\n**搜索策略（按优先级）：**\n1. 国内水果：`<水果名> 批发价 今日 <年>`\n2. 泰国水果：`<fruit_en> wholesale price Thailand <month> <year>`\n3. 进口水果：`<fruit_en> import price China <month> <year>`\n4. 东南亚水果：`<fruit_en> price <country> market <month> <year>`\n\n**推荐平台（按地区）：**\n\n| 地区 | 平台 |\n|------|------|\n| 中国 | 惠农网(www.cnhnb.com), 一亩田(www.ymt.com), 广州江南市场, 北京新发地 |\n| 泰国 | Talad Thai, 泰国农业部, Tridge |\n| 越南 | 越南海关, 边贸市场 |\n| 全球 | FAO, Trading Economics, Selina Wamucii |\n\n#### 2d. 价格提取与归化\n\n从搜索结果提取价格后，统一处理：\n1. **单位归化**：斤→×2=kg, 磅(lb)→×2.2046=kg\n2. **货币转换**：外币→RMB（使用脚本汇率工具或按市场汇率，在回复中注明汇率来源）\n3. **保留原始价**：同时显示外币原价 + 换算后 RMB/公斤\n\n### 3. 输出格式\n\n```\n🥧 Fruit Pi · 水果派 · <日期>\n\n━━━ 🍎 水果池 ━━━\n\n<报价来源1>  ← 来源平台\n  🥇 金枕头榴莲 · ¥89.5/kg\n     泰国 ฿450/kg（≈¥89.5，汇率฿1=¥0.20）\n  🥇 山竹 · ¥45.2/kg\n     ...\n\n<报价来源2>  ← 其他来源\n  🥇 阿克苏苹果 · ¥12.8/kg\n     ...\n\n━━━ 🌟 当季推荐 ━━━\n\n🔥 荔枝（5-7月） | 樱桃（5-7月） | 杨梅（5-6月）\n不在水果池中，可回复\"加入荔枝\"开始跟踪\n\n━━━ 📖 什么是水果池？━━━\n\n水果池是你关注的水果清单。把想跟踪价格的水果加入池中，\n我会每天收集最新价格。\n\n用法：\n  \"把榴莲加入水果池\" → 开始跟踪\n  \"看看水果池\" → 查看当前池中水果\n  \"刷新水果池\" → 手动更新一次价格\n\n💬 回复\"水果派\"查看最新价格\n```\n\n### 4. 消息格式要求\n\n- 使用 `━━━` 分隔段落\n- 报价来源用小标题 `← 来源平台`\n- 每个水果一行：`🥇 名称 · RMB价格/kg` + 外币原价\n- 价格来源标注清晰\n- 末尾附水果池用法提示\n\n### 5. 用户交互\n\n| 用户说 | 动作 |\n|--------|------|\n| 「水果派/水果价格/果价」 | 完整收集：拉价格+搜索补采+展示 |\n| 「水果池/看看水果池」 | **只列出水果清单，不收集价格** |\n| 「加入<水果名>」 | `--add \"<fruit>\"` |\n| 「移除<水果名>」 | `--remove \"<fruit>\"` |\n| 「看看水果池」 | `--list` |\n| 「刷新水果池」 | 执行完整收集流程 |\n| 「刷新<水果名>」 | `--collect \"<fruit>\"` |\n| 「<水果名>什么价」 | 尝试收集该水果价格 |\n| 「推荐水果」 | 当季推荐 |\n\n### 6. 工作流程（用户触发时）\n\n**第一步：检查水果池**\n```bash\npython3 skills/fruit-pi/fruit-pi.py --status\n```\n- 无 `fruit-pool.json` → 自动创建\n- 池为空 → 提示添加水果\n\n**第二步：价格采集**\n```bash\npython3 skills/fruit-pi/fruit-pi.py\n```\n收集结果分三类：\n- ✅ 有价格 → 直接使用\n- ❌ 无价格但有 search_hints → web_search 补采\n- ❌ 无价格无 hint → 按「搜索策略」手动搜索\n\n**第三步：搜索补采（针对获取不到或过期的数据）**\n对脚本获取失败、或获取到的价格已超48小时的水果，执行 web_search：\n1. 用 search_hints 或搜索策略生成查询\n2. 从搜索结果提取价格\n3. 单位归化 + 货币换算\n4. 成功 → 更新水果池的 last_price / sources\n5. 失败 → 保持当前状态，不强行填数\n\n**第四步：格式化输出**\n按「输出格式」组织所有水果价格。\n\n### 7. 异常处理\n\n- URL失效爬不下 → 搜索新来源，提示用户添加\n- 汇率API超时 → 使用脚本内建默认汇率，标注为估算\n- 所有来源都无法获取 → 显示「暂无数据」，给出搜索建议\n\n### 8. 输出约束\n\n- **严禁输出思考过程、中间步骤、调试信息**\n- 不要输出脚本运行的JSON原始数据\n- 只推送最终整理后的内容\n- 价格统一用 ¥/kg 格式\n- 外币始终保留原价标注\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn74nyzntdcr43y9jyj89wb2qx85c8pf\",\n  \"slug\": \"fruit-pi\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1779951178856\n}\n\nFile v1.0.6:skill-card.md\n\n## Description: <br>\nFruit Pi helps users maintain a fruit pool and collect global wholesale fruit prices with RMB/kg normalization and original-currency notes. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[kobenfang](https://clawhub.ai/user/kobenfang) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and agents use this skill to track selected fruit prices, refresh configured market sources, supplement missing data with web search, and present current prices in RMB per kilogram. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Price refreshes may contact configured market sites, web search, and an exchange-rate service. <br>\nMitigation: Run the skill only where those outbound lookups are acceptable, and review configured price-source URLs before refreshing prices. <br>\nRisk: The skill maintains a local fruit-pool JSON file in the OpenClaw workspace. <br>\nMitigation: Review the local fruit-pool data before sharing the workspace, and avoid storing sensitive personal information in fruit names or source notes. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/kobenfang/fruit-pi) <br>\n- [Publisher profile](https://clawhub.ai/user/kobenfang) <br>\n- [Frankfurter exchange-rate API](https://api.frankfurter.app/latest?from=USD) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance] <br>\n**Output Format:** [Markdown-style fruit price report with inline shell commands and JSON-backed local state] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Reports prices in RMB/kg, preserves original-currency prices, and suppresses raw script JSON in user-facing responses.] <br>\n\n## Skill Version(s): <br>\n1.0.6 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.5: 3 files, 10500 bytes\n\nFiles: _meta.json (127b), fruit-pi.py (22572b), SKILL.md (7687b)\n\nFile v1.0.5:SKILL.md\n\n---\nname: fruit-pi\ndescription: 全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。Fruit price tracker for global fruits, wholesale market data, agricultural commodity prices.\ntags:\n  - fruit-price\n  - 水果价格\n  - 农产品行情\n  - 批发价\n  - 榴莲价格\n  - 全球果价\n  - 每日报价\n  - Data & APIs\ntriggers:\n  - fruit pi\n  - Fruit Pi\n  - 水果派\n  - 水果价格\n  - 全球水果价格\n  - 果价\n  - 水果池\n  - 看看水果池\n---\n\n# 🥧 Fruit Pi · 水果派\n\n全球水果价格收集助手。管理您的水果池，定时收集价格，按 RMB/公斤 展示。\n\n## 时区规则\n\n读取 `USER.md` 中的 `Timezone:` 字段。若无配置则用 `date +%Z` 回退。\n\n## 行为规则\n\n**触发即执行**：用户说出任意触发词，按不同规则执行：\n\n**区分两种触发模式：**\n- 🍎 **价格模式**：`水果派 / 水果价格 / 全球水果价格 / 果价 / fruit pi`\n  → 执行完整收集流程：读池→拉价格→搜补→展示\n- 📋 **列表模式**：`水果池 / 看看水果池`\n  → **只列出水果池中的水果，不搜索不收集**\n\n**主动感知与初始化**：首次触发或无水果池时，自动创建水果池文件并以默认水果启动跟踪。若水果池为空则主动提示添加水果。\n\n## 文件索引\n\n### 运行时（`workspace/memory/`）\n- `fruit-pool.json` - 水果池（用户区，不上传）\n\n### 脚本\n- `skills/fruit-pi/fruit-pi.py` - 核心收集器\n\n## 核心流程\n\n### 1. 水果池管理\n\n水果池文件：`workspace/memory/fruit-pool.json`\n\n**水果池结构：**\n```json\n{\n  \"fruits\": {\n    \"金枕头榴莲\": {\n      \"en_name\": \"Monthong Durian\",\n      \"sources\": [\n        {\"name\": \"惠农网\", \"url\": \"https://...\", \"currency\": \"CNY\"},\n        {\"name\": \"泰国市场\", \"url\": \"https://...\", \"currency\": \"THB\"}\n      ],\n      \"last_price\": {\"price_rmb\": 89.5, \"original_price\": 450, \"original_currency\": \"THB\"},\n      \"last_updated\": \"2026-05-11\"\n    }\n  },\n  \"seasonal_fruits\": [\n    {\"name\": \"荔枝\", \"season\": \"5-7月\", \"en_name\": \"Lychee\"},\n    {\"name\": \"樱桃\", \"season\": \"5-7月\", \"en_name\": \"Cherry\"}\n  ],\n  \"metadata\": {\n    \"version\": 1,\n    \"last_collected\": null\n  }\n}\n```\n\n**管理操作（通过自然语言）：**\n- 「把榴莲加入水果池」 → `--add \"榴莲\" --en \"Durian\"`\n- 「给榴莲加个新的价格来源」 → 询问URL后 `--add-source`\n- 「把荔枝移出水果池」 → `--remove \"荔枝\"`\n- 「看看水果池」 → `--list`\n\n### 2. 价格收集流程\n\n#### 2a. 脚本自动收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py\n```\n脚本依次尝试每个水果的配置来源URL：\n- 成功提取价格 → 输出结构化价格\n- 失败 → 输出 search_hints（建议在哪个平台搜索）\n\n#### 2b. 手动触发收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py --collect \"金枕头榴莲\"\n```\n\n#### 2c. 搜索补充（脚本无法获取时）\n\n当脚本返回 `status: \"no_price\"` 或脚本无法运行时，使用 web_search 手动搜索价格。\n\n**价格新鲜度规则（按顺序执行）：**\n1. **先尝试当前配置的平台** —— 用脚本或用 fetch 从当前 sources 拉取价格\n2. **检查拉取结果的新鲜度**：\n   - 若成功获取 **48小时以内**的价格 → 直接使用，更新 `last_price` + `last_updated`\n   - 若获取失败，或获取到的价格标记已 **超过48小时** → 按后面流程搜索新平台\n3. **搜索新平台**：用 search_hints 或搜索策略搜索 → 成功则更新水果池（含 sources），失败则保持当前状态，不强行填数\n\n**搜索策略（按优先级）：**\n1. 国内水果：`<水果名> 批发价 今日 <年>`\n2. 泰国水果：`<fruit_en> wholesale price Thailand <month> <year>`\n3. 进口水果：`<fruit_en> import price China <month> <year>`\n4. 东南亚水果：`<fruit_en> price <country> market <month> <year>`\n\n**推荐平台（按地区）：**\n\n| 地区 | 平台 |\n|------|------|\n| 中国 | 惠农网(www.cnhnb.com), 一亩田(www.ymt.com), 广州江南市场, 北京新发地 |\n| 泰国 | Talad Thai, 泰国农业部, Tridge |\n| 越南 | 越南海关, 边贸市场 |\n| 全球 | FAO, Trading Economics, Selina Wamucii |\n\n#### 2d. 价格提取与归化\n\n从搜索结果提取价格后，统一处理：\n1. **单位归化**：斤→×2=kg, 磅(lb)→×2.2046=kg\n2. **货币转换**：外币→RMB（使用脚本汇率工具或按市场汇率，在回复中注明汇率来源）\n3. **保留原始价**：同时显示外币原价 + 换算后 RMB/公斤\n\n### 3. 输出格式\n\n```\n🥧 Fruit Pi · 水果派 · <日期>\n\n━━━ 🍎 水果池 ━━━\n\n<报价来源1>  ← 来源平台\n  🥇 金枕头榴莲 · ¥89.5/kg\n     泰国 ฿450/kg（≈¥89.5，汇率฿1=¥0.20）\n  🥇 山竹 · ¥45.2/kg\n     ...\n\n<报价来源2>  ← 其他来源\n  🥇 阿克苏苹果 · ¥12.8/kg\n     ...\n\n━━━ 🌟 当季推荐 ━━━\n\n🔥 荔枝（5-7月） | 樱桃（5-7月） | 杨梅（5-6月）\n不在水果池中，可回复\"加入荔枝\"开始跟踪\n\n━━━ 📖 什么是水果池？━━━\n\n水果池是你关注的水果清单。把想跟踪价格的水果加入池中，\n我会每天收集最新价格。\n\n用法：\n  \"把榴莲加入水果池\" → 开始跟踪\n  \"看看水果池\" → 查看当前池中水果\n  \"刷新水果池\" → 手动更新一次价格\n\n💬 回复\"水果派\"查看最新价格\n```\n\n### 4. 消息格式要求\n\n- 使用 `━━━` 分隔段落\n- 报价来源用小标题 `← 来源平台`\n- 每个水果一行：`🥇 名称 · RMB价格/kg` + 外币原价\n- 价格来源标注清晰\n- 末尾附水果池用法提示\n\n### 5. 用户交互\n\n| 用户说 | 动作 |\n|--------|------|\n| 「水果派/水果价格/果价」 | 完整收集：拉价格+搜索补采+展示 |\n| 「水果池/看看水果池」 | **只列出水果清单，不收集价格** |\n| 「加入<水果名>」 | `--add \"<fruit>\"` |\n| 「移除<水果名>」 | `--remove \"<fruit>\"` |\n| 「看看水果池」 | `--list` |\n| 「刷新水果池」 | 执行完整收集流程 |\n| 「刷新<水果名>」 | `--collect \"<fruit>\"` |\n| 「<水果名>什么价」 | 尝试收集该水果价格 |\n| 「推荐水果」 | 当季推荐 |\n\n### 6. 工作流程（用户触发时）\n\n**第一步：检查水果池**\n```bash\npython3 skills/fruit-pi/fruit-pi.py --status\n```\n- 无 `fruit-pool.json` → 自动创建\n- 池为空 → 提示添加水果\n\n**第二步：价格采集**\n```bash\npython3 skills/fruit-pi/fruit-pi.py\n```\n收集结果分三类：\n- ✅ 有价格 → 直接使用\n- ❌ 无价格但有 search_hints → web_search 补采\n- ❌ 无价格无 hint → 按「搜索策略」手动搜索\n\n**第三步：搜索补采（针对获取不到或过期的数据）**\n对脚本获取失败、或获取到的价格已超48小时的水果，执行 web_search：\n1. 用 search_hints 或搜索策略生成查询\n2. 从搜索结果提取价格\n3. 单位归化 + 货币换算\n4. 成功 → 更新水果池的 last_price / sources\n5. 失败 → 保持当前状态，不强行填数\n\n**第四步：格式化输出**\n按「输出格式」组织所有水果价格。\n\n### 7. 异常处理\n\n- URL失效爬不下 → 搜索新来源，提示用户添加\n- 汇率API超时 → 使用脚本内建默认汇率，标注为估算\n- 所有来源都无法获取 → 显示「暂无数据」，给出搜索建议\n\n### 8. 输出约束\n\n- **严禁输出思考过程、中间步骤、调试信息**\n- 不要输出脚本运行的JSON原始数据\n- 只推送最终整理后的内容\n- 价格统一用 ¥/kg 格式\n- 外币始终保留原价标注\n\nFile v1.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn74nyzntdcr43y9jyj89wb2qx85c8pf\",\n  \"slug\": \"fruit-pi\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1779266995233\n}\n\nArchive v1.1.0: 4 files, 11715 bytes\n\nFiles: _meta.json (127b), fruit-pi.py (22572b), skill-card.md (2393b), SKILL.md (7687b)\n\nFile v1.1.0:SKILL.md\n\n---\nname: fruit-pi\ndescription: 全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。Fruit price tracker for global fruits, wholesale market data, agricultural commodity prices.\ntags:\n  - fruit-price\n  - 水果价格\n  - 农产品行情\n  - 批发价\n  - 榴莲价格\n  - 全球果价\n  - 每日报价\n  - Data & APIs\ntriggers:\n  - fruit pi\n  - Fruit Pi\n  - 水果派\n  - 水果价格\n  - 全球水果价格\n  - 果价\n  - 水果池\n  - 看看水果池\n---\n\n# 🥧 Fruit Pi · 水果派\n\n全球水果价格收集助手。管理您的水果池，定时收集价格，按 RMB/公斤 展示。\n\n## 时区规则\n\n读取 `USER.md` 中的 `Timezone:` 字段。若无配置则用 `date +%Z` 回退。\n\n## 行为规则\n\n**触发即执行**：用户说出任意触发词，按不同规则执行：\n\n**区分两种触发模式：**\n- 🍎 **价格模式**：`水果派 / 水果价格 / 全球水果价格 / 果价 / fruit pi`\n  → 执行完整收集流程：读池→拉价格→搜补→展示\n- 📋 **列表模式**：`水果池 / 看看水果池`\n  → **只列出水果池中的水果，不搜索不收集**\n\n**主动感知与初始化**：首次触发或无水果池时，自动创建水果池文件并以默认水果启动跟踪。若水果池为空则主动提示添加水果。\n\n## 文件索引\n\n### 运行时（`workspace/memory/`）\n- `fruit-pool.json` - 水果池（用户区，不上传）\n\n### 脚本\n- `skills/fruit-pi/fruit-pi.py` - 核心收集器\n\n## 核心流程\n\n### 1. 水果池管理\n\n水果池文件：`workspace/memory/fruit-pool.json`\n\n**水果池结构：**\n```json\n{\n  \"fruits\": {\n    \"金枕头榴莲\": {\n      \"en_name\": \"Monthong Durian\",\n      \"sources\": [\n        {\"name\": \"惠农网\", \"url\": \"https://...\", \"currency\": \"CNY\"},\n        {\"name\": \"泰国市场\", \"url\": \"https://...\", \"currency\": \"THB\"}\n      ],\n      \"last_price\": {\"price_rmb\": 89.5, \"original_price\": 450, \"original_currency\": \"THB\"},\n      \"last_updated\": \"2026-05-11\"\n    }\n  },\n  \"seasonal_fruits\": [\n    {\"name\": \"荔枝\", \"season\": \"5-7月\", \"en_name\": \"Lychee\"},\n    {\"name\": \"樱桃\", \"season\": \"5-7月\", \"en_name\": \"Cherry\"}\n  ],\n  \"metadata\": {\n    \"version\": 1,\n    \"last_collected\": null\n  }\n}\n```\n\n**管理操作（通过自然语言）：**\n- 「把榴莲加入水果池」 → `--add \"榴莲\" --en \"Durian\"`\n- 「给榴莲加个新的价格来源」 → 询问URL后 `--add-source`\n- 「把荔枝移出水果池」 → `--remove \"荔枝\"`\n- 「看看水果池」 → `--list`\n\n### 2. 价格收集流程\n\n#### 2a. 脚本自动收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py\n```\n脚本依次尝试每个水果的配置来源URL：\n- 成功提取价格 → 输出结构化价格\n- 失败 → 输出 search_hints（建议在哪个平台搜索）\n\n#### 2b. 手动触发收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py --collect \"金枕头榴莲\"\n```\n\n#### 2c. 搜索补充（脚本无法获取时）\n\n当脚本返回 `status: \"no_price\"` 或脚本无法运行时，使用 web_search 手动搜索价格。\n\n**价格新鲜度规则（按顺序执行）：**\n1. **先尝试当前配置的平台** —— 用脚本或用 fetch 从当前 sources 拉取价格\n2. **检查拉取结果的新鲜度**：\n   - 若成功获取 **48小时以内**的价格 → 直接使用，更新 `last_price` + `last_updated`\n   - 若获取失败，或获取到的价格标记已 **超过48小时** → 按后面流程搜索新平台\n3. **搜索新平台**：用 search_hints 或搜索策略搜索 → 成功则更新水果池（含 sources），失败则保持当前状态，不强行填数\n\n**搜索策略（按优先级）：**\n1. 国内水果：`<水果名> 批发价 今日 <年>`\n2. 泰国水果：`<fruit_en> wholesale price Thailand <month> <year>`\n3. 进口水果：`<fruit_en> import price China <month> <year>`\n4. 东南亚水果：`<fruit_en> price <country> market <month> <year>`\n\n**推荐平台（按地区）：**\n\n| 地区 | 平台 |\n|------|------|\n| 中国 | 惠农网(www.cnhnb.com), 一亩田(www.ymt.com), 广州江南市场, 北京新发地 |\n| 泰国 | Talad Thai, 泰国农业部, Tridge |\n| 越南 | 越南海关, 边贸市场 |\n| 全球 | FAO, Trading Economics, Selina Wamucii |\n\n#### 2d. 价格提取与归化\n\n从搜索结果提取价格后，统一处理：\n1. **单位归化**：斤→×2=kg, 磅(lb)→×2.2046=kg\n2. **货币转换**：外币→RMB（使用脚本汇率工具或按市场汇率，在回复中注明汇率来源）\n3. **保留原始价**：同时显示外币原价 + 换算后 RMB/公斤\n\n### 3. 输出格式\n\n```\n🥧 Fruit Pi · 水果派 · <日期>\n\n━━━ 🍎 水果池 ━━━\n\n<报价来源1>  ← 来源平台\n  🥇 金枕头榴莲 · ¥89.5/kg\n     泰国 ฿450/kg（≈¥89.5，汇率฿1=¥0.20）\n  🥇 山竹 · ¥45.2/kg\n     ...\n\n<报价来源2>  ← 其他来源\n  🥇 阿克苏苹果 · ¥12.8/kg\n     ...\n\n━━━ 🌟 当季推荐 ━━━\n\n🔥 荔枝（5-7月） | 樱桃（5-7月） | 杨梅（5-6月）\n不在水果池中，可回复\"加入荔枝\"开始跟踪\n\n━━━ 📖 什么是水果池？━━━\n\n水果池是你关注的水果清单。把想跟踪价格的水果加入池中，\n我会每天收集最新价格。\n\n用法：\n  \"把榴莲加入水果池\" → 开始跟踪\n  \"看看水果池\" → 查看当前池中水果\n  \"刷新水果池\" → 手动更新一次价格\n\n💬 回复\"水果派\"查看最新价格\n```\n\n### 4. 消息格式要求\n\n- 使用 `━━━` 分隔段落\n- 报价来源用小标题 `← 来源平台`\n- 每个水果一行：`🥇 名称 · RMB价格/kg` + 外币原价\n- 价格来源标注清晰\n- 末尾附水果池用法提示\n\n### 5. 用户交互\n\n| 用户说 | 动作 |\n|--------|------|\n| 「水果派/水果价格/果价」 | 完整收集：拉价格+搜索补采+展示 |\n| 「水果池/看看水果池」 | **只列出水果清单，不收集价格** |\n| 「加入<水果名>」 | `--add \"<fruit>\"` |\n| 「移除<水果名>」 | `--remove \"<fruit>\"` |\n| 「看看水果池」 | `--list` |\n| 「刷新水果池」 | 执行完整收集流程 |\n| 「刷新<水果名>」 | `--collect \"<fruit>\"` |\n| 「<水果名>什么价」 | 尝试收集该水果价格 |\n| 「推荐水果」 | 当季推荐 |\n\n### 6. 工作流程（用户触发时）\n\n**第一步：检查水果池**\n```bash\npython3 skills/fruit-pi/fruit-pi.py --status\n```\n- 无 `fruit-pool.json` → 自动创建\n- 池为空 → 提示添加水果\n\n**第二步：价格采集**\n```bash\npython3 skills/fruit-pi/fruit-pi.py\n```\n收集结果分三类：\n- ✅ 有价格 → 直接使用\n- ❌ 无价格但有 search_hints → web_search 补采\n- ❌ 无价格无 hint → 按「搜索策略」手动搜索\n\n**第三步：搜索补采（针对获取不到或过期的数据）**\n对脚本获取失败、或获取到的价格已超48小时的水果，执行 web_search：\n1. 用 search_hints 或搜索策略生成查询\n2. 从搜索结果提取价格\n3. 单位归化 + 货币换算\n4. 成功 → 更新水果池的 last_price / sources\n5. 失败 → 保持当前状态，不强行填数\n\n**第四步：格式化输出**\n按「输出格式」组织所有水果价格。\n\n### 7. 异常处理\n\n- URL失效爬不下 → 搜索新来源，提示用户添加\n- 汇率API超时 → 使用脚本内建默认汇率，标注为估算\n- 所有来源都无法获取 → 显示「暂无数据」，给出搜索建议\n\n### 8. 输出约束\n\n- **严禁输出思考过程、中间步骤、调试信息**\n- 不要输出脚本运行的JSON原始数据\n- 只推送最终整理后的内容\n- 价格统一用 ¥/kg 格式\n- 外币始终保留原价标注\n\nFile v1.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn74nyzntdcr43y9jyj89wb2qx85c8pf\",\n  \"slug\": \"fruit-pi\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1779025717476\n}\n\nFile v1.1.0:skill-card.md\n\n## Description: <br>\nFruit Pi tracks global fruit prices by maintaining a fruit pool, collecting wholesale market prices, and presenting RMB/kg conversions with original-currency prices. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[kobenfang](https://clawhub.ai/user/kobenfang) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nAgents use Fruit Pi for users who track fruit wholesale prices, maintain a personal fruit watchlist, refresh source data, and format current prices in RMB/kg with original-currency context. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill creates and updates a local fruit-pool file that stores tracked fruits and price source URLs. <br>\nMitigation: Review the local fruit pool before sharing a workspace and remove sources or tracked items that should not be retained. <br>\nRisk: Configured price sources and the exchange-rate API require outbound network requests, including user-added URLs. <br>\nMitigation: Review price source URLs before adding them and avoid localhost, private-network, or untrusted URLs. <br>\nRisk: Fetched prices and currency conversion can be stale or estimated when pages fail or the exchange-rate API is unavailable. <br>\nMitigation: Prefer fresh source data, keep original currency values visible, and label fallback exchange rates as estimates. <br>\n\n\n## Reference(s): <br>\n- [ClawHub listing: Fruit Pi](https://clawhub.ai/kobenfang/fruit-pi) <br>\n- [Publisher profile: kobenfang](https://clawhub.ai/user/kobenfang) <br>\n- [Frankfurter exchange-rate API](https://api.frankfurter.app/latest?from=USD) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration] <br>\n**Output Format:** [Markdown price summaries plus JSON from the helper script] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Maintains a local fruit-pool JSON file and may fetch configured price pages or exchange-rate data.] <br>\n\n## Skill Version(s): <br>\n1.1.0 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.3: 3 files, 10499 bytes\n\nFiles: _meta.json (127b), fruit-pi.py (22572b), SKILL.md (7687b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: fruit-pi\ndescription: 全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。Fruit price tracker for global fruits, wholesale market data, agricultural commodity prices.\ntags:\n  - fruit-price\n  - 水果价格\n  - 农产品行情\n  - 批发价\n  - 榴莲价格\n  - 全球果价\n  - 每日报价\n  - Data & APIs\ntriggers:\n  - fruit pi\n  - Fruit Pi\n  - 水果派\n  - 水果价格\n  - 全球水果价格\n  - 果价\n  - 水果池\n  - 看看水果池\n---\n\n# 🥧 Fruit Pi · 水果派\n\n全球水果价格收集助手。管理您的水果池，定时收集价格，按 RMB/公斤 展示。\n\n## 时区规则\n\n读取 `USER.md` 中的 `Timezone:` 字段。若无配置则用 `date +%Z` 回退。\n\n## 行为规则\n\n**触发即执行**：用户说出任意触发词，按不同规则执行：\n\n**区分两种触发模式：**\n- 🍎 **价格模式**：`水果派 / 水果价格 / 全球水果价格 / 果价 / fruit pi`\n  → 执行完整收集流程：读池→拉价格→搜补→展示\n- 📋 **列表模式**：`水果池 / 看看水果池`\n  → **只列出水果池中的水果，不搜索不收集**\n\n**主动感知与初始化**：首次触发或无水果池时，自动创建水果池文件并以默认水果启动跟踪。若水果池为空则主动提示添加水果。\n\n## 文件索引\n\n### 运行时（`workspace/memory/`）\n- `fruit-pool.json` - 水果池（用户区，不上传）\n\n### 脚本\n- `skills/fruit-pi/fruit-pi.py` - 核心收集器\n\n## 核心流程\n\n### 1. 水果池管理\n\n水果池文件：`workspace/memory/fruit-pool.json`\n\n**水果池结构：**\n```json\n{\n  \"fruits\": {\n    \"金枕头榴莲\": {\n      \"en_name\": \"Monthong Durian\",\n      \"sources\": [\n        {\"name\": \"惠农网\", \"url\": \"https://...\", \"currency\": \"CNY\"},\n        {\"name\": \"泰国市场\", \"url\": \"https://...\", \"currency\": \"THB\"}\n      ],\n      \"last_price\": {\"price_rmb\": 89.5, \"original_price\": 450, \"original_currency\": \"THB\"},\n      \"last_updated\": \"2026-05-11\"\n    }\n  },\n  \"seasonal_fruits\": [\n    {\"name\": \"荔枝\", \"season\": \"5-7月\", \"en_name\": \"Lychee\"},\n    {\"name\": \"樱桃\", \"season\": \"5-7月\", \"en_name\": \"Cherry\"}\n  ],\n  \"metadata\": {\n    \"version\": 1,\n    \"last_collected\": null\n  }\n}\n```\n\n**管理操作（通过自然语言）：**\n- 「把榴莲加入水果池」 → `--add \"榴莲\" --en \"Durian\"`\n- 「给榴莲加个新的价格来源」 → 询问URL后 `--add-source`\n- 「把荔枝移出水果池」 → `--remove \"荔枝\"`\n- 「看看水果池」 → `--list`\n\n### 2. 价格收集流程\n\n#### 2a. 脚本自动收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py\n```\n脚本依次尝试每个水果的配置来源URL：\n- 成功提取价格 → 输出结构化价格\n- 失败 → 输出 search_hints（建议在哪个平台搜索）\n\n#### 2b. 手动触发收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py --collect \"金枕头榴莲\"\n```\n\n#### 2c. 搜索补充（脚本无法获取时）\n\n当脚本返回 `status: \"no_price\"` 或脚本无法运行时，使用 web_search 手动搜索价格。\n\n**价格新鲜度规则（按顺序执行）：**\n1. **先尝试当前配置的平台** —— 用脚本或用 fetch 从当前 sources 拉取价格\n2. **检查拉取结果的新鲜度**：\n   - 若成功获取 **48小时以内**的价格 → 直接使用，更新 `last_price` + `last_updated`\n   - 若获取失败，或获取到的价格标记已 **超过48小时** → 按后面流程搜索新平台\n3. **搜索新平台**：用 search_hints 或搜索策略搜索 → 成功则更新水果池（含 sources），失败则保持当前状态，不强行填数\n\n**搜索策略（按优先级）：**\n1. 国内水果：`<水果名> 批发价 今日 <年>`\n2. 泰国水果：`<fruit_en> wholesale price Thailand <month> <year>`\n3. 进口水果：`<fruit_en> import price China <month> <year>`\n4. 东南亚水果：`<fruit_en> price <country> market <month> <year>`\n\n**推荐平台（按地区）：**\n\n| 地区 | 平台 |\n|------|------|\n| 中国 | 惠农网(www.cnhnb.com), 一亩田(www.ymt.com), 广州江南市场, 北京新发地 |\n| 泰国 | Talad Thai, 泰国农业部, Tridge |\n| 越南 | 越南海关, 边贸市场 |\n| 全球 | FAO, Trading Economics, Selina Wamucii |\n\n#### 2d. 价格提取与归化\n\n从搜索结果提取价格后，统一处理：\n1. **单位归化**：斤→×2=kg, 磅(lb)→×2.2046=kg\n2. **货币转换**：外币→RMB（使用脚本汇率工具或按市场汇率，在回复中注明汇率来源）\n3. **保留原始价**：同时显示外币原价 + 换算后 RMB/公斤\n\n### 3. 输出格式\n\n```\n🥧 Fruit Pi · 水果派 · <日期>\n\n━━━ 🍎 水果池 ━━━\n\n<报价来源1>  ← 来源平台\n  🥇 金枕头榴莲 · ¥89.5/kg\n     泰国 ฿450/kg（≈¥89.5，汇率฿1=¥0.20）\n  🥇 山竹 · ¥45.2/kg\n     ...\n\n<报价来源2>  ← 其他来源\n  🥇 阿克苏苹果 · ¥12.8/kg\n     ...\n\n━━━ 🌟 当季推荐 ━━━\n\n🔥 荔枝（5-7月） | 樱桃（5-7月） | 杨梅（5-6月）\n不在水果池中，可回复\"加入荔枝\"开始跟踪\n\n━━━ 📖 什么是水果池？━━━\n\n水果池是你关注的水果清单。把想跟踪价格的水果加入池中，\n我会每天收集最新价格。\n\n用法：\n  \"把榴莲加入水果池\" → 开始跟踪\n  \"看看水果池\" → 查看当前池中水果\n  \"刷新水果池\" → 手动更新一次价格\n\n💬 回复\"水果派\"查看最新价格\n```\n\n### 4. 消息格式要求\n\n- 使用 `━━━` 分隔段落\n- 报价来源用小标题 `← 来源平台`\n- 每个水果一行：`🥇 名称 · RMB价格/kg` + 外币原价\n- 价格来源标注清晰\n- 末尾附水果池用法提示\n\n### 5. 用户交互\n\n| 用户说 | 动作 |\n|--------|------|\n| 「水果派/水果价格/果价」 | 完整收集：拉价格+搜索补采+展示 |\n| 「水果池/看看水果池」 | **只列出水果清单，不收集价格** |\n| 「加入<水果名>」 | `--add \"<fruit>\"` |\n| 「移除<水果名>」 | `--remove \"<fruit>\"` |\n| 「看看水果池」 | `--list` |\n| 「刷新水果池」 | 执行完整收集流程 |\n| 「刷新<水果名>」 | `--collect \"<fruit>\"` |\n| 「<水果名>什么价」 | 尝试收集该水果价格 |\n| 「推荐水果」 | 当季推荐 |\n\n### 6. 工作流程（用户触发时）\n\n**第一步：检查水果池**\n```bash\npython3 skills/fruit-pi/fruit-pi.py --status\n```\n- 无 `fruit-pool.json` → 自动创建\n- 池为空 → 提示添加水果\n\n**第二步：价格采集**\n```bash\npython3 skills/fruit-pi/fruit-pi.py\n```\n收集结果分三类：\n- ✅ 有价格 → 直接使用\n- ❌ 无价格但有 search_hints → web_search 补采\n- ❌ 无价格无 hint → 按「搜索策略」手动搜索\n\n**第三步：搜索补采（针对获取不到或过期的数据）**\n对脚本获取失败、或获取到的价格已超48小时的水果，执行 web_search：\n1. 用 search_hints 或搜索策略生成查询\n2. 从搜索结果提取价格\n3. 单位归化 + 货币换算\n4. 成功 → 更新水果池的 last_price / sources\n5. 失败 → 保持当前状态，不强行填数\n\n**第四步：格式化输出**\n按「输出格式」组织所有水果价格。\n\n### 7. 异常处理\n\n- URL失效爬不下 → 搜索新来源，提示用户添加\n- 汇率API超时 → 使用脚本内建默认汇率，标注为估算\n- 所有来源都无法获取 → 显示「暂无数据」，给出搜索建议\n\n### 8. 输出约束\n\n- **严禁输出思考过程、中间步骤、调试信息**\n- 不要输出脚本运行的JSON原始数据\n- 只推送最终整理后的内容\n- 价格统一用 ¥/kg 格式\n- 外币始终保留原价标注\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn74nyzntdcr43y9jyj89wb2qx85c8pf\",\n  \"slug\": \"fruit-pi\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1778765577569\n}\n\nArchive v1.0.2: 3 files, 10500 bytes\n\nFiles: _meta.json (127b), fruit-pi.py (22572b), SKILL.md (7687b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: fruit-pi\ndescription: 全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。Fruit price tracker for global fruits, wholesale market data, agricultural commodity prices.\ntags:\n  - fruit-price\n  - 水果价格\n  - 农产品行情\n  - 批发价\n  - 榴莲价格\n  - 全球果价\n  - 每日报价\n  - Data & APIs\ntriggers:\n  - fruit pi\n  - Fruit Pi\n  - 水果派\n  - 水果价格\n  - 全球水果价格\n  - 果价\n  - 水果池\n  - 看看水果池\n---\n\n# 🥧 Fruit Pi · 水果派\n\n全球水果价格收集助手。管理您的水果池，定时收集价格，按 RMB/公斤 展示。\n\n## 时区规则\n\n读取 `USER.md` 中的 `Timezone:` 字段。若无配置则用 `date +%Z` 回退。\n\n## 行为规则\n\n**触发即执行**：用户说出任意触发词，按不同规则执行：\n\n**区分两种触发模式：**\n- 🍎 **价格模式**：`水果派 / 水果价格 / 全球水果价格 / 果价 / fruit pi`\n  → 执行完整收集流程：读池→拉价格→搜补→展示\n- 📋 **列表模式**：`水果池 / 看看水果池`\n  → **只列出水果池中的水果，不搜索不收集**\n\n**主动感知与初始化**：首次触发或无水果池时，自动创建水果池文件并以默认水果启动跟踪。若水果池为空则主动提示添加水果。\n\n## 文件索引\n\n### 运行时（`workspace/memory/`）\n- `fruit-pool.json` - 水果池（用户区，不上传）\n\n### 脚本\n- `skills/fruit-pi/fruit-pi.py` - 核心收集器\n\n## 核心流程\n\n### 1. 水果池管理\n\n水果池文件：`workspace/memory/fruit-pool.json`\n\n**水果池结构：**\n```json\n{\n  \"fruits\": {\n    \"金枕头榴莲\": {\n      \"en_name\": \"Monthong Durian\",\n      \"sources\": [\n        {\"name\": \"惠农网\", \"url\": \"https://...\", \"currency\": \"CNY\"},\n        {\"name\": \"泰国市场\", \"url\": \"https://...\", \"currency\": \"THB\"}\n      ],\n      \"last_price\": {\"price_rmb\": 89.5, \"original_price\": 450, \"original_currency\": \"THB\"},\n      \"last_updated\": \"2026-05-11\"\n    }\n  },\n  \"seasonal_fruits\": [\n    {\"name\": \"荔枝\", \"season\": \"5-7月\", \"en_name\": \"Lychee\"},\n    {\"name\": \"樱桃\", \"season\": \"5-7月\", \"en_name\": \"Cherry\"}\n  ],\n  \"metadata\": {\n    \"version\": 1,\n    \"last_collected\": null\n  }\n}\n```\n\n**管理操作（通过自然语言）：**\n- 「把榴莲加入水果池」 → `--add \"榴莲\" --en \"Durian\"`\n- 「给榴莲加个新的价格来源」 → 询问URL后 `--add-source`\n- 「把荔枝移出水果池」 → `--remove \"荔枝\"`\n- 「看看水果池」 → `--list`\n\n### 2. 价格收集流程\n\n#### 2a. 脚本自动收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py\n```\n脚本依次尝试每个水果的配置来源URL：\n- 成功提取价格 → 输出结构化价格\n- 失败 → 输出 search_hints（建议在哪个平台搜索）\n\n#### 2b. 手动触发收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py --collect \"金枕头榴莲\"\n```\n\n#### 2c. 搜索补充（脚本无法获取时）\n\n当脚本返回 `status: \"no_price\"` 或脚本无法运行时，使用 web_search 手动搜索价格。\n\n**价格新鲜度规则（按顺序执行）：**\n1. **先尝试当前配置的平台** —— 用脚本或用 fetch 从当前 sources 拉取价格\n2. **检查拉取结果的新鲜度**：\n   - 若成功获取 **48小时以内**的价格 → 直接使用，更新 `last_price` + `last_updated`\n   - 若获取失败，或获取到的价格标记已 **超过48小时** → 按后面流程搜索新平台\n3. **搜索新平台**：用 search_hints 或搜索策略搜索 → 成功则更新水果池（含 sources），失败则保持当前状态，不强行填数\n\n**搜索策略（按优先级）：**\n1. 国内水果：`<水果名> 批发价 今日 <年>`\n2. 泰国水果：`<fruit_en> wholesale price Thailand <month> <year>`\n3. 进口水果：`<fruit_en> import price China <month> <year>`\n4. 东南亚水果：`<fruit_en> price <country> market <month> <year>`\n\n**推荐平台（按地区）：**\n\n| 地区 | 平台 |\n|------|------|\n| 中国 | 惠农网(www.cnhnb.com), 一亩田(www.ymt.com), 广州江南市场, 北京新发地 |\n| 泰国 | Talad Thai, 泰国农业部, Tridge |\n| 越南 | 越南海关, 边贸市场 |\n| 全球 | FAO, Trading Economics, Selina Wamucii |\n\n#### 2d. 价格提取与归化\n\n从搜索结果提取价格后，统一处理：\n1. **单位归化**：斤→×2=kg, 磅(lb)→×2.2046=kg\n2. **货币转换**：外币→RMB（使用脚本汇率工具或按市场汇率，在回复中注明汇率来源）\n3. **保留原始价**：同时显示外币原价 + 换算后 RMB/公斤\n\n### 3. 输出格式\n\n```\n🥧 Fruit Pi · 水果派 · <日期>\n\n━━━ 🍎 水果池 ━━━\n\n<报价来源1>  ← 来源平台\n  🥇 金枕头榴莲 · ¥89.5/kg\n     泰国 ฿450/kg（≈¥89.5，汇率฿1=¥0.20）\n  🥇 山竹 · ¥45.2/kg\n     ...\n\n<报价来源2>  ← 其他来源\n  🥇 阿克苏苹果 · ¥12.8/kg\n     ...\n\n━━━ 🌟 当季推荐 ━━━\n\n🔥 荔枝（5-7月） | 樱桃（5-7月） | 杨梅（5-6月）\n不在水果池中，可回复\"加入荔枝\"开始跟踪\n\n━━━ 📖 什么是水果池？━━━\n\n水果池是你关注的水果清单。把想跟踪价格的水果加入池中，\n我会每天收集最新价格。\n\n用法：\n  \"把榴莲加入水果池\" → 开始跟踪\n  \"看看水果池\" → 查看当前池中水果\n  \"刷新水果池\" → 手动更新一次价格\n\n💬 回复\"水果派\"查看最新价格\n```\n\n### 4. 消息格式要求\n\n- 使用 `━━━` 分隔段落\n- 报价来源用小标题 `← 来源平台`\n- 每个水果一行：`🥇 名称 · RMB价格/kg` + 外币原价\n- 价格来源标注清晰\n- 末尾附水果池用法提示\n\n### 5. 用户交互\n\n| 用户说 | 动作 |\n|--------|------|\n| 「水果派/水果价格/果价」 | 完整收集：拉价格+搜索补采+展示 |\n| 「水果池/看看水果池」 | **只列出水果清单，不收集价格** |\n| 「加入<水果名>」 | `--add \"<fruit>\"` |\n| 「移除<水果名>」 | `--remove \"<fruit>\"` |\n| 「看看水果池」 | `--list` |\n| 「刷新水果池」 | 执行完整收集流程 |\n| 「刷新<水果名>」 | `--collect \"<fruit>\"` |\n| 「<水果名>什么价」 | 尝试收集该水果价格 |\n| 「推荐水果」 | 当季推荐 |\n\n### 6. 工作流程（用户触发时）\n\n**第一步：检查水果池**\n```bash\npython3 skills/fruit-pi/fruit-pi.py --status\n```\n- 无 `fruit-pool.json` → 自动创建\n- 池为空 → 提示添加水果\n\n**第二步：价格采集**\n```bash\npython3 skills/fruit-pi/fruit-pi.py\n```\n收集结果分三类：\n- ✅ 有价格 → 直接使用\n- ❌ 无价格但有 search_hints → web_search 补采\n- ❌ 无价格无 hint → 按「搜索策略」手动搜索\n\n**第三步：搜索补采（针对获取不到或过期的数据）**\n对脚本获取失败、或获取到的价格已超48小时的水果，执行 web_search：\n1. 用 search_hints 或搜索策略生成查询\n2. 从搜索结果提取价格\n3. 单位归化 + 货币换算\n4. 成功 → 更新水果池的 last_price / sources\n5. 失败 → 保持当前状态，不强行填数\n\n**第四步：格式化输出**\n按「输出格式」组织所有水果价格。\n\n### 7. 异常处理\n\n- URL失效爬不下 → 搜索新来源，提示用户添加\n- 汇率API超时 → 使用脚本内建默认汇率，标注为估算\n- 所有来源都无法获取 → 显示「暂无数据」，给出搜索建议\n\n### 8. 输出约束\n\n- **严禁输出思考过程、中间步骤、调试信息**\n- 不要输出脚本运行的JSON原始数据\n- 只推送最终整理后的内容\n- 价格统一用 ¥/kg 格式\n- 外币始终保留原价标注\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn74nyzntdcr43y9jyj89wb2qx85c8pf\",\n  \"slug\": \"fruit-pi\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1778758037591\n}\n\nArchive v1.0.1: 3 files, 10499 bytes\n\nFiles: _meta.json (127b), fruit-pi.py (22572b), SKILL.md (7687b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: fruit-pi\ndescription: 全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。Fruit price tracker for global fruits, wholesale market data, agricultural commodity prices.\ntags:\n  - fruit-price\n  - 水果价格\n  - 农产品行情\n  - 批发价\n  - 榴莲价格\n  - 全球果价\n  - 每日报价\n  - Data & APIs\ntriggers:\n  - fruit pi\n  - Fruit Pi\n  - 水果派\n  - 水果价格\n  - 全球水果价格\n  - 果价\n  - 水果池\n  - 看看水果池\n---\n\n# 🥧 Fruit Pi · 水果派\n\n全球水果价格收集助手。管理您的水果池，定时收集价格，按 RMB/公斤 展示。\n\n## 时区规则\n\n读取 `USER.md` 中的 `Timezone:` 字段。若无配置则用 `date +%Z` 回退。\n\n## 行为规则\n\n**触发即执行**：用户说出任意触发词，按不同规则执行：\n\n**区分两种触发模式：**\n- 🍎 **价格模式**：`水果派 / 水果价格 / 全球水果价格 / 果价 / fruit pi`\n  → 执行完整收集流程：读池→拉价格→搜补→展示\n- 📋 **列表模式**：`水果池 / 看看水果池`\n  → **只列出水果池中的水果，不搜索不收集**\n\n**主动感知与初始化**：首次触发或无水果池时，自动创建水果池文件并以默认水果启动跟踪。若水果池为空则主动提示添加水果。\n\n## 文件索引\n\n### 运行时（`workspace/memory/`）\n- `fruit-pool.json` - 水果池（用户区，不上传）\n\n### 脚本\n- `skills/fruit-pi/fruit-pi.py` - 核心收集器\n\n## 核心流程\n\n### 1. 水果池管理\n\n水果池文件：`workspace/memory/fruit-pool.json`\n\n**水果池结构：**\n```json\n{\n  \"fruits\": {\n    \"金枕头榴莲\": {\n      \"en_name\": \"Monthong Durian\",\n      \"sources\": [\n        {\"name\": \"惠农网\", \"url\": \"https://...\", \"currency\": \"CNY\"},\n        {\"name\": \"泰国市场\", \"url\": \"https://...\", \"currency\": \"THB\"}\n      ],\n      \"last_price\": {\"price_rmb\": 89.5, \"original_price\": 450, \"original_currency\": \"THB\"},\n      \"last_updated\": \"2026-05-11\"\n    }\n  },\n  \"seasonal_fruits\": [\n    {\"name\": \"荔枝\", \"season\": \"5-7月\", \"en_name\": \"Lychee\"},\n    {\"name\": \"樱桃\", \"season\": \"5-7月\", \"en_name\": \"Cherry\"}\n  ],\n  \"metadata\": {\n    \"version\": 1,\n    \"last_collected\": null\n  }\n}\n```\n\n**管理操作（通过自然语言）：**\n- 「把榴莲加入水果池」 → `--add \"榴莲\" --en \"Durian\"`\n- 「给榴莲加个新的价格来源」 → 询问URL后 `--add-source`\n- 「把荔枝移出水果池」 → `--remove \"荔枝\"`\n- 「看看水果池」 → `--list`\n\n### 2. 价格收集流程\n\n#### 2a. 脚本自动收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py\n```\n脚本依次尝试每个水果的配置来源URL：\n- 成功提取价格 → 输出结构化价格\n- 失败 → 输出 search_hints（建议在哪个平台搜索）\n\n#### 2b. 手动触发收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py --collect \"金枕头榴莲\"\n```\n\n#### 2c. 搜索补充（脚本无法获取时）\n\n当脚本返回 `status: \"no_price\"` 或脚本无法运行时，使用 web_search 手动搜索价格。\n\n**价格新鲜度规则（按顺序执行）：**\n1. **先尝试当前配置的平台** —— 用脚本或用 fetch 从当前 sources 拉取价格\n2. **检查拉取结果的新鲜度**：\n   - 若成功获取 **48小时以内**的价格 → 直接使用，更新 `last_price` + `last_updated`\n   - 若获取失败，或获取到的价格标记已 **超过48小时** → 按后面流程搜索新平台\n3. **搜索新平台**：用 search_hints 或搜索策略搜索 → 成功则更新水果池（含 sources），失败则保持当前状态，不强行填数\n\n**搜索策略（按优先级）：**\n1. 国内水果：`<水果名> 批发价 今日 <年>`\n2. 泰国水果：`<fruit_en> wholesale price Thailand <month> <year>`\n3. 进口水果：`<fruit_en> import price China <month> <year>`\n4. 东南亚水果：`<fruit_en> price <country> market <month> <year>`\n\n**推荐平台（按地区）：**\n\n| 地区 | 平台 |\n|------|------|\n| 中国 | 惠农网(www.cnhnb.com), 一亩田(www.ymt.com), 广州江南市场, 北京新发地 |\n| 泰国 | Talad Thai, 泰国农业部, Tridge |\n| 越南 | 越南海关, 边贸市场 |\n| 全球 | FAO, Trading Economics, Selina Wamucii |\n\n#### 2d. 价格提取与归化\n\n从搜索结果提取价格后，统一处理：\n1. **单位归化**：斤→×2=kg, 磅(lb)→×2.2046=kg\n2. **货币转换**：外币→RMB（使用脚本汇率工具或按市场汇率，在回复中注明汇率来源）\n3. **保留原始价**：同时显示外币原价 + 换算后 RMB/公斤\n\n### 3. 输出格式\n\n```\n🥧 Fruit Pi · 水果派 · <日期>\n\n━━━ 🍎 水果池 ━━━\n\n<报价来源1>  ← 来源平台\n  🥇 金枕头榴莲 · ¥89.5/kg\n     泰国 ฿450/kg（≈¥89.5，汇率฿1=¥0.20）\n  🥇 山竹 · ¥45.2/kg\n     ...\n\n<报价来源2>  ← 其他来源\n  🥇 阿克苏苹果 · ¥12.8/kg\n     ...\n\n━━━ 🌟 当季推荐 ━━━\n\n🔥 荔枝（5-7月） | 樱桃（5-7月） | 杨梅（5-6月）\n不在水果池中，可回复\"加入荔枝\"开始跟踪\n\n━━━ 📖 什么是水果池？━━━\n\n水果池是你关注的水果清单。把想跟踪价格的水果加入池中，\n我会每天收集最新价格。\n\n用法：\n  \"把榴莲加入水果池\" → 开始跟踪\n  \"看看水果池\" → 查看当前池中水果\n  \"刷新水果池\" → 手动更新一次价格\n\n💬 回复\"水果派\"查看最新价格\n```\n\n### 4. 消息格式要求\n\n- 使用 `━━━` 分隔段落\n- 报价来源用小标题 `← 来源平台`\n- 每个水果一行：`🥇 名称 · RMB价格/kg` + 外币原价\n- 价格来源标注清晰\n- 末尾附水果池用法提示\n\n### 5. 用户交互\n\n| 用户说 | 动作 |\n|--------|------|\n| 「水果派/水果价格/果价」 | 完整收集：拉价格+搜索补采+展示 |\n| 「水果池/看看水果池」 | **只列出水果清单，不收集价格** |\n| 「加入<水果名>」 | `--add \"<fruit>\"` |\n| 「移除<水果名>」 | `--remove \"<fruit>\"` |\n| 「看看水果池」 | `--list` |\n| 「刷新水果池」 | 执行完整收集流程 |\n| 「刷新<水果名>」 | `--collect \"<fruit>\"` |\n| 「<水果名>什么价」 | 尝试收集该水果价格 |\n| 「推荐水果」 | 当季推荐 |\n\n### 6. 工作流程（用户触发时）\n\n**第一步：检查水果池**\n```bash\npython3 skills/fruit-pi/fruit-pi.py --status\n```\n- 无 `fruit-pool.json` → 自动创建\n- 池为空 → 提示添加水果\n\n**第二步：价格采集**\n```bash\npython3 skills/fruit-pi/fruit-pi.py\n```\n收集结果分三类：\n- ✅ 有价格 → 直接使用\n- ❌ 无价格但有 search_hints → web_search 补采\n- ❌ 无价格无 hint → 按「搜索策略」手动搜索\n\n**第三步：搜索补采（针对获取不到或过期的数据）**\n对脚本获取失败、或获取到的价格已超48小时的水果，执行 web_search：\n1. 用 search_hints 或搜索策略生成查询\n2. 从搜索结果提取价格\n3. 单位归化 + 货币换算\n4. 成功 → 更新水果池的 last_price / sources\n5. 失败 → 保持当前状态，不强行填数\n\n**第四步：格式化输出**\n按「输出格式」组织所有水果价格。\n\n### 7. 异常处理\n\n- URL失效爬不下 → 搜索新来源，提示用户添加\n- 汇率API超时 → 使用脚本内建默认汇率，标注为估算\n- 所有来源都无法获取 → 显示「暂无数据」，给出搜索建议\n\n### 8. 输出约束\n\n- **严禁输出思考过程、中间步骤、调试信息**\n- 不要输出脚本运行的JSON原始数据\n- 只推送最终整理后的内容\n- 价格统一用 ¥/kg 格式\n- 外币始终保留原价标注\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn74nyzntdcr43y9jyj89wb2qx85c8pf\",\n  \"slug\": \"fruit-pi\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1778753264601\n}","readmeExcerpt":"Skill: 🍓 Fruit Pi · 水果派（全球水果·实时价格·水果价格） Owner: kobenfang Summary: 全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。Fruit price tracker for global fruits, wholesale market data, agricultural commodity prices. Tags: agriculture:1.1.3, china:1.1.3, fruit:1.1.3, global:1.1.3, latest:1.1.3, market:1.1.3, price:1.1.3 Version history: v1.1.3 | 2026-06-17T10:45:02.248Z | user 新增功能概览描述，提升搜索匹配度（保留全部规则） v1.1.2 | 2026-06","codeSnippets":[],"executableExamples":[{"language":"json","snippet":"{\n  \"fruits\": {\n    \"金枕头榴莲\": {\n      \"en_name\": \"Monthong Durian\",\n      \"sources\": [\n        {\"name\": \"惠农网\", \"url\": \"https://...\", \"currency\": \"CNY\"},\n        {\"name\": \"泰国市场\", \"url\": \"https://...\", \"currency\": \"THB\"}\n      ],\n      \"last_price\": {\"price_rmb\": 89.5, \"original_price\": 450, \"original_currency\": \"THB\"},\n      \"last_updated\": \"2026-05-11\"\n    }\n  },\n  \"seasonal_fruits\": [\n    {\"name\": \"荔枝\", \"season\": \"5-7月\", \"en_name\": \"Lychee\"},\n    {\"name\": \"樱桃\", \"season\": \"5-7月\", \"en_name\": \"Cherry\"}\n  ],\n  \"metadata\": {\n    \"version\": 1,\n    \"last_collected\": null\n  }\n}"},{"language":"bash","snippet":"python3 skills/fruit-pi/fruit-pi.py"},{"language":"bash","snippet":"python3 skills/fruit-pi/fruit-pi.py --collect \"金枕头榴莲\""},{"language":"text","snippet":"🥧 Fruit Pi · 水果派 · <日期>\n\n━━━ 🍎 水果池 ━━━\n\n<报价来源1>  ← 来源平台\n  🥇 金枕头榴莲 · ¥89.5/kg\n     泰国 ฿450/kg（≈¥89.5，汇率฿1=¥0.20）\n  🥇 山竹 · ¥45.2/kg\n     ...\n\n<报价来源2>  ← 其他来源\n  🥇 阿克苏苹果 · ¥12.8/kg\n     ...\n\n━━━ 🌟 当季推荐 ━━━\n\n🔥 荔枝（5-7月） | 樱桃（5-7月） | 杨梅（5-6月）\n不在水果池中，可回复\"加入荔枝\"开始跟踪\n\n━━━ 📖 什么是水果池？━━━\n\n水果池是你关注的水果清单。把想跟踪价格的水果加入池中，\n我会每天收集最新价格。\n\n用法：\n  \"把榴莲加入水果池\" → 开始跟踪\n  \"看看水果池\" → 查看当前池中水果\n  \"刷新水果池\" → 手动更新一次价格\n\n💬 回复\"水果派\"查看最新价格"},{"language":"bash","snippet":"python3 skills/fruit-pi/fruit-pi.py --status"},{"language":"bash","snippet":"python3 skills/fruit-pi/fruit-pi.py"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: fruit-pi\ndescription: 全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。Fruit price tracker for global fruits, wholesale market data, agricultural commodity prices.\ntags:\n  - fruit-price\n  - 水果价格\n  - 农产品行情\n  - 批发价\n  - 榴莲价格\n  - 全球果价\n  - 每日报价\n  - Data & APIs\ntriggers:\n  - fruit pi\n  - Fruit Pi\n  - 水果派\n  - 水果价格\n  - 全球水果价格\n  - 果价\n  - 水果池\n  - 看看水果池\n---\n\n# 🥧 Fruit Pi · 水果派\n\n全球水果价格收集助手。管理您的水果池，定时收集价格，按 RMB/公斤 展示。\n\n## 📋 功能概览\n\nFruit Pi 是一款 **全球水果价格查询与追踪工具**，采集国内外水果批发价格，支持多币种换算。\n\n**核心功能：**\n- **🍉 水果价格查询** — 榴莲、荔枝、樱桃、蓝莓、山竹等热门水果实时价格\n- **🌐 全球市场覆盖** — 国内批发市场 + 国际主要水果产地报价\n- **💰 单位换算** — 自动换算 RMB/公斤，支持多种计价单位\n- **📅 价格走势** — 跟踪水果历史价格，把握采购时机\n- **🔔 价格提醒** — 设置目标价，价格达标时自动通知\n\n## 时区规则\n\n读取 `USER.md` 中的 `Timezone:` 字段。若无配置则用 `date +%Z` 回退。\n\n## 行为规则\n\n**触发即执行**：用户说出任意触发词，按不同规则执行：\n\n**区分两种触发模式：**\n- 🍎 **价格模式**：`水果派 / 水果价格 / 全球水果价格 / 果价 / fruit pi`\n  → 执行完整收集流程：读池→拉价格→搜补→展示\n- 📋 **列表模式**：`水果池 / 看看水果池`\n  → **只列出水果池中的水果，不搜索不收集**\n\n**主动感知与初始化**：首次触发或无水果池时，自动创建水果池文件并以默认水果启动跟踪。若水果池为空则主动提示添加水果。\n\n## 文件索引\n\n### 运行时（`workspace/memory/`）\n- `fruit-pool.json` - 水果池（用户区，不上传）\n\n### 脚本\n- `skills/fruit-pi/fruit-pi.py` - 核心收集器\n\n## 核心流程\n\n### 1. 水果池管理\n\n水果池文件：`workspace/memory/fruit-pool.json`\n\n**水果池结构：**\n```json\n{\n  \"fruits\": {\n    \"金枕头榴莲\": {\n      \"en_name\": \"Monthong Durian\",\n      \"sources\": [\n        {\"name\": \"惠农网\", \"url\": \"https://...\", \"currency\": \"CNY\"},\n        {\"name\": \"泰国市场\", \"url\": \"https://...\", \"currency\": \"THB\"}\n      ],\n      \"last_price\": {\"price_rmb\": 89.5, \"original_price\": 450, \"original_currency\": \"THB\"},\n      \"last_updated\": \"2026-05-11\"\n    }\n  },\n  \"seasonal_fruits\": [\n    {\"name\": \"荔枝\", \"season\": \"5-7月\", \"en_name\": \"Lychee\"},\n    {\"name\": \"樱桃\", \"season\": \"5-7月\", \"en_name\": \"Cherry\"}\n  ],\n  \"metadata\": {\n    \"version\": 1,\n    \"last_collected\": null\n  }\n}\n```\n\n**管理操作（通过自然语言）：**\n- 「把榴莲加入水果池」 → `--add \"榴莲\" --en \"Durian\"`\n- 「给榴莲加个新的价格来源」 → 询问URL后 `--add-source`\n- 「把荔枝移出水果池」 → `--remove \"荔枝\"`\n- 「看看水果池」 → `--list`\n\n### 2. 价格收集流程\n\n#### 2a. 脚本自动收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py\n```\n脚本依次尝试每个水果的配置来源URL：\n- 成功提取价格 → 输出结构化价格\n- 失败 → 输出 search_hints（建议在哪个平台搜索）\n\n#### 2b. 手动触发收集\n```bash\npython3 skills/fruit-pi/fruit-pi.py --collect \"金枕头榴莲\"\n```\n\n#### 2c. 搜索补充（脚本无法获取时）\n\n当脚本返回 `status: \"no_price\"` 或脚本无法运行时，使用 web_search 手动搜索价格。\n\n**价格新鲜度规则（按顺序执行）：**\n1. **先尝试当前配置的平台** —— 用脚本或用 fetch 从当前 sources 拉取价格\n2. **检查拉取结果的新鲜度**：\n   - 若成功获取 **48小时以内**的价格 → 直接使用，更新 `last_price` + `last_updated`\n   - 若获取失败，或获取到的价格标记已 **超过48小时** → 按后面流程搜索新平台\n3. **搜索新平台**：用 search_hints 或搜索策略搜索 → 成功则更新水果池（含 sources），失败则保持当前状态，不强行填数\n\n**搜索策略（按优先级）：**\n1. 国内水果：`<水果名> 批发价 今日 <年>`\n2. 泰国水果：`<fruit_en> wholesale price Thailand <month> <year>`\n3. 进口水果：`<fruit_en> import price China <month> <year>`\n4. 东南亚水果：`<fruit_en> price <country> market <month> <year>`\n\n**推荐平台（按地区）：**\n\n| 地区 | 平台 |\n|------|------|\n| 中国 | 惠农网(www.cnhnb.com), 一亩田(www.ymt.com), 广州江南市场, 北京新发地 |\n| 泰国 | Talad Thai, 泰国农业部, Tridge |\n| 越南 | 越南海关, 边贸市场 |\n| 全球 | FAO, Trading Economics, Selina Wamucii |\n\n#### 2d. 价格提取与归化\n\n从搜索结果提取价格后，统一处理：\n1. **"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn74nyzntdcr43y9jyj89wb2qx85c8pf\",\n  \"slug\": \"fruit-pi\",\n  \"version\": \"1.1.3\",\n  \"publishedAt\": 1781693102248\n}"},{"path":"skill-card.md","content":"## Description:\n\n全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。Fruit price tracker for global fruits, wholesale market data, agricultural commodity prices.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[kobenfang](https://clawhub.ai/user/kobenfang)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and agents use Fruit Pi to manage a fruit watchlist, collect current wholesale fruit prices from configured or discovered sources, normalize prices to RMB per kilogram, and present concise price summaries with source context.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can persist and repeatedly fetch unvalidated user-added or web-discovered price-source URLs.\n\nMitigation: Review source URLs before adding them, remove unexpected sources from the fruit pool, and avoid internal, local, or otherwise sensitive URLs.\n\nRisk: Casual trigger phrases can initiate collection behavior that fetches configured sources.\n\nMitigation: Prefer explicit commands such as list, refresh, add, and remove so collection happens only when intended.\n\n## Reference(s):\n\n- [Fruit Pi on ClawHub](https://clawhub.ai/kobenfang/skills/fruit-pi)\n- [kobenfang publisher profile](https://clawhub.ai/user/kobenfang)\n- [Frankfurter exchange-rate API](https://api.frankfurter.app/latest?from=USD)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown-style price summary with concise text, source labels, and inline command guidance]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May update a local fruit-pool JSON file and cache exchange-rate data during collection.]\n\n## Skill Version(s):\n\n1.1.3 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。Fruit price tracker for global fruits, wholesale market data, agricultural commodity prices. Skill: 🍓 Fruit Pi · 水果派（全球水果·实时价格·水果价格） Owner: kobenfang Summary: 全球水果价格收集与查询。管理水果池，自动采集榴莲/荔枝/樱桃等水果每日批发价，支持国内外报价，RMB/公斤换算。Fruit price tracker for global fruits, wholesale market data, agricultural commodity prices. Tags: agriculture:1.1.3, china:1.1.3, fruit:1.1.3, global:1.1.3, latest:1.1.3, market:1.1.3, price:1.1.3 Version history: v1.1.3 | 2026-06-17T10:45:02.248Z | user 新增功能概览描述，提升搜索匹配度（保留全部规则） v1.1.2 | 2026-06","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":757,"uniquenessScore":59,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T17:49:34.358Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T17:49:34.358Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T21:53:41.599Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}