Files
PlantAI-dev/docs/tbtools_style_lightweight_extension_plugin_2026-06-10.md
2026-08-03 18:42:47 +08:00

7.4 KiB
Executable File
Raw Permalink Blame History

TBtools 式轻量扩展插件方案

1. 目标

本文档定义 bbav5 中“扩展分析阶段”的减法版本:先按 TBtools 插件式能力接入,而不是立即建设为完整核心分析阶段。

目标是把用户已经跑通的代码包装成一个轻量插件,使其具备:

  • 可通过统一入口运行;
  • 可保留用户跑通时的默认参数;
  • 可允许用户修改少量开放参数;
  • 可收集输出结果;
  • 可记录运行命令、参数、日志和状态。

该方案优先解决“能稳定复用用户代码”的问题,暂不追求完整的 Agent 自动规划、复杂依赖推理和下游自动消费。

2. 与正式阶段的边界

轻量扩展插件不是 identify、motif、domain、expression 这类完整正式阶段。

它暂时不要求:

  • 新增完整 stage contract;
  • 接入 PlanningAgentV2 自动规划;
  • 参与核心阶段依赖推理;
  • 声明复杂 consumes/provides 类型系统;
  • 被下游阶段自动识别和消费;
  • 为每个插件开发专用前端结果组件;
  • 接入复杂 diagnosis 自动修复;
  • 接受完整 publication-grade 方法学审查。

轻量插件只要求做到:

用户跑通代码
  -> 标准插件入口
  -> 参数可配置
  -> 输出可收集
  -> 日志可查看
  -> manifest 可追踪

如果后续某个插件稳定、常用,且结果需要参与下游流程,再升级为正式 bbav5 stage。

3. 最小插件结构

推荐目录结构:

plugins/<plugin_id>/
  config.yaml
  run.py
  README.md
  examples/

其中:

  • config.yaml 描述插件元信息、运行环境、默认参数和输出目录;
  • run.py 是标准 CLI wrapper,负责调用用户原始分析代码;
  • README.md 说明插件用途、输入、输出和示例命令;
  • examples/ 可保存最小示例输入或参数模板。

4. config.yaml 最小规范

轻量插件的配置只保留必要字段。

plugin:
  id: custom_xxx
  name: Custom XXX Analysis
  version: 1.0.0
  description: 用户自定义分析插件

runtime:
  conda_env: test4py311

entry:
  command: python plugins/custom_xxx/run.py

parameters:
  evalue:
    type: float
    default: 1e-5
    editable: true
    description: 序列搜索显著性阈值

  threads:
    type: integer
    default: 8
    editable: true
    description: 运行线程数

outputs:
  directory: results/custom_xxx

字段要求:

  • plugin.id 必须唯一;
  • runtime.conda_env 使用已有 conda 环境,优先 test4py311、rnaseq、rnaR;
  • entry.command 指向插件入口;
  • parameters.*.default 使用用户原始跑通参数;
  • parameters.*.editable 只对用户需要修改的参数设为 true;
  • outputs.directory 是插件输出收集目录。

5. 参数减法原则

参数不需要一次性全部暴露。

只开放三类参数:

  1. 用户明确希望修改的参数;
  2. 对结果有明显影响的核心参数;
  3. 运行资源参数,例如 threads、cpu、memory。

暂不开放:

  • 内部临时文件名;
  • 中间目录;
  • 不建议普通用户调整的调试参数;
  • 只为兼容原始代码存在的变量;
  • 修改后容易破坏流程的隐藏参数。

默认值必须来自用户已经跑通的版本。用户不修改参数时,插件应尽量复现原始运行结果。

6. run.py 最小职责

run.py 不需要重写用户分析逻辑,只做适配层。

最小职责:

  • 解析 CLI 参数;
  • 检查必要输入是否存在;
  • 创建输出目录;
  • 调用用户原始代码或核心函数;
  • 收集结果文件;
  • 写运行日志;
  • 写 manifest;
  • 失败时返回非零 exit code。

推荐命令形式:

python plugins/custom_xxx/run.py \
  --workspace workspace/<job_id> \
  --input input.fa \
  --output results/custom_xxx \
  --evalue 1e-5 \
  --threads 8

