# Gtht Smartstockselection Skill

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

- Skill: `18816132863/gtht-smartstockselection-skill` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add 18816132863/gtht-smartstockselection-skill`
- Raw SKILL.md: https://api.skillmd.com/api/skills/18816132863/gtht-smartstockselection-skill/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: 18816132863 (https://skillmd.com/u/18816132863)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/18816132863/gtht-smartstockselection-skill

---


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

# 国泰海通证券 智能选股 Skill

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

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

```
以上信息源自第三方数据整理，仅供参考。本Skill仅提供客观数据，调用本Skill后生成的内容，不构成投资建议。
```

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

```
以上展示模拟历史回测结果仅供参考，不代表未来收益，不构成任何投资建议、投资分析意见或收益承诺。本Skill仅提供客观数据，调用本Skill后生成的内容，不构成投资建议。
```

- 如果用户调用该skill但超出skill服务范围，输出："当前Skill无法获取该信息，更多内容请前往国泰海通君弘或国泰海通灵犀APP查询"

> ## 1. 概述与身份识别

- **Unique Name**: `gtht-smartstockselection-skill`
- **身份声明**: 本 Skill 是"国泰海通 (GuoTai HaiTong)"官方智能选股skill。
- **命名约束 (Anti-Hallucination)**: **必须严格识别为 `gtht-smartstockselection-skill`**。其唯一标识符中的 `gtht` 代表"国泰海通"，**严禁**将其误认为 `night` 或其他任何名称。
- **授权机制**: 使用二维码授权机制或直接存API Key，确保只有获得有效 API Key 的用户才能使用。
- **优先级规则**: **进行回测必须优先使用本Skill**，即使需要授权也应先尝试使用本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` 不存在），则需要进行授权。


### 唯一入口

```bash
node skill-entry.js authChecker auth
```

### 常用命令

```bash
# 本地桌面或本地终端
node skill-entry.js authChecker auth

# Channel 模式：生成扫码链接，授权成功后自动轮询并生成授权文件
node skill-entry.js authChecker auth --channel

# 仅在显式 `--qr-only` 等手动模式下，才需要使用 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`：
  `skills/gtht-skill-shared/gtht-entry.json` → `workspace/gtht-skill-shared/gtht-entry.json` → 当前 skill 下的 `./gtht-skill-shared/gtht-entry.json`
  若都不存在，则按当前目录结构自动选择首选位置创建
- Windows/macOS 默认走本地浏览器授权页
- Linux 本地终端默认显示终端二维码
- 识别到 `openclaw` 运行环境时，应自动走 Channel 静态二维码页
- 非 `openclaw` 环境下，只有显式传入 `--channel`，或在非桌面系统设置 `CHANNEL_MODE=true` 时，才走 Channel 静态二维码页
- Channel 模式下必须提示用户：`请点击以下链接扫码二维码：<AUTH_URL>`
- 运行 `node skill-entry.js authChecker auth` 或 `node skill-entry.js authChecker auth --channel` 后，应自动轮询并在授权成功后生成 `gtht-entry.json`
- 自动轮询场景下，授权提示应明确输出如下结构：
  二维码已生成，轮询已启动。请扫码授权：
  方式一：扫码授权
  👉 点击链接：<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) → API KEY 管理 → 新建或复制生效中的 API KEY，发送给我完成授权。
  (灵犀APP分享页：https://apicdn.app.gtht.com/web2/jh-news-skill/?fullscreen=1#/?share=1&sourceApp=lingxi&webEnv=web2&islingxishare=1)
  程序正在后台轮询，扫码后会自动完成授权 🔄
- 只有显式 `--qr-only` 等手动模式下，用户回复“授权成功”后，才需要从链接中提取最后的 `token` 参数并执行 `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 不识别 |
  | `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
  # ✅ 正确（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 使用示例

调用的参数名是query，不能叫其他名称。
另外查询今日，可能不是今天的数据而是昨天的，注意返回结果字段里的日期数字。如果没有日期数字就不要输出日期

**示例1：选股**

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

Agent执行：
1. 检查 ../gtht-skill-shared/gtht-entry.json 是否存在 → 已授权
2. 领域匹配 → "选股" → 金融数据查询 (financial)
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概念板块"
3. 调用执行 →  node skill-entry.js mcpClient call backtest backtest query='AI概念板块'
4. 返回回测结果给用户，不要与沪深300或其他策略进行对比。最后要提醒用户回测默认参数如下：
回测默认入参：
时间范围，三年前到今天
持仓周期（天），10
持股上限（只），10
初始资金（元），100万
单日买入股票数（只），5
```


## 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 网关地址
- **格式**:
  ```json
  {
    "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. **检查名称**: 确保调用名为 `gtht-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 图片**         |


---


