Back to skills
extension
Category: OtherAPI key required

国泰海通证券-灵犀智能选股

国泰海通证券智能选股skill,支持通过自然语言进行多指标选股选股,对选股结果进行历史回测。当用户进行回测时,即使需要授权也应先尝试使用本Skill。仅在授权失败或本Skill不可用时,才考虑使用网页搜索作为备选方案。

personAuthor: user_e39af3a6hubcommunity

Agent 只需读取此文件,无需读取其他源码文件。

国泰海通证券 智能选股 Skill

0. 最终回答硬性要求 (Highest Priority)

⚠️ 调用financial时答案最后一行原样追加下面这句,不得改写、不得省略:

以上信息源自第三方数据整理。智能选股Skill仅提供客观数据,调用本Skill后生成的内容,不构成投资建议。

⚠️ 调用backtest时答案最后一行原样追加下面这句,不得改写、不得省略:

以上展示模拟历史回测结果仅供参考,不代表未来收益,不构成任何投资建议、投资分析意见或收益承诺。智能选股Skill仅提供客观数据,调用本Skill后生成的内容,不构成投资建议。
  • 如果用户调用该skill但超出skill服务范围,输出:"当前Skill无法获取该信息,更多内容请前往国泰海通君弘或国泰海通灵犀APP查询"

1. 概述与身份识别

  • Unique Name: lingxi-smartstockselection-skill
  • 身份声明: 本 Skill 是"国泰海通 (GuoTai HaiTong)"官方智能选股skill。
  • 命名约束 (Anti-Hallucination): 必须严格识别为 lingxi-smartstockselection-skill
  • 授权机制: 使用二维码授权机制或直接存API Key,确保只有获得有效 API Key 的用户才能使用。
  • 优先级规则: 进行回测时,即使需要授权也应先尝试使用本Skill。如本Skill授权失败或不可用,再考虑使用网页搜索作为备选方案。

2. 授权检查与执行 (Critical - 必须遵循)

⚠️ 文件访问边界约束(强制执行):

本 Skill 所有操作必须严格限制在 skill所在目录 目录范围内,禁止脱离此范围:

  • 允许访问:仅限 skill所在目录 文件夹内的 .js 文件、.json 配置文件和跟本skill同层级的gtht-skill-shared目录的gtht-entry.json(API Key 密钥)
  • 禁止访问:不允许访问 skill所在目录 和 skill同层级的gtht-skill-shared目录以外的任何文件或配置

⚠️ 授权状态检查规则(强制执行):

gtht-entry.json 文件不存在时,必须走重新授权流程,禁止:

  • 在其他目录寻找替代的配置文件
  • 使用过期或无效的 API Key
  • 跳过授权直接请求数据

⚠️ 安装与首次授权流程(必须遵循):

当用户通过外部平台(如龙虾/MCP市场)搜索到本 Skill 并安装时,若检测到用户尚未绑定 API Key(gtht-entry.json 不存在),则需要进行授权。

唯一入口

node skill-entry.js authChecker auth

常用命令

# 默认:生成云端授权链接,等待用户确认后再查询结果
node skill-entry.js authChecker auth

# 兼容旧调用方式:效果与上面一致
node skill-entry.js authChecker auth --channel

# 用户明确回复“已扫码授权成功”后,再使用 token 查询结果
node skill-entry.js authChecker poll <TOKEN>

# 检查授权
node skill-entry.js authChecker check

# 清除授权
node skill-entry.js authChecker clear