7. manifest 最小规范

轻量插件不使用完整 stage manifest,先使用 plugin manifest。

{
  "manifest_version": "1.0",
  "plugin_id": "custom_xxx",
  "status": "success",
  "parameters": {
    "evalue": 1e-5,
    "threads": 8
  },
  "command": "python plugins/custom_xxx/run.py --input input.fa --evalue 1e-5 --threads 8",
  "outputs": [
    "results/custom_xxx/result.tsv",
    "results/custom_xxx/plot.pdf"
  ],
  "logs": [
    "results/custom_xxx/run.log"
  ],
  "started_at": "2026-06-10T10:00:00",
  "finished_at": "2026-06-10T10:03:00"
}

成功条件:

exit code = 0
+ manifest.status = success
+ outputs 中声明的文件存在
+ 关键输出文件非空

失败时也要写 manifest:

{
  "manifest_version": "1.0",
  "plugin_id": "custom_xxx",
  "status": "failed",
  "parameters": {},
  "command": "...",
  "error": "missing required input: input.fa",
  "logs": [
    "results/custom_xxx/run.log"
  ]
}

8. 前端与调度减法

前端只需要一个通用插件执行界面。

最低能力:

  • 从 config.yaml 读取插件名和参数;
  • 自动生成参数表单;
  • 提供运行按钮;
  • 显示运行状态;
  • 显示日志;
  • 显示结果文件列表;
  • 对常见文件类型使用通用预览或下载。

不要求:

  • 每个插件单独设计页面;
  • 每个插件单独开发图表组件;
  • 插件结果自动并入核心阶段结果页;
  • 插件输出自动驱动下游分析。

9. 后端执行减法

后端只需要提供通用插件执行能力。

最低能力:

  • 根据 plugin_id 找到插件目录;
  • 读取 config.yaml;
  • 合并默认参数和用户修改参数;
  • 执行 entry.command;
  • 保存 stdout/stderr;
  • 读取 manifest;
  • 返回状态和 outputs。

暂不要求:

  • 接入核心 run_stage 全路径;
  • 接入 StageToolRegistry;
  • 接入 PlanningAgentV2;
  • 接入 stage status;
  • 接入正式 reproducibility_v2;
  • 接入复杂 diagnosis repair。

10. 升级路径

当轻量插件满足以下条件时,可以升级为正式 bbav5 stage:

  • 多个用户或多个项目反复使用;
  • 输入输出格式稳定;
  • 结果需要被下游阶段消费;
  • 参数集合稳定;
  • 运行环境明确;
  • 已有真实数据验证;
  • 失败模式清楚;
  • 前端需要专门展示。

升级步骤:

轻量插件
  -> 新增 stage contract
  -> 新增 apps/cli/run_<stage>.py
  -> 新增或迁移 skills/<stage>/
  -> 注册 StageCapability/StageTool
  -> 接入 backend run_stage
  -> 接入 stage status
  -> 接入 result display
  -> 接入 diagnosis
  -> 接入 reproducibility

11. 推荐验收标准

一个轻量扩展插件只要通过以下验收,即可认为达到 TBtools 式插件标准:

  • 使用默认参数可以运行成功;
  • 用户修改开放参数后,实际命令中参数同步变化;
  • 输出目录生成结果文件;
  • manifest 记录实际运行参数和输出文件;
  • 缺少必要输入时能给出明确错误;
  • 日志文件可查看;
  • 前端或通用接口能列出结果文件。

12. 总结

如果当前目标是“做到和 TBtools 插件一样”,应主动做减法。

轻量扩展插件的核心不是让它立即成为完整 bbav5 正式阶段,而是先让用户跑通代码具备可调用、可配置、可记录、可复用的最小系统形态。

推荐当前定位:

不是核心 stage
不是 Agent 自动规划节点
不是下游依赖源

而是:

可配置的用户分析插件
+ 可运行入口
+ 默认参数
+ 输出收集
+ 日志记录
+ manifest 追踪

这能最大程度降低接入成本,也能保留未来升级为正式阶段的路径。