{"id":"1e3fabcd-0be8-428d-b2f1-edd0f0c6718b","entityType":"agent","slug":"clawhub-financial-ai-analyst-mx-macro-data","name":"Global Macro Database Assistant","canonicalUrl":"https://www.xpersona.co/agent/clawhub-financial-ai-analyst-mx-macro-data","canonicalPath":"/agent/clawhub-financial-ai-analyst-mx-macro-data","generatedAt":"2026-10-09T12:05:44.133Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T01:49:13.159Z","emptyReason":null},"description":"基于东方财富数据库，支持自然语言查询全球宏观经济数据，涵盖国民经济核算、价格指数、货币金融、财政收支、对外贸易、就业民生、产业运行等多个领域，适配各类宏观经济研究、市场分析、政策解读等多元专业场景需求。返回结果包含数据说明及 csv 文件。Natural language query for macroecono... Skill: Global Macro Database Assistant Owner: financial-ai-analyst Summary: 基于东方财富数据库，支持自然语言查询全球宏观经济数据，涵盖国民经济核算、价格指数、货币金融、财政收支、对外贸易、就业民生、产业运行等多个领域，适配各类宏观经济研究、市场分析、政策解读等多元专业场景需求。返回结果包含数据说明及 csv 文件。Natural language query for macroecono... Tags: Marco:1.0.5, analysis:1.0.5, economic:1.0.5, financial:1.0.5, latest:1.0.12, market:1.0.5, research:1.0.5 Version history: v1.0.12 | 2026-04-17T11:19:21.300Z | user Publish 1.0.","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 17.1K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s172qfps754dhtdynwv0gwshes83mtd4:mx-macro-data","sourceUrl":"https://clawhub.ai/financial-ai-analyst/mx-macro-data","homepage":"https://clawhub.ai/financial-ai-analyst/skills/mx-macro-data","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/financial-ai-analyst/mx-macro-data","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/financial-ai-analyst/skills/mx-macro-data","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":82,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"基于东方财富数据库，支持自然语言查询全球宏观经济数据，涵盖国民经济核算、价格指数、货币金融、财政收支、对外贸易、就业民生、产业运行等多个领域，适配各类宏观经济研究、市场分析、政策解读等多元专业场景需求。返回结果包含数据说明及 csv 文件。Natural language query for macroecono..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T01:49:13.159Z","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-09T01:49:13.159Z","emptyReason":null},"stars":null,"forks":null,"downloads":17083,"packageName":null,"latestVersion":"1.0.12","tractionLabel":"17.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T01:49:13.159Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T01:49:13.159Z","lastCrawledAt":"2026-10-09T01:49:13.159Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T01:49:13.159Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.12","createdAt":"2026-04-17T11:19:21.300Z","changelog":"Publish 1.0.12","fileCount":4,"zipByteSize":14018},{"version":"1.0.11","createdAt":"2026-04-03T09:55:26.730Z","changelog":"# mx-macro-data 1.0.11 Changelog - Metadata updated: now explicitly declares that the `EM_API_KEY` environment variable is required. - No changes to feature set, interface, or behavior. - No code or documentation files changed in this version.","fileCount":3,"zipByteSize":12608},{"version":"1.0.10","createdAt":"2026-03-27T10:20:02.101Z","changelog":"mx-macro-data 1.0.10 - Updated installation requirements: removed explicit environment variable and binary dependencies from the skill's metadata. - No changes to code or functional behavior. Documentation and usage instructions remain the same. - This update mainly streamlines the metadata for easier integration.","fileCount":3,"zipByteSize":12656},{"version":"1.0.9","createdAt":"2026-03-23T10:08:06.579Z","changelog":"mx-macro-data 1.0.9 - 文档细节优化：针对环境变量配置说明分别补充了 macOS 和 Linux 的区分指引，更清晰地分步指导 source 命令设置。 - 其余功能、接口及约束保持不变，无其他重大调整。","fileCount":3,"zipByteSize":12697},{"version":"1.0.8","createdAt":"2026-03-20T15:16:07.709Z","changelog":"mx-macro-data 1.0.8 - Documentation in SKILL.md improved: formatting fixes and minor clarifications, especially in “常见问题” and orchestration protocol. - No functional changes to code; update focuses on documentation clarity for integration and user guidance.","fileCount":3,"zipByteSize":12673},{"version":"1.0.7","createdAt":"2026-03-20T11:30:46.403Z","changelog":"mx-macro-data 1.0.7 - update skill display name","fileCount":3,"zipByteSize":12655},{"version":"1.0.6","createdAt":"2026-03-20T10:42:00.750Z","changelog":"### mx-macro-data 1.0.6 - Improved scripts/get_data.py (details not shown). - No changes to user-facing functionality or documentation. - No changes to dependencies or environment configuration. - Version bump for internal/script updates.","fileCount":3,"zipByteSize":12585},{"version":"1.0.5","createdAt":"2026-03-18T09:57:14.494Z","changelog":"mx-macro-data 1.0.5 更新日志 - Skill 名称和输出文件统一为小写风格（mx_macro_data），相关环境变量同步更名（MX_MACRO_DATA_OUTPUT_DIR）。 - 英文描述完善，增加 English 版 skill 描述和功能介绍片段，支持中英文双语场景。 - 所有文档示例、参数、代码调用及输出路径名称统一为全小写格式，便于跨平台一致性与辨识度。 - 不涉及业务逻辑及实现改动，仅文档优化与标准化。","fileCount":3,"zipByteSize":12410}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s172qfps754dhtdynwv0gwshes83mtd4:mx-macro-data","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-financial-ai-analyst-mx-macro-data/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-financial-ai-analyst-mx-macro-data/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-financial-ai-analyst-mx-macro-data/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-financial-ai-analyst-mx-macro-data/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-financial-ai-analyst-mx-macro-data/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-financial-ai-analyst-mx-macro-data/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-09T12:05:44.132Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-financial-ai-analyst-mx-macro-data/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-financial-ai-analyst-mx-macro-data/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-financial-ai-analyst-mx-macro-data/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-financial-ai-analyst-mx-macro-data/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-09T01:49:13.159Z","emptyReason":null},"readme":"Skill: Global Macro Database Assistant\n\nOwner: financial-ai-analyst\n\nSummary: 基于东方财富数据库，支持自然语言查询全球宏观经济数据，涵盖国民经济核算、价格指数、货币金融、财政收支、对外贸易、就业民生、产业运行等多个领域，适配各类宏观经济研究、市场分析、政策解读等多元专业场景需求。返回结果包含数据说明及 csv 文件。Natural language query for macroecono...\n\nTags: Marco:1.0.5, analysis:1.0.5, economic:1.0.5, financial:1.0.5, latest:1.0.12, market:1.0.5, research:1.0.5\n\nVersion history:\n\nv1.0.12 | 2026-04-17T11:19:21.300Z | user\n\nPublish 1.0.12\n\nv1.0.11 | 2026-04-03T09:55:26.730Z | user\n\n# mx-macro-data 1.0.11 Changelog\n\n- Metadata updated: now explicitly declares that the `EM_API_KEY` environment variable is required.\n- No changes to feature set, interface, or behavior.\n- No code or documentation files changed in this version.\n\nv1.0.10 | 2026-03-27T10:20:02.101Z | user\n\nmx-macro-data 1.0.10\n\n- Updated installation requirements: removed explicit environment variable and binary dependencies from the skill's metadata.\n- No changes to code or functional behavior. Documentation and usage instructions remain the same.\n- This update mainly streamlines the metadata for easier integration.\n\nv1.0.9 | 2026-03-23T10:08:06.579Z | user\n\nmx-macro-data 1.0.9\n\n- 文档细节优化：针对环境变量配置说明分别补充了 macOS 和 Linux 的区分指引，更清晰地分步指导 source 命令设置。\n- 其余功能、接口及约束保持不变，无其他重大调整。\n\nv1.0.8 | 2026-03-20T15:16:07.709Z | auto\n\nmx-macro-data 1.0.8\n\n- Documentation in SKILL.md improved: formatting fixes and minor clarifications, especially in “常见问题” and orchestration protocol.\n- No functional changes to code; update focuses on documentation clarity for integration and user guidance.\n\nv1.0.7 | 2026-03-20T11:30:46.403Z | user\n\nmx-macro-data 1.0.7\n\n- update skill display name\n\nv1.0.6 | 2026-03-20T10:42:00.750Z | auto\n\n### mx-macro-data 1.0.6\n\n- Improved scripts/get_data.py (details not shown).\n- No changes to user-facing functionality or documentation.\n- No changes to dependencies or environment configuration.\n- Version bump for internal/script updates.\n\nv1.0.5 | 2026-03-18T09:57:14.494Z | user\n\nmx-macro-data 1.0.5 更新日志\n\n- Skill 名称和输出文件统一为小写风格（mx_macro_data），相关环境变量同步更名（MX_MACRO_DATA_OUTPUT_DIR）。\n- 英文描述完善，增加 English 版 skill 描述和功能介绍片段，支持中英文双语场景。\n- 所有文档示例、参数、代码调用及输出路径名称统一为全小写格式，便于跨平台一致性与辨识度。\n- 不涉及业务逻辑及实现改动，仅文档优化与标准化。\n\nv1.0.4 | 2026-03-17T09:57:55.804Z | user\n\nVersion 1.0.4\n\n- No code or documentation changes were detected in this version.\n- Behavior and skill documentation remain unchanged.\n- Rename to Global Macro Database Assistant\n\nv1.0.3 | 2026-03-16T11:22:32.105Z | user\n\nVersion 1.0.3\n\n- 增强元数据描述和 Skill 文档规范，强调来源于东方财富妙想服务，明确数据覆盖的领域与使用场景。\n- 新增和详细说明密钥（EM_API_KEY）获取、配置及安全要求，防止密钥泄漏。\n- 强化“输出接口与上层规划协议”，详细规定上层规划引擎对于集合式地域/指标查询的复核、差异检测与自动补全流程，防止数据遗漏。\n- 精简依赖，仅需 httpx，剔除 pandas/pypinyin 依赖项。\n- 更新快速开始和常见问题，强调环境变量、分频率一致性及复核建议，方便开发者和集成方正确调用与完善业务流程。\n\nv1.0.2 | 2026-03-15T07:10:42.411Z | user\n\nfix description error in skill description\n\nv1.0.1 | 2026-03-13T10:07:16.594Z | user\n\nfix typo error in skill.md\n\nv1.0.0 | 2026-03-13T09:39:49.546Z | user\n\nMX_MacroData 1.0.0 — Initial Release\n\n- 支持通过自然语言查询宏观经济数据（如GDP、CPI、M2等），自动生成CSV及数据描述文件。\n- 强输入约束：必须指定具体经济指标和商品品种，禁止模糊类别和泛指指标。\n- 支持相对时间和宏观地域表述，无需拆分为具体日期或城市列表。\n- 内置详细错误处理，对不合规输入直接给出提示并拒绝查询。\n- 需配置东方财富 API 密钥（EM_API_KEY），依赖 httpx、pandas 等库。\n- 提供命令行和Python代码两种调用方式，输出结构化数据和内容说明。\n\nArchive index:\n\nArchive v1.0.12: 4 files, 14018 bytes\n\nFiles: scripts/get_data.py (19269b), skill-card.md (2639b), SKILL.md (13171b), _meta.json (133b)\n\nFile v1.0.12:SKILL.md\n\n---\nname: mx-macro-data\ndescription: 基于东方财富数据库，支持自然语言查询全球宏观经济数据，涵盖国民经济核算、价格指数、货币金融、财政收支、对外贸易、就业民生、产业运行等多个领域，适配各类宏观经济研究、市场分析、政策解读等多元专业场景需求。返回结果包含数据说明及 csv 文件。Natural language query for macroeconomic data from financial databases, covering national economic accounting, price indices, monetary finance, fiscal revenue and expenditure, foreign trade, employment, industrial operation, and other fields. It supports diverse scenarios including macroeconomic research, market analysis, and policy interpretation.\nmetadata:\n  {\n    \"openclaw\": {\n      \"requires\": {\n        \"env\":[\"EM_API_KEY\"]\n      },\n      \"install\": [\n        {\n          \"id\": \"pip-deps\",\n          \"kind\": \"python\",\n          \"package\": \"httpx\",\n          \"label\": \"Install Python dependencies\"\n        }\n      ]\n    }\n  }\n---\n\n# 宏观经济数据查询 (mx_macro_data)\n\n通过**文本输入**查询宏观经济数据，接口返回 JSON 后会自动转换为 **CSV** 并生成对应的**内容描述 txt** 文件。\n\n## 密钥来源与安全说明\n\n- 本技能仅使用一个环境变量：`EM_API_KEY`。\n- `EM_API_KEY` 由东方财富妙想服务（`https://ai.eastmoney.com/mxClaw`）签发，用于其接口鉴权。\n- 在提供密钥前，请先确认密钥来源、可用范围、有效期及是否支持重置/撤销。\n- 禁止在代码、提示词、日志或输出文件中硬编码/明文暴露密钥。\n\n## ⚠️ 核心输入约束 (Critical Input Constraints)\n\n- **时间维度**：支持相对时间表述（如“今年”、“过去三年”、“上月”）。\n- **地域维度**：支持宏观地区表述（如“中国”、“美国”、“欧元区”、“华东地区”、“中国各省”），无需拆解为具体省市列表。\n\n### 1. 禁止模糊商品类别 (No Ambiguous Commodities)\n- **禁止输入**：大类统称（如“稀土金属”、“有色金属”、“农产品”、“能源”、“科技股”）。\n- **要求**：必须解包为具体的**交易品种名称或代码**。\n  - ❌ 错误：`\"查询稀土价格走势\"`\n  - ✅ 正确：`\"查询氧化镨钕、氧化镝、氧化铽的价格走势\"`\n\n### 2. 禁止宏观泛指指标 (No Macro Generalizations without Metrics)\n- **禁止输入**：宽泛的经济概念而无具体指标（如“中国经济”、“美国制造业状况”、“全球通胀情况”）。\n- **要求**：必须指定具体的**指标名称**（如 GDP、CPI、PMI、失业率、工业增加值等）。\n  - ❌ 错误：`\"查询中国经济数据\"`\n  - ✅ 正确：`\"查询中国 GDP 同比增速、中国 CPI 同比\"`\n  - ✅ 正确：`\"查询美国制造业 PMI\"` (地域允许宏观，但指标必须具体)\n\n### 3. 时间与地域的灵活性 (Flexible Time & Region)\n- **时间**：无需绝对日期。\n  - ✅ 允许：`\"查询中国过去五年的M2增速\"`、`\"查询上个月美国的非农数据\"`、`\"查询黄金今日价格\"`。\n  - ✅ 允许（缺省）：`\"查询德国失业率\"` 。\n- **地域**：无需拆解为子集列表。\n  - ✅ 允许：`\"查询华东地区GDP\"`,`\"查询中国各省GDP\"`。\n  - ⚠️ 注意：若涉及“主要新兴市场”、“Top 5 国家”等动态排名指代，仍建议上层模型解包为具体国家列表（如 `\"查询中国、印度、巴西的M2\"`），以确保数据源一致性。\n\n## 🔄 输出接口与上层规划协议 (Output Interface & Orchestration Protocol)\n\n本 Skill 仅负责执行单次查询并生成文件。**为实现数据完整性保障，上层规划引擎必须根据以下协议，对本 Skill 的输出进行后续处理。**\n\n### 1. 输出文件结构 (Output File Structure)\n执行 `mx_macro_data` 后，Skill 将在指定目录下生成一个或多个 CSV 文件，以及一个描述文件。\n\n- **CSV 文件**：`mx_macro_data_<查询ID>_<频率>.csv`\n  - *示例*：`mx_macro_data_4591GG28_yearly.csv`, `mx_macro_data_4591GG28_quarterly.csv`, `mx_macro_data_4591GG28_monthly.csv`\n  - **注意**：文件数量和频率取决于查询指标的可用性（yearly、quarterly、monthly、weekly、daily）。\n- **描述文件**：`mx_macro_data_<查询ID>_description.txt`\n  - 包含数据来源、时间范围、指标说明等基础信息。\n\n### 2. 上层规划引擎必须执行的“完整性复核”逻辑 (Mandatory Verification Logic for Orchestrator)\n\n上层规划引擎在调用 `mx_macro_data` 后，**必须**执行以下工作流，以确保最终结果的完整性：\n#### **阶段 A: 任务解析与预期规划 (Task Parsing & Expectation Planning)**\n1.  **解析原始用户意图**：从用户查询中提取核心要素。\n2.  **构建预期全集 (Expected Universe)**：\n    - **地域**：通过规划引擎的内置知识库、搜索引擎或 LLM 推理能力，将模糊地域表述解析为具体行政单元。例如：\"中国各省\" → 34 个省级行政区；\"华东地区\" → 上海、江苏、浙江、安徽、福建、江西、山东共 7 个省市。\n    - **指标**：将复合指标拆解为独立指标。例如：\"GDP, CPI\" → [\"GDP\", \"CPI\"]。\n    - **频率**：根据查询语境推断预期频率，可能生成多个频率的数据文件（yearly、quarterly、monthly等）。\n\n#### **阶段 B: 文件读取与差异检测 (File Reading   & Gap Detection)**\n1.  **获取输出文件列表**：获取 `mx_macro_data` 生成的所有 CSV 文件路径。\n2.  **读取并分析每个文件**：\n    - 使用规划引擎内置的代码执行能力（如 Python Sandbox）读取 CSV。\n    - 提取每个文件中实际覆盖的 `(地区, 指标)` 组合及其数量。\n3.  **执行差异计算**：\n    - 对**每一种频率**的文件，分别计算 `Missing_Pairs_<Frequency> = Expected_Universe - Actual_From_CSV_File`。\n    - 识别出具体缺失的项（如：年频数据中缺失“西藏-GDP”）。\n\n#### **阶段 C: 决策与迭代调用 (Decision & Iterative Invocation)**\n\n> ⚠️ **强制要求**：上层规划引擎**必须**执行以下补全流程，不得在存在缺失数据时直接交付结果。\n\n1.  **判断是否需要补全**：\n    - 如果所有频率的 `Missing_Pairs` 集合均为空：**结束流程**，交付现有文件。\n    - 如果存在非空的 `Missing_Pairs` 集合：**必须进入补全流程**，不可跳过。\n\n2.  **构建补全查询**：\n    - 根据 `Missing_Pairs_<Frequency>` 中的缺失项，结合原始查询的时间维度，构造新的自然语言查询。\n    - **示例**：\n      ```\n      Missing_Pairs_季 = [(\"西藏\", \"GDP\"), (\"宁夏\", \"GDP\")]\n      ↓\n      补全查询 = \"查询西藏自治区、宁夏回族自治区的 GDP 季度数据，时间范围同前次查询\"\n      ```\n\n3.  **再次调用 `mx_macro_data`**：\n    - 使用新构造的补全查询，再次调用本 Skill 获取缺失数据。\n\n4.  **迭代循环**：\n    - 重复执行 **阶段 B（差异检测）→ 阶段 C（决策补全）**，直至满足以下任一条件：\n      - ✅ 所有频率下的缺失项均已补全\n      - ⚠️ 达到最大重试次数5次，此时应向用户报告未能补全的数据项\n\n#### **阶段 D: 最终交付 (Final Delivery)**\n1.  **数据合并（可选）**：\n    - 如果需要，可将同一频率下多次查询的结果（如多个 `quarterly.csv` 文件）合并为一个完整的 `quarterly.csv`。\n2.  **状态报告**：\n    - 规划引擎应向上游（如用户界面）报告最终交付的文件列表，并可选地报告补全过程（如“系统已自动补全 2 个缺失数据项”）。\n---\n\n## 功能范围\n\n### 基础查询能力\n\n- **经济指标**：GDP、CPI、PPI、PMI、失业率、工业增加值等（支持指定国家/地区及具体指标名）。\n- **货币金融**：M1/M2 货币供应量、社融规模、国债利率、汇率（支持指定币种对）。\n- **商品价格**：黄金、白银、原油、铜、特定稀土氧化物等（**必须**指定具体品种）。\n- **时间频率**：自动识别相对时间（年、季、月、周、日）并匹配对应频率数据；若未指定，返回最新数据。\n\n### 查询示例对照表\n\n| 类型     | ❌ 禁止的模糊查询 (指标/品种不明)      | ✅ 允许的明确查询 (时间/地区可灵活)             |\n|----------|--------------------------------------|------------------------------------------------|\n| 国内经济 | 查询华东地区GDP                        | 查询华东地区 GDP                              |\n| 货币供应 | 查询主要新兴市场货币供应                | 查询中国、印度、巴西的 M2 货币供应量             |\n| 商品价格 | 查询稀土和有色金属价格                 | 查询氧化镨钕、铜、铝的现货价格走势                |\n| 全球宏观 | 查询 Top 3 经济体非农数据              | 查询美国、中国、德国的非农就业数据                |\n| 时间灵活 | (无)                                  | 查询美国过去十年的失业率趋势                    |\n| 默认时间 | (无)                                  | 查询日本最新的核心 CPI 数据                     |\n\n\n## 前提条件\n\n### 1. 注册东方财富妙想账号\n\n访问 https://ai.eastmoney.com/mxClaw 注册账号并获取API_KEY。\n\n### 2. 配置 Token\n\n```bash\n# macOS 添加到 ~/.zshrc，Linux 添加到 ~/.bashrc\nexport EM_API_KEY=\"your_api_key_here\"\n```\n\n然后根据系统执行对应的命令：\n\n**macOS：**\n```bash\nsource ~/.zshrc\n```\n\n**Linux：**\n```bash\nsource ~/.bashrc\n```\n\n### 3. 安装依赖\n\n\n```bash\npip3 install httpx --user\n```\n\n## 快速开始\n\n### 1. 命令行调用\n\n在项目根目录或配置的工作目录下执行：\n\n```bash\npython3 {baseDir}/scripts/get_data.py --query 中国GDP\n```\n**参数说明：**\n\n| 参数            | 说明             | 必填 |\n| --------------- | ---------------- | ---- |\n| `--query`       | 自然语言查询条件 | ✅    |\n```\n### 2. 代码调用\n\n```python\nimport asyncio\nfrom pathlib import Path\nfrom scripts.get_data import query_mx_macro_data\n\nasync def main():\n    result = await query_mx_macro_data(\n        query=\"中国近五年GDP\",\n        output_dir=Path(\"workspace/mx_macro_data\"),\n    )\n    if \"error\" in result:\n        print(result[\"error\"])\n    else:\n        print(f\"CSV: {r['csv_paths']}\")\n        print(f\"描述: {r['description_path']}\")\n        print(f\"行数: {r['row_counts']}\")\n\nasyncio.run(main())\n```\n\n输出示例：\n```\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_yearly.csv\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_quarterly.csv\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_monthly.csv\n描述:/path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_description.txt\n行数: 年: 10行, 季: 20行, 月: 40行\n```\n\n## 输出文件说明\n\n| 文件 | 说明 |\n|------|------|\n| `mx_macro_data_<查询ID>_<频率>.csv` | 按频率分组的宏观数据表，UTF-8 编码，可直接用 Excel 或 pandas 打开。 |\n| `mx_macro_data_<查询ID>_description.txt` | 说明文件，含各频率数据统计、数据来源和单位等信息。 |\n\n## 环境变量\n\n| 变量                      | 说明                                  | 默认                     |\n| ------------------------- | ------------------------------------- | ------------------------ |\n| `MX_MACRO_DATA_OUTPUT_DIR` | CSV 与描述文件的输出目录（可选）      | `workspace/mx_macro_data` |\n| `EM_API_KEY`              | 东方财富宏观查数工具 API 密钥（必备） | 无                       |\n\n## 常见问题\n\n### 用户常见问题\n\n**Q: 提示\"请设置 EM_API_KEY 环境变量\"怎么办？**\n\nA: 按以下步骤配置 API 密钥：\n1. 访问 [东方财富宏观查数工具](https://ai.eastmoney.com/mxClaw) 注册并获取 `API_KEY`。\n2. 配置环境变量：\n   ```bash\n   # macOS/Linux\n   export EM_API_KEY=\"your_api_key_here\"\n   \n   # Windows PowerShell\n   $env:EM_API_KEY=\"your_api_key_here\"\n   ```\n\n**Q: 如何指定输出目录？**\n\nA: 通过设置 `MX_MACRO_DATA_OUTPUT_DIR` 环境变量：\n```bash\nexport MX_MACRO_DATA_OUTPUT_DIR=\"/path/to/output\"\npython3 scripts/get_data.py --query \"查询内容\"\n```\n\n### 开发者常见问题（规划引擎集成）\n\n**Q: 为什么需要上层规划引擎做复核？**\n\nA: 本 Skill 专注于单一查询能力，不负责数据完整性校验。完整性验证（如\"中国各省\"是否真的覆盖全部省份）属于业务逻辑范畴，更适合由具备上下文理解和决策能力的规划引擎来处理。\n\n**Q: 如何判断何时进行复核？**\n\nA: 当原始用户意图包含以下特征时，应自动触发复核流程：\n- **集合性词汇**：如\"各省\"、\"各地区\"、\"华东地区\"等\n- **多指标查询**：如\"GDP 和 CPI\"、\"主要经济指标\"等\n\n**Q: 如何处理不同频率的数据？**\nA: **必须**对每种频率的 CSV 文件**分别**执行完整性审计和补全。年频数据的缺失不能用月频数据补全，反之亦然。\n\nFile v1.0.12:_meta.json\n\n{\n  \"ownerId\": \"kn7b4ptpdag877t9kmq8axyja182taab\",\n  \"slug\": \"mx-macro-data\",\n  \"version\": \"1.0.12\",\n  \"publishedAt\": 1776424761300\n}\n\nFile v1.0.12:skill-card.md\n\n## Description:\n\nQueries Eastmoney macroeconomic data from natural-language prompts and saves returned tables as CSV files with a text description.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[financial-ai-analyst](https://clawhub.ai/user/financial-ai-analyst)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nAnalysts, researchers, and agents use this skill to retrieve specific macroeconomic indicators, market data, and commodity series from Eastmoney and produce CSV outputs for review or downstream analysis.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill contacts Eastmoney services during normal operation.\n\nMitigation: Run it only where those outbound requests are expected and allowed.\n\nRisk: The EM_API_KEY credential could be exposed or misused if broadly scoped.\n\nMitigation: Set EM_API_KEY only for users and sessions that need the service, and avoid storing it in code, prompts, logs, or generated files.\n\nRisk: Generated CSV files contain external data and may be opened in spreadsheet tools.\n\nMitigation: Treat generated CSV files as untrusted external data and inspect or sanitize them before opening them in Excel or similar applications.\n\nRisk: The skill writes result files under the configured output directory.\n\nMitigation: Run it in an isolated workspace and set MX_MACRO_DATA_OUTPUT_DIR explicitly when file placement matters.\n\nRisk: Large or ambiguous macroeconomic requests may return partial data or require follow-up queries.\n\nMitigation: Review the generated description and status messages, verify expected regions, indicators, and frequencies, and report or retry missing data when needed.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/financial-ai-analyst/skills/mx-macro-data)\n- [Eastmoney Miaoxiang Claw service](https://ai.eastmoney.com/mxClaw)\n- [Eastmoney API service endpoint](https://ai-saas.eastmoney.com)\n\n## Skill Output:\n\n**Output Type(s):** [CSV files, Text, Status metadata]\n\n**Output Format:** [CSV files grouped by frequency, a UTF-8 text description file, and returned path/count metadata]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires EM_API_KEY and writes outputs under MX_MACRO_DATA_OUTPUT_DIR or the skill default output directory.]\n\n## Skill Version(s):\n\n1.0.12 (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.0.11: 3 files, 12608 bytes\n\nFiles: scripts/get_data.py (19269b), SKILL.md (13171b), _meta.json (133b)\n\nFile v1.0.11:SKILL.md\n\n---\nname: mx_macro_data\ndescription: 基于东方财富数据库，支持自然语言查询全球宏观经济数据，涵盖国民经济核算、价格指数、货币金融、财政收支、对外贸易、就业民生、产业运行等多个领域，适配各类宏观经济研究、市场分析、政策解读等多元专业场景需求。返回结果包含数据说明及 csv 文件。Natural language query for macroeconomic data from financial databases, covering national economic accounting, price indices, monetary finance, fiscal revenue and expenditure, foreign trade, employment, industrial operation, and other fields. It supports diverse scenarios including macroeconomic research, market analysis, and policy interpretation.\nmetadata:\n  {\n    \"openclaw\": {\n      \"requires\": {\n        \"env\":[\"EM_API_KEY\"]\n      },\n      \"install\": [\n        {\n          \"id\": \"pip-deps\",\n          \"kind\": \"python\",\n          \"package\": \"httpx\",\n          \"label\": \"Install Python dependencies\"\n        }\n      ]\n    }\n  }\n---\n\n# 宏观经济数据查询 (mx_macro_data)\n\n通过**文本输入**查询宏观经济数据，接口返回 JSON 后会自动转换为 **CSV** 并生成对应的**内容描述 txt** 文件。\n\n## 密钥来源与安全说明\n\n- 本技能仅使用一个环境变量：`EM_API_KEY`。\n- `EM_API_KEY` 由东方财富妙想服务（`https://ai.eastmoney.com/mxClaw`）签发，用于其接口鉴权。\n- 在提供密钥前，请先确认密钥来源、可用范围、有效期及是否支持重置/撤销。\n- 禁止在代码、提示词、日志或输出文件中硬编码/明文暴露密钥。\n\n## ⚠️ 核心输入约束 (Critical Input Constraints)\n\n- **时间维度**：支持相对时间表述（如“今年”、“过去三年”、“上月”）。\n- **地域维度**：支持宏观地区表述（如“中国”、“美国”、“欧元区”、“华东地区”、“中国各省”），无需拆解为具体省市列表。\n\n### 1. 禁止模糊商品类别 (No Ambiguous Commodities)\n- **禁止输入**：大类统称（如“稀土金属”、“有色金属”、“农产品”、“能源”、“科技股”）。\n- **要求**：必须解包为具体的**交易品种名称或代码**。\n  - ❌ 错误：`\"查询稀土价格走势\"`\n  - ✅ 正确：`\"查询氧化镨钕、氧化镝、氧化铽的价格走势\"`\n\n### 2. 禁止宏观泛指指标 (No Macro Generalizations without Metrics)\n- **禁止输入**：宽泛的经济概念而无具体指标（如“中国经济”、“美国制造业状况”、“全球通胀情况”）。\n- **要求**：必须指定具体的**指标名称**（如 GDP、CPI、PMI、失业率、工业增加值等）。\n  - ❌ 错误：`\"查询中国经济数据\"`\n  - ✅ 正确：`\"查询中国 GDP 同比增速、中国 CPI 同比\"`\n  - ✅ 正确：`\"查询美国制造业 PMI\"` (地域允许宏观，但指标必须具体)\n\n### 3. 时间与地域的灵活性 (Flexible Time & Region)\n- **时间**：无需绝对日期。\n  - ✅ 允许：`\"查询中国过去五年的M2增速\"`、`\"查询上个月美国的非农数据\"`、`\"查询黄金今日价格\"`。\n  - ✅ 允许（缺省）：`\"查询德国失业率\"` 。\n- **地域**：无需拆解为子集列表。\n  - ✅ 允许：`\"查询华东地区GDP\"`,`\"查询中国各省GDP\"`。\n  - ⚠️ 注意：若涉及“主要新兴市场”、“Top 5 国家”等动态排名指代，仍建议上层模型解包为具体国家列表（如 `\"查询中国、印度、巴西的M2\"`），以确保数据源一致性。\n\n## 🔄 输出接口与上层规划协议 (Output Interface & Orchestration Protocol)\n\n本 Skill 仅负责执行单次查询并生成文件。**为实现数据完整性保障，上层规划引擎必须根据以下协议，对本 Skill 的输出进行后续处理。**\n\n### 1. 输出文件结构 (Output File Structure)\n执行 `mx_macro_data` 后，Skill 将在指定目录下生成一个或多个 CSV 文件，以及一个描述文件。\n\n- **CSV 文件**：`mx_macro_data_<查询ID>_<频率>.csv`\n  - *示例*：`mx_macro_data_4591GG28_yearly.csv`, `mx_macro_data_4591GG28_quarterly.csv`, `mx_macro_data_4591GG28_monthly.csv`\n  - **注意**：文件数量和频率取决于查询指标的可用性（yearly、quarterly、monthly、weekly、daily）。\n- **描述文件**：`mx_macro_data_<查询ID>_description.txt`\n  - 包含数据来源、时间范围、指标说明等基础信息。\n\n### 2. 上层规划引擎必须执行的“完整性复核”逻辑 (Mandatory Verification Logic for Orchestrator)\n\n上层规划引擎在调用 `mx_macro_data` 后，**必须**执行以下工作流，以确保最终结果的完整性：\n#### **阶段 A: 任务解析与预期规划 (Task Parsing & Expectation Planning)**\n1.  **解析原始用户意图**：从用户查询中提取核心要素。\n2.  **构建预期全集 (Expected Universe)**：\n    - **地域**：通过规划引擎的内置知识库、搜索引擎或 LLM 推理能力，将模糊地域表述解析为具体行政单元。例如：\"中国各省\" → 34 个省级行政区；\"华东地区\" → 上海、江苏、浙江、安徽、福建、江西、山东共 7 个省市。\n    - **指标**：将复合指标拆解为独立指标。例如：\"GDP, CPI\" → [\"GDP\", \"CPI\"]。\n    - **频率**：根据查询语境推断预期频率，可能生成多个频率的数据文件（yearly、quarterly、monthly等）。\n\n#### **阶段 B: 文件读取与差异检测 (File Reading   & Gap Detection)**\n1.  **获取输出文件列表**：获取 `mx_macro_data` 生成的所有 CSV 文件路径。\n2.  **读取并分析每个文件**：\n    - 使用规划引擎内置的代码执行能力（如 Python Sandbox）读取 CSV。\n    - 提取每个文件中实际覆盖的 `(地区, 指标)` 组合及其数量。\n3.  **执行差异计算**：\n    - 对**每一种频率**的文件，分别计算 `Missing_Pairs_<Frequency> = Expected_Universe - Actual_From_CSV_File`。\n    - 识别出具体缺失的项（如：年频数据中缺失“西藏-GDP”）。\n\n#### **阶段 C: 决策与迭代调用 (Decision & Iterative Invocation)**\n\n> ⚠️ **强制要求**：上层规划引擎**必须**执行以下补全流程，不得在存在缺失数据时直接交付结果。\n\n1.  **判断是否需要补全**：\n    - 如果所有频率的 `Missing_Pairs` 集合均为空：**结束流程**，交付现有文件。\n    - 如果存在非空的 `Missing_Pairs` 集合：**必须进入补全流程**，不可跳过。\n\n2.  **构建补全查询**：\n    - 根据 `Missing_Pairs_<Frequency>` 中的缺失项，结合原始查询的时间维度，构造新的自然语言查询。\n    - **示例**：\n      ```\n      Missing_Pairs_季 = [(\"西藏\", \"GDP\"), (\"宁夏\", \"GDP\")]\n      ↓\n      补全查询 = \"查询西藏自治区、宁夏回族自治区的 GDP 季度数据，时间范围同前次查询\"\n      ```\n\n3.  **再次调用 `mx_macro_data`**：\n    - 使用新构造的补全查询，再次调用本 Skill 获取缺失数据。\n\n4.  **迭代循环**：\n    - 重复执行 **阶段 B（差异检测）→ 阶段 C（决策补全）**，直至满足以下任一条件：\n      - ✅ 所有频率下的缺失项均已补全\n      - ⚠️ 达到最大重试次数5次，此时应向用户报告未能补全的数据项\n\n#### **阶段 D: 最终交付 (Final Delivery)**\n1.  **数据合并（可选）**：\n    - 如果需要，可将同一频率下多次查询的结果（如多个 `quarterly.csv` 文件）合并为一个完整的 `quarterly.csv`。\n2.  **状态报告**：\n    - 规划引擎应向上游（如用户界面）报告最终交付的文件列表，并可选地报告补全过程（如“系统已自动补全 2 个缺失数据项”）。\n---\n\n## 功能范围\n\n### 基础查询能力\n\n- **经济指标**：GDP、CPI、PPI、PMI、失业率、工业增加值等（支持指定国家/地区及具体指标名）。\n- **货币金融**：M1/M2 货币供应量、社融规模、国债利率、汇率（支持指定币种对）。\n- **商品价格**：黄金、白银、原油、铜、特定稀土氧化物等（**必须**指定具体品种）。\n- **时间频率**：自动识别相对时间（年、季、月、周、日）并匹配对应频率数据；若未指定，返回最新数据。\n\n### 查询示例对照表\n\n| 类型     | ❌ 禁止的模糊查询 (指标/品种不明)      | ✅ 允许的明确查询 (时间/地区可灵活)             |\n|----------|--------------------------------------|------------------------------------------------|\n| 国内经济 | 查询华东地区GDP                        | 查询华东地区 GDP                              |\n| 货币供应 | 查询主要新兴市场货币供应                | 查询中国、印度、巴西的 M2 货币供应量             |\n| 商品价格 | 查询稀土和有色金属价格                 | 查询氧化镨钕、铜、铝的现货价格走势                |\n| 全球宏观 | 查询 Top 3 经济体非农数据              | 查询美国、中国、德国的非农就业数据                |\n| 时间灵活 | (无)                                  | 查询美国过去十年的失业率趋势                    |\n| 默认时间 | (无)                                  | 查询日本最新的核心 CPI 数据                     |\n\n\n## 前提条件\n\n### 1. 注册东方财富妙想账号\n\n访问 https://ai.eastmoney.com/mxClaw 注册账号并获取API_KEY。\n\n### 2. 配置 Token\n\n```bash\n# macOS 添加到 ~/.zshrc，Linux 添加到 ~/.bashrc\nexport EM_API_KEY=\"your_api_key_here\"\n```\n\n然后根据系统执行对应的命令：\n\n**macOS：**\n```bash\nsource ~/.zshrc\n```\n\n**Linux：**\n```bash\nsource ~/.bashrc\n```\n\n### 3. 安装依赖\n\n\n```bash\npip3 install httpx --user\n```\n\n## 快速开始\n\n### 1. 命令行调用\n\n在项目根目录或配置的工作目录下执行：\n\n```bash\npython3 {baseDir}/scripts/get_data.py --query 中国GDP\n```\n**参数说明：**\n\n| 参数            | 说明             | 必填 |\n| --------------- | ---------------- | ---- |\n| `--query`       | 自然语言查询条件 | ✅    |\n```\n### 2. 代码调用\n\n```python\nimport asyncio\nfrom pathlib import Path\nfrom scripts.get_data import query_mx_macro_data\n\nasync def main():\n    result = await query_mx_macro_data(\n        query=\"中国近五年GDP\",\n        output_dir=Path(\"workspace/mx_macro_data\"),\n    )\n    if \"error\" in result:\n        print(result[\"error\"])\n    else:\n        print(f\"CSV: {r['csv_paths']}\")\n        print(f\"描述: {r['description_path']}\")\n        print(f\"行数: {r['row_counts']}\")\n\nasyncio.run(main())\n```\n\n输出示例：\n```\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_yearly.csv\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_quarterly.csv\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_monthly.csv\n描述:/path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_description.txt\n行数: 年: 10行, 季: 20行, 月: 40行\n```\n\n## 输出文件说明\n\n| 文件 | 说明 |\n|------|------|\n| `mx_macro_data_<查询ID>_<频率>.csv` | 按频率分组的宏观数据表，UTF-8 编码，可直接用 Excel 或 pandas 打开。 |\n| `mx_macro_data_<查询ID>_description.txt` | 说明文件，含各频率数据统计、数据来源和单位等信息。 |\n\n## 环境变量\n\n| 变量                      | 说明                                  | 默认                     |\n| ------------------------- | ------------------------------------- | ------------------------ |\n| `MX_MACRO_DATA_OUTPUT_DIR` | CSV 与描述文件的输出目录（可选）      | `workspace/mx_macro_data` |\n| `EM_API_KEY`              | 东方财富宏观查数工具 API 密钥（必备） | 无                       |\n\n## 常见问题\n\n### 用户常见问题\n\n**Q: 提示\"请设置 EM_API_KEY 环境变量\"怎么办？**\n\nA: 按以下步骤配置 API 密钥：\n1. 访问 [东方财富宏观查数工具](https://ai.eastmoney.com/mxClaw) 注册并获取 `API_KEY`。\n2. 配置环境变量：\n   ```bash\n   # macOS/Linux\n   export EM_API_KEY=\"your_api_key_here\"\n   \n   # Windows PowerShell\n   $env:EM_API_KEY=\"your_api_key_here\"\n   ```\n\n**Q: 如何指定输出目录？**\n\nA: 通过设置 `MX_MACRO_DATA_OUTPUT_DIR` 环境变量：\n```bash\nexport MX_MACRO_DATA_OUTPUT_DIR=\"/path/to/output\"\npython3 scripts/get_data.py --query \"查询内容\"\n```\n\n### 开发者常见问题（规划引擎集成）\n\n**Q: 为什么需要上层规划引擎做复核？**\n\nA: 本 Skill 专注于单一查询能力，不负责数据完整性校验。完整性验证（如\"中国各省\"是否真的覆盖全部省份）属于业务逻辑范畴，更适合由具备上下文理解和决策能力的规划引擎来处理。\n\n**Q: 如何判断何时进行复核？**\n\nA: 当原始用户意图包含以下特征时，应自动触发复核流程：\n- **集合性词汇**：如\"各省\"、\"各地区\"、\"华东地区\"等\n- **多指标查询**：如\"GDP 和 CPI\"、\"主要经济指标\"等\n\n**Q: 如何处理不同频率的数据？**\nA: **必须**对每种频率的 CSV 文件**分别**执行完整性审计和补全。年频数据的缺失不能用月频数据补全，反之亦然。\n\nFile v1.0.11:_meta.json\n\n{\n  \"ownerId\": \"kn7b4ptpdag877t9kmq8axyja182taab\",\n  \"slug\": \"mx-macro-data\",\n  \"version\": \"1.0.11\",\n  \"publishedAt\": 1775210126730\n}\n\nArchive v1.0.10: 3 files, 12656 bytes\n\nFiles: scripts/get_data.py (19776b), SKILL.md (13383b), _meta.json (133b)\n\nFile v1.0.10:SKILL.md\n\n---\r\nname: mx_macro_data\r\ndescription: 基于东方财富数据库，支持自然语言查询全球宏观经济数据，涵盖国民经济核算、价格指数、货币金融、财政收支、对外贸易、就业民生、产业运行等多个领域，适配各类宏观经济研究、市场分析、政策解读等多元专业场景需求。返回结果包含数据说明及 csv 文件。Natural language query for macroeconomic data from financial databases, covering national economic accounting, price indices, monetary finance, fiscal revenue and expenditure, foreign trade, employment, industrial operation, and other fields. It supports diverse scenarios including macroeconomic research, market analysis, and policy interpretation.\r\nmetadata:\r\n  {\r\n    \"openclaw\": {\r\n      \"install\": [\r\n        {\r\n          \"id\": \"pip-deps\",\r\n          \"kind\": \"python\",\r\n          \"package\": \"httpx\",\r\n          \"label\": \"Install Python dependencies\"\r\n        }\r\n      ]\r\n    }\r\n  }\r\n---\r\n\r\n# 宏观经济数据查询 (mx_macro_data)\r\n\r\n通过**文本输入**查询宏观经济数据，接口返回 JSON 后会自动转换为 **CSV** 并生成对应的**内容描述 txt** 文件。\r\n\r\n## 密钥来源与安全说明\r\n\r\n- 本技能仅使用一个环境变量：`EM_API_KEY`。\r\n- `EM_API_KEY` 由东方财富妙想服务（`https://ai.eastmoney.com/mxClaw`）签发，用于其接口鉴权。\r\n- 在提供密钥前，请先确认密钥来源、可用范围、有效期及是否支持重置/撤销。\r\n- 禁止在代码、提示词、日志或输出文件中硬编码/明文暴露密钥。\r\n\r\n## ⚠️ 核心输入约束 (Critical Input Constraints)\r\n\r\n- **时间维度**：支持相对时间表述（如“今年”、“过去三年”、“上月”）。\r\n- **地域维度**：支持宏观地区表述（如“中国”、“美国”、“欧元区”、“华东地区”、“中国各省”），无需拆解为具体省市列表。\r\n\r\n### 1. 禁止模糊商品类别 (No Ambiguous Commodities)\r\n- **禁止输入**：大类统称（如“稀土金属”、“有色金属”、“农产品”、“能源”、“科技股”）。\r\n- **要求**：必须解包为具体的**交易品种名称或代码**。\r\n  - ❌ 错误：`\"查询稀土价格走势\"`\r\n  - ✅ 正确：`\"查询氧化镨钕、氧化镝、氧化铽的价格走势\"`\r\n\r\n### 2. 禁止宏观泛指指标 (No Macro Generalizations without Metrics)\r\n- **禁止输入**：宽泛的经济概念而无具体指标（如“中国经济”、“美国制造业状况”、“全球通胀情况”）。\r\n- **要求**：必须指定具体的**指标名称**（如 GDP、CPI、PMI、失业率、工业增加值等）。\r\n  - ❌ 错误：`\"查询中国经济数据\"`\r\n  - ✅ 正确：`\"查询中国 GDP 同比增速、中国 CPI 同比\"`\r\n  - ✅ 正确：`\"查询美国制造业 PMI\"` (地域允许宏观，但指标必须具体)\r\n\r\n### 3. 时间与地域的灵活性 (Flexible Time & Region)\r\n- **时间**：无需绝对日期。\r\n  - ✅ 允许：`\"查询中国过去五年的M2增速\"`、`\"查询上个月美国的非农数据\"`、`\"查询黄金今日价格\"`。\r\n  - ✅ 允许（缺省）：`\"查询德国失业率\"` 。\r\n- **地域**：无需拆解为子集列表。\r\n  - ✅ 允许：`\"查询华东地区GDP\"`,`\"查询中国各省GDP\"`。\r\n  - ⚠️ 注意：若涉及“主要新兴市场”、“Top 5 国家”等动态排名指代，仍建议上层模型解包为具体国家列表（如 `\"查询中国、印度、巴西的M2\"`），以确保数据源一致性。\r\n\r\n## 🔄 输出接口与上层规划协议 (Output Interface & Orchestration Protocol)\r\n\r\n本 Skill 仅负责执行单次查询并生成文件。**为实现数据完整性保障，上层规划引擎必须根据以下协议，对本 Skill 的输出进行后续处理。**\r\n\r\n### 1. 输出文件结构 (Output File Structure)\r\n执行 `mx_macro_data` 后，Skill 将在指定目录下生成一个或多个 CSV 文件，以及一个描述文件。\r\n\r\n- **CSV 文件**：`mx_macro_data_<查询ID>_<频率>.csv`\r\n  - *示例*：`mx_macro_data_4591GG28_yearly.csv`, `mx_macro_data_4591GG28_quarterly.csv`, `mx_macro_data_4591GG28_monthly.csv`\r\n  - **注意**：文件数量和频率取决于查询指标的可用性（yearly、quarterly、monthly、weekly、daily）。\r\n- **描述文件**：`mx_macro_data_<查询ID>_description.txt`\r\n  - 包含数据来源、时间范围、指标说明等基础信息。\r\n\r\n### 2. 上层规划引擎必须执行的“完整性复核”逻辑 (Mandatory Verification Logic for Orchestrator)\r\n\r\n上层规划引擎在调用 `mx_macro_data` 后，**必须**执行以下工作流，以确保最终结果的完整性：\r\n#### **阶段 A: 任务解析与预期规划 (Task Parsing & Expectation Planning)**\r\n1.  **解析原始用户意图**：从用户查询中提取核心要素。\r\n2.  **构建预期全集 (Expected Universe)**：\r\n    - **地域**：通过规划引擎的内置知识库、搜索引擎或 LLM 推理能力，将模糊地域表述解析为具体行政单元。例如：\"中国各省\" → 34 个省级行政区；\"华东地区\" → 上海、江苏、浙江、安徽、福建、江西、山东共 7 个省市。\r\n    - **指标**：将复合指标拆解为独立指标。例如：\"GDP, CPI\" → [\"GDP\", \"CPI\"]。\r\n    - **频率**：根据查询语境推断预期频率，可能生成多个频率的数据文件（yearly、quarterly、monthly等）。\r\n\r\n#### **阶段 B: 文件读取与差异检测 (File Reading   & Gap Detection)**\r\n1.  **获取输出文件列表**：获取 `mx_macro_data` 生成的所有 CSV 文件路径。\r\n2.  **读取并分析每个文件**：\r\n    - 使用规划引擎内置的代码执行能力（如 Python Sandbox）读取 CSV。\r\n    - 提取每个文件中实际覆盖的 `(地区, 指标)` 组合及其数量。\r\n3.  **执行差异计算**：\r\n    - 对**每一种频率**的文件，分别计算 `Missing_Pairs_<Frequency> = Expected_Universe - Actual_From_CSV_File`。\r\n    - 识别出具体缺失的项（如：年频数据中缺失“西藏-GDP”）。\r\n\r\n#### **阶段 C: 决策与迭代调用 (Decision & Iterative Invocation)**\r\n\r\n> ⚠️ **强制要求**：上层规划引擎**必须**执行以下补全流程，不得在存在缺失数据时直接交付结果。\r\n\r\n1.  **判断是否需要补全**：\r\n    - 如果所有频率的 `Missing_Pairs` 集合均为空：**结束流程**，交付现有文件。\r\n    - 如果存在非空的 `Missing_Pairs` 集合：**必须进入补全流程**，不可跳过。\r\n\r\n2.  **构建补全查询**：\r\n    - 根据 `Missing_Pairs_<Frequency>` 中的缺失项，结合原始查询的时间维度，构造新的自然语言查询。\r\n    - **示例**：\r\n      ```\r\n      Missing_Pairs_季 = [(\"西藏\", \"GDP\"), (\"宁夏\", \"GDP\")]\r\n      ↓\r\n      补全查询 = \"查询西藏自治区、宁夏回族自治区的 GDP 季度数据，时间范围同前次查询\"\r\n      ```\r\n\r\n3.  **再次调用 `mx_macro_data`**：\r\n    - 使用新构造的补全查询，再次调用本 Skill 获取缺失数据。\r\n\r\n4.  **迭代循环**：\r\n    - 重复执行 **阶段 B（差异检测）→ 阶段 C（决策补全）**，直至满足以下任一条件：\r\n      - ✅ 所有频率下的缺失项均已补全\r\n      - ⚠️ 达到最大重试次数5次，此时应向用户报告未能补全的数据项\r\n\r\n#### **阶段 D: 最终交付 (Final Delivery)**\r\n1.  **数据合并（可选）**：\r\n    - 如果需要，可将同一频率下多次查询的结果（如多个 `quarterly.csv` 文件）合并为一个完整的 `quarterly.csv`。\r\n2.  **状态报告**：\r\n    - 规划引擎应向上游（如用户界面）报告最终交付的文件列表，并可选地报告补全过程（如“系统已自动补全 2 个缺失数据项”）。\r\n---\r\n\r\n## 功能范围\r\n\r\n### 基础查询能力\r\n\r\n- **经济指标**：GDP、CPI、PPI、PMI、失业率、工业增加值等（支持指定国家/地区及具体指标名）。\r\n- **货币金融**：M1/M2 货币供应量、社融规模、国债利率、汇率（支持指定币种对）。\r\n- **商品价格**：黄金、白银、原油、铜、特定稀土氧化物等（**必须**指定具体品种）。\r\n- **时间频率**：自动识别相对时间（年、季、月、周、日）并匹配对应频率数据；若未指定，返回最新数据。\r\n\r\n### 查询示例对照表\r\n\r\n| 类型     | ❌ 禁止的模糊查询 (指标/品种不明)      | ✅ 允许的明确查询 (时间/地区可灵活)             |\r\n|----------|--------------------------------------|------------------------------------------------|\r\n| 国内经济 | 查询华东地区GDP                        | 查询华东地区 GDP                              |\r\n| 货币供应 | 查询主要新兴市场货币供应                | 查询中国、印度、巴西的 M2 货币供应量             |\r\n| 商品价格 | 查询稀土和有色金属价格                 | 查询氧化镨钕、铜、铝的现货价格走势                |\r\n| 全球宏观 | 查询 Top 3 经济体非农数据              | 查询美国、中国、德国的非农就业数据                |\r\n| 时间灵活 | (无)                                  | 查询美国过去十年的失业率趋势                    |\r\n| 默认时间 | (无)                                  | 查询日本最新的核心 CPI 数据                     |\r\n\r\n\r\n## 前提条件\r\n\r\n### 1. 注册东方财富妙想账号\r\n\r\n访问 https://ai.eastmoney.com/mxClaw 注册账号并获取API_KEY。\r\n\r\n### 2. 配置 Token\r\n\r\n```bash\r\n# macOS 添加到 ~/.zshrc，Linux 添加到 ~/.bashrc\r\nexport EM_API_KEY=\"your_api_key_here\"\r\n```\r\n\r\n然后根据系统执行对应的命令：\r\n\r\n**macOS：**\r\n```bash\r\nsource ~/.zshrc\r\n```\r\n\r\n**Linux：**\r\n```bash\r\nsource ~/.bashrc\r\n```\r\n\r\n### 3. 安装依赖\r\n\r\n\r\n```bash\r\npip3 install httpx --user\r\n```\r\n\r\n## 快速开始\r\n\r\n### 1. 命令行调用\r\n\r\n在项目根目录或配置的工作目录下执行：\r\n\r\n```bash\r\npython3 {baseDir}/scripts/get_data.py --query 中国GDP\r\n```\r\n**参数说明：**\r\n\r\n| 参数            | 说明             | 必填 |\r\n| --------------- | ---------------- | ---- |\r\n| `--query`       | 自然语言查询条件 | ✅    |\r\n```\r\n### 2. 代码调用\r\n\r\n```python\r\nimport asyncio\r\nfrom pathlib import Path\r\nfrom scripts.get_data import query_mx_macro_data\r\n\r\nasync def main():\r\n    result = await query_mx_macro_data(\r\n        query=\"中国近五年GDP\",\r\n        output_dir=Path(\"workspace/mx_macro_data\"),\r\n    )\r\n    if \"error\" in result:\r\n        print(result[\"error\"])\r\n    else:\r\n        print(f\"CSV: {r['csv_paths']}\")\r\n        print(f\"描述: {r['description_path']}\")\r\n        print(f\"行数: {r['row_counts']}\")\r\n\r\nasyncio.run(main())\r\n```\r\n\r\n输出示例：\r\n```\r\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_yearly.csv\r\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_quarterly.csv\r\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_monthly.csv\r\n描述:/path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_description.txt\r\n行数: 年: 10行, 季: 20行, 月: 40行\r\n```\r\n\r\n## 输出文件说明\r\n\r\n| 文件 | 说明 |\r\n|------|------|\r\n| `mx_macro_data_<查询ID>_<频率>.csv` | 按频率分组的宏观数据表，UTF-8 编码，可直接用 Excel 或 pandas 打开。 |\r\n| `mx_macro_data_<查询ID>_description.txt` | 说明文件，含各频率数据统计、数据来源和单位等信息。 |\r\n\r\n## 环境变量\r\n\r\n| 变量                      | 说明                                  | 默认                     |\r\n| ------------------------- | ------------------------------------- | ------------------------ |\r\n| `MX_MACRO_DATA_OUTPUT_DIR` | CSV 与描述文件的输出目录（可选）      | `workspace/mx_macro_data` |\r\n| `EM_API_KEY`              | 东方财富宏观查数工具 API 密钥（必备） | 无                       |\r\n\r\n## 常见问题\r\n\r\n### 用户常见问题\r\n\r\n**Q: 提示\"请设置 EM_API_KEY 环境变量\"怎么办？**\r\n\r\nA: 按以下步骤配置 API 密钥：\r\n1. 访问 [东方财富宏观查数工具](https://ai.eastmoney.com/mxClaw) 注册并获取 `API_KEY`。\r\n2. 配置环境变量：\r\n   ```bash\r\n   # macOS/Linux\r\n   export EM_API_KEY=\"your_api_key_here\"\r\n   \r\n   # Windows PowerShell\r\n   $env:EM_API_KEY=\"your_api_key_here\"\r\n   ```\r\n\r\n**Q: 如何指定输出目录？**\r\n\r\nA: 通过设置 `MX_MACRO_DATA_OUTPUT_DIR` 环境变量：\r\n```bash\r\nexport MX_MACRO_DATA_OUTPUT_DIR=\"/path/to/output\"\r\npython3 scripts/get_data.py --query \"查询内容\"\r\n```\r\n\r\n### 开发者常见问题（规划引擎集成）\r\n\r\n**Q: 为什么需要上层规划引擎做复核？**\r\n\r\nA: 本 Skill 专注于单一查询能力，不负责数据完整性校验。完整性验证（如\"中国各省\"是否真的覆盖全部省份）属于业务逻辑范畴，更适合由具备上下文理解和决策能力的规划引擎来处理。\r\n\r\n**Q: 如何判断何时进行复核？**\r\n\r\nA: 当原始用户意图包含以下特征时，应自动触发复核流程：\r\n- **集合性词汇**：如\"各省\"、\"各地区\"、\"华东地区\"等\r\n- **多指标查询**：如\"GDP 和 CPI\"、\"主要经济指标\"等\r\n\r\n**Q: 如何处理不同频率的数据？**\r\nA: **必须**对每种频率的 CSV 文件**分别**执行完整性审计和补全。年频数据的缺失不能用月频数据补全，反之亦然。\n\nFile v1.0.10:_meta.json\n\n{\n  \"ownerId\": \"kn7b4ptpdag877t9kmq8axyja182taab\",\n  \"slug\": \"mx-macro-data\",\n  \"version\": \"1.0.10\",\n  \"publishedAt\": 1774606802101\n}\n\nArchive v1.0.9: 3 files, 12697 bytes\n\nFiles: scripts/get_data.py (19776b), SKILL.md (13483b), _meta.json (132b)\n\nFile v1.0.9:SKILL.md\n\n---\r\nname: mx_macro_data\r\ndescription: 基于东方财富数据库，支持自然语言查询全球宏观经济数据，涵盖国民经济核算、价格指数、货币金融、财政收支、对外贸易、就业民生、产业运行等多个领域，适配各类宏观经济研究、市场分析、政策解读等多元专业场景需求。返回结果包含数据说明及 csv 文件。Natural language query for macroeconomic data from financial databases, covering national economic accounting, price indices, monetary finance, fiscal revenue and expenditure, foreign trade, employment, industrial operation, and other fields. It supports diverse scenarios including macroeconomic research, market analysis, and policy interpretation.\r\nmetadata:\r\n  {\r\n    \"openclaw\": {\r\n      \"requires\": {\r\n        \"env\": [\"EM_API_KEY\"],\r\n        \"bins\": [\"python3\", \"pip3\"]\r\n      },\r\n      \"install\": [\r\n        {\r\n          \"id\": \"pip-deps\",\r\n          \"kind\": \"python\",\r\n          \"package\": \"httpx\",\r\n          \"label\": \"Install Python dependencies\"\r\n        }\r\n      ]\r\n    }\r\n  }\r\n---\r\n\r\n# 宏观经济数据查询 (mx_macro_data)\r\n\r\n通过**文本输入**查询宏观经济数据，接口返回 JSON 后会自动转换为 **CSV** 并生成对应的**内容描述 txt** 文件。\r\n\r\n## 密钥来源与安全说明\r\n\r\n- 本技能仅使用一个环境变量：`EM_API_KEY`。\r\n- `EM_API_KEY` 由东方财富妙想服务（`https://ai.eastmoney.com/mxClaw`）签发，用于其接口鉴权。\r\n- 在提供密钥前，请先确认密钥来源、可用范围、有效期及是否支持重置/撤销。\r\n- 禁止在代码、提示词、日志或输出文件中硬编码/明文暴露密钥。\r\n\r\n## ⚠️ 核心输入约束 (Critical Input Constraints)\r\n\r\n- **时间维度**：支持相对时间表述（如“今年”、“过去三年”、“上月”）。\r\n- **地域维度**：支持宏观地区表述（如“中国”、“美国”、“欧元区”、“华东地区”、“中国各省”），无需拆解为具体省市列表。\r\n\r\n### 1. 禁止模糊商品类别 (No Ambiguous Commodities)\r\n- **禁止输入**：大类统称（如“稀土金属”、“有色金属”、“农产品”、“能源”、“科技股”）。\r\n- **要求**：必须解包为具体的**交易品种名称或代码**。\r\n  - ❌ 错误：`\"查询稀土价格走势\"`\r\n  - ✅ 正确：`\"查询氧化镨钕、氧化镝、氧化铽的价格走势\"`\r\n\r\n### 2. 禁止宏观泛指指标 (No Macro Generalizations without Metrics)\r\n- **禁止输入**：宽泛的经济概念而无具体指标（如“中国经济”、“美国制造业状况”、“全球通胀情况”）。\r\n- **要求**：必须指定具体的**指标名称**（如 GDP、CPI、PMI、失业率、工业增加值等）。\r\n  - ❌ 错误：`\"查询中国经济数据\"`\r\n  - ✅ 正确：`\"查询中国 GDP 同比增速、中国 CPI 同比\"`\r\n  - ✅ 正确：`\"查询美国制造业 PMI\"` (地域允许宏观，但指标必须具体)\r\n\r\n### 3. 时间与地域的灵活性 (Flexible Time & Region)\r\n- **时间**：无需绝对日期。\r\n  - ✅ 允许：`\"查询中国过去五年的M2增速\"`、`\"查询上个月美国的非农数据\"`、`\"查询黄金今日价格\"`。\r\n  - ✅ 允许（缺省）：`\"查询德国失业率\"` 。\r\n- **地域**：无需拆解为子集列表。\r\n  - ✅ 允许：`\"查询华东地区GDP\"`,`\"查询中国各省GDP\"`。\r\n  - ⚠️ 注意：若涉及“主要新兴市场”、“Top 5 国家”等动态排名指代，仍建议上层模型解包为具体国家列表（如 `\"查询中国、印度、巴西的M2\"`），以确保数据源一致性。\r\n\r\n## 🔄 输出接口与上层规划协议 (Output Interface & Orchestration Protocol)\r\n\r\n本 Skill 仅负责执行单次查询并生成文件。**为实现数据完整性保障，上层规划引擎必须根据以下协议，对本 Skill 的输出进行后续处理。**\r\n\r\n### 1. 输出文件结构 (Output File Structure)\r\n执行 `mx_macro_data` 后，Skill 将在指定目录下生成一个或多个 CSV 文件，以及一个描述文件。\r\n\r\n- **CSV 文件**：`mx_macro_data_<查询ID>_<频率>.csv`\r\n  - *示例*：`mx_macro_data_4591GG28_yearly.csv`, `mx_macro_data_4591GG28_quarterly.csv`, `mx_macro_data_4591GG28_monthly.csv`\r\n  - **注意**：文件数量和频率取决于查询指标的可用性（yearly、quarterly、monthly、weekly、daily）。\r\n- **描述文件**：`mx_macro_data_<查询ID>_description.txt`\r\n  - 包含数据来源、时间范围、指标说明等基础信息。\r\n\r\n### 2. 上层规划引擎必须执行的“完整性复核”逻辑 (Mandatory Verification Logic for Orchestrator)\r\n\r\n上层规划引擎在调用 `mx_macro_data` 后，**必须**执行以下工作流，以确保最终结果的完整性：\r\n#### **阶段 A: 任务解析与预期规划 (Task Parsing & Expectation Planning)**\r\n1.  **解析原始用户意图**：从用户查询中提取核心要素。\r\n2.  **构建预期全集 (Expected Universe)**：\r\n    - **地域**：通过规划引擎的内置知识库、搜索引擎或 LLM 推理能力，将模糊地域表述解析为具体行政单元。例如：\"中国各省\" → 34 个省级行政区；\"华东地区\" → 上海、江苏、浙江、安徽、福建、江西、山东共 7 个省市。\r\n    - **指标**：将复合指标拆解为独立指标。例如：\"GDP, CPI\" → [\"GDP\", \"CPI\"]。\r\n    - **频率**：根据查询语境推断预期频率，可能生成多个频率的数据文件（yearly、quarterly、monthly等）。\r\n\r\n#### **阶段 B: 文件读取与差异检测 (File Reading   & Gap Detection)**\r\n1.  **获取输出文件列表**：获取 `mx_macro_data` 生成的所有 CSV 文件路径。\r\n2.  **读取并分析每个文件**：\r\n    - 使用规划引擎内置的代码执行能力（如 Python Sandbox）读取 CSV。\r\n    - 提取每个文件中实际覆盖的 `(地区, 指标)` 组合及其数量。\r\n3.  **执行差异计算**：\r\n    - 对**每一种频率**的文件，分别计算 `Missing_Pairs_<Frequency> = Expected_Universe - Actual_From_CSV_File`。\r\n    - 识别出具体缺失的项（如：年频数据中缺失“西藏-GDP”）。\r\n\r\n#### **阶段 C: 决策与迭代调用 (Decision & Iterative Invocation)**\r\n\r\n> ⚠️ **强制要求**：上层规划引擎**必须**执行以下补全流程，不得在存在缺失数据时直接交付结果。\r\n\r\n1.  **判断是否需要补全**：\r\n    - 如果所有频率的 `Missing_Pairs` 集合均为空：**结束流程**，交付现有文件。\r\n    - 如果存在非空的 `Missing_Pairs` 集合：**必须进入补全流程**，不可跳过。\r\n\r\n2.  **构建补全查询**：\r\n    - 根据 `Missing_Pairs_<Frequency>` 中的缺失项，结合原始查询的时间维度，构造新的自然语言查询。\r\n    - **示例**：\r\n      ```\r\n      Missing_Pairs_季 = [(\"西藏\", \"GDP\"), (\"宁夏\", \"GDP\")]\r\n      ↓\r\n      补全查询 = \"查询西藏自治区、宁夏回族自治区的 GDP 季度数据，时间范围同前次查询\"\r\n      ```\r\n\r\n3.  **再次调用 `mx_macro_data`**：\r\n    - 使用新构造的补全查询，再次调用本 Skill 获取缺失数据。\r\n\r\n4.  **迭代循环**：\r\n    - 重复执行 **阶段 B（差异检测）→ 阶段 C（决策补全）**，直至满足以下任一条件：\r\n      - ✅ 所有频率下的缺失项均已补全\r\n      - ⚠️ 达到最大重试次数5次，此时应向用户报告未能补全的数据项\r\n\r\n#### **阶段 D: 最终交付 (Final Delivery)**\r\n1.  **数据合并（可选）**：\r\n    - 如果需要，可将同一频率下多次查询的结果（如多个 `quarterly.csv` 文件）合并为一个完整的 `quarterly.csv`。\r\n2.  **状态报告**：\r\n    - 规划引擎应向上游（如用户界面）报告最终交付的文件列表，并可选地报告补全过程（如“系统已自动补全 2 个缺失数据项”）。\r\n---\r\n\r\n## 功能范围\r\n\r\n### 基础查询能力\r\n\r\n- **经济指标**：GDP、CPI、PPI、PMI、失业率、工业增加值等（支持指定国家/地区及具体指标名）。\r\n- **货币金融**：M1/M2 货币供应量、社融规模、国债利率、汇率（支持指定币种对）。\r\n- **商品价格**：黄金、白银、原油、铜、特定稀土氧化物等（**必须**指定具体品种）。\r\n- **时间频率**：自动识别相对时间（年、季、月、周、日）并匹配对应频率数据；若未指定，返回最新数据。\r\n\r\n### 查询示例对照表\r\n\r\n| 类型     | ❌ 禁止的模糊查询 (指标/品种不明)      | ✅ 允许的明确查询 (时间/地区可灵活)             |\r\n|----------|--------------------------------------|------------------------------------------------|\r\n| 国内经济 | 查询华东地区GDP                        | 查询华东地区 GDP                              |\r\n| 货币供应 | 查询主要新兴市场货币供应                | 查询中国、印度、巴西的 M2 货币供应量             |\r\n| 商品价格 | 查询稀土和有色金属价格                 | 查询氧化镨钕、铜、铝的现货价格走势                |\r\n| 全球宏观 | 查询 Top 3 经济体非农数据              | 查询美国、中国、德国的非农就业数据                |\r\n| 时间灵活 | (无)                                  | 查询美国过去十年的失业率趋势                    |\r\n| 默认时间 | (无)                                  | 查询日本最新的核心 CPI 数据                     |\r\n\r\n\r\n## 前提条件\r\n\r\n### 1. 注册东方财富妙想账号\r\n\r\n访问 https://ai.eastmoney.com/mxClaw 注册账号并获取API_KEY。\r\n\r\n### 2. 配置 Token\r\n\r\n```bash\r\n# macOS 添加到 ~/.zshrc，Linux 添加到 ~/.bashrc\r\nexport EM_API_KEY=\"your_api_key_here\"\r\n```\r\n\r\n然后根据系统执行对应的命令：\r\n\r\n**macOS：**\r\n```bash\r\nsource ~/.zshrc\r\n```\r\n\r\n**Linux：**\r\n```bash\r\nsource ~/.bashrc\r\n```\r\n\r\n### 3. 安装依赖\r\n\r\n\r\n```bash\r\npip3 install httpx --user\r\n```\r\n\r\n## 快速开始\r\n\r\n### 1. 命令行调用\r\n\r\n在项目根目录或配置的工作目录下执行：\r\n\r\n```bash\r\npython3 {baseDir}/scripts/get_data.py --query 中国GDP\r\n```\r\n**参数说明：**\r\n\r\n| 参数            | 说明             | 必填 |\r\n| --------------- | ---------------- | ---- |\r\n| `--query`       | 自然语言查询条件 | ✅    |\r\n```\r\n### 2. 代码调用\r\n\r\n```python\r\nimport asyncio\r\nfrom pathlib import Path\r\nfrom scripts.get_data import query_mx_macro_data\r\n\r\nasync def main():\r\n    result = await query_mx_macro_data(\r\n        query=\"中国近五年GDP\",\r\n        output_dir=Path(\"workspace/mx_macro_data\"),\r\n    )\r\n    if \"error\" in result:\r\n        print(result[\"error\"])\r\n    else:\r\n        print(f\"CSV: {r['csv_paths']}\")\r\n        print(f\"描述: {r['description_path']}\")\r\n        print(f\"行数: {r['row_counts']}\")\r\n\r\nasyncio.run(main())\r\n```\r\n\r\n输出示例：\r\n```\r\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_yearly.csv\r\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_quarterly.csv\r\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_monthly.csv\r\n描述:/path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_description.txt\r\n行数: 年: 10行, 季: 20行, 月: 40行\r\n```\r\n\r\n## 输出文件说明\r\n\r\n| 文件 | 说明 |\r\n|------|------|\r\n| `mx_macro_data_<查询ID>_<频率>.csv` | 按频率分组的宏观数据表，UTF-8 编码，可直接用 Excel 或 pandas 打开。 |\r\n| `mx_macro_data_<查询ID>_description.txt` | 说明文件，含各频率数据统计、数据来源和单位等信息。 |\r\n\r\n## 环境变量\r\n\r\n| 变量                      | 说明                                  | 默认                     |\r\n| ------------------------- | ------------------------------------- | ------------------------ |\r\n| `MX_MACRO_DATA_OUTPUT_DIR` | CSV 与描述文件的输出目录（可选）      | `workspace/mx_macro_data` |\r\n| `EM_API_KEY`              | 东方财富宏观查数工具 API 密钥（必备） | 无                       |\r\n\r\n## 常见问题\r\n\r\n### 用户常见问题\r\n\r\n**Q: 提示\"请设置 EM_API_KEY 环境变量\"怎么办？**\r\n\r\nA: 按以下步骤配置 API 密钥：\r\n1. 访问 [东方财富宏观查数工具](https://ai.eastmoney.com/mxClaw) 注册并获取 `API_KEY`。\r\n2. 配置环境变量：\r\n   ```bash\r\n   # macOS/Linux\r\n   export EM_API_KEY=\"your_api_key_here\"\r\n   \r\n   # Windows PowerShell\r\n   $env:EM_API_KEY=\"your_api_key_here\"\r\n   ```\r\n\r\n**Q: 如何指定输出目录？**\r\n\r\nA: 通过设置 `MX_MACRO_DATA_OUTPUT_DIR` 环境变量：\r\n```bash\r\nexport MX_MACRO_DATA_OUTPUT_DIR=\"/path/to/output\"\r\npython3 scripts/get_data.py --query \"查询内容\"\r\n```\r\n\r\n### 开发者常见问题（规划引擎集成）\r\n\r\n**Q: 为什么需要上层规划引擎做复核？**\r\n\r\nA: 本 Skill 专注于单一查询能力，不负责数据完整性校验。完整性验证（如\"中国各省\"是否真的覆盖全部省份）属于业务逻辑范畴，更适合由具备上下文理解和决策能力的规划引擎来处理。\r\n\r\n**Q: 如何判断何时进行复核？**\r\n\r\nA: 当原始用户意图包含以下特征时，应自动触发复核流程：\r\n- **集合性词汇**：如\"各省\"、\"各地区\"、\"华东地区\"等\r\n- **多指标查询**：如\"GDP 和 CPI\"、\"主要经济指标\"等\r\n\r\n**Q: 如何处理不同频率的数据？**\r\nA: **必须**对每种频率的 CSV 文件**分别**执行完整性审计和补全。年频数据的缺失不能用月频数据补全，反之亦然。\n\nFile v1.0.9:_meta.json\n\n{\n  \"ownerId\": \"kn7b4ptpdag877t9kmq8axyja182taab\",\n  \"slug\": \"mx-macro-data\",\n  \"version\": \"1.0.9\",\n  \"publishedAt\": 1774260486579\n}\n\nArchive v1.0.8: 3 files, 12673 bytes\n\nFiles: scripts/get_data.py (19505b), SKILL.md (13092b), _meta.json (132b)\n\nFile v1.0.8:SKILL.md\n\n---\nname: mx_macro_data\ndescription: 基于东方财富数据库，支持自然语言查询全球宏观经济数据，涵盖国民经济核算、价格指数、货币金融、财政收支、对外贸易、就业民生、产业运行等多个领域，适配各类宏观经济研究、市场分析、政策解读等多元专业场景需求。返回结果包含数据说明及 csv 文件。Natural language query for macroeconomic data from financial databases, covering national economic accounting, price indices, monetary finance, fiscal revenue and expenditure, foreign trade, employment, industrial operation, and other fields. It supports diverse scenarios including macroeconomic research, market analysis, and policy interpretation.\nmetadata:\n  {\n    \"openclaw\": {\n      \"requires\": {\n        \"env\": [\"EM_API_KEY\"],\n        \"bins\": [\"python3\", \"pip3\"]\n      },\n      \"install\": [\n        {\n          \"id\": \"pip-deps\",\n          \"kind\": \"python\",\n          \"package\": \"httpx\",\n          \"label\": \"Install Python dependencies\"\n        }\n      ]\n    }\n  }\n---\n\n# 宏观经济数据查询 (mx_macro_data)\n\n通过**文本输入**查询宏观经济数据，接口返回 JSON 后会自动转换为 **CSV** 并生成对应的**内容描述 txt** 文件。\n\n## 密钥来源与安全说明\n\n- 本技能仅使用一个环境变量：`EM_API_KEY`。\n- `EM_API_KEY` 由东方财富妙想服务（`https://ai.eastmoney.com/mxClaw`）签发，用于其接口鉴权。\n- 在提供密钥前，请先确认密钥来源、可用范围、有效期及是否支持重置/撤销。\n- 禁止在代码、提示词、日志或输出文件中硬编码/明文暴露密钥。\n\n## ⚠️ 核心输入约束 (Critical Input Constraints)\n\n- **时间维度**：支持相对时间表述（如“今年”、“过去三年”、“上月”）。\n- **地域维度**：支持宏观地区表述（如“中国”、“美国”、“欧元区”、“华东地区”、“中国各省”），无需拆解为具体省市列表。\n\n### 1. 禁止模糊商品类别 (No Ambiguous Commodities)\n- **禁止输入**：大类统称（如“稀土金属”、“有色金属”、“农产品”、“能源”、“科技股”）。\n- **要求**：必须解包为具体的**交易品种名称或代码**。\n  - ❌ 错误：`\"查询稀土价格走势\"`\n  - ✅ 正确：`\"查询氧化镨钕、氧化镝、氧化铽的价格走势\"`\n\n### 2. 禁止宏观泛指指标 (No Macro Generalizations without Metrics)\n- **禁止输入**：宽泛的经济概念而无具体指标（如“中国经济”、“美国制造业状况”、“全球通胀情况”）。\n- **要求**：必须指定具体的**指标名称**（如 GDP、CPI、PMI、失业率、工业增加值等）。\n  - ❌ 错误：`\"查询中国经济数据\"`\n  - ✅ 正确：`\"查询中国 GDP 同比增速、中国 CPI 同比\"`\n  - ✅ 正确：`\"查询美国制造业 PMI\"` (地域允许宏观，但指标必须具体)\n\n### 3. 时间与地域的灵活性 (Flexible Time & Region)\n- **时间**：无需绝对日期。\n  - ✅ 允许：`\"查询中国过去五年的M2增速\"`、`\"查询上个月美国的非农数据\"`、`\"查询黄金今日价格\"`。\n  - ✅ 允许（缺省）：`\"查询德国失业率\"` 。\n- **地域**：无需拆解为子集列表。\n  - ✅ 允许：`\"查询华东地区GDP\"`,`\"查询中国各省GDP\"`。\n  - ⚠️ 注意：若涉及“主要新兴市场”、“Top 5 国家”等动态排名指代，仍建议上层模型解包为具体国家列表（如 `\"查询中国、印度、巴西的M2\"`），以确保数据源一致性。\n\n## 🔄 输出接口与上层规划协议 (Output Interface & Orchestration Protocol)\n\n本 Skill 仅负责执行单次查询并生成文件。**为实现数据完整性保障，上层规划引擎必须根据以下协议，对本 Skill 的输出进行后续处理。**\n\n### 1. 输出文件结构 (Output File Structure)\n执行 `mx_macro_data` 后，Skill 将在指定目录下生成一个或多个 CSV 文件，以及一个描述文件。\n\n- **CSV 文件**：`mx_macro_data_<查询ID>_<频率>.csv`\n  - *示例*：`mx_macro_data_4591GG28_yearly.csv`, `mx_macro_data_4591GG28_quarterly.csv`, `mx_macro_data_4591GG28_monthly.csv`\n  - **注意**：文件数量和频率取决于查询指标的可用性（yearly、quarterly、monthly、weekly、daily）。\n- **描述文件**：`mx_macro_data_<查询ID>_description.txt`\n  - 包含数据来源、时间范围、指标说明等基础信息。\n\n### 2. 上层规划引擎必须执行的“完整性复核”逻辑 (Mandatory Verification Logic for Orchestrator)\n\n上层规划引擎在调用 `mx_macro_data` 后，**必须**执行以下工作流，以确保最终结果的完整性：\n#### **阶段 A: 任务解析与预期规划 (Task Parsing & Expectation Planning)**\n1.  **解析原始用户意图**：从用户查询中提取核心要素。\n2.  **构建预期全集 (Expected Universe)**：\n    - **地域**：通过规划引擎的内置知识库、搜索引擎或 LLM 推理能力，将模糊地域表述解析为具体行政单元。例如：\"中国各省\" → 34 个省级行政区；\"华东地区\" → 上海、江苏、浙江、安徽、福建、江西、山东共 7 个省市。\n    - **指标**：将复合指标拆解为独立指标。例如：\"GDP, CPI\" → [\"GDP\", \"CPI\"]。\n    - **频率**：根据查询语境推断预期频率，可能生成多个频率的数据文件（yearly、quarterly、monthly等）。\n\n#### **阶段 B: 文件读取与差异检测 (File Reading   & Gap Detection)**\n1.  **获取输出文件列表**：获取 `mx_macro_data` 生成的所有 CSV 文件路径。\n2.  **读取并分析每个文件**：\n    - 使用规划引擎内置的代码执行能力（如 Python Sandbox）读取 CSV。\n    - 提取每个文件中实际覆盖的 `(地区, 指标)` 组合及其数量。\n3.  **执行差异计算**：\n    - 对**每一种频率**的文件，分别计算 `Missing_Pairs_<Frequency> = Expected_Universe - Actual_From_CSV_File`。\n    - 识别出具体缺失的项（如：年频数据中缺失“西藏-GDP”）。\n\n#### **阶段 C: 决策与迭代调用 (Decision & Iterative Invocation)**\n\n> ⚠️ **强制要求**：上层规划引擎**必须**执行以下补全流程，不得在存在缺失数据时直接交付结果。\n\n1.  **判断是否需要补全**：\n    - 如果所有频率的 `Missing_Pairs` 集合均为空：**结束流程**，交付现有文件。\n    - 如果存在非空的 `Missing_Pairs` 集合：**必须进入补全流程**，不可跳过。\n\n2.  **构建补全查询**：\n    - 根据 `Missing_Pairs_<Frequency>` 中的缺失项，结合原始查询的时间维度，构造新的自然语言查询。\n    - **示例**：\n      ```\n      Missing_Pairs_季 = [(\"西藏\", \"GDP\"), (\"宁夏\", \"GDP\")]\n      ↓\n      补全查询 = \"查询西藏自治区、宁夏回族自治区的 GDP 季度数据，时间范围同前次查询\"\n      ```\n\n3.  **再次调用 `mx_macro_data`**：\n    - 使用新构造的补全查询，再次调用本 Skill 获取缺失数据。\n\n4.  **迭代循环**：\n    - 重复执行 **阶段 B（差异检测）→ 阶段 C（决策补全）**，直至满足以下任一条件：\n      - ✅ 所有频率下的缺失项均已补全\n      - ⚠️ 达到最大重试次数5次，此时应向用户报告未能补全的数据项\n\n#### **阶段 D: 最终交付 (Final Delivery)**\n1.  **数据合并（可选）**：\n    - 如果需要，可将同一频率下多次查询的结果（如多个 `quarterly.csv` 文件）合并为一个完整的 `quarterly.csv`。\n2.  **状态报告**：\n    - 规划引擎应向上游（如用户界面）报告最终交付的文件列表，并可选地报告补全过程（如“系统已自动补全 2 个缺失数据项”）。\n---\n\n## 功能范围\n\n### 基础查询能力\n\n- **经济指标**：GDP、CPI、PPI、PMI、失业率、工业增加值等（支持指定国家/地区及具体指标名）。\n- **货币金融**：M1/M2 货币供应量、社融规模、国债利率、汇率（支持指定币种对）。\n- **商品价格**：黄金、白银、原油、铜、特定稀土氧化物等（**必须**指定具体品种）。\n- **时间频率**：自动识别相对时间（年、季、月、周、日）并匹配对应频率数据；若未指定，返回最新数据。\n\n### 查询示例对照表\n\n| 类型     | ❌ 禁止的模糊查询 (指标/品种不明)      | ✅ 允许的明确查询 (时间/地区可灵活)             |\n|----------|--------------------------------------|------------------------------------------------|\n| 国内经济 | 查询华东地区GDP                        | 查询华东地区 GDP                              |\n| 货币供应 | 查询主要新兴市场货币供应                | 查询中国、印度、巴西的 M2 货币供应量             |\n| 商品价格 | 查询稀土和有色金属价格                 | 查询氧化镨钕、铜、铝的现货价格走势                |\n| 全球宏观 | 查询 Top 3 经济体非农数据              | 查询美国、中国、德国的非农就业数据                |\n| 时间灵活 | (无)                                  | 查询美国过去十年的失业率趋势                    |\n| 默认时间 | (无)                                  | 查询日本最新的核心 CPI 数据                     |\n\n\n## 前提条件\n\n### 1. 注册东方财富妙想账号\n\n访问 https://ai.eastmoney.com/mxClaw 注册账号并获取API_KEY。\n\n### 2. 配置 Token\n\n```bash\n# 添加到 ~/.zshrc\nexport EM_API_KEY=\"your_api_key_here\"\n```\n\n然后执行：\n\n```bash\nsource ~/.zshrc\n```\n\n### 3. 安装依赖\n\n\n```bash\npip3 install httpx --user\n```\n\n## 快速开始\n\n### 1. 命令行调用\n\n在项目根目录或配置的工作目录下执行：\n\n```bash\npython3 {baseDir}/scripts/get_data.py --query 中国GDP\n```\n**参数说明：**\n\n| 参数            | 说明             | 必填 |\n| --------------- | ---------------- | ---- |\n| `--query`       | 自然语言查询条件 | ✅    |\n```\n### 2. 代码调用\n\n```python\nimport asyncio\nfrom pathlib import Path\nfrom scripts.get_data import query_mx_macro_data\n\nasync def main():\n    result = await query_mx_macro_data(\n        query=\"中国近五年GDP\",\n        output_dir=Path(\"workspace/mx_macro_data\"),\n    )\n    if \"error\" in result:\n        print(result[\"error\"])\n    else:\n        print(f\"CSV: {r['csv_paths']}\")\n        print(f\"描述: {r['description_path']}\")\n        print(f\"行数: {r['row_counts']}\")\n\nasyncio.run(main())\n```\n\n输出示例：\n```\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_yearly.csv\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_quarterly.csv\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_monthly.csv\n描述:/path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_description.txt\n行数: 年: 10行, 季: 20行, 月: 40行\n```\n\n## 输出文件说明\n\n| 文件 | 说明 |\n|------|------|\n| `mx_macro_data_<查询ID>_<频率>.csv` | 按频率分组的宏观数据表，UTF-8 编码，可直接用 Excel 或 pandas 打开。 |\n| `mx_macro_data_<查询ID>_description.txt` | 说明文件，含各频率数据统计、数据来源和单位等信息。 |\n\n## 环境变量\n\n| 变量                      | 说明                                  | 默认                     |\n| ------------------------- | ------------------------------------- | ------------------------ |\n| `MX_MACRO_DATA_OUTPUT_DIR` | CSV 与描述文件的输出目录（可选）      | `workspace/mx_macro_data` |\n| `EM_API_KEY`              | 东方财富宏观查数工具 API 密钥（必备） | 无                       |\n\n## 常见问题\n\n### 用户常见问题\n\n**Q: 提示\"请设置 EM_API_KEY 环境变量\"怎么办？**\n\nA: 按以下步骤配置 API 密钥：\n1. 访问 [东方财富宏观查数工具](https://ai.eastmoney.com/mxClaw) 注册并获取 `API_KEY`。\n2. 配置环境变量：\n   ```bash\n   # macOS/Linux\n   export EM_API_KEY=\"your_api_key_here\"\n   \n   # Windows PowerShell\n   $env:EM_API_KEY=\"your_api_key_here\"\n   ```\n\n**Q: 如何指定输出目录？**\n\nA: 通过设置 `MX_MACRO_DATA_OUTPUT_DIR` 环境变量：\n```bash\nexport MX_MACRO_DATA_OUTPUT_DIR=\"/path/to/output\"\npython3 scripts/get_data.py --query \"查询内容\"\n```\n\n### 开发者常见问题（规划引擎集成）\n\n**Q: 为什么需要上层规划引擎做复核？**\n\nA: 本 Skill 专注于单一查询能力，不负责数据完整性校验。完整性验证（如\"中国各省\"是否真的覆盖全部省份）属于业务逻辑范畴，更适合由具备上下文理解和决策能力的规划引擎来处理。\n\n**Q: 如何判断何时进行复核？**\n\nA: 当原始用户意图包含以下特征时，应自动触发复核流程：\n- **集合性词汇**：如\"各省\"、\"各地区\"、\"华东地区\"等\n- **多指标查询**：如\"GDP 和 CPI\"、\"主要经济指标\"等\n\n**Q: 如何处理不同频率的数据？**\nA: **必须**对每种频率的 CSV 文件**分别**执行完整性审计和补全。年频数据的缺失不能用月频数据补全，反之亦然。\n\nFile v1.0.8:_meta.json\n\n{\n  \"ownerId\": \"kn7b4ptpdag877t9kmq8axyja182taab\",\n  \"slug\": \"mx-macro-data\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1774019767709\n}\n\nArchive v1.0.7: 3 files, 12655 bytes\n\nFiles: scripts/get_data.py (19776b), SKILL.md (13360b), _meta.json (132b)\n\nFile v1.0.7:SKILL.md\n\n---\r\nname: mx_macro_data\r\ndescription: 基于东方财富数据库，支持自然语言查询全球宏观经济数据，涵盖国民经济核算、价格指数、货币金融、财政收支、对外贸易、就业民生、产业运行等多个领域，适配各类宏观经济研究、市场分析、政策解读等多元专业场景需求。返回结果包含数据说明及 csv 文件。Natural language query for macroeconomic data from financial databases, covering national economic accounting, price indices, monetary finance, fiscal revenue and expenditure, foreign trade, employment, industrial operation, and other fields. It supports diverse scenarios including macroeconomic research, market analysis, and policy interpretation.\r\nmetadata:\r\n  {\r\n    \"openclaw\": {\r\n      \"requires\": {\r\n        \"env\": [\"EM_API_KEY\"],\r\n        \"bins\": [\"python3\", \"pip3\"]\r\n      },\r\n      \"install\": [\r\n        {\r\n          \"id\": \"pip-deps\",\r\n          \"kind\": \"python\",\r\n          \"package\": \"httpx\",\r\n          \"label\": \"Install Python dependencies\"\r\n        }\r\n      ]\r\n    }\r\n  }\r\n---\r\n\r\n# 宏观经济数据查询 (mx_macro_data)\r\n\r\n通过**文本输入**查询宏观经济数据，接口返回 JSON 后会自动转换为 **CSV** 并生成对应的**内容描述 txt** 文件。\r\n\r\n## 密钥来源与安全说明\r\n\r\n- 本技能仅使用一个环境变量：`EM_API_KEY`。\r\n- `EM_API_KEY` 由东方财富妙想服务（`https://ai.eastmoney.com/mxClaw`）签发，用于其接口鉴权。\r\n- 在提供密钥前，请先确认密钥来源、可用范围、有效期及是否支持重置/撤销。\r\n- 禁止在代码、提示词、日志或输出文件中硬编码/明文暴露密钥。\r\n\r\n## ⚠️ 核心输入约束 (Critical Input Constraints)\r\n\r\n- **时间维度**：支持相对时间表述（如“今年”、“过去三年”、“上月”）。\r\n- **地域维度**：支持宏观地区表述（如“中国”、“美国”、“欧元区”、“华东地区”、“中国各省”），无需拆解为具体省市列表。\r\n\r\n### 1. 禁止模糊商品类别 (No Ambiguous Commodities)\r\n- **禁止输入**：大类统称（如“稀土金属”、“有色金属”、“农产品”、“能源”、“科技股”）。\r\n- **要求**：必须解包为具体的**交易品种名称或代码**。\r\n  - ❌ 错误：`\"查询稀土价格走势\"`\r\n  - ✅ 正确：`\"查询氧化镨钕、氧化镝、氧化铽的价格走势\"`\r\n\r\n### 2. 禁止宏观泛指指标 (No Macro Generalizations without Metrics)\r\n- **禁止输入**：宽泛的经济概念而无具体指标（如“中国经济”、“美国制造业状况”、“全球通胀情况”）。\r\n- **要求**：必须指定具体的**指标名称**（如 GDP、CPI、PMI、失业率、工业增加值等）。\r\n  - ❌ 错误：`\"查询中国经济数据\"`\r\n  - ✅ 正确：`\"查询中国 GDP 同比增速、中国 CPI 同比\"`\r\n  - ✅ 正确：`\"查询美国制造业 PMI\"` (地域允许宏观，但指标必须具体)\r\n\r\n### 3. 时间与地域的灵活性 (Flexible Time & Region)\r\n- **时间**：无需绝对日期。\r\n  - ✅ 允许：`\"查询中国过去五年的M2增速\"`、`\"查询上个月美国的非农数据\"`、`\"查询黄金今日价格\"`。\r\n  - ✅ 允许（缺省）：`\"查询德国失业率\"` 。\r\n- **地域**：无需拆解为子集列表。\r\n  - ✅ 允许：`\"查询华东地区GDP\"`,`\"查询中国各省GDP\"`。\r\n  - ⚠️ 注意：若涉及“主要新兴市场”、“Top 5 国家”等动态排名指代，仍建议上层模型解包为具体国家列表（如 `\"查询中国、印度、巴西的M2\"`），以确保数据源一致性。\r\n\r\n## 🔄 输出接口与上层规划协议 (Output Interface & Orchestration Protocol)\r\n\r\n本 Skill 仅负责执行单次查询并生成文件。**为实现数据完整性保障，上层规划引擎必须根据以下协议，对本 Skill 的输出进行后续处理。**\r\n\r\n### 1. 输出文件结构 (Output File Structure)\r\n执行 `mx_macro_data` 后，Skill 将在指定目录下生成一个或多个 CSV 文件，以及一个描述文件。\r\n\r\n- **CSV 文件**：`mx_macro_data_<查询ID>_<频率>.csv`\r\n  - *示例*：`mx_macro_data_4591GG28_yearly.csv`, `mx_macro_data_4591GG28_quarterly.csv`, `mx_macro_data_4591GG28_monthly.csv`\r\n  - **注意**：文件数量和频率取决于查询指标的可用性（yearly、quarterly、monthly、weekly、daily）。\r\n- **描述文件**：`mx_macro_data_<查询ID>_description.txt`\r\n  - 包含数据来源、时间范围、指标说明等基础信息。\r\n\r\n### 2. 上层规划引擎必须执行的“完整性复核”逻辑 (Mandatory Verification Logic for Orchestrator)\r\n\r\n上层规划引擎在调用 `mx_macro_data` 后，**必须**执行以下工作流，以确保最终结果的完整性：\r\n#### **阶段 A: 任务解析与预期规划 (Task Parsing & Expectation Planning)**\r\n1.  **解析原始用户意图**：从用户查询中提取核心要素。\r\n2.  **构建预期全集 (Expected Universe)**：\r\n    - **地域**：通过规划引擎的内置知识库、搜索引擎或 LLM 推理能力，将模糊地域表述解析为具体行政单元。例如：\"中国各省\" → 34 个省级行政区；\"华东地区\" → 上海、江苏、浙江、安徽、福建、江西、山东共 7 个省市。\r\n    - **指标**：将复合指标拆解为独立指标。例如：\"GDP, CPI\" → [\"GDP\", \"CPI\"]。\r\n    - **频率**：根据查询语境推断预期频率，可能生成多个频率的数据文件（yearly、quarterly、monthly等）。\r\n\r\n#### **阶段 B: 文件读取与差异检测 (File Reading   & Gap Detection)**\r\n1.  **获取输出文件列表**：获取 `mx_macro_data` 生成的所有 CSV 文件路径。\r\n2.  **读取并分析每个文件**：\r\n    - 使用规划引擎内置的代码执行能力（如 Python Sandbox）读取 CSV。\r\n    - 提取每个文件中实际覆盖的 `(地区, 指标)` 组合及其数量。\r\n3.  **执行差异计算**：\r\n    - 对**每一种频率**的文件，分别计算 `Missing_Pairs_<Frequency> = Expected_Universe - Actual_From_CSV_File`。\r\n    - 识别出具体缺失的项（如：年频数据中缺失“西藏-GDP”）。\r\n\r\n#### **阶段 C: 决策与迭代调用 (Decision & Iterative Invocation)**\r\n\r\n> ⚠️ **强制要求**：上层规划引擎**必须**执行以下补全流程，不得在存在缺失数据时直接交付结果。\r\n\r\n1.  **判断是否需要补全**：\r\n    - 如果所有频率的 `Missing_Pairs` 集合均为空：**结束流程**，交付现有文件。\r\n    - 如果存在非空的 `Missing_Pairs` 集合：**必须进入补全流程**，不可跳过。\r\n\r\n2.  **构建补全查询**：\r\n    - 根据 `Missing_Pairs_<Frequency>` 中的缺失项，结合原始查询的时间维度，构造新的自然语言查询。\r\n    - **示例**：\r\n      ```\r\n      Missing_Pairs_季 = [(\"西藏\", \"GDP\"), (\"宁夏\", \"GDP\")]\r\n      ↓\r\n      补全查询 = \"查询西藏自治区、宁夏回族自治区的 GDP 季度数据，时间范围同前次查询\"\r\n      ```\r\n\r\n3.  **再次调用 `mx_macro_data`**：\r\n    - 使用新构造的补全查询，再次调用本 Skill 获取缺失数据。\r\n\r\n4.  **迭代循环**：\r\n    - 重复执行 **阶段 B（差异检测）→ 阶段 C（决策补全）**，直至满足以下任一条件：\r\n      - ✅ 所有频率下的缺失项均已补全\r\n      - ⚠️ 达到最大重试次数5次，此时应向用户报告未能补全的数据项\r\n\r\n#### **阶段 D: 最终交付 (Final Delivery)**\r\n1.  **数据合并（可选）**：\r\n    - 如果需要，可将同一频率下多次查询的结果（如多个 `quarterly.csv` 文件）合并为一个完整的 `quarterly.csv`。\r\n2.  **状态报告**：\r\n    - 规划引擎应向上游（如用户界面）报告最终交付的文件列表，并可选地报告补全过程（如“系统已自动补全 2 个缺失数据项”）。\r\n---\r\n\r\n## 功能范围\r\n\r\n### 基础查询能力\r\n\r\n- **经济指标**：GDP、CPI、PPI、PMI、失业率、工业增加值等（支持指定国家/地区及具体指标名）。\r\n- **货币金融**：M1/M2 货币供应量、社融规模、国债利率、汇率（支持指定币种对）。\r\n- **商品价格**：黄金、白银、原油、铜、特定稀土氧化物等（**必须**指定具体品种）。\r\n- **时间频率**：自动识别相对时间（年、季、月、周、日）并匹配对应频率数据；若未指定，返回最新数据。\r\n\r\n### 查询示例对照表\r\n\r\n| 类型     | ❌ 禁止的模糊查询 (指标/品种不明)      | ✅ 允许的明确查询 (时间/地区可灵活)             |\r\n|----------|--------------------------------------|------------------------------------------------|\r\n| 国内经济 | 查询华东地区GDP                        | 查询华东地区 GDP                              |\r\n| 货币供应 | 查询主要新兴市场货币供应                | 查询中国、印度、巴西的 M2 货币供应量             |\r\n| 商品价格 | 查询稀土和有色金属价格                 | 查询氧化镨钕、铜、铝的现货价格走势                |\r\n| 全球宏观 | 查询 Top 3 经济体非农数据              | 查询美国、中国、德国的非农就业数据                |\r\n| 时间灵活 | (无)                                  | 查询美国过去十年的失业率趋势                    |\r\n| 默认时间 | (无)                                  | 查询日本最新的核心 CPI 数据                     |\r\n\r\n\r\n## 前提条件\r\n\r\n### 1. 注册东方财富妙想账号\r\n\r\n访问 https://ai.eastmoney.com/mxClaw 注册账号并获取API_KEY。\r\n\r\n### 2. 配置 Token\r\n\r\n```bash\r\n# 添加到 ~/.zshrc\r\nexport EM_API_KEY=\"your_api_key_here\"\r\n```\r\n\r\n然后执行：\r\n\r\n```bash\r\nsource ~/.zshrc\r\n```\r\n\r\n### 3. 安装依赖\r\n\r\n\r\n```bash\r\npip3 install httpx --user\r\n```\r\n\r\n## 快速开始\r\n\r\n### 1. 命令行调用\r\n\r\n在项目根目录或配置的工作目录下执行：\r\n\r\n```bash\r\npython3 {baseDir}/scripts/get_data.py --query 中国GDP\r\n```\r\n**参数说明：**\r\n\r\n| 参数            | 说明             | 必填 |\r\n| --------------- | ---------------- | ---- |\r\n| `--query`       | 自然语言查询条件 | ✅    |\r\n```\r\n### 2. 代码调用\r\n\r\n```python\r\nimport asyncio\r\nfrom pathlib import Path\r\nfrom scripts.get_data import query_mx_macro_data\r\n\r\nasync def main():\r\n    result = await query_mx_macro_data(\r\n        query=\"中国近五年GDP\",\r\n        output_dir=Path(\"workspace/mx_macro_data\"),\r\n    )\r\n    if \"error\" in result:\r\n        print(result[\"error\"])\r\n    else:\r\n        print(f\"CSV: {r['csv_paths']}\")\r\n        print(f\"描述: {r['description_path']}\")\r\n        print(f\"行数: {r['row_counts']}\")\r\n\r\nasyncio.run(main())\r\n```\r\n\r\n输出示例：\r\n```\r\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_yearly.csv\r\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_quarterly.csv\r\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_monthly.csv\r\n描述:/path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_description.txt\r\n行数: 年: 10行, 季: 20行, 月: 40行\r\n```\r\n\r\n## 输出文件说明\r\n\r\n| 文件 | 说明 |\r\n|------|------|\r\n| `mx_macro_data_<查询ID>_<频率>.csv` | 按频率分组的宏观数据表，UTF-8 编码，可直接用 Excel 或 pandas 打开。 |\r\n| `mx_macro_data_<查询ID>_description.txt` | 说明文件，含各频率数据统计、数据来源和单位等信息。 |\r\n\r\n## 环境变量\r\n\r\n| 变量                      | 说明                                  | 默认                     |\r\n| ------------------------- | ------------------------------------- | ------------------------ |\r\n| `MX_MACRO_DATA_OUTPUT_DIR` | CSV 与描述文件的输出目录（可选）      | `workspace/mx_macro_data` |\r\n| `EM_API_KEY`              | 东方财富宏观查数工具 API 密钥（必备） | 无                       |\r\n\r\n## 常见问题\r\n\r\n### 用户常见问题\r\n\r\n**Q: 提示\"请设置 EM_API_KEY 环境变量\"怎么办？**\r\n\r\nA: 按以下步骤配置 API 密钥：\r\n1. 访问 [东方财富宏观查数工具](https://ai.eastmoney.com/mxClaw) 注册并获取 `API_KEY`。\r\n2. 配置环境变量：\r\n   ```bash\r\n   # macOS/Linux\r\n   export EM_API_KEY=\"your_api_key_here\"\r\n   \r\n   # Windows PowerShell\r\n   $env:EM_API_KEY=\"your_api_key_here\"\r\n   ```\r\n\r\n**Q: 如何指定输出目录？**\r\n\r\nA: 通过设置 `MX_MACRO_DATA_OUTPUT_DIR` 环境变量：\r\n```bash\r\nexport MX_MACRO_DATA_OUTPUT_DIR=\"/path/to/output\"\r\npython3 scripts/get_data.py --query \"查询内容\"\r\n```\r\n\r\n### 开发者常见问题（规划引擎集成）\r\n\r\n**Q: 为什么需要上层规划引擎做复核？**\r\n\r\nA: 本 Skill 专注于单一查询能力，不负责数据完整性校验。完整性验证（如\"中国各省\"是否真的覆盖全部省份）属于业务逻辑范畴，更适合由具备上下文理解和决策能力的规划引擎来处理。\r\n\r\n**Q: 如何判断何时进行复核？**\r\n\r\nA: 当原始用户意图包含以下特征时，应自动触发复核流程：\r\n- **集合性词汇**：如\"各省\"、\"各地区\"、\"华东地区\"等\r\n- **多指标查询**：如\"GDP 和 CPI\"、\"主要经济指标\"等\r\n\r\n**Q: 如何处理不同频率的数据？**\r\nA: **必须**对每种频率的 CSV 文件**分别**执行完整性审计和补全。年频数据的缺失不能用月频数据补全，反之亦然。\n\nFile v1.0.7:_meta.json\n\n{\n  \"ownerId\": \"kn7b4ptpdag877t9kmq8axyja182taab\",\n  \"slug\": \"mx-macro-data\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1774006246403\n}\n\nArchive v1.0.6: 3 files, 12585 bytes\n\nFiles: scripts/get_data.py (19269b), SKILL.md (13092b), _meta.json (132b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: mx_macro_data\ndescription: 基于东方财富数据库，支持自然语言查询全球宏观经济数据，涵盖国民经济核算、价格指数、货币金融、财政收支、对外贸易、就业民生、产业运行等多个领域，适配各类宏观经济研究、市场分析、政策解读等多元专业场景需求。返回结果包含数据说明及 csv 文件。Natural language query for macroeconomic data from financial databases, covering national economic accounting, price indices, monetary finance, fiscal revenue and expenditure, foreign trade, employment, industrial operation, and other fields. It supports diverse scenarios including macroeconomic research, market analysis, and policy interpretation.\nmetadata:\n  {\n    \"openclaw\": {\n      \"requires\": {\n        \"env\": [\"EM_API_KEY\"],\n        \"bins\": [\"python3\", \"pip3\"]\n      },\n      \"install\": [\n        {\n          \"id\": \"pip-deps\",\n          \"kind\": \"python\",\n          \"package\": \"httpx\",\n          \"label\": \"Install Python dependencies\"\n        }\n      ]\n    }\n  }\n---\n\n# 宏观经济数据查询 (mx_macro_data)\n\n通过**文本输入**查询宏观经济数据，接口返回 JSON 后会自动转换为 **CSV** 并生成对应的**内容描述 txt** 文件。\n\n## 密钥来源与安全说明\n\n- 本技能仅使用一个环境变量：`EM_API_KEY`。\n- `EM_API_KEY` 由东方财富妙想服务（`https://ai.eastmoney.com/mxClaw`）签发，用于其接口鉴权。\n- 在提供密钥前，请先确认密钥来源、可用范围、有效期及是否支持重置/撤销。\n- 禁止在代码、提示词、日志或输出文件中硬编码/明文暴露密钥。\n\n## ⚠️ 核心输入约束 (Critical Input Constraints)\n\n- **时间维度**：支持相对时间表述（如“今年”、“过去三年”、“上月”）。\n- **地域维度**：支持宏观地区表述（如“中国”、“美国”、“欧元区”、“华东地区”、“中国各省”），无需拆解为具体省市列表。\n\n### 1. 禁止模糊商品类别 (No Ambiguous Commodities)\n- **禁止输入**：大类统称（如“稀土金属”、“有色金属”、“农产品”、“能源”、“科技股”）。\n- **要求**：必须解包为具体的**交易品种名称或代码**。\n  - ❌ 错误：`\"查询稀土价格走势\"`\n  - ✅ 正确：`\"查询氧化镨钕、氧化镝、氧化铽的价格走势\"`\n\n### 2. 禁止宏观泛指指标 (No Macro Generalizations without Metrics)\n- **禁止输入**：宽泛的经济概念而无具体指标（如“中国经济”、“美国制造业状况”、“全球通胀情况”）。\n- **要求**：必须指定具体的**指标名称**（如 GDP、CPI、PMI、失业率、工业增加值等）。\n  - ❌ 错误：`\"查询中国经济数据\"`\n  - ✅ 正确：`\"查询中国 GDP 同比增速、中国 CPI 同比\"`\n  - ✅ 正确：`\"查询美国制造业 PMI\"` (地域允许宏观，但指标必须具体)\n\n### 3. 时间与地域的灵活性 (Flexible Time & Region)\n- **时间**：无需绝对日期。\n  - ✅ 允许：`\"查询中国过去五年的M2增速\"`、`\"查询上个月美国的非农数据\"`、`\"查询黄金今日价格\"`。\n  - ✅ 允许（缺省）：`\"查询德国失业率\"` 。\n- **地域**：无需拆解为子集列表。\n  - ✅ 允许：`\"查询华东地区GDP\"`,`\"查询中国各省GDP\"`。\n  - ⚠️ 注意：若涉及“主要新兴市场”、“Top 5 国家”等动态排名指代，仍建议上层模型解包为具体国家列表（如 `\"查询中国、印度、巴西的M2\"`），以确保数据源一致性。\n\n## 🔄 输出接口与上层规划协议 (Output Interface & Orchestration Protocol)\n\n本 Skill 仅负责执行单次查询并生成文件。**为实现数据完整性保障，上层规划引擎必须根据以下协议，对本 Skill 的输出进行后续处理。**\n\n### 1. 输出文件结构 (Output File Structure)\n执行 `mx_macro_data` 后，Skill 将在指定目录下生成一个或多个 CSV 文件，以及一个描述文件。\n\n- **CSV 文件**：`mx_macro_data_<查询ID>_<频率>.csv`\n  - *示例*：`mx_macro_data_4591GG28_yearly.csv`, `mx_macro_data_4591GG28_quarterly.csv`, `mx_macro_data_4591GG28_monthly.csv`\n  - **注意**：文件数量和频率取决于查询指标的可用性（yearly、quarterly、monthly、weekly、daily）。\n- **描述文件**：`mx_macro_data_<查询ID>_description.txt`\n  - 包含数据来源、时间范围、指标说明等基础信息。\n\n### 2. 上层规划引擎必须执行的“完整性复核”逻辑 (Mandatory Verification Logic for Orchestrator)\n\n上层规划引擎在调用 `mx_macro_data` 后，**必须**执行以下工作流，以确保最终结果的完整性：\n#### **阶段 A: 任务解析与预期规划 (Task Parsing & Expectation Planning)**\n1.  **解析原始用户意图**：从用户查询中提取核心要素。\n2.  **构建预期全集 (Expected Universe)**：\n    - **地域**：通过规划引擎的内置知识库、搜索引擎或 LLM 推理能力，将模糊地域表述解析为具体行政单元。例如：\"中国各省\" → 34 个省级行政区；\"华东地区\" → 上海、江苏、浙江、安徽、福建、江西、山东共 7 个省市。\n    - **指标**：将复合指标拆解为独立指标。例如：\"GDP, CPI\" → [\"GDP\", \"CPI\"]。\n    - **频率**：根据查询语境推断预期频率，可能生成多个频率的数据文件（yearly、quarterly、monthly等）。\n\n#### **阶段 B: 文件读取与差异检测 (File Reading   & Gap Detection)**\n1.  **获取输出文件列表**：获取 `mx_macro_data` 生成的所有 CSV 文件路径。\n2.  **读取并分析每个文件**：\n    - 使用规划引擎内置的代码执行能力（如 Python Sandbox）读取 CSV。\n    - 提取每个文件中实际覆盖的 `(地区, 指标)` 组合及其数量。\n3.  **执行差异计算**：\n    - 对**每一种频率**的文件，分别计算 `Missing_Pairs_<Frequency> = Expected_Universe - Actual_From_CSV_File`。\n    - 识别出具体缺失的项（如：年频数据中缺失“西藏-GDP”）。\n\n#### **阶段 C: 决策与迭代调用 (Decision & Iterative Invocation)**\n\n> ⚠️ **强制要求**：上层规划引擎**必须**执行以下补全流程，不得在存在缺失数据时直接交付结果。\n\n1.  **判断是否需要补全**：\n    - 如果所有频率的 `Missing_Pairs` 集合均为空：**结束流程**，交付现有文件。\n    - 如果存在非空的 `Missing_Pairs` 集合：**必须进入补全流程**，不可跳过。\n\n2.  **构建补全查询**：\n    - 根据 `Missing_Pairs_<Frequency>` 中的缺失项，结合原始查询的时间维度，构造新的自然语言查询。\n    - **示例**：\n      ```\n      Missing_Pairs_季 = [(\"西藏\", \"GDP\"), (\"宁夏\", \"GDP\")]\n      ↓\n      补全查询 = \"查询西藏自治区、宁夏回族自治区的 GDP 季度数据，时间范围同前次查询\"\n      ```\n\n3.  **再次调用 `mx_macro_data`**：\n    - 使用新构造的补全查询，再次调用本 Skill 获取缺失数据。\n\n4.  **迭代循环**：\n    - 重复执行 **阶段 B（差异检测）→ 阶段 C（决策补全）**，直至满足以下任一条件：\n      - ✅ 所有频率下的缺失项均已补全\n      - ⚠️ 达到最大重试次数5次，此时应向用户报告未能补全的数据项\n\n#### **阶段 D: 最终交付 (Final Delivery)**\n1.  **数据合并（可选）**：\n    - 如果需要，可将同一频率下多次查询的结果（如多个 `quarterly.csv` 文件）合并为一个完整的 `quarterly.csv`。\n2.  **状态报告**：\n    - 规划引擎应向上游（如用户界面）报告最终交付的文件列表，并可选地报告补全过程（如“系统已自动补全 2 个缺失数据项”）。\n---\n\n## 功能范围\n\n### 基础查询能力\n\n- **经济指标**：GDP、CPI、PPI、PMI、失业率、工业增加值等（支持指定国家/地区及具体指标名）。\n- **货币金融**：M1/M2 货币供应量、社融规模、国债利率、汇率（支持指定币种对）。\n- **商品价格**：黄金、白银、原油、铜、特定稀土氧化物等（**必须**指定具体品种）。\n- **时间频率**：自动识别相对时间（年、季、月、周、日）并匹配对应频率数据；若未指定，返回最新数据。\n\n### 查询示例对照表\n\n| 类型     | ❌ 禁止的模糊查询 (指标/品种不明)      | ✅ 允许的明确查询 (时间/地区可灵活)             |\n|----------|--------------------------------------|------------------------------------------------|\n| 国内经济 | 查询华东地区GDP                        | 查询华东地区 GDP                              |\n| 货币供应 | 查询主要新兴市场货币供应                | 查询中国、印度、巴西的 M2 货币供应量             |\n| 商品价格 | 查询稀土和有色金属价格                 | 查询氧化镨钕、铜、铝的现货价格走势                |\n| 全球宏观 | 查询 Top 3 经济体非农数据              | 查询美国、中国、德国的非农就业数据                |\n| 时间灵活 | (无)                                  | 查询美国过去十年的失业率趋势                    |\n| 默认时间 | (无)                                  | 查询日本最新的核心 CPI 数据                     |\n\n\n## 前提条件\n\n### 1. 注册东方财富妙想账号\n\n访问 https://ai.eastmoney.com/mxClaw 注册账号并获取API_KEY。\n\n### 2. 配置 Token\n\n```bash\n# 添加到 ~/.zshrc\nexport EM_API_KEY=\"your_api_key_here\"\n```\n\n然后执行：\n\n```bash\nsource ~/.zshrc\n```\n\n### 3. 安装依赖\n\n\n```bash\npip3 install httpx --user\n```\n\n## 快速开始\n\n### 1. 命令行调用\n\n在项目根目录或配置的工作目录下执行：\n\n```bash\npython3 {baseDir}/scripts/get_data.py --query 中国GDP\n```\n**参数说明：**\n\n| 参数            | 说明             | 必填 |\n| --------------- | ---------------- | ---- |\n| `--query`       | 自然语言查询条件 | ✅    |\n```\n### 2. 代码调用\n\n```python\nimport asyncio\nfrom pathlib import Path\nfrom scripts.get_data import query_mx_macro_data\n\nasync def main():\n    result = await query_mx_macro_data(\n        query=\"中国近五年GDP\",\n        output_dir=Path(\"workspace/mx_macro_data\"),\n    )\n    if \"error\" in result:\n        print(result[\"error\"])\n    else:\n        print(f\"CSV: {r['csv_paths']}\")\n        print(f\"描述: {r['description_path']}\")\n        print(f\"行数: {r['row_counts']}\")\n\nasyncio.run(main())\n```\n\n输出示例：\n```\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_yearly.csv\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_quarterly.csv\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_monthly.csv\n描述:/path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_description.txt\n行数: 年: 10行, 季: 20行, 月: 40行\n```\n\n## 输出文件说明\n\n| 文件 | 说明 |\n|------|------|\n| `mx_macro_data_<查询ID>_<频率>.csv` | 按频率分组的宏观数据表，UTF-8 编码，可直接用 Excel 或 pandas 打开。 |\n| `mx_macro_data_<查询ID>_description.txt` | 说明文件，含各频率数据统计、数据来源和单位等信息。 |\n\n## 环境变量\n\n| 变量                      | 说明                                  | 默认                     |\n| ------------------------- | ------------------------------------- | ------------------------ |\n| `MX_MACRO_DATA_OUTPUT_DIR` | CSV 与描述文件的输出目录（可选）      | `workspace/mx_macro_data` |\n| `EM_API_KEY`              | 东方财富宏观查数工具 API 密钥（必备） | 无                       |\n\n## 常见问题\n\n### 用户常见问题\n\n**Q: 提示\"请设置 EM_API_KEY 环境变量\"怎么办？**\n\nA: 按以下步骤配置 API 密钥：\n1. 访问 [东方财富宏观查数工具](https://ai.eastmoney.com/mxClaw) 注册并获取 `API_KEY`。\n2. 配置环境变量：\n   ```bash\n   # macOS/Linux\n   export EM_API_KEY=\"your_api_key_here\"\n   \n   # Windows PowerShell\n   $env:EM_API_KEY=\"your_api_key_here\"\n   ```\n\n**Q: 如何指定输出目录？**\n\nA: 通过设置 `MX_MACRO_DATA_OUTPUT_DIR` 环境变量：\n```bash\nexport MX_MACRO_DATA_OUTPUT_DIR=\"/path/to/output\"\npython3 scripts/get_data.py --query \"查询内容\"\n```\n\n### 开发者常见问题（规划引擎集成）\n\n**Q: 为什么需要上层规划引擎做复核？**\n\nA: 本 Skill 专注于单一查询能力，不负责数据完整性校验。完整性验证（如\"中国各省\"是否真的覆盖全部省份）属于业务逻辑范畴，更适合由具备上下文理解和决策能力的规划引擎来处理。\n\n**Q: 如何判断何时进行复核？**\n\nA: 当原始用户意图包含以下特征时，应自动触发复核流程：\n- **集合性词汇**：如\"各省\"、\"各地区\"、\"华东地区\"等\n- **多指标查询**：如\"GDP 和 CPI\"、\"主要经济指标\"等\n\n**Q: 如何处理不同频率的数据？**\nA: **必须**对每种频率的 CSV 文件**分别**执行完整性审计和补全。年频数据的缺失不能用月频数据补全，反之亦然。\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn7b4ptpdag877t9kmq8axyja182taab\",\n  \"slug\": \"mx-macro-data\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1774003320750\n}\n\nArchive v1.0.5: 3 files, 12410 bytes\n\nFiles: scripts/get_data.py (19482b), SKILL.md (13092b), _meta.json (132b)\n\nFile v1.0.5:SKILL.md\n\n---\nname: mx_macro_data\ndescription: 基于东方财富数据库，支持自然语言查询全球宏观经济数据，涵盖国民经济核算、价格指数、货币金融、财政收支、对外贸易、就业民生、产业运行等多个领域，适配各类宏观经济研究、市场分析、政策解读等多元专业场景需求。返回结果包含数据说明及 csv 文件。Natural language query for macroeconomic data from financial databases, covering national economic accounting, price indices, monetary finance, fiscal revenue and expenditure, foreign trade, employment, industrial operation, and other fields. It supports diverse scenarios including macroeconomic research, market analysis, and policy interpretation.\nmetadata:\n  {\n    \"openclaw\": {\n      \"requires\": {\n        \"env\": [\"EM_API_KEY\"],\n        \"bins\": [\"python3\", \"pip3\"]\n      },\n      \"install\": [\n        {\n          \"id\": \"pip-deps\",\n          \"kind\": \"python\",\n          \"package\": \"httpx\",\n          \"label\": \"Install Python dependencies\"\n        }\n      ]\n    }\n  }\n---\n\n# 宏观经济数据查询 (mx_macro_data)\n\n通过**文本输入**查询宏观经济数据，接口返回 JSON 后会自动转换为 **CSV** 并生成对应的**内容描述 txt** 文件。\n\n## 密钥来源与安全说明\n\n- 本技能仅使用一个环境变量：`EM_API_KEY`。\n- `EM_API_KEY` 由东方财富妙想服务（`https://ai.eastmoney.com/mxClaw`）签发，用于其接口鉴权。\n- 在提供密钥前，请先确认密钥来源、可用范围、有效期及是否支持重置/撤销。\n- 禁止在代码、提示词、日志或输出文件中硬编码/明文暴露密钥。\n\n## ⚠️ 核心输入约束 (Critical Input Constraints)\n\n- **时间维度**：支持相对时间表述（如“今年”、“过去三年”、“上月”）。\n- **地域维度**：支持宏观地区表述（如“中国”、“美国”、“欧元区”、“华东地区”、“中国各省”），无需拆解为具体省市列表。\n\n### 1. 禁止模糊商品类别 (No Ambiguous Commodities)\n- **禁止输入**：大类统称（如“稀土金属”、“有色金属”、“农产品”、“能源”、“科技股”）。\n- **要求**：必须解包为具体的**交易品种名称或代码**。\n  - ❌ 错误：`\"查询稀土价格走势\"`\n  - ✅ 正确：`\"查询氧化镨钕、氧化镝、氧化铽的价格走势\"`\n\n### 2. 禁止宏观泛指指标 (No Macro Generalizations without Metrics)\n- **禁止输入**：宽泛的经济概念而无具体指标（如“中国经济”、“美国制造业状况”、“全球通胀情况”）。\n- **要求**：必须指定具体的**指标名称**（如 GDP、CPI、PMI、失业率、工业增加值等）。\n  - ❌ 错误：`\"查询中国经济数据\"`\n  - ✅ 正确：`\"查询中国 GDP 同比增速、中国 CPI 同比\"`\n  - ✅ 正确：`\"查询美国制造业 PMI\"` (地域允许宏观，但指标必须具体)\n\n### 3. 时间与地域的灵活性 (Flexible Time & Region)\n- **时间**：无需绝对日期。\n  - ✅ 允许：`\"查询中国过去五年的M2增速\"`、`\"查询上个月美国的非农数据\"`、`\"查询黄金今日价格\"`。\n  - ✅ 允许（缺省）：`\"查询德国失业率\"` 。\n- **地域**：无需拆解为子集列表。\n  - ✅ 允许：`\"查询华东地区GDP\"`,`\"查询中国各省GDP\"`。\n  - ⚠️ 注意：若涉及“主要新兴市场”、“Top 5 国家”等动态排名指代，仍建议上层模型解包为具体国家列表（如 `\"查询中国、印度、巴西的M2\"`），以确保数据源一致性。\n\n## 🔄 输出接口与上层规划协议 (Output Interface & Orchestration Protocol)\n\n本 Skill 仅负责执行单次查询并生成文件。**为实现数据完整性保障，上层规划引擎必须根据以下协议，对本 Skill 的输出进行后续处理。**\n\n### 1. 输出文件结构 (Output File Structure)\n执行 `mx_macro_data` 后，Skill 将在指定目录下生成一个或多个 CSV 文件，以及一个描述文件。\n\n- **CSV 文件**：`mx_macro_data_<查询ID>_<频率>.csv`\n  - *示例*：`mx_macro_data_4591GG28_yearly.csv`, `mx_macro_data_4591GG28_quarterly.csv`, `mx_macro_data_4591GG28_monthly.csv`\n  - **注意**：文件数量和频率取决于查询指标的可用性（yearly、quarterly、monthly、weekly、daily）。\n- **描述文件**：`mx_macro_data_<查询ID>_description.txt`\n  - 包含数据来源、时间范围、指标说明等基础信息。\n\n### 2. 上层规划引擎必须执行的“完整性复核”逻辑 (Mandatory Verification Logic for Orchestrator)\n\n上层规划引擎在调用 `mx_macro_data` 后，**必须**执行以下工作流，以确保最终结果的完整性：\n#### **阶段 A: 任务解析与预期规划 (Task Parsing & Expectation Planning)**\n1.  **解析原始用户意图**：从用户查询中提取核心要素。\n2.  **构建预期全集 (Expected Universe)**：\n    - **地域**：通过规划引擎的内置知识库、搜索引擎或 LLM 推理能力，将模糊地域表述解析为具体行政单元。例如：\"中国各省\" → 34 个省级行政区；\"华东地区\" → 上海、江苏、浙江、安徽、福建、江西、山东共 7 个省市。\n    - **指标**：将复合指标拆解为独立指标。例如：\"GDP, CPI\" → [\"GDP\", \"CPI\"]。\n    - **频率**：根据查询语境推断预期频率，可能生成多个频率的数据文件（yearly、quarterly、monthly等）。\n\n#### **阶段 B: 文件读取与差异检测 (File Reading   & Gap Detection)**\n1.  **获取输出文件列表**：获取 `mx_macro_data` 生成的所有 CSV 文件路径。\n2.  **读取并分析每个文件**：\n    - 使用规划引擎内置的代码执行能力（如 Python Sandbox）读取 CSV。\n    - 提取每个文件中实际覆盖的 `(地区, 指标)` 组合及其数量。\n3.  **执行差异计算**：\n    - 对**每一种频率**的文件，分别计算 `Missing_Pairs_<Frequency> = Expected_Universe - Actual_From_CSV_File`。\n    - 识别出具体缺失的项（如：年频数据中缺失“西藏-GDP”）。\n\n#### **阶段 C: 决策与迭代调用 (Decision & Iterative Invocation)**\n\n> ⚠️ **强制要求**：上层规划引擎**必须**执行以下补全流程，不得在存在缺失数据时直接交付结果。\n\n1.  **判断是否需要补全**：\n    - 如果所有频率的 `Missing_Pairs` 集合均为空：**结束流程**，交付现有文件。\n    - 如果存在非空的 `Missing_Pairs` 集合：**必须进入补全流程**，不可跳过。\n\n2.  **构建补全查询**：\n    - 根据 `Missing_Pairs_<Frequency>` 中的缺失项，结合原始查询的时间维度，构造新的自然语言查询。\n    - **示例**：\n      ```\n      Missing_Pairs_季 = [(\"西藏\", \"GDP\"), (\"宁夏\", \"GDP\")]\n      ↓\n      补全查询 = \"查询西藏自治区、宁夏回族自治区的 GDP 季度数据，时间范围同前次查询\"\n      ```\n\n3.  **再次调用 `mx_macro_data`**：\n    - 使用新构造的补全查询，再次调用本 Skill 获取缺失数据。\n\n4.  **迭代循环**：\n    - 重复执行 **阶段 B（差异检测）→ 阶段 C（决策补全）**，直至满足以下任一条件：\n      - ✅ 所有频率下的缺失项均已补全\n      - ⚠️ 达到最大重试次数5次，此时应向用户报告未能补全的数据项\n\n#### **阶段 D: 最终交付 (Final Delivery)**\n1.  **数据合并（可选）**：\n    - 如果需要，可将同一频率下多次查询的结果（如多个 `quarterly.csv` 文件）合并为一个完整的 `quarterly.csv`。\n2.  **状态报告**：\n    - 规划引擎应向上游（如用户界面）报告最终交付的文件列表，并可选地报告补全过程（如“系统已自动补全 2 个缺失数据项”）。\n---\n\n## 功能范围\n\n### 基础查询能力\n\n- **经济指标**：GDP、CPI、PPI、PMI、失业率、工业增加值等（支持指定国家/地区及具体指标名）。\n- **货币金融**：M1/M2 货币供应量、社融规模、国债利率、汇率（支持指定币种对）。\n- **商品价格**：黄金、白银、原油、铜、特定稀土氧化物等（**必须**指定具体品种）。\n- **时间频率**：自动识别相对时间（年、季、月、周、日）并匹配对应频率数据；若未指定，返回最新数据。\n\n### 查询示例对照表\n\n| 类型     | ❌ 禁止的模糊查询 (指标/品种不明)      | ✅ 允许的明确查询 (时间/地区可灵活)             |\n|----------|--------------------------------------|------------------------------------------------|\n| 国内经济 | 查询华东地区GDP                        | 查询华东地区 GDP                              |\n| 货币供应 | 查询主要新兴市场货币供应                | 查询中国、印度、巴西的 M2 货币供应量             |\n| 商品价格 | 查询稀土和有色金属价格                 | 查询氧化镨钕、铜、铝的现货价格走势                |\n| 全球宏观 | 查询 Top 3 经济体非农数据              | 查询美国、中国、德国的非农就业数据                |\n| 时间灵活 | (无)                                  | 查询美国过去十年的失业率趋势                    |\n| 默认时间 | (无)                                  | 查询日本最新的核心 CPI 数据                     |\n\n\n## 前提条件\n\n### 1. 注册东方财富妙想账号\n\n访问 https://ai.eastmoney.com/mxClaw 注册账号并获取API_KEY。\n\n### 2. 配置 Token\n\n```bash\n# 添加到 ~/.zshrc\nexport EM_API_KEY=\"your_api_key_here\"\n```\n\n然后执行：\n\n```bash\nsource ~/.zshrc\n```\n\n### 3. 安装依赖\n\n\n```bash\npip3 install httpx --user\n```\n\n## 快速开始\n\n### 1. 命令行调用\n\n在项目根目录或配置的工作目录下执行：\n\n```bash\npython3 {baseDir}/scripts/get_data.py --query 中国GDP\n```\n**参数说明：**\n\n| 参数            | 说明             | 必填 |\n| --------------- | ---------------- | ---- |\n| `--query`       | 自然语言查询条件 | ✅    |\n```\n### 2. 代码调用\n\n```python\nimport asyncio\nfrom pathlib import Path\nfrom scripts.get_data import query_mx_macro_data\n\nasync def main():\n    result = await query_mx_macro_data(\n        query=\"中国近五年GDP\",\n        output_dir=Path(\"workspace/mx_macro_data\"),\n    )\n    if \"error\" in result:\n        print(result[\"error\"])\n    else:\n        print(f\"CSV: {r['csv_paths']}\")\n        print(f\"描述: {r['description_path']}\")\n        print(f\"行数: {r['row_counts']}\")\n\nasyncio.run(main())\n```\n\n输出示例：\n```\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_yearly.csv\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_quarterly.csv\nCSV: /path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_monthly.csv\n描述:/path/to/workspace/mx_macro_data/mx_macro_data_4591GG28_description.txt\n行数: 年: 10行, 季: 20行, 月: 40行\n```\n\n## 输出文件说明\n\n| 文件 | 说明 |\n|------|------|\n| `mx_macro_data_<查询ID>_<频率>.csv` | 按频率分组的宏观数据表，UTF-8 编码，可直接用 Excel 或 pandas 打开。 |\n| `mx_macro_data_<查询ID>_description.txt` | 说明文件，含各频率数据统计、数据来源和单位等信息。 |\n\n## 环境变量\n\n| 变量                      | 说明                                  | 默认                     |\n| ------------------------- | ------------------------------------- | ------------------------ |\n| `MX_MACRO_DATA_OUTPUT_DIR` | CSV 与描述文件的输出目录（可选）      | `workspace/mx_macro_data` |\n| `EM_API_KEY`              | 东方财富宏观查数工具 API 密钥（必备） | 无                       |\n\n## 常见问题\n\n### 用户常见问题\n\n**Q: 提示\"请设置 EM_API_KEY 环境变量\"怎么办？**\n\nA: 按以下步骤配置 API 密钥：\n1. 访问 [东方财富宏观查数工具](https://ai.eastmoney.com/mxClaw) 注册并获取 `API_KEY`。\n2. 配置环境变量：\n   ```bash\n   # macOS/Linux\n   export EM_API_KEY=\"your_api_key_here\"\n   \n   # Windows PowerShell\n   $env:EM_API_KEY=\"your_api_key_here\"\n   ```\n\n**Q: 如何指定输出目录？**\n\nA: 通过设置 `MX_MACRO_DATA_OUTPUT_DIR` 环境变量：\n```bash\nexport MX_MACRO_DATA_OUTPUT_DIR=\"/path/to/output\"\npython3 scripts/get_data.py --query \"查询内容\"\n```\n\n### 开发者常见问题（规划引擎集成）\n\n**Q: 为什么需要上层规划引擎做复核？**\n\nA: 本 Skill 专注于单一查询能力，不负责数据完整性校验。完整性验证（如\"中国各省\"是否真的覆盖全部省份）属于业务逻辑范畴，更适合由具备上下文理解和决策能力的规划引擎来处理。\n\n**Q: 如何判断何时进行复核？**\n\nA: 当原始用户意图包含以下特征时，应自动触发复核流程：\n- **集合性词汇**：如\"各省\"、\"各地区\"、\"华东地区\"等\n- **多指标查询**：如\"GDP 和 CPI\"、\"主要经济指标\"等\n\n**Q: 如何处理不同频率的数据？**\nA: **必须**对每种频率的 CSV 文件**分别**执行完整性审计和补全。年频数据的缺失不能用月频数据补全，反之亦然。\n\nFile v1.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn7b4ptpdag877t9kmq8axyja182taab\",\n  \"slug\": \"mx-macro-data\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1773827834494\n}\n\nArchive v1.0.4: 3 files, 12163 bytes\n\nFiles: scripts/get_data.py (19469b), SKILL.md (12722b), _meta.json (132b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: MX_MacroData\ndescription: 基于东方财富专业数据库，支持自然语言查询全球宏观经济数据，涵盖国民经济核算、价格指数、货币金融、财政收支、对外贸易、就业民生、产业运行等多个领域，可满足各类宏观经济研究、市场分析、政策解读等多元化专业场景需求。返回结果包含数据说明及 csv 文件。\nmetadata:\n  {\n    \"openclaw\": {\n      \"requires\": {\n        \"env\": [\"EM_API_KEY\"],\n        \"bins\": [\"python3\", \"pip3\"]\n      },\n      \"install\": [\n        {\n          \"id\": \"pip-deps\",\n          \"kind\": \"python\",\n          \"package\": \"httpx\",\n          \"label\": \"Install Python dependencies\"\n        }\n      ]\n    }\n  }\n---\n\n# 宏观经济数据查询 (MX_MacroData)\n\n通过**文本输入**查询宏观经济数据，接口返回 JSON 后会自动转换为 **CSV** 并生成对应的**内容描述 txt** 文件。\n\n## 密钥来源与安全说明\n\n- 本技能仅使用一个环境变量：`EM_API_KEY`。\n- `EM_API_KEY` 由东方财富妙想服务（`https://ai.eastmoney.com/mxClaw`）签发，用于其接口鉴权。\n- 在提供密钥前，请先确认密钥来源、可用范围、有效期及是否支持重置/撤销。\n- 禁止在代码、提示词、日志或输出文件中硬编码/明文暴露密钥。\n\n## ⚠️ 核心输入约束 (Critical Input Constraints)\n\n- **时间维度**：支持相对时间表述（如“今年”、“过去三年”、“上月”）。\n- **地域维度**：支持宏观地区表述（如“中国”、“美国”、“欧元区”、“华东地区”、“中国各省”），无需拆解为具体省市列表。\n\n### 1. 禁止模糊商品类别 (No Ambiguous Commodities)\n- **禁止输入**：大类统称（如“稀土金属”、“有色金属”、“农产品”、“能源”、“科技股”）。\n- **要求**：必须解包为具体的**交易品种名称或代码**。\n  - ❌ 错误：`\"查询稀土价格走势\"`\n  - ✅ 正确：`\"查询氧化镨钕、氧化镝、氧化铽的价格走势\"`\n\n### 2. 禁止宏观泛指指标 (No Macro Generalizations without Metrics)\n- **禁止输入**：宽泛的经济概念而无具体指标（如“中国经济”、“美国制造业状况”、“全球通胀情况”）。\n- **要求**：必须指定具体的**指标名称**（如 GDP、CPI、PMI、失业率、工业增加值等）。\n  - ❌ 错误：`\"查询中国经济数据\"`\n  - ✅ 正确：`\"查询中国 GDP 同比增速、中国 CPI 同比\"`\n  - ✅ 正确：`\"查询美国制造业 PMI\"` (地域允许宏观，但指标必须具体)\n\n### 3. 时间与地域的灵活性 (Flexible Time & Region)\n- **时间**：无需绝对日期。\n  - ✅ 允许：`\"查询中国过去五年的M2增速\"`、`\"查询上个月美国的非农数据\"`、`\"查询黄金今日价格\"`。\n  - ✅ 允许（缺省）：`\"查询德国失业率\"` 。\n- **地域**：无需拆解为子集列表。\n  - ✅ 允许：`\"查询华东地区GDP\"`,`\"查询中国各省GDP\"`。\n  - ⚠️ 注意：若涉及“主要新兴市场”、“Top 5 国家”等动态排名指代，仍建议上层模型解包为具体国家列表（如 `\"查询中国、印度、巴西的M2\"`），以确保数据源一致性。\n\n## 🔄 输出接口与上层规划协议 (Output Interface & Orchestration Protocol)\n\n本 Skill 仅负责执行单次查询并生成文件。**为实现数据完整性保障，上层规划引擎必须根据以下协议，对本 Skill 的输出进行后续处理。**\n\n### 1. 输出文件结构 (Output File Structure)\n执行 `MX_MacroData` 后，Skill 将在指定目录下生成一个或多个 CSV 文件，以及一个描述文件。\n\n- **CSV 文件**：`MX_MacroData_<查询ID>_<频率>.csv`\n  - *示例*：`MX_MacroData_4591GG28_yearly.csv`, `MX_MacroData_4591GG28_quarterly.csv`, `MX_MacroData_4591GG28_monthly.csv`\n  - **注意**：文件数量和频率取决于查询指标的可用性（yearly、quarterly、monthly、weekly、daily）。\n- **描述文件**：`MX_MacroData_<查询ID>_description.txt`\n  - 包含数据来源、时间范围、指标说明等基础信息。\n\n### 2. 上层规划引擎必须执行的“完整性复核”逻辑 (Mandatory Verification Logic for Orchestrator)\n\n上层规划引擎在调用 `MX_MacroData` 后，**必须**执行以下工作流，以确保最终结果的完整性：\n#### **阶段 A: 任务解析与预期规划 (Task Parsing & Expectation Planning)**\n1.  **解析原始用户意图**：从用户查询中提取核心要素。\n2.  **构建预期全集 (Expected Universe)**：\n    - **地域**：通过规划引擎的内置知识库、搜索引擎或 LLM 推理能力，将模糊地域表述解析为具体行政单元。例如：\"中国各省\" → 34 个省级行政区；\"华东地区\" → 上海、江苏、浙江、安徽、福建、江西、山东共 7 个省市。\n    - **指标**：将复合指标拆解为独立指标。例如：\"GDP, CPI\" → [\"GDP\", \"CPI\"]。\n    - **频率**：根据查询语境推断预期频率，可能生成多个频率的数据文件（yearly、quarterly、monthly等）。\n\n#### **阶段 B: 文件读取与差异检测 (File Reading   & Gap Detection)**\n1.  **获取输出文件列表**：获取 `MX_MacroData` 生成的所有 CSV 文件路径。\n2.  **读取并分析每个文件**：\n    - 使用规划引擎内置的代码执行能力（如 Python Sandbox）读取 CSV。\n    - 提取每个文件中实际覆盖的 `(地区, 指标)` 组合及其数量。\n3.  **执行差异计算**：\n    - 对**每一种频率**的文件，分别计算 `Missing_Pairs_<Frequency> = Expected_Universe - Actual_From_CSV_File`。\n    - 识别出具体缺失的项（如：年频数据中缺失“西藏-GDP”）。\n\n#### **阶段 C: 决策与迭代调用 (Decision & Iterative Invocation)**\n\n> ⚠️ **强制要求**：上层规划引擎**必须**执行以下补全流程，不得在存在缺失数据时直接交付结果。\n\n1.  **判断是否需要补全**：\n    - 如果所有频率的 `Missing_Pairs` 集合均为空：**结束流程**，交付现有文件。\n    - 如果存在非空的 `Missing_Pairs` 集合：**必须进入补全流程**，不可跳过。\n\n2.  **构建补全查询**：\n    - 根据 `Missing_Pairs_<Frequency>` 中的缺失项，结合原始查询的时间维度，构造新的自然语言查询。\n    - **示例**：\n      ```\n      Missing_Pairs_季 = [(\"西藏\", \"GDP\"), (\"宁夏\", \"GDP\")]\n      ↓\n      补全查询 = \"查询西藏自治区、宁夏回族自治区的 GDP 季度数据，时间范围同前次查询\"\n      ```\n\n3.  **再次调用 `MX_MacroData`**：\n    - 使用新构造的补全查询，再次调用本 Skill 获取缺失数据。\n\n4.  **迭代循环**：\n    - 重复执行 **阶段 B（差异检测）→ 阶段 C（决策补全）**，直至满足以下任一条件：\n      - ✅ 所有频率下的缺失项均已补全\n      - ⚠️ 达到最大重试次数5次，此时应向用户报告未能补全的数据项\n\n#### **阶段 D: 最终交付 (Final Delivery)**\n1.  **数据合并（可选）**：\n    - 如果需要，可将同一频率下多次查询的结果（如多个 `quarterly.csv` 文件）合并为一个完整的 `quarterly.csv`。\n2.  **状态报告**：\n    - 规划引擎应向上游（如用户界面）报告最终交付的文件列表，并可选地报告补全过程（如“系统已自动补全 2 个缺失数据项”）。\n---\n\n## 功能范围\n\n### 基础查询能力\n\n- **经济指标**：GDP、CPI、PPI、PMI、失业率、工业增加值等（支持指定国家/地区及具体指标名）。\n- **货币金融**：M1/M2 货币供应量、社融规模、国债利率、汇率（支持指定币种对）。\n- **商品价格**：黄金、白银、原油、铜、特定稀土氧化物等（**必须**指定具体品种）。\n- **时间频率**：自动识别相对时间（年、季、月、周、日）并匹配对应频率数据；若未指定，返回最新数据。\n\n### 查询示例对照表\n\n| 类型     | ❌ 禁止的模糊查询 (指标/品种不明)      | ✅ 允许的明确查询 (时间/地区可灵活)             |\n|----------|--------------------------------------|------------------------------------------------|\n| 国内经济 | 查询华东地区GDP                        | 查询华东地区 GDP                              |\n| 货币供应 | 查询主要新兴市场货币供应                | 查询中国、印度、巴西的 M2 货币供应量             |\n| 商品价格 | 查询稀土和有色金属价格                 | 查询氧化镨钕、铜、铝的现货价格走势                |\n| 全球宏观 | 查询 Top 3 经济体非农数据              | 查询美国、中国、德国的非农就业数据                |\n| 时间灵活 | (无)                                  | 查询美国过去十年的失业率趋势                    |\n| 默认时间 | (无)                                  | 查询日本最新的核心 CPI 数据                     |\n\n\n## 前提条件\n\n### 1. 注册东方财富妙想账号\n\n访问 https://ai.eastmoney.com/mxClaw 注册账号并获取API_KEY。\n\n### 2. 配置 Token\n\n```bash\n# 添加到 ~/.zshrc\nexport EM_API_KEY=\"your_api_key_here\"\n```\n\n然后执行：\n\n```bash\nsource ~/.zshrc\n```\n\n### 3. 安装依赖\n\n\n```bash\npip3 install httpx --user\n```\n\n## 快速开始\n\n### 1. 命令行调用\n\n在项目根目录或配置的工作目录下执行：\n\n```bash\npython3 {baseDir}/scripts/get_data.py --query 中国GDP\n```\n**参数说明：**\n\n| 参数            | 说明             | 必填 |\n| --------------- | ---------------- | ---- |\n| `--query`       | 自然语言查询条件 | ✅    |\n```\n### 2. 代码调用\n\n```python\nimport asyncio\nfrom pathlib import Path\nfrom scripts.get_data import query_macro_data\n\nasync def main():\n    result = await query_macro_data(\n        query=\"中国近五年GDP\",\n        output_dir=Path(\"workspace/MX_MacroData\"),\n    )\n    if \"error\" in result:\n        print(result[\"error\"])\n    else:\n        print(f\"CSV: {r['csv_paths']}\")\n        print(f\"描述: {r['description_path']}\")\n        print(f\"行数: {r['row_counts']}\")\n\nasyncio.run(main())\n```\n\n输出示例：\n```\nCSV: /path/to/workspace/MX_MacroData/MX_MacroData_4591GG28_yearly.csv\nCSV: /path/to/workspace/MX_MacroData/MX_MacroData_4591GG28_quarterly.csv\nCSV: /path/to/workspace/MX_MacroData/MX_MacroData_4591GG28_monthly.csv\n描述:/path/to/workspace/MX_MacroData/MX_MacroData_4591GG28_description.txt\n行数: 年: 10行, 季: 20行, 月: 40行\n```\n\n## 输出文件说明\n\n| 文件 | 说明 |\n|------|------|\n| `MX_MacroData_<查询ID>_<频率>.csv` | 按频率分组的宏观数据表，UTF-8 编码，可直接用 Excel 或 pandas 打开。 |\n| `MX_MacroData_<查询ID>_description.txt` | 说明文件，含各频率数据统计、数据来源和单位等信息。 |\n\n## 环境变量\n\n| 变量                      | 说明                                  | 默认                     |\n| ------------------------- | ------------------------------------- | ------------------------ |\n| `MX_MacroData_OUTPUT_DIR` | CSV 与描述文件的输出目录（可选）      | `workspace/MX_MacroData` |\n| `EM_API_KEY`              | 东方财富宏观查数工具 API 密钥（必备） | 无                       |\n\n## 常见问题\n\n### 用户常见问题\n\n**Q: 提示\"请设置 EM_API_KEY 环境变量\"怎么办？**\n\nA: 按以下步骤配置 API 密钥：\n1. 访问 [东方财富宏观查数工具](https://ai.eastmoney.com/mxClaw) 注册并获取 `API_KEY`。\n2. 配置环境变量：\n   ```bash\n   # macOS/Linux\n   export EM_API_KEY=\"your_api_key_here\"\n   \n   # Windows PowerShell\n   $env:EM_API_KEY=\"your_api_key_here\"\n   ```\n\n**Q: 如何指定输出目录？**\n\nA: 通过设置 `MX_MacroData_OUTPUT_DIR` 环境变量：\n```bash\nexport MX_MacroData_OUTPUT_DIR=\"/path/to/output\"\npython3 scripts/get_data.py --query \"查询内容\"\n```\n\n### 开发者常见问题（规划引擎集成）\n\n**Q: 为什么需要上层规划引擎做复核？**\n\nA: 本 Skill 专注于单一查询能力，不负责数据完整性校验。完整性验证（如\"中国各省\"是否真的覆盖全部省份）属于业务逻辑范畴，更适合由具备上下文理解和决策能力的规划引擎来处理。\n\n**Q: 如何判断何时进行复核？**\n\nA: 当原始用户意图包含以下特征时，应自动触发复核流程：\n- **集合性词汇**：如\"各省\"、\"各地区\"、\"华东地区\"等\n- **多指标查询**：如\"GDP 和 CPI\"、\"主要经济指标\"等\n\n**Q: 如何处理不同频率的数据？**\nA: **必须**对每种频率的 CSV 文件**分别**执行完整性审计和补全。年频数据的缺失不能用月频数据补全，反之亦然。\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn7b4ptpdag877t9kmq8axyja182taab\",\n  \"slug\": \"mx-macro-data\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1773741475804\n}\n\nArchive v1.0.3: 3 files, 12164 bytes\n\nFiles: scripts/get_data.py (19469b), SKILL.md (12722b), _meta.json (132b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: MX_MacroData\ndescription: 基于东方财富专业数据库，支持自然语言查询全球宏观经济数据，涵盖国民经济核算、价格指数、货币金融、财政收支、对外贸易、就业民生、产业运行等多个领域，可满足各类宏观经济研究、市场分析、政策解读等多元化专业场景需求。返回结果包含数据说明及 csv 文件。\nmetadata:\n  {\n    \"openclaw\": {\n      \"requires\": {\n        \"env\": [\"EM_API_KEY\"],\n        \"bins\": [\"python3\", \"pip3\"]\n      },\n      \"install\": [\n        {\n          \"id\": \"pip-deps\",\n          \"kind\": \"python\",\n          \"package\": \"httpx\",\n          \"label\": \"Install Python dependencies\"\n        }\n      ]\n    }\n  }\n---\n\n# 宏观经济数据查询 (MX_MacroData)\n\n通过**文本输入**查询宏观经济数据，接口返回 JSON 后会自动转换为 **CSV** 并生成对应的**内容描述 txt** 文件。\n\n## 密钥来源与安全说明\n\n- 本技能仅使用一个环境变量：`EM_API_KEY`。\n- `EM_API_KEY` 由东方财富妙想服务（`https://ai.eastmoney.com/mxClaw`）签发，用于其接口鉴权。\n- 在提供密钥前，请先确认密钥来源、可用范围、有效期及是否支持重置/撤销。\n- 禁止在代码、提示词、日志或输出文件中硬编码/明文暴露密钥。\n\n## ⚠️ 核心输入约束 (Critical Input Constraints)\n\n- **时间维度**：支持相对时间表述（如“今年”、“过去三年”、“上月”）。\n- **地域维度**：支持宏观地区表述（如“中国”、“美国”、“欧元区”、“华东地区”、“中国各省”），无需拆解为具体省市列表。\n\n### 1. 禁止模糊商品类别 (No Ambiguous Commodities)\n- **禁止输入**：大类统称（如“稀土金属”、“有色金属”、“农产品”、“能源”、“科技股”）。\n- **要求**：必须解包为具体的**交易品种名称或代码**。\n  - ❌ 错误：`\"查询稀土价格走势\"`\n  - ✅ 正确：`\"查询氧化镨钕、氧化镝、氧化铽的价格走势\"`\n\n### 2. 禁止宏观泛指指标 (No Macro Generalizations without Metrics)\n- **禁止输入**：宽泛的经济概念而无具体指标（如“中国经济”、“美国制造业状况”、“全球通胀情况”）。\n- **要求**：必须指定具体的**指标名称**（如 GDP、CPI、PMI、失业率、工业增加值等）。\n  - ❌ 错误：`\"查询中国经济数据\"`\n  - ✅ 正确：`\"查询中国 GDP 同比增速、中国 CPI 同比\"`\n  - ✅ 正确：`\"查询美国制造业 PMI\"` (地域允许宏观，但指标必须具体)\n\n### 3. 时间与地域的灵活性 (Flexible Time & Region)\n- **时间**：无需绝对日期。\n  - ✅ 允许：`\"查询中国过去五年的M2增速\"`、`\"查询上个月美国的非农数据\"`、`\"查询黄金今日价格\"`。\n  - ✅ 允许（缺省）：`\"查询德国失业率\"` 。\n- **地域**：无需拆解为子集列表。\n  - ✅ 允许：`\"查询华东地区GDP\"`,`\"查询中国各省GDP\"`。\n  - ⚠️ 注意：若涉及“主要新兴市场”、“Top 5 国家”等动态排名指代，仍建议上层模型解包为具体国家列表（如 `\"查询中国、印度、巴西的M2\"`），以确保数据源一致性。\n\n## 🔄 输出接口与上层规划协议 (Output Interface & Orchestration Protocol)\n\n本 Skill 仅负责执行单次查询并生成文件。**为实现数据完整性保障，上层规划引擎必须根据以下协议，对本 Skill 的输出进行后续处理。**\n\n### 1. 输出文件结构 (Output File Structure)\n执行 `MX_MacroData` 后，Skill 将在指定目录下生成一个或多个 CSV 文件，以及一个描述文件。\n\n- **CSV 文件**：`MX_MacroData_<查询ID>_<频率>.csv`\n  - *示例*：`MX_MacroData_4591GG28_yearly.csv`, `MX_MacroData_4591GG28_quarterly.csv`, `MX_MacroData_4591GG28_monthly.csv`\n  - **注意**：文件数量和频率取决于查询指标的可用性（yearly、quarterly、monthly、weekly、daily）。\n- **描述文件**：`MX_MacroData_<查询ID>_description.txt`\n  - 包含数据来源、时间范围、指标说明等基础信息。\n\n### 2. 上层规划引擎必须执行的“完整性复核”逻辑 (Mandatory Verification Logic for Orchestrator)\n\n上层规划引擎在调用 `MX_MacroData` 后，**必须**执行以下工作流，以确保最终结果的完整性：\n#### **阶段 A: 任务解析与预期规划 (Task Parsing & Expectation Planning)**\n1.  **解析原始用户意图**：从用户查询中提取核心要素。\n2.  **构建预期全集 (Expected Universe)**：\n    - **地域**：通过规划引擎的内置知识库、搜索引擎或 LLM 推理能力，将模糊地域表述解析为具体行政单元。例如：\"中国各省\" → 34 个省级行政区；\"华东地区\" → 上海、江苏、浙江、安徽、福建、江西、山东共 7 个省市。\n    - **指标**：将复合指标拆解为独立指标。例如：\"GDP, CPI\" → [\"GDP\", \"CPI\"]。\n    - **频率**：根据查询语境推断预期频率，可能生成多个频率的数据文件（yearly、quarterly、monthly等）。\n\n#### **阶段 B: 文件读取与差异检测 (File Reading   & Gap Detection)**\n1.  **获取输出文件列表**：获取 `MX_MacroData` 生成的所有 CSV 文件路径。\n2.  **读取并分析每个文件**：\n    - 使用规划引擎内置的代码执行能力（如 Python Sandbox）读取 CSV。\n    - 提取每个文件中实际覆盖的 `(地区, 指标)` 组合及其数量。\n3.  **执行差异计算**：\n    - 对**每一种频率**的文件，分别计算 `Missing_Pairs_<Frequency> = Expected_Universe - Actual_From_CSV_File`。\n    - 识别出具体缺失的项（如：年频数据中缺失“西藏-GDP”）。\n\n#### **阶段 C: 决策与迭代调用 (Decision & Iterative Invocation)**\n\n> ⚠️ **强制要求**：上层规划引擎**必须**执行以下补全流程，不得在存在缺失数据时直接交付结果。\n\n1.  **判断是否需要补全**：\n    - 如果所有频率的 `Missing_Pairs` 集合均为空：**结束流程**，交付现有文件。\n    - 如果存在非空的 `Missing_Pairs` 集合：**必须进入补全流程**，不可跳过。\n\n2.  **构建补全查询**：\n    - 根据 `Missing_Pairs_<Frequency>` 中的缺失项，结合原始查询的时间维度，构造新的自然语言查询。\n    - **示例**：\n      ```\n      Missing_Pairs_季 = [(\"西藏\", \"GDP\"), (\"宁夏\", \"GDP\")]\n      ↓\n      补全查询 = \"查询西藏自治区、宁夏回族自治区的 GDP 季度数据，时间范围同前次查询\"\n      ```\n\n3.  **再次调用 `MX_MacroData`**：\n    - 使用新构造的补全查询，再次调用本 Skill 获取缺失数据。\n\n4.  **迭代循环**：\n    - 重复执行 **阶段 B（差异检测）→ 阶段 C（决策补全）**，直至满足以下任一条件：\n      - ✅ 所有频率下的缺失项均已补全\n      - ⚠️ 达到最大重试次数5次，此时应向用户报告未能补全的数据项\n\n#### **阶段 D: 最终交付 (Final Delivery)**\n1.  **数据合并（可选）**：\n    - 如果需要，可将同一频率下多次查询的结果（如多个 `quarterly.csv` 文件）合并为一个完整的 `quarterly.csv`。\n2.  **状态报告**：\n    - 规划引擎应向上游（如用户界面）报告最终交付的文件列表，并可选地报告补全过程（如“系统已自动补全 2 个缺失数据项”）。\n---\n\n## 功能范围\n\n### 基础查询能力\n\n- **经济指标**：GDP、CPI、PPI、PMI、失业率、工业增加值等（支持指定国家/地区及具体指标名）。\n- **货币金融**：M1/M2 货币供应量、社融规模、国债利率、汇率（支持指定币种对）。\n- **商品价格**：黄金、白银、原油、铜、特定稀土氧化物等（**必须**指定具体品种）。\n- **时间频率**：自动识别相对时间（年、季、月、周、日）并匹配对应频率数据；若未指定，返回最新数据。\n\n### 查询示例对照表\n\n| 类型     | ❌ 禁止的模糊查询 (指标/品种不明)      | ✅ 允许的明确查询 (时间/地区可灵活)             |\n|----------|--------------------------------------|------------------------------------------------|\n| 国内经济 | 查询华东地区GDP                        | 查询华东地区 GDP                              |\n| 货币供应 | 查询主要新兴市场货币供应                | 查询中国、印度、巴西的 M2 货币供应量             |\n| 商品价格 | 查询稀土和有色金属价格                 | 查询氧化镨钕、铜、铝的现货价格走势                |\n| 全球宏观 | 查询 Top 3 经济体非农数据              | 查询美国、中国、德国的非农就业数据                |\n| 时间灵活 | (无)                                  | 查询美国过去十年的失业率趋势                    |\n| 默认时间 | (无)                                  | 查询日本最新的核心 CPI 数据                     |\n\n\n## 前提条件\n\n### 1. 注册东方财富妙想账号\n\n访问 https://ai.eastmoney.com/mxClaw 注册账号并获取API_KEY。\n\n### 2. 配置 Token\n\n```bash\n# 添加到 ~/.zshrc\nexport EM_API_KEY=\"your_api_key_here\"\n```\n\n然后执行：\n\n```bash\nsource ~/.zshrc\n```\n\n### 3. 安装依赖\n\n\n```bash\npip3 install httpx --user\n```\n\n## 快速开始\n\n### 1. 命令行调用\n\n在项目根目录或配置的工作目录下执行：\n\n```bash\npython3 {baseDir}/scripts/get_data.py --query 中国GDP\n```\n**参数说明：**\n\n| 参数            | 说明             | 必填 |\n| --------------- | ---------------- | ---- |\n| `--query`       | 自然语言查询条件 | ✅    |\n```\n### 2. 代码调用\n\n```python\nimport asyncio\nfrom pathlib import Path\nfrom scripts.get_data import query_macro_data\n\nasync def main():\n    result = await query_macro_data(\n        query=\"中国近五年GDP\",\n        output_dir=Path(\"workspace/MX_MacroData\"),\n    )\n    if \"error\" in result:\n        print(result[\"error\"])\n    else:\n        print(f\"CSV: {r['csv_paths']}\")\n        print(f\"描述: {r['description_path']}\")\n        print(f\"行数: {r['row_counts']}\")\n\nasyncio.run(main())\n```\n\n输出示例：\n```\nCSV: /path/to/workspace/MX_MacroData/MX_MacroData_4591GG28_yearly.csv\nCSV: /path/to/workspace/MX_MacroData/MX_MacroData_4591GG28_quarterly.csv\nCSV: /path/to/workspace/MX_MacroData/MX_MacroData_4591GG28_monthly.csv\n描述:/path/to/workspace/MX_MacroData/MX_MacroData_4591GG28_description.txt\n行数: 年: 10行, 季: 20行, 月: 40行\n```\n\n## 输出文件说明\n\n| 文件 | 说明 |\n|------|------|\n| `MX_MacroData_<查询ID>_<频率>.csv` | 按频率分组的宏观数据表，UTF-8 编码，可直接用 Excel 或 pandas 打开。 |\n| `MX_MacroData_<查询ID>_description.txt` | 说明文件，含各频率数据统计、数据来源和单位等信息。 |\n\n## 环境变量\n\n| 变量                      | 说明                                  | 默认                     |\n| ------------------------- | ------------------------------------- | ------------------------ |\n| `MX_MacroData_OUTPUT_DIR` | CSV 与描述文件的输出目录（可选）      | `workspace/MX_MacroData` |\n| `EM_API_KEY`              | 东方财富宏观查数工具 API 密钥（必备） | 无                       |\n\n## 常见问题\n\n### 用户常见问题\n\n**Q: 提示\"请设置 EM_API_KEY 环境变量\"怎么办？**\n\nA: 按以下步骤配置 API 密钥：\n1. 访问 [东方财富宏观查数工具](https://ai.eastmoney.com/mxClaw) 注册并获取 `API_KEY`。\n2. 配置环境变量：\n   ```bash\n   # macOS/Linux\n   export EM_API_KEY=\"your_api_key_here\"\n   \n   # Windows PowerShell\n   $env:EM_API_KEY=\"your_api_key_here\"\n   ```\n\n**Q: 如何指定输出目录？**\n\nA: 通过设置 `MX_MacroData_OUTPUT_DIR` 环境变量：\n```bash\nexport MX_MacroData_OUTPUT_DIR=\"/path/to/output\"\npython3 scripts/get_data.py --query \"查询内容\"\n```\n\n### 开发者常见问题（规划引擎集成）\n\n**Q: 为什么需要上层规划引擎做复核？**\n\nA: 本 Skill 专注于单一查询能力，不负责数据完整性校验。完整性验证（如\"中国各省\"是否真的覆盖全部省份）属于业务逻辑范畴，更适合由具备上下文理解和决策能力的规划引擎来处理。\n\n**Q: 如何判断何时进行复核？**\n\nA: 当原始用户意图包含以下特征时，应自动触发复核流程：\n- **集合性词汇**：如\"各省\"、\"各地区\"、\"华东地区\"等\n- **多指标查询**：如\"GDP 和 CPI\"、\"主要经济指标\"等\n\n**Q: 如何处理不同频率的数据？**\nA: **必须**对每种频率的 CSV 文件**分别**执行完整性审计和补全。年频数据的缺失不能用月频数据补全，反之亦然。\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn7b4ptpdag877t9kmq8axyja182taab\",\n  \"slug\": \"mx-macro-data\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1773660152105\n}","readmeExcerpt":"Skill: Global Macro Database Assistant Owner: financial-ai-analyst Summary: 基于东方财富数据库，支持自然语言查询全球宏观经济数据，涵盖国民经济核算、价格指数、货币金融、财政收支、对外贸易、就业民生、产业运行等多个领域，适配各类宏观经济研究、市场分析、政策解读等多元专业场景需求。返回结果包含数据说明及 csv 文件。Natural language query for macroecono... Tags: Marco:1.0.5, analysis:1.0.5, economic:1.0.5, financial:1.0.5, latest:1.0.12, market:1.0.5, research:1.0.5 Version history: v1.0.12 | 2026-04-17T11:19:21.300Z | user Publish 1.0.","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"Missing_Pairs_季 = [(\"西藏\", \"GDP\"), (\"宁夏\", \"GDP\")]\n      ↓\n      补全查询 = \"查询西藏自治区、宁夏回族自治区的 GDP 季度数据，时间范围同前次查询\""},{"language":"bash","snippet":"# macOS 添加到 ~/.zshrc，Linux 添加到 ~/.bashrc\nexport EM_API_KEY=\"your_api_key_here\""},{"language":"bash","snippet":"source ~/.zshrc"},{"language":"bash","snippet":"source ~/.bashrc"},{"language":"bash","snippet":"pip3 install httpx --user"},{"language":"bash","snippet":"python3 {baseDir}/scripts/get_data.py --query 中国GDP"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: mx-macro-data\ndescription: 基于东方财富数据库，支持自然语言查询全球宏观经济数据，涵盖国民经济核算、价格指数、货币金融、财政收支、对外贸易、就业民生、产业运行等多个领域，适配各类宏观经济研究、市场分析、政策解读等多元专业场景需求。返回结果包含数据说明及 csv 文件。Natural language query for macroeconomic data from financial databases, covering national economic accounting, price indices, monetary finance, fiscal revenue and expenditure, foreign trade, employment, industrial operation, and other fields. It supports diverse scenarios including macroeconomic research, market analysis, and policy interpretation.\nmetadata:\n  {\n    \"openclaw\": {\n      \"requires\": {\n        \"env\":[\"EM_API_KEY\"]\n      },\n      \"install\": [\n        {\n          \"id\": \"pip-deps\",\n          \"kind\": \"python\",\n          \"package\": \"httpx\",\n          \"label\": \"Install Python dependencies\"\n        }\n      ]\n    }\n  }\n---\n\n# 宏观经济数据查询 (mx_macro_data)\n\n通过**文本输入**查询宏观经济数据，接口返回 JSON 后会自动转换为 **CSV** 并生成对应的**内容描述 txt** 文件。\n\n## 密钥来源与安全说明\n\n- 本技能仅使用一个环境变量：`EM_API_KEY`。\n- `EM_API_KEY` 由东方财富妙想服务（`https://ai.eastmoney.com/mxClaw`）签发，用于其接口鉴权。\n- 在提供密钥前，请先确认密钥来源、可用范围、有效期及是否支持重置/撤销。\n- 禁止在代码、提示词、日志或输出文件中硬编码/明文暴露密钥。\n\n## ⚠️ 核心输入约束 (Critical Input Constraints)\n\n- **时间维度**：支持相对时间表述（如“今年”、“过去三年”、“上月”）。\n- **地域维度**：支持宏观地区表述（如“中国”、“美国”、“欧元区”、“华东地区”、“中国各省”），无需拆解为具体省市列表。\n\n### 1. 禁止模糊商品类别 (No Ambiguous Commodities)\n- **禁止输入**：大类统称（如“稀土金属”、“有色金属”、“农产品”、“能源”、“科技股”）。\n- **要求**：必须解包为具体的**交易品种名称或代码**。\n  - ❌ 错误：`\"查询稀土价格走势\"`\n  - ✅ 正确：`\"查询氧化镨钕、氧化镝、氧化铽的价格走势\"`\n\n### 2. 禁止宏观泛指指标 (No Macro Generalizations without Metrics)\n- **禁止输入**：宽泛的经济概念而无具体指标（如“中国经济”、“美国制造业状况”、“全球通胀情况”）。\n- **要求**：必须指定具体的**指标名称**（如 GDP、CPI、PMI、失业率、工业增加值等）。\n  - ❌ 错误：`\"查询中国经济数据\"`\n  - ✅ 正确：`\"查询中国 GDP 同比增速、中国 CPI 同比\"`\n  - ✅ 正确：`\"查询美国制造业 PMI\"` (地域允许宏观，但指标必须具体)\n\n### 3. 时间与地域的灵活性 (Flexible Time & Region)\n- **时间**：无需绝对日期。\n  - ✅ 允许：`\"查询中国过去五年的M2增速\"`、`\"查询上个月美国的非农数据\"`、`\"查询黄金今日价格\"`。\n  - ✅ 允许（缺省）：`\"查询德国失业率\"` 。\n- **地域**：无需拆解为子集列表。\n  - ✅ 允许：`\"查询华东地区GDP\"`,`\"查询中国各省GDP\"`。\n  - ⚠️ 注意：若涉及“主要新兴市场”、“Top 5 国家”等动态排名指代，仍建议上层模型解包为具体国家列表（如 `\"查询中国、印度、巴西的M2\"`），以确保数据源一致性。\n\n## 🔄 输出接口与上层规划协议 (Output Interface & Orchestration Protocol)\n\n本 Skill 仅负责执行单次查询并生成文件。**为实现数据完整性保障，上层规划引擎必须根据以下协议，对本 Skill 的输出进行后续处理。**\n\n### 1. 输出文件结构 (Output File Structure)\n执行 `mx_macro_data` 后，Skill 将在指定目录下生成一个或多个 CSV 文件，以及一个描述文件。\n\n- **CSV 文件**：`mx_macro_data_<查询ID>_<频率>.csv`\n  - *示例*：`mx_macro_data_4591GG28_yearly.csv`, `mx_macro_data_4591GG28_quarterly.csv`, `mx_macro_data_4591GG28_monthly.csv`\n  - **注意**：文件数量和频率取决于查询指标的可用性（yearly、quarterly、monthly、weekly、daily）。\n- **描述文件**：`mx_macro_data_<查询ID>_description.txt`\n  - 包含数据来源、时间范围、指标说明等基础信息。\n\n### 2. 上层规划引擎必须执行的“完整性复核”逻辑 (Mandatory Verification Logic for Orchestrator)\n\n上层规划引擎在调用 `mx_macro_data` 后，**必须**执行以下工作流，以确保最终结果的完整性：\n#### **阶段 A: 任务解析与预期规划 (Task Parsing & Expectation Planning)**\n1.  **解析原始用户意图**：从用户查询中提取核心要素。\n2.  **构建预期全集 (Expected Universe)**：\n    - **地域**：通过规划引擎的内置知识库、搜索引擎或 LLM 推理能力，将模糊地域表述解析为具体行政单元。例如：\"中国各省\" → 34 个省级行政区；\"华东地区\" → 上海、江苏、浙江、安徽、福建、江西、山东共 7 个省市。\n    - **指标**：将复合指标拆解为独立指标。例如：\"GDP, CPI\" → [\"GDP\", \"CPI\"]。\n    - **频率**：根据查询语境推断预期频率，可能生成多个频率的数据文件（yearl"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7b4ptpdag877t9kmq8axyja182taab\",\n  \"slug\": \"mx-macro-data\",\n  \"version\": \"1.0.12\",\n  \"publishedAt\": 1776424761300\n}"},{"path":"skill-card.md","content":"## Description:\n\nQueries Eastmoney macroeconomic data from natural-language prompts and saves returned tables as CSV files with a text description.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[financial-ai-analyst](https://clawhub.ai/user/financial-ai-analyst)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nAnalysts, researchers, and agents use this skill to retrieve specific macroeconomic indicators, market data, and commodity series from Eastmoney and produce CSV outputs for review or downstream analysis.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill contacts Eastmoney services during normal operation.\n\nMitigation: Run it only where those outbound requests are expected and allowed.\n\nRisk: The EM_API_KEY credential could be exposed or misused if broadly scoped.\n\nMitigation: Set EM_API_KEY only for users and sessions that need the service, and avoid storing it in code, prompts, logs, or generated files.\n\nRisk: Generated CSV files contain external data and may be opened in spreadsheet tools.\n\nMitigation: Treat generated CSV files as untrusted external data and inspect or sanitize them before opening them in Excel or similar applications.\n\nRisk: The skill writes result files under the configured output directory.\n\nMitigation: Run it in an isolated workspace and set MX_MACRO_DATA_OUTPUT_DIR explicitly when file placement matters.\n\nRisk: Large or ambiguous macroeconomic requests may return partial data or require follow-up queries.\n\nMitigation: Review the generated description and status messages, verify expected regions, indicators, and frequencies, and report or retry missing data when needed.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/financial-ai-analyst/skills/mx-macro-data)\n- [Eastmoney Miaoxiang Claw service](https://ai.eastmoney.com/mxClaw)\n- [Eastmoney API service endpoint](https://ai-saas.eastmoney.com)\n\n## Skill Output:\n\n**Output Type(s):** [CSV files, Text, Status metadata]\n\n**Output Format:** [CSV files grouped by frequency, a UTF-8 text description file, and returned path/count metadata]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires EM_API_KEY and writes outputs under MX_MACRO_DATA_OUTPUT_DIR or the skill default output directory.]\n\n## Skill Version(s):\n\n1.0.12 (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":"基于东方财富数据库，支持自然语言查询全球宏观经济数据，涵盖国民经济核算、价格指数、货币金融、财政收支、对外贸易、就业民生、产业运行等多个领域，适配各类宏观经济研究、市场分析、政策解读等多元专业场景需求。返回结果包含数据说明及 csv 文件。Natural language query for macroecono... Skill: Global Macro Database Assistant Owner: financial-ai-analyst Summary: 基于东方财富数据库，支持自然语言查询全球宏观经济数据，涵盖国民经济核算、价格指数、货币金融、财政收支、对外贸易、就业民生、产业运行等多个领域，适配各类宏观经济研究、市场分析、政策解读等多元专业场景需求。返回结果包含数据说明及 csv 文件。Natural language query for macroecono... Tags: Marco:1.0.5, analysis:1.0.5, economic:1.0.5, financial:1.0.5, latest:1.0.12, market:1.0.5, research:1.0.5 Version history: v1.0.12 | 2026-04-17T11:19:21.300Z | user Publish 1.0.","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1083,"uniquenessScore":53,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T01:49:13.159Z","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-09T01:49:13.159Z","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-09T12:05:44.133Z","emptyReason":null},"items":[{"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":"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-04-10T18:48:31.762Z","createdAt":"2026-02-25T03:38:16.584Z","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"}]}}}