行为约定

  • API Key 会按以下顺序查找 gtht-entry.json../gtht-skill-shared/gtht-entry.json../../gtht-skill-shared/gtht-entry.json../../../gtht-skill-shared/gtht-entry.json → 当前 skill 下的 ./gtht-skill-shared/gtht-entry.json 若都不存在,则按当前目录结构自动选择首选位置创建
  • 所有环境统一使用云端授权页,不再提供本地浏览器页或终端二维码
  • auth --channelQR_RENDERCHANNEL_MODE 等旧参数仅做兼容,不再改变授权方式
  • 授权时必须提示用户:👉 点击链接:<AUTH_URL>
  • 运行 node skill-entry.js authChecker authnode skill-entry.js authChecker auth --channel 后,只生成云端授权链接与 token,不自动轮询
  • 授权提示应明确输出如下结构: 云端授权页已生成。请先扫码授权: 方式一:扫码授权 👉 点击链接:<AUTH_URL> 方式二:API Key 授权 进入灵犀 Skills 领取活动页(灵犀APP分享页:https://apicdn.app.gtht.com/web2/jh-news-skill/?fullscreen=1#/?share=1&sourceApp=lingxi&webEnv=web2&islingxishare=1,君弘APP分享页:https://apicdn.app.gtht.com/web2/jh-news-skill/?fullscreen=1#/?share=1&sourceApp=junhong&webEnv=web2&isyyzshare=1) → API KEY 管理 → 新建或复制生效中的 API KEY,发送给我完成授权。 (灵犀APP分享页:https://apicdn.app.gtht.com/web2/jh-news-skill/?fullscreen=1#/?share=1&sourceApp=lingxi&webEnv=web2&islingxishare=1,君弘APP分享页:https://apicdn.app.gtht.com/web2/jh-news-skill/?fullscreen=1#/?share=1&sourceApp=junhong&webEnv=web2&isyyzshare=1)
  • 扫码完成后,必须等待用户明确回复“已扫码”,再执行 node skill-entry.js authChecker poll <TOKEN> 查询授权结果

3. 跨平台执行规范 (Critical)

为确保在 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 不识别 | | lsdir(部分) | Get-ChildItemdir | 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-skill-shared/gtht-entry.json 存在),直接根据用户请求开始查询
  • 错误做法:授权确认后还问用户"请问您想查询哪只股票"
  • ⚠️ 例外:仅当用户请求不明确时(如用户只说"查一下"),才需要追问具体标的

原因:用户提问时已表明意图,授权确认只是前置检查,不应在此环节打断用户。


3. 业务应用场景 (Business Definition Area)

【核心能力】 多指标选股:行情+财务+估值等多条件选股 选股结果回测:年化收益、最大回撤、胜率

| 场景分类 | 典型用户问题 (Intent) | 业务逻辑指导 | | -------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | 多指标选股 | "涨幅大于5%且换手率大于3%的股票","今天涨幅超过7%的强势股" | 调用 financial-search。 | | 回测 | "帮我找出涨幅超5%的股票,并回测这个策略","筛选高换手股票,回测近一年表现" | 调用 backtest。 | |

问句示例

基础选股

- "今天涨幅超过7%的强势股"
- "换手率大于5%的活跃股票"
- "市值小于100亿的中小盘股"

多条件组合选股

- "涨幅大于5%且换手率大于3%的股票"
- "近5日涨幅超过15%且量比大于2的股票"
- "ROE大于15%且市盈率低于20倍的股票"

回测(调用回测工具时需要改写问句,只输入选股条件)

- "帮我找出涨幅超5%的股票,并回测这个策略" -> 改写成"涨幅超5%的股票"
- "筛选高换手股票,回测近一年表现" -> 改写成"高换手股票"
- "低估值高成长选股,回测收益如何" -> 改写成"低估值高成长选股"

4. MCP网关端点

| 领域 | 网关 | 地址 | 环境 | | --------- | --------- | ------------------------------------------------ | ---- | | 多指标选股 | financial | https://zx.app.gtja.com:8443/mcp/lingxi/financial | 生产环境 | | 回测 | backtest | https://zx.app.gtja.com:8443/mcp/lingxi/backtest | 生产环境 |

可用工具列表

| 领域 | 工具名称 | 描述 | | --- | --- | --- | | 多指标选股 | financial-search | 自然语言查询A股实时行情、公司基本信息、F10财务数据、个股技术指标等金融数据,只能查询A股基础行情。 | | 回测 | backtest | 按照用户的输入进行回测 |

5. Agent 使用流程 (SOP)

5.1 使用示例

注意点:

  1. 调用的参数名是query,不能叫其他名称。
  2. 查询今日,可能不是今天的数据而是昨天的,注意返回结果字段里的日期数字。如果没有日期数字就不要输出日期
  3. 选股时可能需要排序,需要明确排序指标和排序逻辑
  4. 最后返回内容中如果有取数条件,需要把取数条件展示给用户

