From latency-hunter
生成或修复生产级交易所行情+交易连接器骨架(自动重连、心跳看门狗、限频令牌桶、 时间同步、签名、listenKey/login 续期、重订阅、序列缺口重快照、密钥走 env)。也能审已有连接器的可靠性缺口。 这是个生成/脚手架型 skill,把『连接器锻造协议』固化下来,让连接器从地基上就不漏。 触发词(中):连接器、连接器锻造、交易所对接、Binance连接器、OKX连接器、行情订阅、断线重连、 老掉线、莫名其妙断线、签名报错、时间戳报错、listenKey 续期、重订阅、序列缺口、本地订单簿、实盘对不上。 触发词(英):connector、connector-forge、exchange connector、market data feed、websocket reconnect、 heartbeat、listenKey、ws login、orderbook snapshot、sequence gap、rate limit token bucket、clock drift。 不适用:非交易所对接的通用网络代码;要你代填/生成真实 API 密钥(只给 env 注入骨架,绝不写死密钥); 要你给出具体策略 alpha/信号逻辑/调参(那是策略层,不是连接器层);纯热路径微秒级优化体检(交给 latency-audit)。
How this skill is triggered — by the user, by Claude, or both
Slash command
/latency-hunter:connector-forgeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
连接器是量化系统的**地基**。它不直接赚钱,但**一漏就全盘崩**:90% 的「实盘对不上回测」「莫名其妙断线」「下单偶发失败」都出在这一层——而且都是**静默故障**,连接看似健康,数据却早已是死的或错的。
连接器是量化系统的地基。它不直接赚钱,但一漏就全盘崩:90% 的「实盘对不上回测」「莫名其妙断线」「下单偶发失败」都出在这一层——而且都是静默故障,连接看似健康,数据却早已是死的或错的。
锻造连接器只有一条铁律:宁可显式判死重建,绝不带病运行。半开连接、丢失的订单簿增量、漂移的时钟、过期的 listenKey——这些都不会自愈,只会越积越错,直到你基于一个错误的盘口下单,亏的是真金白银。本 skill 把「怎么从地基上锻造一个不漏的连接器」固化成可执行协议。
不启用:要你代填真实密钥、要具体策略 alpha/信号、纯微秒级热路径体检(→ latency-audit)。
# TODO: 以 exchangeInfo/instruments 实时校验为准,而不是写死。| 维度 | Binance(USD-M Futures 为例) | OKX(v5) |
|---|---|---|
| WS 端点路由 | 合并流 /stream?streams= vs 单流 /ws/;2026 起 /public(高频盘口)/market(markPrice/kline/ticker)/private(listenKey)分流,legacy 不分流的 url 收不到 /market 类数据 | 三条独立连接:/public(行情)/private(账户/订单)/business(candle/algo 必须走这条,走错 URL 静默无数据) |
| symbol 格式 | 全小写(btcusdt@aggTrade),大写=静默空流 | 永续带 -SWAP(BTC-USDT-SWAP) |
| ping/pong | 服务器每 3 分钟发 WS 协议 ping,10 分钟内须回 pong;每条连接 24h 强制断,需提前重连 | 应用层文本 'ping'→'pong'(非协议帧!),>30s 空闲即断,20~25s 心跳 |
| WS 登录签名 | 用户流走 listenKey,WS 不签名 | 私有连接先 login:prehash=ts+'GET'+'/users/self/verify',ts 是秒级字符串(REST 是 ISO 毫秒,别混) |
| REST 签名 | HMAC-SHA256(secret, queryString+body),sig 作最后一个参数;X-MBX-APIKEY 头 | 4 头 KEY/SIGN/TIMESTAMP/PASSPHRASE;prehash=ts+METHOD+path+body,ts 是 ISO 毫秒 |
| 时间窗 | recvWindow 默认 5000ms,漂移→ -1021 | 偏差 >30s → 50102 |
| 限频 | 权重 ~2400/min/IP(读 X-MBX-USED-WEIGHT-1M);下单数另算 per-UID;429 退避,418=IP ban | 每接口独立限频;子账户下单 1000/2s(撤单不计);429 可能只是撮合繁忙,退避别封 key |
| 用户数据流续期 | listenKey 有效 60min,每 30min PUT 续期;listenKeyExpired/-1125 须重建+REST 对账 | 私有 WS 推送,断线后 REST 对账(orders-pending / positions) |
| 仓位模式 | 单向 BOTH / 对冲须传 positionSide;reduceOnly vs closePosition 互斥 | net / long_short(对冲须 posSide);先查 account/config 的 posMode |
| 精度 | 用 tickSize/stepSize/MIN_NOTIONAL(别用 pricePrecision 取整),来自 exchangeInfo | sz 是合约张数(非币/U),用 ctVal/lotSz/minSz,来自 public/instruments |
| 5xx 安全 | 5xx≠确定失败,订单状态未知;凭 clientOrderId 查证再决定,严禁盲目重发 | HTTP 200 仍可能 code!=0;批量看 data[i].sCode;429 可能是撮合繁忙 |
| testnet | REST testnet.binancefuture.com / WS fstream.binancefuture.com,key 独立 | 模拟盘 REST 加头 x-simulated-trading:1 + 专用 demo key;WS 用 wspap.okx.com |
⚠️ 端点/限额/min notional 都是移动靶,骨架里一律设为可配置,实时以
exchangeInfo(Binance)/public/instruments(OKX)校验,不硬编码。
delay = rand(0, min(cap, base*2^attempt)),base≈0.5while(true) 立即重连(雪崩+封 IP)。last_rx_ts(用 monotonic() 非墙钟),now - last_rx_ts > 心跳间隔×2~3 即判死强制重连;ping 发出还要确认收到 pong。防 TCP 半开「假死」。next == prev+1(或交易所衔接规则);缺口→丢弃增量→重拉 snapshot→重放缓冲增量;重快照本身也要退避+限频(防死循环);支持 OKX/Kraken CRC32 checksum 主动比对。lastUpdateId 前的增量→衔接;qty==0 删档不置零;价格转定点整数当 key(防浮点精度);定期 checksum 兜底。recvWindow 别设太大(放弃重放保护)。clientOrderId;超时先按 cloid 查单再决定是否重发;撤改单同样幂等+查证。ENV 切换,默认 testnet,live 须显式声明+醒目告警;日志打印当前环境。exchange_connector/
├── config.py # ENV 枚举、endpoint 映射(testnet/live)、令牌桶配额(标 TODO 以 exchangeInfo 为准)
├── credentials.py # os.environ 读 key/secret/passphrase,fail-fast,mask() 脱敏
├── clock.py # server time 同步、offset 维护、漂移告警
├── ratelimit.py # 按 weight 计费的异步令牌桶
├── ws_market.py # 行情 WS:合并流订阅 + 期望集合 + ping-pong 看门狗 + 退避重连 + 重订阅
├── orderbook.py # snapshot+增量衔接、序列缺口检测、qty==0 删档、checksum
├── ws_user.py # 用户数据流:listenKey 续期 / OKX login + 断线后 REST 对账
├── rest_client.py # 签名、下单(clientOrderId 幂等)、5xx 查证、错误分级映射表
├── reconnect.py # 指数退避+满抖动、心跳看门狗(monotonic)
├── shutdown.py # SIGTERM/SIGINT 优雅关闭
└── README.md # 跑起来需要哪些 env、testnet→live 切换步骤、TODO 清单
实际可按语言(Python 异步 / C++)和「只要行情」需求裁剪。每个易变项标
# TODO,不写死。
一份逐条勾选的 Markdown 清单,覆盖上面「通用可靠性清单」全部条目 + 该交易所要点表里的命中项,标注已实现 / TODO / 不适用,让用户(或 code-reviewer)一眼看清地基哪里还漏。
tick→signal→order 热路径(TCP_NODELAY、连接复用、避免热路径堆分配/锁/文本 JSON)。本 skill 只提醒「记得过一遍」,微秒级尾延迟体检和 文件:行 定位交给 latency-audit skill。Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.
npx claudepluginhub paidaxing1234/latency-hunter-toolkit --plugin latency-hunter