复星财富(Fosun Wealth)港美股 OpenAPI 交易总入口 skill:统一管理共享凭证 `fosun.env`(生成/修复/备份恢复),并在实盘与模拟盘间路由执行账户、资金、持仓、流水、行情、下单/撤单/改单等能力;全局单凭证 `FOSUN_ENV_PATH`,变更操作强制二次确认并遵循单步执行。
--- 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` 存在 任何实盘或模拟盘操作前,先执行共享凭证初始化入口: ```bash python3 fosun-env-setup/code/ensure_fosun_env.py ``` 这个脚本的路径规则与总入口一致: - 默认写入总 skill 根目录的 `fosun.env` - `FOSUN_ENV_PATH` 可覆盖目标文件 - 相对 `FOSUN_ENV_PATH` 仍以总 skill 根目录为基准 - 验证通过后会额外备份到 skill 目录之外的系统原生用户数据目录,兼容 macOS / Linux / Windows - `fosun.env` 缺失或缺少完整密钥材料时,脚本会先自动扫描备份并验证恢复,恢复成功时输出 `restored_from_backup` 结果处理: - `status=valid`:共享凭证已可用,且已包含或刷新 `FSOPENAPI_ACCOUNT_INDEX`,继续下一步盘别判断;如果输出里包含 `restored_from_backup`,表示已从用户级本地备份恢复,不需要重新开通 - `status=pending`:已生成或复用 `open_url`;必须逐字符原样转发脚本 JSON 里的 `exact_open_url` / `open_url` 给用户完成复星 OpenAPI 开通,禁止手打、改写或重拼域名。此时正式 `fosun.env` 不写入 `pending` 凭证;用户看到“OpenAPI权限已开通”或在 OpenClaw 页面说“开通好了”后,立即再次运行同一脚本,脚本会自动轮询 TicketQuery,并在需要时读取已打开授权页正文,验证通过才收敛为 `valid` - `status=error`:停止后续业务脚本,按 `message` 修复依赖、网络或复星凭证接口问题 如果用户明确要求修复已有凭证,再使用: ```bash python3 fosun-env-setup/code/ensure_fosun_env.py --repair ``` ### 3. 再判盘别 凡是涉及以下任一金融相关操作,都必须确认用户这次是`实盘`还是`模拟盘`: - 查询账户 / 资金 / 持仓 / 流水 - 查询订单 - 下单 / 撤单 / 改单 - 查询行情 - 任何需要 `subAccountId` 的证券操作 如果用户没有明确回答,禁止继续执行。禁止根据账户类型、脚本名或历史上下文替用户猜盘别。 ### 4. 凭证体检与路由 - 用户选择`实盘`: 1. 使用 `real-trade-skill`。 2. 只读取同一个 `FOSUN_ENV_PATH` 指向的共享 `fosun.env`。 3. 凭证不存在时,先回到 `fosun-env-setup` 生成;凭证无效时,先修复或重新开通。 4. 实盘变更操作必须先复述完整意图并获得用户明确确认。 - 用户选择`模拟盘`: 1. 使用 `moni-trade-skill`。 2. 只读取同一个 `FOSUN_ENV_PATH` 指向的共享 `fosun.env`。 3. 凭证不存在时,先回到 `fosun-env-setup` 生成;凭证无效时,先修复或重新开通。 4. 模拟盘不得生成、复制或维护第二份凭证。 ## 子 skill 职责 ### `fosun-env-setup` - 负责生成、检查和修复共享 `fosun.env` - 负责客户端私钥、Ticket、开通 URL 的初始化;授权中材料只保存在临时 state,验证通过才写正式 `fosun.env` - 不执行交易业务 ### `moni-trade-skill` - 模拟盘子 skill - 不生成、不修复共享凭证 - 直接复用 `FOSUN_ENV_PATH` 指向的共享凭证 - 只负责执行模拟盘接口 ### `real-trade-skill` - 实盘子 skill - 直接复用 `FOSUN_ENV_PATH` 指向的共享凭证 - 只负责执行实盘接口 - 任何下单、改单、撤单等变更动作都必须先确认用户明确选择实盘,并完成二次确认 ## 最简执行顺序 1. 运行 `python3 fosun-env-setup/code/ensure_fosun_env.py` 2. 如果输出 `status=pending`,把脚本 JSON 里的 `exact_open_url` 逐字符原样给用户完成开通;禁止手写 URL,尤其不要把 `mfosunhani` 写成 `mofosunhani` 3. 如果用户已在页面看到“OpenAPI权限已开通”,或直接说“开通好了”,再次运行同一脚本,等待验证通过并输出 `status=valid` - 脚本默认轮询后端授权结果,并可自动读取已打开授权页正文,不需要用户点击“全部复制” 4. 确认用户选择 `实盘` 还是 `模拟盘` 5. 实盘路由到 `real-trade-skill`,模拟盘路由到 `moni-trade-skill` 6. 全程只使用同一个 `FOSUN_ENV_PATH` / `fosun.env` ## 目录结构 ```text fw-trade-skill/ ├── SKILL.md ├── fosun.env # 默认共享凭证落点(未设置 FOSUN_ENV_PATH 时使用) ├── fosun-env-setup/ # 共享凭证生成与修复 ├── real-trade-skill/ # 实盘 skill └── moni-trade-skill/ # 模拟盘 skill ```
don't have the plugin yet? install it then click "run inline in claude" again.