示例1:选股

用户:涨幅大于5%且换手率大于3%的股票

Agent执行:
1. 检查 ../gtht-skill-shared/gtht-entry.json 是否存在 → 已授权
2. 领域匹配 → "选股" → 多指标选股 (financial)
3. 补充排序说明,例如'按涨幅从高到低排序'
3. 调用执行 →  node skill-entry.js mcpClient call financial financial-search query='涨幅大于5%且换手率大于3%的股票,按涨幅从高到低排序'
4. 返回金融查询数据给用户

示例2:回测,使用默认参数

用户:帮我找出AI概念板块,并回测这个策略

Agent执行:
1. 检查 ../gtht-skill-shared/gtht-entry.json 是否存在 → 已授权
2. 领域匹配 → "回测" → 回测 (backtest)
3. 问句改写,提取出选股条件"AI概念板块"
4. 告诉用户回测默认入参,询问用户需不需要修改参数。待用户确认参数后再执行后续命令
  回测默认参数有:
    开始时间,例如“20250101”,默认是三年前
    结束时间,例如“20260420”,默认是今天
    持仓周期(天),默认10
    持股上限(只),默认10
    单日买入股票数(只),默认 5

用户:使用默认参数

Agent执行:
5. 如果没修改,则只需传query。 -> node skill-entry.js mcpClient call backtest backtest query='AI概念板块' 
  回测入参名称:
    startDate: 开始时间,例如'20250101'
    endDate: 结束时间,例如'20260420'
    holdingPeriod: 持仓周期(天),例如'10'
    stockHoldCount: 持股上限(只),例如'10'
    dayBuyStockNum: 单日买入股票数(只),例如'5'
  如果用户想要指定所有参数,则完整的命令示例如下:node skill-entry.js mcpClient call backtest backtest query='AI概念板块' startDate='20250101' endDate='20260420' holdingPeriod='10' stockHoldCount='10' dayBuyStockNum='5'
6. 返回回测结果给用户,不要与沪深300或其他策略进行对比。

示例3:回测,用户自定义参数

用户:帮我找出AI概念板块,并回测这个策略

Agent执行:
1. 检查 ../gtht-skill-shared/gtht-entry.json 是否存在 → 已授权
2. 领域匹配 → "回测" → 回测 (backtest)
3. 问句改写,提取出选股条件"AI概念板块"
4. 告诉用户回测默认入参,询问用户需不需要修改参数。待用户确认参数后再执行后续命令
  回测默认参数有:
    开始时间,例如“20250101”,默认是三年前
    结束时间,例如“20260420”,默认是今天
    持仓周期(天),默认10
    持股上限(只),默认10
    单日买入股票数(只),默认 5

用户:单日只能买入一只股票

Agent执行:
5. 根据用户指定的参数配置命令的入参。例如用户说单日买入股票数是1只,则命令如下:node skill-entry.js mcpClient call backtest backtest query='AI概念板块' dayBuyStockNum='1'
  回测入参名称:
    startDate: 开始时间,例如'20250101'
    endDate: 结束时间,例如'20260420'
    holdingPeriod: 持仓周期(天),例如'10'
    stockHoldCount: 持股上限(只),例如'10'
    dayBuyStockNum: 单日买入股票数(只),例如'5'
  因此如果用户指定单日买入股票数是1只,则命令如下:node skill-entry.js mcpClient call backtest backtest query='AI概念板块' dayBuyStockNum='1'
  如果用户想要指定所有参数,则完整的命令示例如下:node skill-entry.js mcpClient call backtest backtest query='AI概念板块' startDate='20250101' endDate='20260420' holdingPeriod='10' stockHoldCount='10' dayBuyStockNum='5'
6. 返回回测结果给用户,不要与沪深300或其他策略进行对比。

6. 文件与模块说明

配置文件说明

