AXP 打包分享

AxData AXP 打包与安装教程

.axp 是 AxData 的本地安装信封。它不是插件核心格式,核心格式仍然是 Python wheel + entry point + embedded manifest。AXP 的作用是把 wheel、manifest、README、LICENSE、checksum 和可选依赖 wheels 打成一个用户可上传、可预览、可离线安装的包。

1. AXP 是什么

核心说明:

AXP 是分发和安装单位,不是能力类型。AxData 不靠 AXP 文件名或目录名判断“数据源插件”还是“采集器插件”,而是读取 wheel 内的 axdata-provider.json / axdata-plugin.json

AxData 不做插件市场、不做中心审核、不做签名信任体系。安装外部插件本质上就是允许本地 Python 代码运行。

2. 推荐包结构

demo.axp
  manifest.json
  README.md
  LICENSE
  checksums.txt
  wheels/
    axdata_source_demo-0.1.0-py3-none-any.whl
    beautifulsoup4-4.12.3-py3-none-any.whl
  samples/
    stock_snapshot.json

说明:

文件作用
manifest.json安装前预览用的包级 manifest
wheels/*.whl真正安装的插件 wheel
dependency wheels离线依赖包
checksums.txt文件完整性检查
README.md给用户看的说明
LICENSE许可说明
samples/可选样例

3. 打 wheel

先在插件项目里构建 wheel:

.\.venv\Scripts\python -m pip install build
.\.venv\Scripts\python -m build C:\path\to\axdata-source-demo

生成结果通常在:

dist/
  axdata_source_demo-0.1.0-py3-none-any.whl

构建后要检查 wheel 里有没有 manifest:

.\.venv\Scripts\python -m zipfile -l dist\axdata_source_demo-0.1.0-py3-none-any.whl

必须能看到:

axdata_source_demo/axdata-provider.json

或:

axdata_collector_demo/axdata-plugin.json

4. 生成 AXP 内容

准备临时目录:

$pkg = "$env:TEMP\axdata-demo-axp"
Remove-Item $pkg -Recurse -Force -ErrorAction SilentlyContinue
New-Item -ItemType Directory -Path "$pkg\wheels" | Out-Null
Copy-Item C:\path\to\dist\axdata_source_demo-0.1.0-py3-none-any.whl "$pkg\wheels\"
Copy-Item C:\path\to\README.md "$pkg\README.md"
Copy-Item C:\path\to\LICENSE "$pkg\LICENSE"

包级 manifest.json 可以很薄,但要能让安装前预览知道插件身份:

{
  "format": "axdata.axp",
  "format_version": "1.0",
  "name": "axdata-source-demo",
  "version": "0.1.0",
  "wheels": [
    "wheels/axdata_source_demo-0.1.0-py3-none-any.whl"
  ]
}

如果 wheel 内已经有 axdata-provider.jsonaxdata-plugin.json,AxData 会优先读取 wheel 内 manifest 做能力预览。

5. 依赖 wheels

默认安装是离线优先。插件有第三方依赖时,有两种方式:

方式说明
包内带 dependency wheels推荐给离线安装,AXP 里放依赖 wheel
允许在线安装用户显式选择 --allow-online-deps 或 Web 勾选允许联网

依赖声明示例:

{
  "dependencies": [
    {
      "name": "beautifulsoup4",
      "version_spec": ">=4.12",
      "optional": false,
      "source": "pypi",
      "wheel": "wheels/beautifulsoup4-4.12.3-py3-none-any.whl",
      "description": "解析网页公告"
    }
  ]
}

如果声明了 wheel,却没把文件放进 AXP,预览应该提示缺失。

6. checksums.txt

checksum 用于发现包损坏、漏文件或传输不完整。

格式可以是:

sha256  wheels/axdata_source_demo-0.1.0-py3-none-any.whl  <hash>
sha256  README.md  <hash>
sha256  LICENSE  <hash>

注意:

7. 打成 .axp

AXP 本质是 zip:

Compress-Archive -Path "$pkg\*" -DestinationPath C:\path\to\demo.axp -Force

如果工具链提供 axdata plugin build,也应该做这些事:

7.1 从已安装插件导出 AXP

Web 插件页的“导出 AXP”用于把当前可发现的插件重新打成安装包。它导出的是插件分享/安装单位,不是采集数据包:

API 入口:

GET /v1/plugins/axp/export/{provider_id}

这里的 {provider_id} 是插件身份参数。对数据源插件通常是 provider_id,对 collector-only 插件可以是 collector_plugin_id

8. 预览

安装前先预览:

.\.venv\Scripts\axdata plugin axp-preview C:\path\to\demo.axp --json

预览应该看:

Web 插件页上传 AXP 时,也应该先展示这些信息,让用户决定是否安装。

9. 安装

安装但不启用:

.\.venv\Scripts\axdata plugin axp-install C:\path\to\demo.axp --json

安装并启用:

.\.venv\Scripts\axdata plugin axp-install C:\path\to\demo.axp --enable --json

允许在线依赖:

.\.venv\Scripts\axdata plugin axp-install C:\path\to\demo.axp --allow-online-deps --json

重复安装同一个 Provider:

.\.venv\Scripts\axdata plugin axp-install C:\path\to\demo.axp --replace --json

如果这是插件更新,且希望更新后继续启用:

.\.venv\Scripts\axdata plugin axp-install C:\path\to\demo.axp --replace --enable --json

Web 安装面板会先预览 .axp。当它检测到同一个插件身份已经存在时,会把“安装”切换为“更新插件”,并在确认后使用同样的 replace=true 逻辑。更新不会删除已采集数据、任务、运行历史、metadata、日志或本地配置。

10. 启用和禁用

安装不等于启用。安装只是把包放到 AxData 管理目录;启用后才进入接口目录或采集器目录。

.\.venv\Scripts\axdata plugin list --json
.\.venv\Scripts\axdata plugin enable axdata.source.demo
.\.venv\Scripts\axdata plugin disable axdata.source.demo

采集器插件同理:启用身份应使用它自己的 plugin_id / collector_plugin_id,不要伪造成 Provider。禁用后,已有任务和历史记录保留,但任务会显示依赖不可用。

11. 卸载

卸载 AXP 管理插件:

.\.venv\Scripts\axdata plugin uninstall axdata.source.demo --json

如果插件启用中,可能需要先禁用,或显式允许卸载时禁用:

.\.venv\Scripts\axdata plugin uninstall axdata.source.demo --disable-first --json

卸载不会删除:

卸载只让插件能力从当前 runtime 消失。

12. Web 安装流程

Web 插件页建议流程:

  1. 选择 .axp 文件。
  2. 预览插件身份、能力、依赖、checksum。
  3. 用户确认安装。
  4. 默认安装后不启用。
  5. 用户手动启用。
  6. 数据源能力进入接口页;采集器能力进入采集页。

不要把安装、启用、运行采集混成一个按钮。这样用户才知道每一步发生了什么。

13. 常见错误

现象常见原因修复
预览失败AXP 不是合法 zip 或缺 wheel检查包结构
插件安装后不显示wheel 内缺 manifest修 package data
依赖缺失AXP 未带 dependency wheel补 wheel 或允许在线安装
checksum 失败文件被修改或清单不匹配重新生成 checksums
重复安装失败provider_id 已存在使用 replace 或改 ID
启用失败接口名冲突或版本不兼容禁用冲突插件或更新插件

14. 发布前检查清单