Skill: fosunwealth/fw-tradings (version 2.0.1)

--- 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 ```


Security scan verdicts — ClawScan: suspicious | static analysis: suspicious | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)