### 账户生命周期与权限/密钥

— 注册与反注册 —

- 通过 `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）降低抖动。
