127 lines
3.4 KiB
Markdown
Executable File
127 lines
3.4 KiB
Markdown
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/` 目录* |