Files
PlantAI-rag-new/docs/team/brief_bioflow_dev1_p0.md
T
adminandClaude Fable 5 486670b75d docs(bioflow): 镜像构建方法 playbook(8 环境→8 镜像,其余 18 环境工程后补做) + A1 任务书 v2 + 团队上下文 8 镜像终态
- playbook: conda-pack 打包→/opt/conda 解包+conda-unpack 重定位→ENV PATH 直达→镜像内编译 .so;验证清单/常见坑/26 环境总台账/实测记录表
- A1 任务书 v2: 副本 126 处适配逐条记录、入口→环境归属表、跨环境入口处置、金标 24 ID diff 全等
- team_context: 8 镜像终态(含 panfamily 1.8G→bioflow-pan、r_de_analysis 1.6G→bioflow-rde)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-05 20:45:03 +08:00

6.3 KiB
Raw Blame History

任务书:开发 agent A1 —— P0 内核移植 + 8 环境镜像构建 + 金标等价性验证(v2,2026-09-05 终版方案)

前置必读

  1. docs/bioflow_team_context.md(环境事实 + 团队纪律,全部遵守)
  2. 本任务书 + 模块职责边界
  3. docs/PRD.md §16(FR-BIO-029 内核等价性 / FR-BIO-030 Docker 执行 / FR-BIO-032 发布编译)
  4. docs/bioflow_image_build_playbook.md(TL 写的镜像构建方法文档骨架——你执行中必须回填实测数据,见交付物 E)

职责范围(只动 rag-new 仓库内 bioflow_kernel/ 目录;PlantAI-dev 只读复制源,零改动)

A. 内核树复制(已完成部分需核对)

复制源 /home/xzq/5090/teamWorkspace/zh/PlantAI-dev/,目标 bioflow_kernel/(顶层同构保 parents[2]):

  • apps/cli/ → bioflow_kernel/cli/(92 文件全量,含 legacy 变体)
  • gfa_core/ → bioflow_kernel/gfa_core/(注意 dev 已演进:gfa_core 在 dev 仓库顶层,不在 apps/ 下;30 模块依赖闭包 + templates/ + schemas/)
  • apps/scripts/ → bioflow_kernel/scripts/(tree_domain.R 等)
  • apps/assets/hmm/ → bioflow_kernel/assets/hmm/(SBP.hmm) 现有 bioflow_kernel/ 树核对完整性(与 dev 同构、无缺文件)。

