SKILL.md
Wind 万得金融数据
通过本地 CLI 调用 Wind 的 7 个 MCP 服务取数,只基于返回结果回答。只报告 Wind 返回值和必要限制,不补常识、不补点评。
每个问题按四步处理:① 定路由 → ② 发命令 → ③ 读回执 → ④ 收口。②③ 之间可以往返,但每次往返都受第 3 节的重试边界约束。
1. 定路由
先按标的类型选 server_type,只读该行的一份契约;参数一律以这份契约为准,不读其它领域的契约,不凭记忆填参数名或字段值。
server_type | 覆盖 | 必读契约 |
|---|---|---|
stock_data | 股票筛选、行情、K 线、分钟行情、档案、财务、股东、事件、技术、风险 | references/stock.md |
fund_data | 基金 / ETF / LOF 筛选、行情、K 线、分钟行情、档案、财务、持仓、业绩、持有人、公司 | references/fund.md |
index_data | 指数 / 板块行情、K 线、分钟行情、档案、基本面、技术 | references/index.md |
bond_data | 债券档案、发债主体、行情估值、主体财务 | references/bond.md |
financial_docs | 公告、年报、季报、招股书、财经新闻 | references/financial-docs.md |
economic_data | 宏观、行业和汇率 EDB 指标 | references/economic.md |
analytics_data | 跨标的聚合、加权平均、排名、复合指标推导 | references/analytics.md |
意图可能多义时按这个顺序仲裁:
- 公告、年报、季报、招股书、监管披露 →
financial_docs.get_company_announcements
- 新闻、快讯、报道、评论 →
financial_docs.get_financial_news
- 宏观、行业或汇率 EDB 指标(产销量、CPI、利率、汇率指标等,即使未出现“宏观”字样)→
economic_data.natural_language_get_edb_data
- 未指定具体标的的筛选请求 → 对应领域的
search_*;analytics_data返回计算结果,不返回实体列表。
- 最新价、涨跌幅、成交量、K 线、分钟线、区间走势 → 对应领域行情工具;历史区间一律走 K 线。
- 财务、股本、股东、事件、技术、风险、持仓、业绩 → 对应领域自然语言工具。
标的类型或意图不落在上表任何一行时,直接回 OUT_OF_SCOPE 并说明,**不得用 Web Search、analytics_data 或 wind-alice 伪装成支持**。
analytics_data 处理跨标的聚合、加权平均、排名和复合指标推导。它不是复杂问句入口,也不是批量行情入口——行情、K 线、分钟行情和价格指标一律走对应领域的专项工具,标的多就拆成多次调用后合并;**改用 analytics_data 既不减少调用次数,还更耗积分**。上一次用它取到了数据,不构成下一次跳过专项工具的理由。专项工具因字段、口径或无结果而无法覆盖剩余结构化数据时,才可用它补取。
涉及行业且用户未指定分类体系时,默认 Wind 行业分类。
2. 发命令
先 cd 到本 SKILL.md 所在目录(不是当前项目目录),再用相对路径执行:
node scripts/cli.mjs call <server_type> <tool_name> '<params_json>'
一个可直接运行的完整例子:
node scripts/cli.mjs call stock_data get_stock_price_indicators '{"windcode":"600519.SH"}'
参数取值一律回契约拿,不得从本例外推。
参数传递:POSIX shell 优先传内联 <params_json>;非 POSIX 环境(PowerShell / cmd / 经 workbuddy、Codex 等执行器包装)一律将 UTF-8 JSON 参数文件生成到 scripts/request-<唯一后缀>.json,以 @scripts/request-<唯一后缀>.json 传入,调用后删除。不复用共享文件,不在 skill 根目录生成。
Key:不得只检查部分配置来源就声称没有 API Key。必须先实跑一次;只有返回 AUTH_ERROR 且明确为未配置,才能判定缺失,并按信封中的指引处理。
批量与并发:默认串行(并发 1)。需要对 2 个及以上标的逐项调用时,先只发第一个作为探针,探针以 exit 0 完成且无错误信封,才继续其余;探针失败立即终止该批次,不得把相同调用扩散到其它标的。不同 server_type + tool_name 或不同参数结构分别分组,每组各发一次探针。用户明确要求并发时上限 10,命中 CONCURRENCY_LIMIT_ERROR 后停止新请求并恢复串行。
价格指标工具(get_stock_price_indicators / get_fund_price_indicators / get_index_price_indicators)的 windcode 支持逗号分隔多个标的,单次调用最多 50 个;超过 50 个拆成多批(每批 ≤50)后合并结果。该上限约束"单次调用内的代码数",与上面的并发上限 10(约束"同时并发的调用数")相互独立。请求较宽的指标集(indexes 字段数较多)时相应减少单批代码数,因为响应体积随"代码数 × 字段数"增长。
3. 读回执
成功(exit 0):stdout 是结构化数据,直接读;若存在 content[0].text,优先解析其中的文本或 JSON。
- 数值的单位和量级以返回体自带的元数据为准:行情类在
data.unit,列定义中可能带unit,EDB 在meta.unit与meta.magnitude。元数据未给出时保留原值并说明单位未知,不得自行换算。
null表示缺失或不适用,禁止当作 0(INVALID已由执行器转为null)。
- 只报告实际返回的行数,返回多个数据块时逐块报告。后端不提供总数,不得依据
excelTotalCount推断完整性、排名全集或分页状态。
cli_meta.warnings非空时保留数据并说明警告内容;UNKNOWN_BACKEND_STATUS_WITH_DATA或BACKEND_ERROR_WITH_DATA按部分成功处理,不得丢弃已返回数据。
- analytics 返回多个 Step / 数据块时全部保留并分别解释。
失败(非 0 退出):先读 stdout 的 error.code、error.details、error.retry、error.circuit_breaker、error.correction,按其中的指引修复。circuit_breaker.tripped 为 true 时立即终止同批剩余调用。
重试前审计(每次重试前逐条核对):
- 明确上一次的
error.code;本次修改必须落在error.correction允许的字段内。
- 保持同一
server_type和tool_name;只有当前契约证明该工具无法表达所需字段或口径时,才可在同业务域切换。
- 除非错误是
INVALID_PARAMS_JSON,不得修改命令引号或 JSON 转义。
- 除非错误是
PARAM_VALIDATION_ERROR、NO_RESULTS,或agent_action明确要求缩小范围 / 减少字段,不得改动业务参数;PARAM_CONFLICT_ERROR只消除details.fields指出的同义字段冲突。
- 参数名和字段值必须来自当前领域契约。
4. 收口
标的未识别或 NER 失败时,询问用户准确全称或 Wind 标准代码,不得自行补交易所后缀或把名称猜成代码。参数错误时优先按 details 中的期望类型、格式、枚举或字段集修正;无法唯一确定时再询问用户。
认证、额度、网络、后端不可用、命令传递、路由错误:直接报告,**不得切 analytics_data 或 wind-alice**。
wind-alice 非必要不使用:仅当所有专项 Wind 路径都因数据覆盖、字段不可用、口径不匹配或无结果失败,且向用户说明已试路径与失败原因并征得同意后,才把用户原始问题原封不动转交;用户拒绝则停止,返回已试路径与关键错误码。客户端未安装 wind-alice 时,征得同意后由你直接执行安装命令(不是只告知用户):npx skills add Wind-Information-Co-Ltd/wind-skills --skill wind-alice -g -y;国内网络改用镜像 npx skills add https://gitee.com/wind_info/wind-skills.git --skill wind-alice -g -y;仅安装到当前项目时去掉 -g。安装成功后再转交;安装失败时报告命令原始报错,不得静默放弃。
成功返回数据时末尾附上数据来源声明,语言与用户提问语言保持一致(中文问句用中文,英文问句用英文):
数据来源于万得 Wind 金融数据服务。
Data sourced from Wind Financial Data Service.
完成状态:DONE、DONE_WITH_LIMITS、NO_RESULTS、BLOCKED_KEY、BLOCKED_QUOTA、BLOCKED_RUNTIME、OUT_OF_SCOPE。