基于Hyperliquid成功实现经验,为新交易所供应商提供Yuan框架集成指南。使用此技能当需要为新的交易所创建供应商实现,包括项目结构设计、API集成、核心服务实现和最佳实践。适用于交易所API集成、金融系统开发、微服务架构设计。
为新的交易所供应商提供完整的 Yuan 框架集成指南,基于 Hyperliquid、Aster、OKX 等成功实现经验。
使用此技能当需要:
上下文窗口是公共资源。技能与系统提示、对话历史、其他技能的元数据和用户请求共享上下文。
**默认假设:Claude 已经很智能。**只添加 Claude 不具备的上下文。对每条信息进行挑战:"Claude 真的需要这个解释吗?","这个段落是否值得其令牌成本?"
优先使用简洁示例而非冗长解释。
将特异性级别与任务的脆弱性和可变性匹配:
高自由度(文本指令):当多种方法都有效、决策依赖上下文,或启发式指导方法时使用。
中等自由度(伪代码或带参数的脚本):当存在首选模式、某些变化可接受,或配置影响行为时使用。
低自由度(特定脚本,少数参数):当操作易错、一致性至关重要,或必须遵循特定序列时使用。
apps/vendor-{exchange}/src/
├── api/ # API层
│ ├── client.ts # HTTP客户端设置
│ ├── public-api.ts # 公共API端点
│ ├── private-api.ts # 私有API端点
│ └── types.ts # TypeScript类型定义
├── services/ # 服务层
│ ├── accounts/ # 账户服务
│ │ └── perp.ts # 永续账户信息
│ ├── orders/ # 订单管理
│ │ ├── submitOrder.ts # 订单提交
│ │ ├── cancelOrder.ts # 订单取消
│ │ ├── modifyOrder.ts # 订单修改
│ │ └── listOrders.ts # 订单列表
│ ├── markets/ # 市场数据
│ │ ├── quote.ts # 实时报价
│ │ ├── product.ts # 产品信息
│ │ ├── ohlc.ts # K线数据
│ │ └── interest-rate.ts # 利率数据
│ ├── account-actions-with-credential.ts # 账户RPC
│ ├── order-actions-with-credential.ts # 订单RPC
│ └── fill-history.ts # 成交记录(如果支持)
├── utils.ts # 工具函数
├── sign.ts # 请求签名
├── index.ts # 主入口
├── cli.ts # CLI入口
├── AGENTS.md # Agent文档
├── SESSION_NOTES.md # 会话记录
└── package.json # 依赖
import { createCache } from '@yuants/cache';
const CACHE_TTL = 60_000;
const metaCache = createCache<Map<string, AssetInfo>>(
async () => {
console.info(`[${formatTime(Date.now())}] 刷新交易所元数据缓存`);
const data = await fetchExchangeMetadata();
return processData(data);
},
{ expire: CACHE_TTL },
);
export const getAssetInfo = async (symbol: string) => {
const cache = await metaCache.query('meta');
return cache.get(symbol);
};
export const submitOrder = async (credential: ICredential, order: IOrder) => {
console.info(`[${formatTime(Date.now())}] 提交订单: ${order.product_id}`);
try {
const payload = buildOrderPayload(order);
const result = await placeOrder(credential, payload);
if (!result.status || result.status !== 'ok') {
throw new Error(`订单提交失败: ${result.error}`);
}
const orderId = extractOrderId(result);
console.info(`[${formatTime(Date.now())] 订单提交成功: ${orderId}`);
return { order_id: `${orderId}` };
} catch (error) {
const errorMessage = error instanceof Error ? error.message : '未知错误';
console.error(`[${formatTime(Date.now())}] 订单提交失败: ${errorMessage}`);
throw new Error(`订单提交失败: ${errorMessage}`);
}
};
import { provideOrderActionsWithCredential } from '@yuants/data-order';
provideOrderActionsWithCredential<ICredential>(
Terminal.fromNodeEnv(),
'EXCHANGE',
{
type: 'object',
required: ['private_key', 'address'],
properties: {
private_key: { type: 'string' },
address: { type: 'string' },
},
},
{
submitOrder,
cancelOrder,
modifyOrder,
listOrders,
},
);
账户信息
订单管理
市场数据
API 集成
交易历史
转账支持
createCache高效缓存createCache vs 手动管理优先使用交易所的原生 API 而非模拟方案:
console.info(`[${formatTime(Date.now())] 操作成功`);
console.error(`[${formatTime(Date.now())] 操作失败: ${error.message}`);
interface IExchangeResponse {
status: string;
data?: any;
error?: string;
}
function validateResponse<T>(response: IExchangeResponse): T {
if (response.status !== 'ok') {
throw new Error(response.error || 'API调用失败');
}
return response.data as T;
}
SESSION_NOTES.md 记录每次重要变更,包括:
成功的供应商实现应该:
基于 Hyperliquid、Aster、OKX 供应商实现经验生成