SDK 版本¶
Almanak 平台同时支持两代 SDK。它们都以 almanak 为发行包名称,通过主版本号区分。
SDK v2(almanak 2.x) |
SDK v3(almanak 3.x) |
|
|---|---|---|
| 仓库结构 | strategy.py、config.json,以及包含 [tool.almanak.run] 的 pyproject.toml |
strategy.py、config.yaml,以及可选的 backtest.yaml / backtest-economic.yaml |
| 策略接口 | 使用 IntentStrategy,通过 Swap、LP 或 Borrow 等意图描述操作 |
基于显式声明的连接器,使用钩子函数(decide、on_outcome) |
| 配置 | config.json,可在每次部署时覆盖 |
config.yaml,按 SDK 配置规范校验;平台原样传递配置 |
| 权限 | 部署前通过 almanak strat permissions 导出 Zodiac Roles 权限清单 |
运行中的部署导出需要所有者执行的交易;在交易执行前,部署保持需要操作状态 |
| 仪表盘 | 由部署提供的 Streamlit 页面 | 在部署的 pod 内计算生成 JSON 仪表盘,并在部署页面中呈现 |
| 回测 | 使用平台回测运行器,指定开始和结束日期 | 使用仓库中的 backtest.yaml 或 backtest-economic.yaml,由同一个平台运行器执行 |
| 可用环境 | 生产环境 | 预发布环境预览 |
我的策略使用哪一代 SDK?¶
关联仓库时,平台会识别其 SDK 版本,并将结果记录在策略上。具体由解析后的 almanak 版本决定:如果锁文件或 pyproject.toml 将 almanak 解析为 3.x,该策略就属于 SDK v3,仓库也必须包含 strategy.py 和 config.yaml。解析结果低于 3.0 的策略,仍遵循部署中介绍的 SDK v2 规则。
策略库会显示每个策略和部署使用的 SDK 版本。已有策略不能直接切换 SDK 代际:要迁移到 SDK v3,需要关联一个按 v3 编写的仓库。
平台如何处理不同代际的 SDK¶
- 部署:平台根据策略的 SDK 版本选择部署流程、部署控制项和仪表盘。v3 策略不能通过 v2 流程部署,反之亦然;版本不匹配时,平台会拒绝操作。
- 回测:v2 回测使用日期范围和策略配置;v3 回测使用仓库中的一个回测文件(或其编辑副本),并在运行器内进行校验。
- Almanak Code:关联 v3 策略的会话使用 SDK v3 助手,并通过
almanak check校验工作区。未关联仓库的会话,以及关联 v2 策略的会话,使用 SDK v2。 - 支持的协议:支持的协议列表会标明每个协议适用的 SDK 代际。仅支持 v3 的协议,不能用于部署 v2 策略。
预发布环境预览¶
受邀账户可在预发布环境中使用 SDK v3,通过侧边栏中的 SDK v2 / v3 开关进行选择。这个开关只是视图偏好设置:它会筛选策略库,并打开 v3 的部署和回测页面,但实际执行哪套流程,始终由策略记录中保存的 SDK 版本决定。在预览阶段结束前,生产环境仅运行 SDK v2。