auto-sync: 2026-05-28 20:00:57

This commit is contained in:
cfdaily
2026-05-28 20:00:57 +08:00
parent a855e49ef7
commit 0a13b95cb6
+30
View File
@@ -1129,6 +1129,36 @@ SSEEventType:
---
### 19.5 Mail 模块硬编码问题 ⚠️ TODO(待 v2.8 TaskType Pipeline 统一解决)
**现状**: `_mail` 作为虚拟 Project ID,在 dispatcher、spawner、blackboard_routes 中大量硬编码:
| 文件 | 硬编码位置 | 用途 |
|------|-----------|------|
| dispatcher.py L127,186 | `project_id == "_mail"` | 跳过 guardrail、标 working、on_complete |
| spawner.py L242,251,256 | `project_id == "_mail"` | 精简 prompt、直接 done 不走 review |
| blackboard_routes.py | `project_id == "_mail"` | 邮件 API 路由 |
**问题**:
1. 新增 Task 类型时需要到处加 `if project_id == "_xxx"` 分支
2. Mail 的特殊行为(精简 prompt、不走 review、auto-working)分散在多个文件
3. 没有统一的 Task 类型配置表
**设计方向**v2.8 TaskType Pipeline:
- 每个 Project 有 `task_type` 配置(mail/general/custom
- 行为差异通过策略模式解决:`TaskPipeline.execute(route → pre_spawn → spawn → post_complete → verify)`
- Mail 特殊逻辑收敛到 `MailPipeline`
**参考**: `docs/design/archive-2.0/v2.8-task-type-pipeline.md`(已设计未实施)
**当前 on_checks_passed 方案**v2.7.3 临时修复):
- spawner 新增 `on_checks_passed` 参数,check 通过后、subprocess 前回调
- dispatcher 传入 `_mail_auto_working` 作为回调
- subprocess 失败时通过 `_mail_marked_working` flag 决定是否 revert
- VALID_TRANSITIONS[working] 已加入 pending(正式合法化)
---
## §20. 技术选型
### 20.1 核心技术栈 ✅