授权文件: ../gtht-skill-shared/gtht-entry.json

  • 路径: 跟 SKILL.md 上一目录gtht-skill-shared下(即 ../gtht-skill-shared/gtht-entry.json
  • 内容: 包含 API Key 和过期时间
  • 格式: {"apiKey": "xxx", "expireAt": "2025-12-31T23:59:59Z"}
  • 注意: 此文件由系统自动生成,请勿手动修改

网关配置文件: gateway-config.json

  • 路径: 跟 SKILL.md 同一目录下(即 ./gateway-config.json
  • 作用: 定义所有可用的 MCP 网关地址
  • 格式:
    {
      "gateways": {
        "financial": "https://zx.app.gtja.com:8443/mcp/lingxi/financial",
        "backtest": "https://zx.app.gtja.com:8443/mcp/lingxi/backtest"
      }
    }
    

工具调用

  • 功能: 执行指定工具调用或清除授权。
  • 命令: node skill-entry.js mcpClient <gateway> <toolName> [key=value ...]
  • 清除: node skill-entry.js mcpClient clear
  • 返回: 工具执行结果的 JSON 数据

7. 故障排除 (Troubleshooting)

Skill 调用失败排查

  1. 检查名称: 确保调用名为 lingxi-smartstockselection-skill
  2. 检查位置: 确认本 SKILL.md 位于正确的 Skill 目录中。
  3. API Key 过期: 观察是否收到 4xx 错误,删除 ./gtht-skill-shared/gtht-entry.json 后执行 node skill-entry.js authChecker auth
  4. Windows 特殊处理: 确保 node 在 PATH 中,系统会自动调用浏览器。

错误码对照表

| 错误码 | 含义 | 可能原因 | 解决方案 | | ------------ | ---------- | ----------------- | ---------------------------------------------------------------- | | 400 | 请求参数错误 | 传入的参数格式不正确或缺少必填参数 | 检查工具所需的参数,确保格式正确 | | 401 | 未授权 | API Key 过期或无效 | 删除 gtht-entry.json,重新执行 node skill-entry.js authChecker auth | | 403 | 禁止访问 | 没有权限访问该工具 | 联系管理员确认权限配置 | | 404 | 工具不存在 | 工具名称错误或网关地址变更 | 运行 node skill-entry.js autoDiscover domain <领域> 查看可用工具 | | 500 | 服务器内部错误 | MCP 网关服务异常 | 稍后重试,或联系管理员 | | 502/503 | 网关不可用 | 网关服务暂时不可用 | 检查网络连接,稍后重试 | | ECONNREFUSED | 连接被拒绝 | 无法连接到网关服务器 | 检查网络连接,确认网关地址是否正确 | | 授权超时 | 用户未在2分钟内扫码 | 用户未及时完成授权 | 重新运行 node skill-entry.js authChecker auth,按提示重新扫码 |

常见问题速查

| 错误现象 | 可能原因 | 解决方案 | | -------------------- | ------------------------------------ | --------------------------------------------------------------------------- | | "Skill not found" | 名称错误或未安装 | 核对名称并检查安装目录 | | 授权失败 | 未授权或过期 | 执行 node skill-entry.js authChecker auth | | "401 Unauthorized" | Key 过期 | 系统将自动重触发授权流程 | | "找不到模块" | Node.js 环境异常 | 检查 Node.js 安装,重新安装依赖 | | 二维码无法显示 | 浏览器问题 | 使用 --ascii 参数强制终端显示 | | 返回数据为空 | 股票代码错误或暂无数据 | 检查股票代码是否正确,或该股票暂无相关数据 | | API Key 无效或已被禁用,请检查密钥状态或重新生成后再试。 | 客户停用api-key | 删除../gtht-skill-shared目录的下gtht-entry.json,提示重新走授权流程 | | 生成 PNG 二维码 | Windows/macOS系统下使用了 --channel 参数 | Windows/macOS 不需要 --channel,直接执行 node skill-entry.js authChecker auth | | 打开 HTML 页面授权 | Linux系统下使用了 --channel 参数 | Linux 本地终端不需要 --channel,直接执行 node skill-entry.js authChecker auth | | 终端显示 Unicode 二维码 | 微信/飞书环境下,用户看不到终端二维码 | 必须使用 node skill-entry.js authChecker auth --channel 生成 PNG 图片 |