- 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>
81 lines
6.3 KiB
Markdown
81 lines
6.3 KiB
Markdown
# 任务书:开发 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 镜像构建状态 + 自测通过数
|