FW-trading
复星财富(Fosun Wealth)港美股 OpenAPI 交易总入口 skill:统一管理共享凭证 `fosun.env`(生成/修复/备份恢复),并在实盘与模拟盘间路由执行账户、资金、持仓、流水、行情、下单/撤单/改单等能力;全局单凭证 `FOSUN_ENV_PATH`,变更操作强制二次确认并遵循单步执行。
Rank
62
Safety
84
Downloads
1.9k
Updated
Oct 9, 2026
Version
2.0.3
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.9K downloads reported by the source. Last updated 10/9/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 9, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 9, 2026
- Adoption signal
- 1.9K downloadsadoption · observed Oct 9, 2026
- Latest release
- 2.0.3release · observed Jun 18, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s17d9jjcms1p4gnm03jd0n7qfn83mhrs:fw-tradings- Install using `clawhub skill install s17d9jjcms1p4gnm03jd0n7qfn83mhrs:fw-tradings` in an isolated environment before connecting it to live workloads.
- No published capability contract is available yet, so validate auth and request/response behavior manually.
- Review the upstream CLAWHUB listing at https://clawhub.ai/fosunwealth/fw-tradings before using production credentials.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-fosunwealth-fw-tradings/snapshot"
Documentation
CLAWHUB
160,000 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
fosun-env-setup/SKILL.md
---
name: fosun-env-setup
description: 复星 OpenAPI 共享凭证 `fosun.env` 的独立生成与修复模块。覆盖首次开通/换设备/凭据丢失、apikey 过期续期、凭据无效重置;已开通回填须同时提供 apikey 与页面服务端公钥;验证通过才写入共享 `fosun.env`。
requires:
bins:
- python3
---
# fosun-env-setup
本模块只负责共享 `fosun.env` 的生成与修复,不执行实盘或模拟盘业务。
**凭据管理全流程(必读)**:处理开通 / 换设备 / 重置 / 续期 / `--api-key` 回填前,先阅读本 skill 内 [`reference/credential-management-flow.md`](reference/credential-management-flow.md)。关键不变量:`serverPubKey` 按 ticket 生成(每次不同),客户端私钥、服务端公钥、授权 url 三者属于**同一 ticket** 的原子单元,禁止跨 ticket 混用;回填被判 invalid 时**复用当前二维码、不轮换密钥**(见 reference §7)。
## 凭据模型
- 每个账户 ↔ 一个 OpenAPI apikey
- 每个 apikey ↔ 一对客户端密钥 + 服务端密钥;本地保存 apikey、客户端私钥、服务端公钥
## 三类场景(主流程)
| 场景 | 何时触发 | 命令 | URL | 轮换客户端密钥 | 用户须回填(页面复制) |
|------|----------|------|-----|----------------|------------------------|
| 1 首次/换机/丢失 | 无有效凭证,默认入口 | `ensure_fosun_env.py` | 普通开通页 | 无则生成 | 点了「忘记 API 参数」时:**apikey + 服务端公钥** |
| 2 过期续期 | 业务返回 40010,或主动续期 | `ensure_fosun_env.py --renew` | hash 带 `isExpired=1` | 否 | 否 |
| 3 无效/损坏 | 业务返回 40001/40015,或主动重置 | `ensure_fosun_env.py --reset-credentials` | 普通开通页 | **是** | **是**:**apikey + 服务端公钥** |
场景 1 与换设备/凭据丢失**无法区分**:返回 JSON 的 `user_message` / `operation_guide` 会引导——若曾开通过须在页面上点 **「忘记 API 参数」**,重置后把页面上 **apikey 与服务端公钥(PEM)** 一并发给 Agent;Agent 执行 `--api-key` 与 `--server-public-key` 回填,并把 pending 中本次 ticket 的客户端私钥晋升到正式 `fosun.env`,再验证。
> **不变式(最重要)**:已开通/忘记 API 参数场景,用户必须同时提供 **API Key + 服务端公钥**,Agent 凑齐后一次性执行 `--api-key` 与 `--server-public-key` 回填,**禁止只回填 apikey**(页面公钥与 ticket 临时公钥不同,见 reference)。首次开通仍回复「开通好了」即可;续期无需回填。
> **过期 × 换设备(易踩坑的交集)**:换新设备时本地没有 apikey,**无法直接 `--renew`**。正确顺序:① 默认入口签码;② 用户点「忘记 API 参数」后把 **apikey + 服务端公钥** 一并发给 Agent;③ `--api-key` 与 `--server-public-key` 写入 env;④ finalize 识别过期后自动转续期。
## 路径规则
- 默认路径:本模块父目录的 `fosun.env`,即与 `moni-trade-skill` 并列的共享凭证。
- `FOSUN_ENV_PATH` 可覆盖默认路径。
- `FOSUN_ENV_PATH` 是相对路径时,以总入口目录为基准解析,禁止依赖当前 shell 的工作目录。
- 验证通过的正式凭证会额外备份到 skill 目录之外的系统原生用户数据目录:macOS 使用 `~/Library/Application Support/fw-trade-skill/fosun-env-backups`,Linux 使用 `${XDG_DATA_HOME:-~/.local/share}/fw-trade-skill/fosun-env-backups`,Windows 使用 `%LOCALAPPDATA%\fw-trade-skill\fosun-env-backups`。
- `FOSUN_ENV_BACKUP_DIR` 可覆盖备份目录;相对路径以用户 home 为基准解析。
## 最小入口(场景 1:首次开通 / 换设备 / 凭据丢失)
```bash
python3 fosun-env-setup/code/ensure_fosun_env.py
```
**默认行为**:立即 TicketCreate 签发**新** ticket 并返回 JSON,含 `credential_scenario=setup`、`created_new_ticket=true`、`qr_media`、`exact_open_url`、`operation_guide`、`user_message`。每次进入 pending 对接流程都会调用 TicketCreate,**不会**复用本地缓存的旧 ticket/open_url(ticket 可能过期或失效)。用户已在 H5 完成开通并回复「开通好了」时,脚本会先尝试 finalize;成功则 `status=valid`,失败才签发新 ticket。
**二维码交付(一次多发 + 主动询问)**:
1. 脚本在脚本执行机生成 PNG,JSON 返回 `qr_media`、`qr_png_path`、`qr_image`、`show_qr_rule`
2. 模型按 `show_qr_rule` 一次多发二维码:
- 必做:写 `exact_open_url` 进回复(用户随时可点击)
- 必做:调用 `deliver_attachments` 发 `qr_png_path`(最广泛兼容),并在回复中提醒用户在附件中查看二维码
- 可选:若平台支持 media,发 `qr_media.path`
- 可选:若平台支持 Markdown data URI,发 `qr_image.data`
3. 发完必须问:「收到附件中的二维码了吗?如不能(只有链接/报错等),告诉我,我换方式重发」
4. 用户说moni-trade-skill/SKILL.md
---
name: moni-trade
description: 复星财富港美股模拟盘 OpenAPI skill。通过 `FOSUN_ENV_PATH` 复用共享凭证;未设置时自动解析到总 skill 根目录的 `fosun.env`,只执行模拟盘接口,不负责凭证生成或修复。
version: 1.8.0
requires:
bins:
- bash
- curl
install: install.sh
---
# moni-trade — 复星模拟盘 OpenAPI Skill
这是模拟盘子 skill。只负责执行模拟盘接口,直接复用 `FOSUN_ENV_PATH` 指向的共享凭证;未设置时自动解析到总 skill 根目录 `fosun.env`。
> **本文件设计原则**:只放"模型决策时必须知道"的内容(安全规则、决策树、错误码处置)。
> 每个脚本的详细参数请直接 `脚本.py --help` 查阅,文档不重复维护,**避免文档与代码脱节**。
## 合法脚本清单(18 个业务脚本 + 2 个内部模块,封闭集合,跑命令前先逐字符核对)
> ⚠️ **本表是工具箱总目录**,刻意放在所有铁律之前 —— 模型即使只读到这里也必须先记住:**清单之外的所有脚本名都是脑补**。
> 命名规则统一是 **`<domain>_<action>.py`**(唯一例外:`sync_accounts.py`,历史遗留 action_domain 顺序,**不要泛化**)。
| domain | 脚本(精确文件名) | 一句话作用 |
|---|---|---|
| **meta** | `account_list.py` | 列账户(顺带刷账户索引) |
| **meta** | `sync_accounts.py` | **唯一例外**:强刷账户索引(action_domain 顺序,历史遗留,不要泛化) |
| **meta** | `check_shared_env.py` | 共享凭证体检 |
| **账户(变更)** | `sim_account_create.py` | 创建模拟账户(必带 `--confirm`) |
| **账户(变更)** | `sim_account_reset.py` | 重置模拟账户(必带 `--confirm`;旧账户会被禁用) |
| **资产** | `cash_summary.py` | 现金/购买力 |
| **资产** | `holdings.py` | 持仓 |
| **资产** | `cash_flows.py` | 资金流水 |
| **交易(变更)** | `order_create.py` | 下单(必带 `--confirm`) |
| **交易(变更)** | `order_modify.py` | 改单(必带 `--confirm`;**不是** `modify_order.py`) |
| **交易(变更)** | `order_cancel.py` | 撤单(必带 `--confirm`;**不是** `cancel_order.py`) |
| **交易(查询)** | `order_list.py` | 订单列表(可按市场/标的/日期/状态筛选) |
| **行情** | `market_quote.py` | 实时报价 |
| **行情** | `market_orderbook.py` | 盘口 |
| **行情** | `market_kline.py` | K 线 |
| **行情** | `market_min.py` | 分时 |
| **行情** | `market_tick.py` | 逐笔成交 |
| **行情** | `market_broker_list.py` | 经纪商队列 |
| **内部** | `_client.py` | 公共 SDK 工厂 + 错误处理(**不直接调用**) |
| **内部** | `_traps.py` | 脑补陷阱共享 helper(**不直接调用**) |
> **常见脑补黑名单**(v1.7.2 起这些名字已被 trap stub 接住,跑了直接吐结构化 `WRONG_SCRIPT_NAME`,**不再是 OS-level No such file**):
> `modify_order.py` → `order_modify.py` / `cancel_order.py` → `order_cancel.py` / `create_order.py` → `order_create.py`
> `list_orders.py` / `query_orders.py` → `order_list.py` / `get_holdings.py` / `query_holdings.py` → `holdings.py`
> `get_cash.py` / `query_cash.py` → `cash_summary.py` / `cancel.py` / `modify.py` → 对应 `order_*.py`
> `buy.py` / `sell.py` → `order_create.py`(用 `--direction 1/2` 区分买卖)
> 跑这些 trap 后,**直接照 stderr 里的 `intended_script` 字段替换脚本名重试即可,禁止再猜其它名字**。
## 第 0 条铁律:单步原则(最高优先级,违反 = bug)
**一次用户请求,原则上只跑一个脚本。** 拿到结果先汇报,等用户给下一个明确指令再继续。
| 类型 | 示例脚本 | 跑完后允许做什么 |
|---|---|---|
| **meta 查询**(账户/凭证体检/同步) | `account_list` / `sync_accounts` / `check_shared_env` | **只汇报、停手**;禁止自动接 `cash_summary` / `holdings` / `cash_flows` / `order_*` |
| **账户变更**(创建/重置模拟账户) | `sim_account_create` / `sim_account_reset` | 跑完汇报新账户、初始现金和缓存刷新结果,然后停手;禁止自动接交易/资产脚本 |
| **业务查询**(钱/股/单/流水/行情) | `cash_summary` / `holdings` / `cash_flows` / `order_list` / `market_*` | **只汇报、停手**;禁止基于查询结果脑补"那就帮你下单/改单/撤单" |
| **业务变更**(下单/改单/撤单) | `order_create` / `order_modify` / `order_cancel` | 跑完汇报结果,不允许"成功了我再给你跑一遍 holdings 看看"这种自动连环 |
例外(允许自动连一步):
- 业务脚本报"账户类错误"→ `_clientreal-trade-skill/SKILL.md
---
name: real-trade
description: 复星财富港美股实盘 OpenAPI skill。通过 `FOSUN_ENV_PATH` 复用总入口共享 `fosun.env`;未设置时由运行时解析到与本 skill 并列的 `fosun.env`。用于明确选择实盘后的账户、资产、行情、订单和交易操作。
version: 1.8.0
requires:
bins:
- bash
- curl
install: install.sh
---
# real-trade — 复星实盘 OpenAPI Skill
这是实盘子 skill。它只负责在用户明确选择`实盘`后执行实盘相关接口;共享凭证的生成与修复由同级 `fosun-env-setup` 负责。
## 最高优先级规则
1. 用户没有明确选择`实盘`时,禁止调用本 skill。
2. 实盘下单、改单、撤单等变更动作必须先复述完整意图,并等待用户明确确认。
3. 全局只使用一个共享凭证:`FOSUN_ENV_PATH` 指向的 `fosun.env`。
4. 禁止为实盘或模拟盘复制第二份凭证文件。
5. 禁止在命令或文档里写死某台机器的绝对路径;需要绝对路径时,只能由环境变量和相对路径在运行时解析得到。
## 共享凭证路径
推荐起手式:
```bash
export SKILL="<real-trade-skill 绝对路径>"
export FOSUN_PY="<python 绝对路径>" # 总入口 install.sh 共享 venv,默认 fw-trade-skill/.venv/bin/python
export REAL_PY="${FOSUN_PY}"
export FOSUN_ENV_PATH="${FOSUN_ENV_PATH:-$SKILL/../fosun.env}"
```
路径解析规则:
- `FOSUN_ENV_PATH` 未设置:脚本默认使用总入口目录下的 `fosun.env`
- `FOSUN_ENV_PATH` 是相对路径:以总入口目录为基准解析
- `FOSUN_ENV_PATH` 是绝对路径:直接使用
同一个 `fosun.env` 同时供 `real-trade-skill` 和 `moni-trade-skill` 使用。
## 使用前检查
任何业务脚本前,先确保共享凭证存在:
```bash
python3 ../fosun-env-setup/code/ensure_fosun_env.py
```
结果处理:
- `status=valid`:继续执行实盘凭证体检或业务脚本
- `status=pending`:把脚本 JSON 输出里的 `exact_open_url` / `open_url` 逐字符原样给用户完成 OpenAPI 开通,禁止手写或改写 URL;用户在页面完成开通后重试,脚本通过 finalize(APIKeyCheck + 签名请求)验证
- `status=error`:停止实盘业务,先按 `message` 修复凭证生成问题
已有凭证但需要修复时:
```bash
python3 ../fosun-env-setup/code/ensure_fosun_env.py --repair
```
## 合法脚本清单
只允许调用 `code/` 目录中真实存在的脚本。跑命令前先逐字符核对文件名,禁止按英文习惯脑补。
| 类型 | 脚本 | 作用 |
|---|---|---|
| 凭证/账户 | `check_shared_env.py` | 检查共享凭证并刷新账户索引 |
| 凭证/账户 | `account_list.py` | 查询账户列表 |
| 凭证/账户 | `sync_accounts.py` | 强制刷新账户索引 |
| 资产 | `cash_summary.py` | 查询现金与购买力 |
| 资产 | `holdings.py` | 查询持仓 |
| 资产 | `cash_flows.py` | 查询资金流水 |
| 订单 | `order_list.py` | 查询订单列表 |
| 交易变更 | `order_create.py` | 下单,必须二次确认 |
| 交易变更 | `order_modify.py` | 改单,必须二次确认 |
| 交易变更 | `order_cancel.py` | 撤单,必须二次确认 |
| 行情 | `market_quote.py` | 实时报价 |
| 行情 | `market_orderbook.py` | 盘口 |
| 行情 | `market_kline.py` | K 线 |
| 行情 | `market_min.py` | 分时 |
| 行情 | `market_tick.py` | 逐笔成交 |
| 行情 | `market_broker_list.py` | 经纪商队列 |
## 调用顺序
1. 确认用户选择的是`实盘`
2. 运行 `../fosun-env-setup/code/ensure_fosun_env.py`
3. 凭证 `status=valid` 或完成开通后,按用户意图选择本 skill 的脚本
4. 查询类脚本执行后只汇报结果并停手
5. 变更类脚本必须先复述意图并等待明确确认,再带确认参数执行
## 变更操作二次确认
所有实盘变更操作都必须分三步:
1. 用自然语言复述完整意图,包括市场、标的、方向、数量、价格、订单类型或订单号。
2. 明确反问用户是否确认执行。
3. 只有用户明确肯定后,才运行对应脚本并带上确认参数。
模糊回答不算确认,例如“嗯”“可以吧”“你看着办”。必须继续追问。
## 错误处理
脚本失败时先读 stderr/stdout 中的结构化字段,尤其是 `error_code`、`message`、`next_action`。不要凭直觉重复提交命令。
常见处理:
- 共享凭证不存在:回到 `fosun-env-setup` 生成
- 共享凭证无效:运行 `fosun-env-setup --repair` 或按错误信息重新开通
- 用户未明确选择实盘:停手追问盘别
- 变更参数不完整:停手向用户确认缺失字段
## 目录结构
```text
real-trade-skill/
├── SKILL.md
├── README.md
├── _meta.json
├── install.sh # 兼容入口 → 转调 ../install.sh
└── code/
```SKILL.md
--- name: fw-trade-skill description: 复星财富(Fosun Wealth)港美股 OpenAPI 交易总入口 skill:统一管理共享凭证 `fosun.env`(生成/修复/备份恢复),并在实盘与模拟盘间路由执行账户、资金、持仓、流水、行情、下单/撤单/改单等能力;全局单凭证 `FOSUN_ENV_PATH`,变更操作强制二次确认并遵循单步执行。 --- # fw-trade-skill 这是总入口 skill,不直接实现交易。它只负责三件事:解析共享凭证路径、确保 `fosun.env` 已由 `fosun-env-setup` 生成或修复、判断盘别后路由到实盘或模拟盘子 skill。 ## 模型必须遵守 ### 0. 先思考再行动(最高优先级) 每一步动作前,必须先在内部完成一轮显式思考,再决定下一步: - 复盘已有信息:用户原话、当前共享凭证状态、上一步脚本输出(含 stderr / 退出码)、缓存里的账户索引; - 明确这一步要回答的问题:现在到底是路由、凭证生成/修复、查询还是交易?所需参数是否齐全? - 评估可行方案,挑最小改动 / 最少副作用 / 最少询问用户的那一条; - 严禁基于猜测或不完整信息直接调用脚本、改写参数、跨盘别切换; - 任何不确定项(盘别、`subAccountId`、市场/产品类型、金额方向)必须先回头问用户,不得脑补。 - 港美股交易的币种、余额和购买力彼此独立:`HKD` 余额只能用于港股,`USD` 余额只能用于美股,不能跨市场混用或替用户做换汇推断。 ### 1. 先定位共享凭证 全局只使用一个共享凭证路径变量 `FOSUN_ENV_PATH`。 - 未设置时:由脚本根据自身位置解析为总 skill 根目录下的 `fosun.env` 绝对路径 - 已设置且为相对路径时:以总 skill 根目录为基准解析 - 已设置且为绝对路径时:直接使用 - 推荐写法:`FOSUN_ENV_PATH=fosun.env`,既保留可迁移性,又不会受当前工作目录影响 禁止在文档或脚本里写死某台机器的绝对路径;需要绝对路径时,只能由相对路径和环境变量在运行时解析得到。 ### 2. 先确保 `fosun.env` 可用(委托子 skill) 任何实盘或模拟盘操作前,必须先完成共享凭证准备。**开通、续期、重置、回填、二维码交付、备份恢复等全部规则以子 skill `fosun-env-setup` 为准**——执行前阅读其子目录 [`fosun-env-setup/SKILL.md`](fosun-env-setup/SKILL.md);凭据流程设计见 [`fosun-env-setup/reference/credential-management-flow.md`](fosun-env-setup/reference/credential-management-flow.md)。**禁止**在母技能中自行解释或改写凭据细节,避免与子 skill 冲突。 默认入口(已 `install.sh` 时优先 `$FOSUN_PY`): ```bash $FOSUN_PY fosun-env-setup/code/ensure_fosun_env.py ``` 母技能只根据脚本 JSON 的 `status` 决定是否继续: - `valid` → 可进入盘别判断与业务子 skill - `pending` / `error` → **停手**,严格按子 skill 返回的 `operation_guide`、`user_message`、`next_action` 执行,不得跳过 env-setup 直接跑交易脚本 ### 3. 再判盘别 凡是涉及以下任一金融相关操作,都必须确认用户这次是`实盘`还是`模拟盘`: - 查询账户 / 资金 / 持仓 / 流水 - 查询订单 - 下单 / 撤单 / 改单 - 查询行情 - 任何需要 `subAccountId` 的证券操作 如果用户没有明确回答,禁止继续执行。禁止根据账户类型、脚本名或历史上下文替用户猜盘别。 ### 4. 凭证体检与路由 - 用户选择`实盘`: 1. 使用 `real-trade-skill`。 2. 只读取同一个 `FOSUN_ENV_PATH` 指向的共享 `fosun.env`。 3. 凭证未 `valid` 时,先按 `fosun-env-setup` 子 skill 处理,不得直接跑实盘脚本。 4. 实盘变更操作必须先复述完整意图并获得用户明确确认。 - 用户选择`模拟盘`: 1. 使用 `moni-trade-skill`。 2. 只读取同一个 `FOSUN_ENV_PATH` 指向的共享 `fosun.env`。 3. 凭证未 `valid` 时,先按 `fosun-env-setup` 子 skill 处理,不得直接跑模拟盘脚本。 4. 模拟盘不得生成、复制或维护第二份凭证。 ## 子 skill 职责 ### `fosun-env-setup` - 共享凭证的**唯一**生成、修复与引导入口;命令、场景、回填、续期/重置规则见其 `SKILL.md` 与 `reference/` - 不执行交易业务;母技能不得重复描述凭据流程 ### `moni-trade-skill` - 模拟盘子 skill - 不生成、不修复共享凭证 - 直接复用 `FOSUN_ENV_PATH` 指向的共享凭证 - 只负责执行模拟盘接口 ### `real-trade-skill` - 实盘子 skill - 直接复用 `FOSUN_ENV_PATH` 指向的共享凭证 - 只负责执行实盘接口 - 任何下单、改单、撤单等变更动作都必须先确认用户明确选择实盘,并完成二次确认 ## 最简执行顺序 1. 按 **`fosun-env-setup` 子 skill** 完成凭证准备,直至 `ensure_fosun_env.py` 输出 `status=valid` 2. 确认用户选择 `实盘` 还是 `模拟盘` 3. 路由到 `real-trade-skill` 或 `moni-trade-skill`(全程同一 `FOSUN_ENV_PATH` / `fosun.env`) ## 一键安装(组合技能共用) 在 **总 skill 根目录**执行(模拟盘 / 实盘 / env-setup 共用同一份 venv 与 fsopenapi): ```bash bash install.sh ``` - 虚拟环境默认:`fw-trade-skill/.venv`(可用 `FW_TRADE_VENV` 覆盖;兼容旧名 `MONI_VENV`) - SDK 缓存默认:`fw-trade-skill/.cache/` - 安装完成后导出 `FOSUN_PY`(`MONI_PY` / `REAL_PY` 与之相同,兼容旧速抄表) 子目录下的 `moni-trade-skill/install
moni-trade-skill/README.md
# moni-trade-skill
> 模拟盘子 skill。通过 `FOSUN_ENV_PATH` 复用共享凭证;未设置时自动解析到总 skill 根目录的 `fosun.env`,只执行模拟盘接口,不负责凭证生成或修复。
## 起手式(每个新会话先跑一次)
```bash
export SKILL="<moni-trade-skill 绝对路径>"
export FOSUN_PY="<python 绝对路径>" # 总入口 `bash ../install.sh` 创建的共享 venv,默认 `fw-trade-skill/.venv/bin/python`
export MONI_PY="${FOSUN_PY}"
export FOSUN_ENV_PATH="${FOSUN_ENV_PATH:-$SKILL/../fosun.env}"
```
> `$MONI_PY` 就是 `install.sh` 用 [uv](https://docs.astral.sh/uv/) 自动创建的独立 venv 里的 Python 解释器(uv 自动下载并锁定 3.13,**不依赖系统 Python**)。直接调用比再套一层 `uv run` 少 150–300ms 的环境解析开销,所以速抄表统一用 `$MONI_PY`。
>
> `$SKILL`、`$MONI_PY` 随安装位置而变;**唯一固定的相对关系**是共享凭证 `fw-trade-skill/fosun.env` 与 `moni-trade-skill` 并列,故用 `$SKILL/../fosun.env`。不设 `FOSUN_ENV_PATH` 时,脚本也会从 `code/_client.py` 推出同一路径。
## 使用前提
- `FOSUN_ENV_PATH` 指向的共享凭证文件已存在
- 该共享凭证已通过同级 `fosun-env-setup` 生成或修复
- 当前操作已明确选择为`模拟盘`
## 最简使用
```bash
# macOS / Linux
bash ./install.sh
# Windows (PowerShell)
powershell -ExecutionPolicy Bypass -File .\install.ps1
$MONI_PY $SKILL/code/check_shared_env.py
$MONI_PY $SKILL/code/account_list.py
```
安装脚本会自动下载并安装官方 `fsopenapi` SDK,默认版本为 `v1.2.0`。
下载主源默认是 GitHub;主源失败时会自动读取 `../fosun-env-setup/code/ensure_fosun_env.py` 中的
`DEFAULT_SDK_ZIP_FALLBACK_URL` 作为备用源(实现一处改动全局生效)。
可用 `MONI_SDK_VERSION` / `MONI_SDK_URL` / `MONI_SDK_FALLBACK_URL` 覆盖。
## 核心规则
- 只读取 `FOSUN_ENV_PATH` 指向的共享凭证
- 推荐写法:`FOSUN_ENV_PATH=fosun.env`,由脚本自动解析成总 skill 根目录下的绝对路径
- 不生成、不复制、不维护第二份凭证
- 共享凭证无效时,必须先通过同级 `fosun-env-setup` 生成或修复
- 模拟盘只支持港股、美股正股;不支持 A 股和期权
- 模拟盘下单只支持 `3=限价单`、`9=市价单`;**模拟盘不支持预埋单**,非交易时段也只是普通下单,不要把"预埋"当成额外订单类型
- 子账户解析默认走 `FOSUN_ENV_PATH` 指向的共享凭证中的 `FSOPENAPI_ACCOUNT_INDEX` 缓存,零额外网络;缓存失效会自动刷新并重试一次
## 子账户索引缓存
第一次跑任意脚本时,会自动调一次 `/v1/account/Accounts`,按
`mock` / `real_stock` / `real_option` 分桶写入 `FOSUN_ENV_PATH` 指向的共享凭证中的
`FSOPENAPI_ACCOUNT_INDEX`。之后所有业务脚本都从缓存解析 `subAccountId`,
不再额外打接口。
- 账户有变更时主动刷新:`$MONI_PY $SKILL/code/sync_accounts.py`
- 业务接口报"账户类错误"时,本 skill 会自动重刷一次缓存并用新 ID 重试
## 常用命令
```bash
$MONI_PY $SKILL/code/check_shared_env.py
$MONI_PY $SKILL/code/sync_accounts.py
$MONI_PY $SKILL/code/account_list.py
$MONI_PY $SKILL/code/cash_summary.py
$MONI_PY $SKILL/code/holdings.py --product-types 5 --product-types 6
$MONI_PY $SKILL/code/order_list.py --market hk --market us
$MONI_PY $SKILL/code/market_quote.py --code hk00700 --field price
```
完整命令清单与高频任务速抄表见 `SKILL.md`。
## 常见问题
### 共享凭证不存在或无效
```bash
$MONI_PY $SKILL/code/check_shared_env.py
```
如果失败,先回到总入口或同级 `fosun-env-setup`,生成/刷新 `FOSUN_ENV_PATH` 指向的共享凭证。
### `ModuleNotFoundError: No module named 'fsopenapi'`
```bash
bash ../install.sh
```
如果是下载失败,可额外检查:
- 是否能访问 GitHub
- 本机是否存在 `wget` 或 `curl`
- 是否需要通过 `MONI_SDK_URL` / `MONI_SDK_FALLBACK_URL` 指向可访问镜像
### `Invalid signature`
通常说明共享 `fosun.env` 中的公私钥或 API Key 已失效,应先通过同级 `fosun-env-setup` 修复或重新生成。
### `Session expired`
这不是“订单 / 持仓不存在”,而是共享凭证里的券商会话已过期,当前查询通道失效了。
先做体检:
```bash
$MONI_PY $SKILL/code/check_shared_env.py
```
如果仍然报会话过期,回到总入口或同级 `fosun-env-setup`,刷新 `FOSUN_ENV_PATH` 指向的共享凭证后再试。
### `APIError 6AionUi
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!
activepieces
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
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/fosunwealth/skills/fw-tradings",
"sourceUrl": "https://clawhub.ai/fosunwealth/skills/fw-tradings",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T23:20:40.243Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-fosunwealth-fw-tradings/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-fosunwealth-fw-tradings/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-09T23:20:40.243Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.9K downloads",
"href": "https://clawhub.ai/fosunwealth/fw-tradings",
"sourceUrl": "https://clawhub.ai/fosunwealth/fw-tradings",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T23:20:40.243Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "2.0.3",
"href": "https://clawhub.ai/fosunwealth/fw-tradings",
"sourceUrl": "https://clawhub.ai/fosunwealth/fw-tradings",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-06-18T13:01:30.366Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-fosunwealth-fw-tradings/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-fosunwealth-fw-tradings/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 2.0.3",
"description": "fw-tradings v2.0.3 - 新增 real-trade-skill 与 moni-trade-skill 子目录的 install.ps1 安装脚本与 real-trade-skill/_meta.json 元数据文件。 - 移除 skill-card.md。 - 规范化子目录结构,提升实盘与模拟盘模块的独立性和安装兼容性。 - 文档未发生重要变动,仅目录和技能结构微调。",
"href": "https://clawhub.ai/fosunwealth/fw-tradings",
"sourceUrl": "https://clawhub.ai/fosunwealth/fw-tradings",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-06-18T13:01:30.366Z",
"isPublic": true
}
]
}Record generated Oct 10, 2026.
