- 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>
6.3 KiB
6.3 KiB
任务书:开发 agent A1 —— P0 内核移植 + 8 环境镜像构建 + 金标等价性验证(v2,2026-09-05 终版方案)
前置必读
- docs/bioflow_team_context.md(环境事实 + 团队纪律,全部遵守)
- 本任务书 + 模块职责边界
- docs/PRD.md §16(FR-BIO-029 内核等价性 / FR-BIO-030 Docker 执行 / FR-BIO-032 发布编译)
- 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 后该改就改,逐条记入报告)
- 全部 /home/xzq/miniconda3 硬编码(实测 126 处/52 文件,含 gfa_core 内引用,A1 需复核精确数)→ 镜像标准形态:
envs/<env>/bin/<tool>工具调用 → PATH 裸命令(<tool>)- Python 代码内调用 python →
sys.executable conda run -n X cmd→ 直接cmdsource .../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 环境实际工具核验处理,记入已知限制
- 交叉引用
from apps.cli.xxx import/from apps.gfa_core...→from cli.xxx/from gfa_core...(dev 布局演进,实测数量以扫描为准,逐一验证可 import) - 每条改动记入报告适配清单:文件 × 行 × 旧值 × 新值(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. 交付物
- docs/team/report_bioflow_dev1.md(完成清单、适配清单逐条、金标结果、冒烟结果、已知限制)
- bioflow_kernel/stage_image_map.json(阶段 → 8 镜像映射;已有旧版需重写)
- 入口→主环境归属表(全部 cli 入口逐一判定主环境)+ 跨环境入口清单(单个入口引用 ≥2 个环境,如 run_expression=rnaseq+rnaR、run_identify 含 interproscanpy311、combo 类含 gfpy312)→ 逐条给处置(编排层拆子阶段映射对应镜像;无法拆分报 TL)
- 回填 docs/bioflow_image_build_playbook.md:conda-pack 打包时间/体积、解包后 bin/python --version 与源环境一致性、conda-unpack 重定位验证、ldd 缺库检查结果、代表性工具 --help 冒烟、8 个镜像最终体积与构建时长
- 补齐 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 镜像构建状态 + 自测通过数