安装、升级、卸载插件
通过 deeptrade plugin install/upgrade/uninstall 命令管理插件;支持注册表短名、GitHub URL、本地路径三种来源;--ref 锁版本,SemVer 强制单向升级
DeepTrade 的插件安装走单一命令:
$ deeptrade plugin install <SOURCE><SOURCE> 框架会按下列优先级顺序自动判断:
注册表短名
最常见路径。例如:
$ deeptrade plugin install limit-up-board框架 v0.8+ 会去注册表查 plugin_id == "limit-up-board" 对应的 repo + latest_version,然后直接通过 GitHub CDN (codeload.github.com) 拉取对应的 tarball。
免 API 限流:CDN 路径不消耗 GitHub API 配额。老版本(≤v0.7)会通过 GitHub Releases API 解析最新版本,在频繁安装时容易触发 60次/小时 的非认证请求限流。
Git 仓库 URL
...
$ deeptrade plugin install https://github.com/myuser/my-plugin.git也支持 SSH 形式:git@github.com:user/repo.git。
本地路径
开发插件时最常用:
$ deeptrade plugin install ./my-plugin/会把目录原样 copy 到 ~/.deeptrade/plugins/installed/<plugin_id>/<version>/。
自动化依赖管理 (v0.4+)
框架支持插件级别的 Python 依赖自动安装。如果插件在 deeptrade_plugin.yaml 中声明了 dependencies(如 lightgbm, pandas 等),框架会在安装/升级期间自动调用 uv pip install (优先) 或 pip install 将其安装到当前环境。
--no-deps: 跳过依赖安装(适合离线环境或手动管理)。--reinstall-deps: 强制重跑依赖安装程序(即使已满足版本要求)。
锁定版本:--ref
...
$ deeptrade plugin install limit-up-board --ref limit-up-board-v0.8.0$ deeptrade plugin install https://github.com/myuser/my-plugin.git --ref dev不带 --ref 时按注册表声明的 tag_prefix 自动选最新 release。
跳过确认:-y
CI / 脚本场景:
$ deeptrade plugin install limit-up-board -y跳过"是否真的安装?"确认。
安装时框架做了什么?
按设计文档 §架构 的 install 管道,原子性保证:
1. 解析 manifest
读 deeptrade_plugin.yaml,校验 plugin_id 不是保留字(init / config / plugin / data),版本与 min_framework_version 兼容,llm_tools=false。
2. 校验 migrations sha256
manifest 声明的每条 migration 文件都校验 checksum,任一不匹配立即 fail(不会动数据库)。
3. copy 文件 + 写迁移
在一个 DuckDB 事务里:apply migrations、INSERT 到 plugins / plugin_tables / plugin_schema_migrations。事务失败 → 删 copy。
4. 加载 entrypoint + validate_static
框架 import 入口模块,调 validate_static(ctx)(禁止访问网络 —— 仅做静态校验)。失败 → 回滚(drop tables、删注册条目、删 copy)。
列出已装
$ deeptrade plugin list输出每个插件的 plugin_id / 版本 / 类型 / enabled 状态。
升级
$ deeptrade plugin upgrade limit-up-board按 SemVer 比较逻辑:
| 候选版本 vs 已装版本 | 行为 |
|---|---|
| 相等 | 退出码 0,输出 UpgradeNoop,不改文件 |
| 候选更高 | 仅 apply 未应用的 migrations + 替换文件 |
| 候选更低 | 拒绝(退出码 2)。框架不支持降级,因为 migrations 没有 rollback 语义 |
降级保护:如果你确实需要回退到旧版本,先 uninstall 再 install --ref <旧 tag>。这会让你显式面对"老版本可能用旧表结构 / 缺新列"这个事实。
启用 / 禁用
channel 类型插件默认装完后就已启用。如果想临时关掉某个 channel(比如调试时不想推消息):
$ deeptrade plugin disable stdout-channel恢复:
$ deeptrade plugin enable stdout-channelenabled 字段在 plugins 表里。strategy 类型插件没有这个开关概念(它们是被显式调用的子命令)。
卸载
$ deeptrade plugin uninstall limit-up-board默认行为:
- 删除
~/.deeptrade/plugins/installed/limit-up-board/目录 - 从
plugins / plugin_tables / plugin_schema_migrations注销 - 保留插件创建的业务表(数据不删)
如果要连数据一起清理:
$ deeptrade plugin uninstall limit-up-board --purge--purge 会把插件声明的所有表都 drop。
--purge 不可恢复。如果你想"暂时不用,但保留分析数据",不要带 --purge。
下一步
→ 运行策略
关键词:plugin install、upgrade、uninstall、--ref、--purge、-y、注册表、Git URL、本地路径、SemVer、降级、enable、disable、enabled