3.4 KiB
Executable File
3.4 KiB
Executable File
bbav5 项目记忆 - 决策与踩坑
创建时间:2026-03-18 | 最后更新:2026-04-15
本文件记录设计决策和踩坑经验,运行时配置见 AGENTS.md
1. 架构设计决策
1.1 三层架构
Frontend (Vue3 + FastAPI)
↓
Core Framework (Contracts + Reproducibility + API)
↓
Analysis Execution (CLI Scripts + Skills)
决策理由: 解耦前端展示与后端执行,契约层保证阶段间数据流转可靠
1.2 目录结构规范
workspace/{job_id}/
├── final/ # 最终产物(只读,下游依赖)
├── {stage}/analysis/ # 中间文件(可追溯)
├── logs/ # 执行日志
└── input/ # 输入文件(只读)
踩坑: 早期版本输出到 {stage}/final/,下游阶段找不到文件 → 统一为 final/
1.3 契约化设计
每个阶段契约文件 (*_contract_v1.md) 定义:
- 输入契约: 文件类型、来源
- 输出契约: final/ 必须产物
- Manifest 契约: artifacts 字段最小集
2. 重大踩坑记录
2.1 RNA-seq 环境问题 (2026-03-19)
问题: RNA-seq 阶段执行失败,工具找不到
原因: 用错了 conda 环境,应该用 rnaseq 而非 test4py311
修复:
- rnaseq_qc/align/quant/de/enrich →
conda activate rnaseq - expression 绘图 →
conda activate rnaR
2.2 Manifest 路径问题 (2026-03-27)
问题: 前端读取 manifest 失败
原因: 返回路径是相对路径,前端无法解析
修复: Manifest 必须包含 full_path 绝对路径
2.3 Agent 意图识别慢 (2026-04-05)
问题: RNA-seq 意图识别耗时 16 分钟
原因: LLM 调用过多
修复: 添加 fast_intent 关键词匹配,降至 <5 秒
2.4 循环迭代未实现 (2026-04-15)
问题: Discovery → Learning 是固定边,无法循环
原因: Orchestrator 没有条件边设计
修复:
langgraph_orchestrator.py新增iteration_count,max_iterations_discovery_decision()决策函数- 循环逻辑: should_continue → replan → Planning
3. 关键修复索引
| 日期 | 文件 | 详情 |
|---|---|---|
| 2026-03-27 | memory/2026-03-27.md | RNASEQ_QC 修复 |
| 2026-03-28 | memory/2026-03-28.md | RNASEQ_ALIGN 修复 |
| 2026-03-29 | memory/2026-03-29.md | RNASEQ_QUANT 修复 |
| 2026-03-30 | memory/2026-03-30.md | RNASEQ_DE 修复 |
| 2026-04-03 | memory/2026-04-03.md | Celery 集成 |
| 2026-04-05 | memory/2026-04-05.md | 意图识别优化 |
| 2026-04-06 | memory/2026-04-06.md | PEP/PPI 技能化 |
| 2026-04-07 | memory/2026-04-07.md | 其他修复 |
| 2026-04-15 | 全局 MEMORY | 循环迭代修复 |
4. 已知问题
| 问题 | 状态 | 备注 |
|---|---|---|
RouterAgent 第74行 prompt 变量 |
待修复 | 应为 full_prompt |
| 两个 Orchestrator 并存 | 待重构 | orchestrator.py (2656行) + langgraph_orchestrator.py (638行) |
| _route_query 关键词过多 | 待优化 | 约100个关键词,维护困难 |
5. 技能化状态
全部 16 个核心阶段已技能化,见 skills/ 目录
6. 修订检查清单
- 是否遵循契约文档 (
*_contract_v1.md) - 输出是否在
final/目录 - Manifest 是否包含
full_path,size,sha256 - 是否使用正确的 Conda 环境
- 是否更新 MEMORY.md 或 memory/*.md
详细日志见 memory/ 目录