### 账户生命周期与权限/密钥 — 注册与反注册 — - 通过 `AccountManager.register({ exchange, accountId, adapter, meta? })` 注册;重复注册幂等; - 通过 `unregister(exchange, accountId)` 移除。 — 事件标签化 — - `AccountManager.ws()` 将各适配器事件统一转发并标注 `{ exchange, accountId }`; - 上层可统一订阅 `am:*`(包含原事件名、payload 与账户标签)。 — 权限与密钥 — - Pacifica:账户私钥/agent 私钥为 Ed25519(Base58/JSON 数组),只能通过环境变量传入; - Aster:REST HMAC(API Key/Secret),交易签名需 EVM 私钥; - Binance:REST HMAC(API Key/Secret)。 — 安全建议 — - 不落盘私钥;日志仅打印签名前缀; - 分环境(dev/stg/prod)隔离; - 建议接入机密管理(或 Env 文件权限控制)。 ### 实时状态(LiveState)与订阅 — 统一实时态(由 AccountManager 基于 WS 聚合) — - 字段(字符串以避免精度丢失): - accountEquity(ae)、marginUsed(mu) - posCount(pc)、openOrderCount(oc)、stopCount(sc) - asAssets(as,可作为资产聚合/备注)、alertWarning(aw) - lastInfoTs(t,毫秒) - balancesRaw/positionsRaw/infoRaw(保留原始载荷) — 事件与标签 — - 事件名:`am:account_state` - 载荷:`{ ...liveState, __am: { exchange, accountId } }` — 订阅示例(TypeScript) — ```ts import AccountManager from '../../src/accounts/accountManager' const am = new AccountManager() // ... 注册各账户(am.register(...)} am.ws().on('am:account_state', (s: any) => { const { exchange, accountId } = s.__am || {} // 统一读取账户净值/保证金使用/仓位计数等 console.log('[state]', exchange, accountId, { equity: s.accountEquity, marginUsed: s.marginUsed, posCount: s.posCount, openOrders: s.openOrderCount, }) }) // 任意时刻获取当前快照 const live = am.getAllLiveStates() ``` — 一致性建议 — - 启动先用 REST 快照初始化(balances/positions),再消费 WS 增量; - 定期(30–60s)与 REST 对账;冲突取“更新更晚”的记录; - 对上层读接口可设置小 TTL(2–3s)降低抖动。