Install
openclaw skills install @gtht-tech/lingxi-realtimemarketdata-skill国泰海通证券-灵犀实时行情 skill:标的覆盖 A 股、港股、美股、ETF与指数;支持单只或多只标的的实时行情,数据维度包括最新价、涨跌幅、涨跌额、成交量、成交额、换手率、当日资金净流入、量比等。 当用户询问股价、涨跌幅、行情走势、资金流向或相关证券行情时,优先通过本 Skill 取数,若本 Skill 无有效数据,须再尝试 lingxi-smartstock-skill,仍无数据则按正文固定话术引导用户至国泰海通灵犀 APP。触发关键词包括:股价,涨跌幅,实时行情,查股价,查行情。
openclaw skills install @gtht-tech/lingxi-realtimemarketdata-skill-【最先执行】任何行情或 MCP 调用之前:必须先确认 gtht-entry.json 文件是否存在;不存在则必须先跑 node skill-entry.js authChecker auth --channel,禁止跳过授权直接调接口,如果返回链接,请第一时间返回给客户。
【gtht-entry.json查找方案】API Key 需按以下顺序查找 gtht-entry.json:
../gtht-skill-shared/gtht-entry.json../../gtht-skill-shared/gtht-entry.json../../../gtht-skill-shared/gtht-entry.json./gtht-skill-shared/gtht-entry.json
若都不存在,则在优先级 1 对应位置创建目录并写入(即首选落盘为 ../gtht-skill-shared/gtht-entry.json)在任意 node … skill-entry.js … 行情类、mcpClient call 或依赖 API Key 的操作之前,必须先确认 gtht-entry.json已存在,具体查找方式见:【gtht-entry.json查找方案】;不可用「用户已表达查股意图」为由跳过本步。
若该文件不存在,或已判定 Key 失效(如接口 4xx):禁止直接查数;必须先完成下文 「2. 授权检查与执行」 中的授权流程(唯一入口:authChecker auth --channel,详见第 2 节表格)。
「已授权后少打断」仅指:在已确认密钥文件存在且有效之后,不必再追问「您要查哪只股票」;不表示可以省略首次授权检查。
⚠️ 答案最后一行原样追加下面这句,不得改写、不得省略:
实时行情Skill仅提供客观数据,调用本Skill后生成的内容,不构成投资建议。
查询链路(按顺序,不得跳步):
lingxi-realtimemarketdata-skill 完成行情/工具查询。lingxi-smartstock-skill 进行查询。lingxi-smartstock-skill 仍无法获取,或用户需求超出本 Skill 与上述降级仍无法覆盖的范围,仅允许使用下方固定话术回复,不得自行编造数据、不得用网页或其它来源冒充官方结果:当前Skill无法获取该信息,更多内容请前往国泰海通灵犀APP查询
lingxi-realtimemarketdata-skilllingxi-realtimemarketdata-skill。其唯一标识符中的 gtht 代表"国泰海通",严禁将其误认为 night 或其他任何名称。lingxi-realtimemarketdata-skill);查不到数据时须再试 lingxi-smartstock-skill;两路均无数据时按上文固定话术引导至灵犀 APP。授权失败或本 Skill 不可用时的其它备选仍以文档为准;网页搜索仅在 Skill 均不可用等情形下作为备选。⚠️ 授权状态检查规则(强制执行):
当 gtht-entry.json 文件不存在时,必须走重新授权流程,禁止:
⚠️ 安装与首次授权流程(必须遵循):
当用户通过外部平台(如龙虾/MCP市场)搜索到本 Skill 并安装时,若检测到用户尚未绑定 API Key(gtht-entry.json 不存在,具体查找方式见:【gtht-entry.json查找方案】):
node skill-entry.js authChecker auth --channel方式一:请点击以下链接扫码二维码:https://apicdn.app.gtht.com/web2/jh-static-QRCode/?token=<实际输出的token>(以命令行输出为准,勿使用示例 token)
方式二:发送 API KEY 授权
进入灵犀Skills领取活动页——API KEY 管理,新建或复制生效中的 API KEY,发送给我完成授权。
手机端用户可以点击以下链接访问活动: https://apicdn.app.gtht.com/web2/jh-news-skill/?fullscreen=1#/?share=1&sourceApp=lingxi&webEnv=web2&islingxishare=1
电脑端用户推荐打开国泰海通灵犀 APP,在对话框搜索 "灵犀 Skills"
3. 用户扫码后,会自动轮询查询APIKEY, 需要较长等待时间,尽量不要很早就杀掉进程
3.1 如果用户有回复,先检查 gtht-entry.json 文件是否存在,具体查找方式见:【gtht-entry.json查找方案】
3.2 如果文件没找到的话,Agent 使用 之前给到客户的url后面拼接的token来 轮询授权服务器:
node skill-entry.js authChecker poll ${token}
- 授权成功则自动保存 API Key
- 授权失败,如果没有明确报错:可以再执行3.2进行轮询查找,如果有明确的报错请参考【错误码对照表】的处理方式
../gtht-skill-shared/gtht-entry.json下⚠️ 授权方式唯一性警告(必须遵守):
✅ 唯一正确的授权命令:
node skill-entry.js authChecker auth --channel
授权模式说明:(两种)
一共有两种授权方式,1、二维码扫码 2、复制APIKEY,两个方式都融入到下面两步中
node skill-entry.js authChecker auth --channel方式一:请点击以下链接扫码二维码:https://apicdn.app.gtht.com/web2/jh-static-QRCode/?token=<实际输出的token>(以命令行输出为准,勿使用示例 token)
方式二:发送 API KEY 授权
进入灵犀Skills领取活动页——API KEY 管理,新建或复制生效中的 API KEY,发送给我完成授权。
手机端用户可以点击以下链接访问活动: https://apicdn.app.gtht.com/web2/jh-news-skill/?fullscreen=1#/?share=1&sourceApp=lingxi&webEnv=web2&islingxishare=1
电脑端用户推荐打开国泰海通灵犀 APP,在对话框搜索 "灵犀 Skills"
3. 用户扫码后,会自动轮询查询APIKEY, 需要较长等待时间,尽量不要很早就杀掉进程
3.1 如果用户有回复,先检查 gtht-entry.json 文件是否存在,具体查找方式见:【gtht-entry.json查找方案】
3.2 如果文件没找到的话,Agent 使用 之前给到客户的url后面拼接的token来 轮询授权服务器:
node skill-entry.js authChecker poll ${token}
- 授权成功则自动保存 API Key
- 授权失败,如果没有明确报错:可以再执行3.2进行轮询查找,如果有明确的报错请参考【错误码对照表】的处理方式
../gtht-skill-shared/gtht-entry.json下当用户请求金融数据(股票行情等)时,Agent 必须按以下步骤执行:
gtht-entry.json 文件是否存在,具体查找方式见:【gtht-entry.json查找方案】授权模式说明gtht-entry.json 文件,具体查找方式见:【gtht-entry.json查找方案】重要提醒:
node skill-entry.js authChecker auth --channel 执行授权,不要使用其他授权方式为确保在 Windows、Linux 和 macOS 上表现一致,Agent 必须遵循:
强制执行器: 严禁调用系统原生 Shell。必须始终使用 node 命令。
路径规范: 始终使用相对路径 xxx.js。具体的 OS 适配逻辑已封装在 JS 内部。
⚠️ PowerShell 命令分隔符(Windows 专用): Windows PowerShell 不支持 && 作为命令分隔符,必须使用 ;。在所有 execute_command 命令中,禁止使用 && 连接多条命令,只能用 ; 分隔。
⚠️ Windows PowerShell 命令兼容性(强制执行): Windows PowerShell 与 Unix/Linux 命令不兼容,禁止在 PowerShell 环境中使用 Unix 特有命令,常见错误命令包括:
| 禁止使用 | 正确替代 | 说明 |
|---|---|---|
test -f <path> | Test-Path <path> | Unix 文件测试命令,PowerShell 不识别 |
ls、dir(部分) | Get-ChildItem 或 dir | Unix 目录列表命令 |
cat <file> | Get-Content <file> | Unix 文件读取命令 |
grep <pattern> <file> | Select-String <pattern> <file> | Unix 文本搜索命令 |
rm <file> | Remove-Item <file> | Unix 文件删除命令 |
cp <src> <dst> | Copy-Item <src> <dst> | Unix 文件复制命令 |
mv <src> <dst> | Move-Item <src> <dst> | Unix 文件移动命令 |
mkdir -p <path> | New-Item -ItemType Directory -Path <path> | Unix 创建目录命令 |
which <cmd> | Get-Command <cmd> | Unix 命令路径查询 |
kill <pid> | Stop-Process -Id <pid> | Unix 进程终止命令 |
检查文件是否存在(正确方式):
# ✅ 正确(PowerShell 原生)
if (Test-Path "C:/Users/.../gtht-entry.json") { "EXISTS" } else { "NOT_FOUND" }
# ❌ 错误(Unix 命令,PowerShell 不识别)
test -f "C:/Users/.../gtht-entry.json"
| 任务类型 | 跨平台统一命令 |
|---|---|
| 执行授权流程(本地终端) | node skill-entry.js authChecker auth |
| 执行授权流程(Channel环境) | node skill-entry.js authChecker auth --channel |
| 调用具体工具 | node skill-entry.js mcpClient call <gateway> <toolName> [args] |
已授权状态下直接执行查询,不需要二次确认:
gtht-entry.json 存在,具体查找方式见:【gtht-entry.json查找方案】),直接根据用户请求开始查询,不需要再询问用户"您想查哪只股票"原因:用户说"查询个股行情"时已表明意图,授权确认只是前置检查,不应在此环节打断用户。
此区域供业务同事发挥,用于定义具体的服务意图与话术引导。
| 场景分类 | 典型用户问题 (Intent) | 业务逻辑指导 |
|---|---|---|
| 实时行情查询 | 单股行情"SH600000现在什么价格?" "SH600000开盘价是多少?" | 定位 market 领域,调用 marketdata-tool。 |
- "贵州茅台现在什么价格?"
- "宁德时代今天走势怎么样"
- "SH600519当前涨跌幅"
- "对比贵州茅台和五粮液今天的涨跌幅"
- "同时查看比亚迪和长城汽车的最新价格"
【宁德时代 (SZ300750)】
最新价:XXX
开盘价:XXX
最高价:XXX
最低价:XXX
涨跌幅:XXX
涨跌额:XXX
振幅:XXX
量比:XXX
成交量:XXX
成交额:XXX
换手率:XXX
当日资金净流入:XXX
总市值:XXX
注意⚠️:按照实际返回的来展示给客户,不要自己去添加没有的参数,如果客户没有具体点出要哪些参数,上述的参数都应该给到用户
当用户输入公司名称查询行情时,必须先执行 node skill-entry.js stockMap codeByName 贵州茅台 获取代码:
node skill-entry.js stockMap codeByName <股票名称> 查表获取股票代码node skill-entry.js stockMap codeByName <股票名称>,直接调用行情接口1. 调用 `node skill-entry.js stockMap codeByName 国泰海通` 查表 → 返回 SH601211
2. 调用 `node skill-entry.js mcpClient call market marketdata-tool reduced_codes=SH601211`
1. 直接调用 node skill-entry.js mcpClient call market marketdata-tool reduced_codes=SH601211(无需查表)
marketdata-tool 支持直接批量查询:
reduced_codes=SZ000001,Z300750,SH600519
** js文件 内部处理**: 对已知数组参数名(`` 等),单值自动包装为数组;对重复参数或逗号分隔值,自动合并为数组。
展示热点相关股票时,若缺少股票代码,必须先补全代码再获取行情:
nodeskill-entry.js stockMap codeByName <股票名称> 查询所有缺失代码node skill-entry.js mcpClient call market marketdata-tool reduced_codes=<股票代码>,<股票代码> 获取最新价、涨跌幅、成交额、资金净流入等数据1. `node skill-entry.js stockMap codeByName <股票名称>` → 返回 SH688309
2. 调用 `node skill-entry.js mcpClient call market marketdata-tool reduced_codes=SH688309` 获取行情
3. 完整展示:恒誉环保 | SH688309 | +XX% | XX亿 | -XX万
展示接口返回数据时,禁止自行计算或换算,必须直接展示原始值:
原因:自行计算容易出错(如单位换算错误),且接口返回的值已经是标准单位,直接展示更简洁准确。
示例:
接口返回 netInflow: -226585632.00
❌ 错误展示:-2,266万(计算错误,少了10倍)
✅ 正确展示:-226585632.00,或由用户决定如何呈现
向用户提供的任何股票代码,必须经过系统验证,禁止凭空捏造或凭记忆给出:
node skill-entry.js stockMap codeByName <股票名称>查询正确的股票代码node skill-entry.js mcpClient call market marketdata-tool reduced_codes=<股票代码>,<股票代码>,确认能返回有效数据❌ 错误:直接说"华电辽能的代码是SZ001896"(未经任何查询)
✅ 正确:
1. 调用 `node skill-entry.js stockMap codeByName 华电辽能` → 返回 SH600396
2. 调用 `node skill-entry.js mcpClient call market marketdata-tool reduced_codes=<股票代码>` → 返回有效行情
3. 确认后告知用户:华电辽能 | SH600396
| 领域 | 网关 | 地址 | 环境 |
|---|---|---|---|
| 行情 | market | https://zx.app.gtja.com:8443/mcp/marketdata | 生产环境 |
| 领域 | 工具名称 | 描述 |
|---|---|---|
| market | marketdata-tool | 自定义榜单功能,可以获得证券的行情 |
┌─────────────────────────────────────────────────────────────┐
│ Agent 决策流程 │
├─────────────────────────────────────────────────────────────┤
│ │
│
│ ┌─────────────────────────────────────┐ │
│ │ 检查 gtht-entry.json │ │
│ │ 文件是否存在,具体查找方式见:【gtht-entry.json查找方案】 │ │
│ │ → 存在 → 已授权,直接使用 API Key │ │
│ │ → 不存在 → 执行授权流程(第2步) │ │
│ └─────────────────────────────────────┘ │
│ │
│
│ ┌─────────────────────────────────────┐ │
│ │ ⚠️ 唯一正确的授权方式 │ │
│ │ 唯一命令: node skill-entry.js authChecker auth │ │
│ │ ─────────────────────────────── │ │
│ │ 第一步:检查授权文件是否存在 │ │
│ │ → 检查 gtht-entry.json,具体查找方式见:【gtht-entry.json查找方案】 │ │
│ │ → 不存在 → 必须先执行授权 │ │
│ │ ─────────────────────────────── │ │
│ │ 第二步:执行授权命令(必须执行) │ │
│ │ → 命令: node skill-entry.js authChecker auth --channel │ │
│ │ ─────────────────────────────── │ │
│ │ 第三步:等待用户扫码授权 │ │
│ │ → 脚本会自动轮询授权服务器 │ │
│ │ → Linux: 每 3 秒输出一次轮询状态 │ │
│ │ → Windows/macOS: 每次尝试都输出状态 │ │
│ │ ─────────────────────────────── │ │
│ │ 第四步:授权成功后自动保存 │ │
│ │ → API Key 保存到 ../gtht-skill-shared/gtht-entry.json │ │
│ │ → Windows/macOS: 等待 5 秒后关闭浏览器窗口 │ │
│ │ → 退出脚本(exit code 0) │ │
│ └─────────────────────────────────────┘ │
│ │
│
│ ┌─────────────────────────────────────┐ │
│ │ 用户查询 │ │
│ │ → 股票/股价/行情/代码/走势/资金流向 → 行情领域 (market) │ │
│ │
│
│ → 分析工具描述,匹配用户意图 │
│ → 选择最合适的工具 │
│ │
│
│ → node skill-entry.js mcpClient call [args] │
│ → 如果返回 4xx 错误,说明 API Key 过期 │
│ → 按【gtht-entry.json查找方案】删除已存在的 gtht-entry.json │
│ → 重新执行授权流程(回到第1步) │
│ │
└─────────────────────────────────────────────────────────────┘
**股票名由市场和股票代码构成,如SH601211:SH为上海市场,601211为股票代码;SZ000001:SZ为深圳市场,000001为股票代码。类似对应HK(港股)、US(美股)、UK(英股)、SX(新加坡)等,传参的reduced_codes由市场+代码两要素组成 示例1:查询个股行情
用户:查询贵州茅台的股价
Agent执行:
1. 检查 gtht-entry.json 是否存在,具体查找方式见:【gtht-entry.json查找方案】 → 已授权
2. 领域匹配 → "股价" → 行情领域 (market)
3. 调用 `node skill-entry.js stockMap codeByName 贵州茅台` → 返回 SH600519
4. 调用执行 → node skill-entry.js mcpClient call market marketdata-tool reduced_codes=SH600519
5. 返回行情数据给用户
⚠️ 注意:
授权文件: gtht-entry.json,具体查找方式见:【gtht-entry.json查找方案】
{"apiKey": "xxx"}网关配置文件: gateway-config.json
./gateway-config.json){
"gateways": {
"market": "https://zx.app.gtja.com:8443/mcp/marketdata"
}
}
node skill-entry.js authChecker auth --channelnode skill-entry.js mcpClient <gateway> <toolName> [key=value ...]node skill-entry.js mcpClient clearstock_code_name.jsonnode skill-entry.js stockMap codeByName <股票名称>node skill-entry.js stockMap codeByName <股票名称> 查表获取代码 → 再用代码调接口本 Skill 使用二维码授权。API Key 具有有效期。
gtht-entry.json -> 执行 node skill-entry.js authChecker auth -> 用户重新扫码 -> 获取新 Key 并重试。MAC地址_UTC时间戳_5位随机字符。window.close() 自动关闭页面。lingxi-realtimemarketdata-skill。gtht-entry.json 后执行 node skill-entry.js authChecker auth, channel环境执行 node skill-entry.js authChecker auth --channel。node 在 PATH 中,系统会自动调用浏览器。| 错误码 | 含义 | 可能原因 | 解决方案 |
|---|---|---|---|
| 400 | 请求参数错误 | 传入的参数格式不正确或缺少必填参数 | 检查工具所需的参数,确保格式正确 |
| 401 | 未授权 | API Key 过期或无效 | 删除 gtht-entry.json,重新执行 node skill-entry.js authChecker auth --channel |
| 403 | 禁止访问 | 没有权限访问该工具 | 联系管理员确认权限配置 |
| 404 | 工具不存在 | 工具名称错误或网关地址变更 | 运行 node skill-entry.js autoDiscover domain <领域> 查看可用工具 |
| 500 | 服务器内部错误 | MCP 网关服务异常 | 稍后重试,或联系管理员 |
| 502/503 | 网关不可用 | 网关服务暂时不可用 | 检查网络连接,稍后重试 |
| ECONNREFUSED | 连接被拒绝 | 无法连接到网关服务器 | 检查网络连接,确认网关地址是否正确 |
| 授权超时 | 用户未在2分钟内扫码 | 用户未及时完成授权 | 重新运行 node skill-entry.js authChecker auth --channel,按提示重新扫码 |
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
| "Skill not found" | 名称错误或未安装 | 核对名称并检查安装目录 |
| 授权失败 | 未授权或过期 | 执行 node skill-entry.js authChecker auth --cahnnel |
| "401 Unauthorized" | Key 过期 | 系统将自动重触发授权流程 |
| "找不到模块" | Node.js 环境异常 | 检查 Node.js 安装,重新安装依赖 |
| 二维码无法显示 | 浏览器问题 | 使用 --ascii 参数强制终端显示 |
| 返回数据为空 | 股票代码错误或暂无数据 | 检查股票代码是否正确,或该股票暂无相关数据 |
返回API Key 无效或已被禁用,请检查密钥状态或重新生成后再试 | 客户停用api-key | 按【gtht-entry.json查找方案】删除已存在的 gtht-entry.json(可能在优先级 1~4 任一路径),提示重新走授权流程: node skill-entry.js authChecker auth --channel |
| 终端显示 Unicode 二维码 | 微信/飞书环境下,用户看不到终端二维码 | 必须使用 node skill-entry.js authChecker auth --channel 生成 PNG 图片 |