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

81 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 任务书:开发 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 镜像构建状态 + 自测通过数