B. 副本源码适配(用户定策:复制进 rag-new 后该改就改,逐条记入报告)

  1. 全部 /home/xzq/miniconda3 硬编码(实测 126 处/52 文件,含 gfa_core 内引用,A1 需复核精确数)→ 镜像标准形态:
    • envs/<env>/bin/<tool> 工具调用 → PATH 裸命令(<tool>)
    • Python 代码内调用 python → sys.executable
    • conda run -n X cmd → 直接 cmd
    • source .../etc/profile.d/conda.sh → 删除
    • envs/*/bin 探测循环 → PATH 查找(shutil.which)
    • CONDA_PREFIX → sys.executable 推导(保留环境变量覆盖点,如 BBA_/PLANTAI_ 既有约定)
    • pfam_mapping.json 候选链 → 走既有 BBA_RAG_MAPPING_FILE 环境变量覆盖
    • registry.py 的 tartary_spl_analysis 环境实测不存在(dev 历史残留)→ hmmsearch/blastp 等按 test4py311 环境实际工具核验处理,记入已知限制
  2. 交叉引用 from apps.cli.xxx import / from apps.gfa_core... → from cli.xxx / from gfa_core...(dev 布局演进,实测数量以扫描为准,逐一验证可 import)
  3. 每条改动记入报告适配清单:文件 × 行 × 旧值 × 新值(126 处可分组汇总,代表性条目逐条)

C. 8 环境镜像构建(按 docs/bioflow_image_build_playbook.md 方法)

镜像 conda 环境 实测体积 用途
bioflow-gf test4py311 16G GF 链主环境(web 服务本体/cli 主环境)
bioflow-gfpy gfpy312 5.4G mafft/iqtree/meme(registry.py 权威映射)
bioflow-rnaseq rnaseq 6.1G RNA-seq 主链
bioflow-rnaR rnaR 2.7G R 汇总绘图
bioflow-wgs ASAW 5.1G WGS/GWAS/群体
bioflow-interproscan interproscanpy311 750M 结构域注释
bioflow-pan panfamily 1.8G 泛基因家族 pangene 链
bioflow-rde r_de_analysis 1.6G DE 分析 R 环境

构建要点:conda-pack 打包 → 干净基底(glibc ≥ 宿主)→ 解包 /opt/conda → conda-unpack 重定位 → ENV PATH=/opt/conda/bin:$PATH → 多阶段内用镜像内解释器跑 build.sh 编译 .so → 最终镜像只留 .so+明文入口+资源,无 conda 本体、无 /home/xzq、仅 root。 docker/ 下现有 4 个旧 Dockerfile 与 5 个 env_*.txt 是旧方案产物,按新方案重写为 8 个 Dockerfile(参数化模板优先)。 先做最大+最小两端实测(test4py311、interproscanpy311)再铺开其余 6 个。

D. 金标等价性验证(P0 验收核心)

bioflow-gf 镜像内跑 identify(dev 金标数据 assets/examples/test_input,Ft 物种 SPL):

docker run --rm --user $(id -u xzq) \
  -v <任务目录>/input:/job/input -v <任务目录>/workspace:/job/workspace \
  -v /home/xzq/5090/teamWorkspace/zh/bioflow-data:/bioflow-data \
  -e BBA_PFAM_DIR=/bioflow-data/hmm -e BBA_DISABLE_RAG_PFAM_LOOKUP=1 \
  --cpus 16 --memory 64g \
  bioflow-gf python -B -m cli.run_identify \
    --input-dir /job/input --workspace /job/workspace --prefix Ft.SPL --cpu 16 --force

24 个成员 ID 与 dev 预期输出集合 diff 全等;18 个 GF 链入口 python -B -m cli.run_xxx --help 全绿;冒烟脚本沉淀 bioflow_kernel/tests/smoke_golden.sh。

E. 交付物

  1. docs/team/report_bioflow_dev1.md(完成清单、适配清单逐条、金标结果、冒烟结果、已知限制)
  2. bioflow_kernel/stage_image_map.json(阶段 → 8 镜像映射;已有旧版需重写)
  3. 入口→主环境归属表(全部 cli 入口逐一判定主环境)+ 跨环境入口清单(单个入口引用 ≥2 个环境,如 run_expression=rnaseq+rnaR、run_identify 含 interproscanpy311、combo 类含 gfpy312)→ 逐条给处置(编排层拆子阶段映射对应镜像;无法拆分报 TL)
  4. 回填 docs/bioflow_image_build_playbook.md:conda-pack 打包时间/体积、解包后 bin/python --version 与源环境一致性、conda-unpack 重定位验证、ldd 缺库检查结果、代表性工具 --help 冒烟、8 个镜像最终体积与构建时长
  5. 补齐 playbook 环境总台账:其余 18 个环境(AI_env/ani/at_sc/beagle54/bioinfo/minerupy312/rice_download/rice_rna/snpeff/testpy311/vcflinshi/plantai-bff/pymol-env + 4 个 biolabx + base miniconda3)的体积实测数据填入台账表

【纪律再强调】

  • 不碰生产容器/服务;dev 仓库只读;不 commit/push
  • 只动 bioflow_kernel/ 与 docs/team/report_bioflow_dev1.md、docs/bioflow_image_build_playbook.md
  • 镜像构建是自测动作可执行;docker build 遇权限/磁盘问题 → 记入报告等 TL
  • 新代码(Dockerfile/脚本)零硬编码:命令统一 python/裸工具名,路径一律环境变量/配置

【自测要求】

  • 金标 diff 输出为空(24 ID 全等);镜像内 python -c "import gfa_core.xxx" 加载 .so 成功
  • 8 个镜像各自 bin/python --version 与源环境一致 + 代表性工具 --help 全绿
  • 结果写入报告

【完成标准】

报告 + playbook 回填完成后,最终回复明确写「BIOFLOW DEV1 P0 完成」+ 报告路径 + 金标 diff 结果 + 8 镜像构建状态 + 自测通过数