Files

6.3 KiB
Raw Permalink Blame History

Repository Guidelines

Package Manager

必须使用 Bun — 本项目使用 Bun 作为包管理器和运行时。所有命令都必须用 bun 执行,不要使用 npm、yarn 或 npx

Project Structure

入口 index.ts 在仓库根目录,用于 CLI 启动。所有生产代码在 src/ 下:

src/
├── config.ts              # 运行时配置(GridConfig、MakerPointsConfig 等)
├── runtime-errors.ts      # 全局错误处理
├── index.tsx              # Ink 渲染入口
├── cli/                   # CLI 参数解析与策略启动
│   ├── args.ts
│   ├── command-executor.ts
│   ├── command-parser.ts
│   ├── command-types.ts
│   └── strategy-runner.ts
├── core/                  # 订单协调 + 共享库
│   ├── order-coordinator.ts   # 限价单/市价单统一下单(锁、去重、速率控制)
│   └── lib/
│       ├── order-plan.ts
│       ├── orders.ts
│       └── rate-limit.ts
├── exchanges/             # 交易所适配器(每个子目录含 adapter/gateway/order
│   ├── adapter.ts         # ExchangeAdapter 接口
│   ├── adapter-utils.ts   # 适配器工具函数
│   ├── types.ts           # CreateOrderParams、Order、AccountSnapshot 等公共类型
│   ├── order-schema.ts    # BaseOrderIntent、LimitOrderIntent 等
│   ├── order-handlers.ts  # 通用 order handler 工厂
│   ├── order-router.ts    # 按交易所分发订单处理
│   ├── create-adapter.ts  # 工厂函数
│   ├── resolve-from-env.ts
│   ├── dry-run-adapter.ts # 模拟适配器
│   ├── aster/             # Aster 交易所
│   ├── backpack/          # Backpack 交易所
│   ├── binance/           # Binance 交易所(CCXT
│   ├── grvt/              # GRVT 交易所
│   ├── lighter/           # Lighter 交易所(含签名/nonce/字节处理)
│   ├── nado/              # Nado 交易所
│   ├── paradex/           # Paradex 交易所
│   └── standx/            # StandX 交易所
├── strategy/              # 所有策略引擎
│   ├── maker-engine.ts        # Maker 做市策略
│   ├── maker-points-engine.ts # MakerPoints 积分做市策略
│   ├── maker-points-logic.ts  # MakerPoints 纯逻辑(可单独测试)
│   ├── offset-maker-engine.ts # 偏移做市策略
│   ├── trend-engine.ts        # 趋势跟踪策略
│   ├── grid-engine.ts         # 网格交易策略(LevelState + clientOrderId 恢复)
│   ├── basis-arb-engine.ts    # 基差套利策略
│   ├── swing-engine.ts        # 波段交易策略
│   ├── swing-logic.ts         # 波段纯逻辑
│   ├── guardian-engine.ts     # 监控守护策略
│   ├── liquidity-maker-engine.ts # 流动性做市策略
│   └── common/                # 策略共享辅助
│       ├── binance-depth.ts       # Binance 深度分析
│       ├── binance-rsi.ts         # Binance RSI 指标
│       ├── event-emitter.ts       # 策略事件发射器
│       ├── grid-storage.ts        # 网格状态磁盘持久化
│       ├── session-volume.ts      # 会话成交量统计
│       └── subscriptions.ts       # WebSocket 安全订阅
├── ui/                    # Ink 仪表盘(每个策略独立 App)
│   ├── App.tsx
│   ├── GridApp.tsx
│   ├── MakerApp.tsx
│   ├── MakerPointsApp.tsx
│   ├── OffsetMakerApp.tsx
│   ├── TrendApp.tsx
│   ├── BasisApp.tsx
│   ├── SwingApp.tsx
│   ├── GuardianApp.tsx
│   ├── LiquidityMakerApp.tsx
│   └── components/
├── logging/               # 交易日志
│   └── trade-log.ts
├── notifications/         # Telegram 通知
│   ├── index.ts
│   ├── telegram.ts
│   └── types.ts
├── i18n/                  # 国际化
│   └── index.ts
└── utils/                 # 跨领域工具
    ├── math.ts, format.ts, price.ts, depth.ts
    ├── errors.ts, risk.ts, pnl.ts
    ├── strategy.ts, order-status.ts, security.ts
    ├── copyright.ts
    └── standx-token-expiry.ts

辅助目录:

  • tests/ — Vitest 测试套件(大部分测试在此,少量与逻辑共处于 src/
  • docs/ — 交易所 API 参考文档
  • scripts/ — 一次性脚本(密钥派生等)
  • skills/ — AI 助手技能配置

Commands

bun install                  # 安装依赖
bun run dev                  # 启动 CLI 菜单(等同于 bun run index.ts
bun run test                 # 执行全部测试(bun x vitest run
bun x vitest --watch         # 增量测试
bun x tsc --noEmit           # 类型检查(无 typecheck 脚本,直接用 tsc
bun run lint                 # oxlint 检查
bun run lint:fix             # oxlint 自动修复

⚠️ 不要用 bun test — 那是 Bun 内置 runner,不支持 vi.resetModules()vi.waitFor() 等 Vitest API。必须用 bun run test

Coding Style

  • 现代 TypeScript + ES modules,严格模式(strict: true
  • 两空格缩进,imports 按 external → internal 排序
  • 变量/函数用 camelCase,类/枚举用 PascalCase
  • 新策略放 src/strategy/,策略共享工具放 src/strategy/common/
  • 跨领域工具放 src/utils/
  • 注释只写非显而易见的交易逻辑
  • JSX 用于 Ink UI 组件(react-jsx

Testing

Vitest 驱动所有测试。测试文件两种位置:

  • tests/<feature>.test.ts — 大部分测试
  • src/<module>/<feature>.test.ts — 纯逻辑单元测试(如 maker-points-logic.test.tsswing-logic.test.ts

策略测试应覆盖:订单生命周期、风控守卫、WebSocket 边界情况、状态恢复。

Commit Guidelines

Conventional Commitsfeat: / fix: / refactor: / test:),每次提交作用域限单个模块或策略。

Environment & Secrets

复制 .env.example.env 填入 API 密钥。不要读取、打印或提交 .env 和任何密钥。 泄露立即轮换。

Safety

  • 永远不要读取、运行、打印或访问 .env 或任何 secrets
  • 代码中遇到项目依赖时,先查版本再查文档,避免过时知识导致错误