新增: 批次工作落地(推进链/评估闭环/事件总线/并发/加固) + 技术债清理 + 文档整理
后端: - 工作流推进链(D-03):advance_task/状态机/闸门走 df-nodes Node trait,conditions 条件引擎扩展 - 想法评估闭环:启发式评分+对抗评估,df-ideas/scoring + df-storage/idea_eval_repo + idea 前端打通 - 全局事件数据总线:df-ai/context+context_helpers+augmentation 跨模块解耦 - AI planner/plan_hint/intent:aichat B 路线并行多轮基础 - patch_file 加固(TD-03/04):读改写整体锁防 lost update,expected_hash 合约闭环 - 压缩超时兜底(F-15 卡死根治) - F-09 多会话并发:LlmConcurrency per-conv + streamingGuard 前端守护 + verify 脚本 - 知识注入 DRY/skills/audit 扩展 清理: - aichat 技术债(误报 allow/死导入/过时注释 30 项) - URGENT.md 删除(11 项加急全解决/迁 todo) - 文档整理(todo/待决策/待审查/ARCHITECTURE/INDEX + 总线/技术债审查新文档)
This commit is contained in:
@@ -72,6 +72,7 @@
|
||||
| [推进链阶段2实施路径-2026-06-16.md](./专项设计/推进链阶段2实施路径-2026-06-16.md) | 📐 设计(F-260616-06) | 工作流联动任务推进:task_id + 完成回调 + DAG 模板 |
|
||||
| [消息拆分存储设计-2026-06-19.md](./专项设计/消息拆分存储设计-2026-06-19.md) | 📐 设计待实施(F-260619-03) | ai_messages 表 + V21 全量迁移 + 三阶段渐进切换(脏标记→双写→切读) |
|
||||
| [消息级溯源设计-2026-06-19.md](./专项设计/消息级溯源设计-2026-06-19.md) | 📐 设计待实施(F-260619-04) | ChatMessage.id + source_ref/audit/idea 四场景从对话级升级消息级 |
|
||||
| [全局事件数据总线-2026-06-21.md](./专项设计/全局事件数据总线-2026-06-21.md) | 📐 构想定稿待评审 | pub-sub + request-reply + 流式 reply 统一总线:跨模块解耦 / 响应式根治死等 / 跨端透传 |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# 任务推进链实施路径
|
||||
|
||||
> **日期**: 2026-06-16
|
||||
> **日期**: 2026-06-16(状态行 2026-06-20 回填)
|
||||
> **来源**: [任务执行与推进能力分析-2026-06-16.md](../05-代码审查/任务执行与推进能力分析-2026-06-16.md) 第八章(已核对注入)
|
||||
> **状态**: 规划定稿。**D-260616-01~04 已决策(2026-06-16)**:①前端对齐7态 ②任务软删(UI缓做) ③advance_task 走 **df-nodes Node** ④阶段1先行。**阶段1可启动(F-01~05)**。
|
||||
> **状态**: 阶段1✅ + 阶段2✅(F-260616-06 工作流联动:workflow.rs 完成回调 + 三模板 `task_workflow_templates.rs` + `run_workflow` task_id/target_status)+ 阶段3 部分(`ai_self_review` gate 已落 `task_workflow_templates.rs:54`;`run_workflow` AI 工具已注册但 High 风险默认拒绝实装待核、AiNode 任务上下文注入待核)。**D-260616-01~04 已决策(2026-06-16)**:①前端对齐7态 ②任务软删(UI缓做) ③advance_task 走 **df-nodes Node** ④阶段1先行。
|
||||
> **关联决策**: D-260616-01~04(决策结果见 todo.md 待决策区块)
|
||||
|
||||
---
|
||||
@@ -36,13 +36,15 @@
|
||||
|
||||
目标:任务状态经「合法路径」推进,而非裸字段修改。
|
||||
|
||||
| 任务 | 内容 | 依赖 |
|
||||
|------|------|------|
|
||||
| **F-260616-01** [P1] | **状态机定义(df-nodes 新模块 `task_state_machine.rs`)**:7 态合法转换枚举(`todo→in_progress→in_review→testing→done` 闸门链 + `blocked` 退回 + `cancelled`)。独立模块,非挂在 TaskStatus enum 上。 | D-01✅ 前端对齐7态 |
|
||||
| **F-260616-02** [P1] | **advance_task 推进逻辑(df-nodes `task_advance_node.rs` 实现 Node trait)**:校验转换 + 原子写(下沉 SQL `WHERE status=:expected` 防 TOCTOU)。df-nodes 需补 `df-storage` 依赖读 TaskRecord(核实无循环)。IPC 层 thin 入口调 df-nodes。 | D-03✅ df-nodes, F-01 |
|
||||
| **F-260616-03** [P1] | `status` 移出 `update_task` 白名单(推进链唯一收口) | F-02(关联 B-260616-16) |
|
||||
| **F-260616-04** [P2] | `review_rounds` 字段(退回时 +1,任务卡显示「第 N 轮 review」) | F-01 |
|
||||
| **F-260616-05** [P1] | 前端 TaskDetail 推进按钮(手动推进,不接 AI) | F-02, F-03 |
|
||||
✅ **已落(2026-06-16~17)**:状态机 / advance_task 原子推进 / status 收口 / review_rounds / 前端推进按钮全部实装。
|
||||
|
||||
| 任务 | 内容 | 依赖 | 状态 |
|
||||
|------|------|------|------|
|
||||
| **F-260616-01** [P1] | **状态机定义(df-nodes 新模块 `task_state_machine.rs`)**:7 态合法转换枚举(`todo→in_progress→in_review→testing→done` 闸门链 + `blocked` 退回 + `cancelled`)。独立模块,非挂在 TaskStatus enum 上。 | D-01✅ 前端对齐7态 | ✅ `crates/df-nodes/src/task_state_machine.rs`(can_transition / regression_target) |
|
||||
| **F-260616-02** [P1] | **advance_task 推进逻辑(df-nodes `task_advance_node.rs` 实现 Node trait)**:校验转换 + 原子写(下沉 SQL `WHERE status=:expected` 防 TOCTOU)。df-nodes 需补 `df-storage` 依赖读 TaskRecord(核实无循环)。IPC 层 thin 入口调 df-nodes。 | D-03✅ df-nodes, F-01 | ✅ `advance_task_atomic`(CAS SQL) + IPC 瘦入口 |
|
||||
| **F-260616-03** [P1] | `status` 移出 `update_task` 白名单(推进链唯一收口) | F-02(关联 B-260616-16) | ✅ `settings.rs` tasks 白名单 `status` 不列入(注释 D-260616-04) |
|
||||
| **F-260616-04** [P2] | `review_rounds` 字段(退回时 +1,任务卡显示「第 N 轮 review」) | F-01 | ✅ `advance_status_atomic` 退回转换原子 +1 |
|
||||
| **F-260616-05** [P1] | 前端 TaskDetail 推进按钮(手动推进,不接 AI) | F-02, F-03 | ✅ `views/TaskDetail.vue` 推进按钮 |
|
||||
|
||||
此阶段不接 AI/工作流,纯人工推进,但状态机保护和收口到位。
|
||||
|
||||
@@ -52,14 +54,16 @@
|
||||
|
||||
目标:工作流执行能回写任务状态。
|
||||
|
||||
**F-260616-06** [P1](聚合):
|
||||
1. `run_workflow` IPC 支持 `task_id` 参数(去 workflow.rs:56 None 硬编码)
|
||||
2. 工作流完成回调 → 检查 task_id → 推进任务状态
|
||||
3. 定义任务推进 DAG 模板(AiNode 执行 + AiNode 自审 + HumanNode 核对)
|
||||
4. `advance_task` 触发对应闸门工作流
|
||||
5. 前端展示工作流执行进度
|
||||
✅ **已落(F-260616-06, 2026-06-16~17)**:实施路径详见 [推进链阶段2实施路径-2026-06-16.md](./推进链阶段2实施路径-2026-06-16.md)。
|
||||
|
||||
**依赖**:阶段 1 完成。详见报告 §8 阶段 2。
|
||||
**F-260616-06** [P1](聚合):
|
||||
1. ✅ `run_workflow` IPC 支持 `task_id` / `target_status` 参数(去硬编码 None,向后兼容 Option)— `workflow.rs` run_workflow / run_workflow_inner
|
||||
2. ✅ 工作流完成回调 → 检查 task_id + target_status → 推进任务状态(②-3);失败按 `regression_target` 退回(②-4)
|
||||
3. ✅ 定义任务推进 DAG 模板(AiNode 执行 + AiNode 自审 + HumanNode 核对)— `crates/df-nodes/src/task_workflow_templates.rs`(三模板 in_progress/testing/done,空 dag + target_status 时 `template_for` 自动选)
|
||||
4. ⚠️ `advance_task` 触发对应闸门工作流 — 经 run_workflow(task_id,target_status) 间接达成(手动/审批路径),advance_task 原子推进本身直调状态机不走工作流(设计如此)
|
||||
5. ⚠️ 前端展示工作流执行进度 — EventBus 事件转发已落(workflow-event),进度 UI 展示待补
|
||||
|
||||
**依赖**:阶段 1 完成 ✅。详见报告 §8 阶段 2。
|
||||
|
||||
---
|
||||
|
||||
@@ -67,14 +71,16 @@
|
||||
|
||||
目标:AI 能真正执行任务内容。
|
||||
|
||||
**F-260616-07** [P2](聚合):
|
||||
1. `advance_task` AI 工具(让 AI 经合法路径推进)
|
||||
2. `run_workflow` AI 工具注册实装(核对:tool_registry.rs **无此工具**,需新建)
|
||||
3. AiNode 接入任务上下文(读任务描述 + 项目目录)
|
||||
4. AI 自审 verdict 结构化输出 + 解析
|
||||
5. 失败路径完整处理(退回/重做/保持)
|
||||
🟡 **部分落(F-260616-07)**:`ai_self_review` gate 已落,AI 工具注册/上下文注入部分待核。
|
||||
|
||||
**依赖**:阶段 2 完成。详见报告 §8 阶段 3。
|
||||
**F-260616-07** [P2](聚合):
|
||||
1. ✅ `advance_task` AI 工具(让 AI 经合法路径推进)— `crates/df-mcp/src/tools.rs` advance_task spec + 实现(经 `advance_task_atomic` 走状态机,不走旁路裸改)
|
||||
2. ⚠️ `run_workflow` AI 工具注册实装(核对:tool_registry.rs **无此工具**,需新建)— **已注册** `df-mcp/tools.rs:120`(High 风险默认拒绝桩 `tools.rs:654`,实装待核:当前返回"默认拒绝请到应用内执行")
|
||||
3. ⚠️ AiNode 接入任务上下文(读任务描述 + 项目目录)— 任务上下文注入待核(模板节点级 config 留空,运行时全局 config 注入路径已有,AiNode 是否读 task_id 取描述待核)
|
||||
4. ✅ AI 自审 verdict 结构化输出 + 解析 — `crates/df-nodes/src/ai_self_review_node.rs`(gate:true,verdict=fail 触发工作流 failed → ②-4 退回;详见 [AiNode自审实施方案-2026-06-16.md](./AiNode自审实施方案-2026-06-16.md))
|
||||
5. ✅ 失败路径完整处理(退回/重做/保持)— `regression_target` 收敛状态机,②-4 回调退回 + review_rounds+1
|
||||
|
||||
**依赖**:阶段 2 完成 ✅。详见报告 §8 阶段 3。
|
||||
|
||||
---
|
||||
|
||||
@@ -103,7 +109,7 @@ D-03 架构落点 ──▶ F-02
|
||||
D-04 路径取舍 ──▶ 阶段1 是否先行
|
||||
```
|
||||
|
||||
**✅ 阶段 1 可启动(2026-06-16)**:D-01(前端 7 态)/ D-03(df-nodes Node)/ D-04(先行)三决策已定。阶段 1 ~200 行,从 0% 推进能力到「手动推进闭环」。df-nodes 落点核实可行(Node trait 纯接口 `df-workflow/src/node.rs:67`,现有 AiNode/HumanNode/ScriptNode,需补 `df-storage` 依赖无循环)。
|
||||
**✅ 阶段 1 已落 / 阶段 2 已落 / 阶段 3 部分(2026-06-16~17)**:D-01(前端 7 态)/ D-03(df-nodes Node)/ D-04(先行)三决策已定并实施。推进能力实现度已从 0% 推进到「阶段1手动推进闭环 ✅ + 阶段2工作流回写任务 ✅ + 阶段3 ai_self_review gate ✅(AI 工具实装/AiNode 上下文注入待核)」。df-nodes 落点已落实(Node trait 纯接口,已补 `df-storage` 依赖无循环)。
|
||||
|
||||
---
|
||||
|
||||
@@ -112,14 +118,14 @@ D-04 路径取舍 ──▶ 阶段1 是否先行
|
||||
> 主文件 todo.md 并发修改频繁(后台代理),以下指针待稍后合并。合并时在「待决策」区块(D-260616-04 后)插入:
|
||||
|
||||
```
|
||||
### 🗺️ 任务推进链实施路径(2026-06-16 规划·供其他会话读取)
|
||||
### 🗺️ 任务推进链实施路径(2026-06-16 规划·2026-06-20 回填实施状态)
|
||||
|
||||
> 详见 [任务推进链实施路径-2026-06-16.md](./任务推进链实施路径-2026-06-16.md)。
|
||||
> 推进能力实现度 0%。**阶段 1 已解除阻塞(D-01/D-03/D-04 三决策已定 2026-06-16),可启动 F-01~05**。
|
||||
> 核对纠正:AI 有 update_task/run_command 工具,无 run_workflow/advance_task。
|
||||
> 推进能力实现度:阶段1 ✅ + 阶段2 ✅ + 阶段3 部分(ai_self_review gate ✅,run_workflow AI 工具实装 / AiNode 上下文注入待核)。
|
||||
> 核对纠正:AI 有 update_task/run_command 工具,advance_task 已补(阶段3),run_workflow 已注册但默认拒绝桩待实装。
|
||||
|
||||
- [ ] F-260616-01~05 阶段1 推进骨架(状态机+advance_task+收口+rounds+前端按钮)
|
||||
- [ ] F-260616-06 阶段2 工作流联动(task_id+回调+DAG模板)
|
||||
- [ ] F-260616-07 阶段3 AI 执行闭环(advance_task/run_workflow 工具+AiNode+自审)
|
||||
- [x] F-260616-01~05 阶段1 推进骨架(状态机+advance_task+收口+rounds+前端按钮)
|
||||
- [x] F-260616-06 阶段2 工作流联动(task_id+回调+三 DAG 模板,进度 UI 待补)
|
||||
- [ ] F-260616-07 阶段3 AI 执行闭环(advance_task✅ / run_workflow 默认拒绝桩 / AiNode 上下文注入 / ai_self_review✅)
|
||||
- [ ] F-260616-08 阶段4 Git 集成(kind+git闸门+worktree)
|
||||
```
|
||||
|
||||
148
docs/02-架构设计/专项设计/全局事件数据总线-2026-06-21.md
Normal file
148
docs/02-架构设计/专项设计/全局事件数据总线-2026-06-21.md
Normal file
@@ -0,0 +1,148 @@
|
||||
# 全局事件数据总线设计
|
||||
|
||||
> 2026-06-21 · 专项设计 · 状态:构想定稿待评审
|
||||
> 关联:[[cross-end-rust-backend]] 三层跨端 / [[devflow-product-positioning]] ai-working 可扩展 / F-260620-01 跨端小程序
|
||||
|
||||
## 背景与动机
|
||||
|
||||
ai-working(u-work)产品定位要求**能力可插拔**(编码 wedge → 扩展文档/数据/分析/办公自动化)+ **跨端**(df-tunnel/relay/miniapp)。当前模块间直接函数调用/import 耦合,阻碍扩展:
|
||||
- 新能力接入需改现有模块(import 调用方)
|
||||
- 跨端模块(小程序/移动)无法直接调本地模块
|
||||
- 长时操作(压缩/工具执行)用同步 await,**死等体验差**(F-15 压缩卡死根因之一)
|
||||
|
||||
**全局事件数据总线**统一解决:模块经总线通信(pub-sub + request-reply + 流式),无直接耦合,响应式,跨端透传。
|
||||
|
||||
**核心洞察**(异步事件 + 同步等待 = 同步调用跨模块解耦):
|
||||
- 发请求事件(带 correlation_id)+ 等 reply 事件(oneshot await)→ 调用方语义同步,底层跨模块解耦(无 import 依赖)
|
||||
- **流式 reply**(chunk 流)→ 响应式渐进(压缩/工具输出实时),根治死等
|
||||
|
||||
## 现状分析(碎片)
|
||||
|
||||
| 现有 | 范围 | 缺陷 |
|
||||
|---|---|---|
|
||||
| df-workflow `EventBus`(`crates/df-workflow/src/eventbus.rs`,tokio broadcast) | 工作流节点间 | 仅 `WorkflowEvent`,非通用 |
|
||||
| Tauri `emit/listen`(`@tauri-apps/api/event`) | 后端→前端单向 | 无 request-reply;前端→后端靠 IPC 命令(非事件) |
|
||||
| 前端专用事件(ai-drain-queue / ai-approval-clear-timers / ai-conversation-changed / ai-tool-slow-toast) | 前端破环/联动 | 碎片化,无统一规范 |
|
||||
| `AiChatEvent` 通道(AiCompleted/AiError/AiCompressing/AiTextDelta...) | 后端→前端 AI 流 | 单向,多监听器按 type 分发,无 reply |
|
||||
| AR-11 `df-data-changed` | 数据变更联动 | 雏形,未泛化(仅 AI 工具触发) |
|
||||
|
||||
**缺口**:无统一总线 / 无 request-reply(同步语义跨模块)/ 无流式 reply / 无跨端透传。
|
||||
|
||||
## 概念
|
||||
|
||||
**全局事件数据总线**(Unified Event Bus):贯穿后端 + 前端 + 跨端的单一事件通道,支持三类语义:
|
||||
|
||||
### 1. pub-sub(发布订阅)
|
||||
数据变更/状态广播。发布者 `publish(event)`,订阅者 `subscribe(filter)`。泛化 AR-11(任务/知识/项目/灵感 增删改统一)。
|
||||
|
||||
### 2. request-reply(请求-回复)— 同步调用跨模块解耦
|
||||
- 请求方:`reply = bus.request(RequestEvent{payload, deadline}).await`(oneshot 等 reply)
|
||||
- 响应方:订阅 RequestEvent 类型,处理后 `bus.reply(reply_to, ResponseEvent)`
|
||||
- **语义同步**(await),底层异步事件,跨模块无 import
|
||||
- 超时/取消:request 带 deadline,reply oneshot 超时 → Err(软超时,非死等)
|
||||
- 适用:压缩请求 / 工具执行 / 审批(用户决策 reply)
|
||||
|
||||
### 3. 流式 reply(响应式渐进)— 根治死等
|
||||
- 请求方:`stream = bus.request_stream(RequestEvent).await; while let Some(chunk) = stream.next().await`
|
||||
- 响应方:reply_tx 发多个 chunk(渐进),结束发 Done
|
||||
- **chunk 持续 = 数据活性**,流断即知(非 60s 死等);无数据 N 秒判 hang(软超时)
|
||||
- 适用:压缩流式(LLM chunk)/ 工具执行流式(命令输出实时)/ AI 对话流(AiTextDelta 雏形)
|
||||
|
||||
## 设计
|
||||
|
||||
### 架构
|
||||
|
||||
```
|
||||
┌─────────────── 后端(tokio)───────────────┐
|
||||
│ UnifiedEventBus │
|
||||
│ ├─ broadcast<DomainEvent>(pub-sub) │
|
||||
│ ├─ 类型路由 HashMap<ReqType, mpsc::Sender<Request>>(request-reply)│
|
||||
│ ├─ oneshot reply + mpsc stream chunk │
|
||||
│ └─ df-tunnel adapter(跨端桥接) │
|
||||
│ │
|
||||
│ 模块(AI/任务/知识/工作流/工具/新能力) │
|
||||
│ 订阅 + 发布 + reply,无相互 import │
|
||||
└──────────────────────────────────────────────┘
|
||||
▲ Tauri event bridge(后端↔前端)
|
||||
▼
|
||||
┌─────────────── 前端(Vue3)─────────────────┐
|
||||
│ UnifiedEventBus 镜像(Tauri listen 转发) │
|
||||
│ composables 订阅/发布,store 响应式更新 │
|
||||
└──────────────────────────────────────────────┘
|
||||
▲ df-tunnel/relay 透传
|
||||
▼
|
||||
┌─────────────── 跨端(小程序/移动)──────────┐
|
||||
│ UnifiedEventBus 远程端(relay 转发) │
|
||||
│ 远程模块订阅/请求,经 relay 透传到本地 │
|
||||
└──────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 事件类型
|
||||
- **DomainEvent**(pub-sub):
|
||||
- `EntityChanged{entity, id, op: Create/Update/Delete}` — 泛化 AR-11(任务/知识/项目/灵感/工作流 CRUD 统一)
|
||||
- `StateChanged{entity, id, from, to}` — 任务状态机/审批态/会话态
|
||||
- `Lifecycle{kind, id}` — 会话开关/Provider 变更
|
||||
- **RequestEvent**(request-reply):`{type, payload, reply_to: oneshot::Sender, deadline}`
|
||||
- `CompressRequest` / `ToolExecRequest` / `ApprovalRequest` / `KnowledgeExtractRequest`
|
||||
- **StreamChunk**(流式):`{stream_id, chunk: String/Bytes, done: bool}` — LLM/工具输出渐进
|
||||
|
||||
### request-reply 实现雏形(Rust)
|
||||
```rust
|
||||
struct UnifiedEventBus {
|
||||
domain_tx: broadcast::Sender<DomainEvent>,
|
||||
req_handlers: HashMap<ReqType, mpsc::Sender<Request>>,
|
||||
}
|
||||
impl UnifiedEventBus {
|
||||
pub fn publish(&self, e: DomainEvent) { let _ = self.domain_tx.send(e); }
|
||||
pub fn subscribe(&self) -> broadcast::Receiver<DomainEvent> { self.domain_tx.subscribe() }
|
||||
|
||||
// request-reply(同步语义,跨模块解耦)
|
||||
pub async fn request<R: Request>(&self, req: R) -> Result<R::Reply> {
|
||||
let (tx, rx) = oneshot::channel();
|
||||
self.dispatch(req.into(tx)).await?;
|
||||
tokio::time::timeout(req.deadline(), rx).await??
|
||||
}
|
||||
// 流式 reply(响应式渐进)
|
||||
pub async fn request_stream(&self, req: R) -> Result<mpsc::Receiver<StreamChunk>> { ... }
|
||||
// 响应方注册 handler
|
||||
pub async fn handle<R: Request>(&self, handler: impl Handler<R>) { ... }
|
||||
}
|
||||
```
|
||||
|
||||
### 跨端透传(df-tunnel/relay)
|
||||
- 本地 bus adapter:DomainEvent/Request 经 df-tunnel 序列化透传到远程端
|
||||
- 远程端(小程序)bus:订阅本地事件 + 发请求(经 relay 回本地处理)
|
||||
- **统一抽象**:本地/远程模块代码一致(经 bus,不知对端远近)— 契合 ai-working 跨端定位
|
||||
|
||||
## 应用场景
|
||||
|
||||
1. **响应式压缩**(替 F-15 超时死等):AI 发 `CompressRequest` → 压缩 handler 订阅 + `provider.stream` 流式 reply chunk → AI `request_stream().await` 渐进收 + 前端订阅 chunk 显进度 → chunk 持续(非死等),无数据软超时(非 60s 死等)
|
||||
2. **工具执行经总线**:AI 发 `ToolExecRequest` → 工具 handler + reply;path_auth 未授权 → `ApprovalRequest`(总线 request-reply,用户审批 reply)
|
||||
3. **模块可插拔**(ai-working):新能力(文档/数据/分析)订阅总线 Request,不改 AI/任务模块(零侵入扩展)
|
||||
4. **数据联动泛化**:AR-11 df-data-changed → `DomainEvent::EntityChanged` 泛化(任务/知识/项目/灵感/工作流 CRUD 统一,前端 store 订阅刷新)
|
||||
5. **跨端 AI Chat**:小程序经总线订阅本地 AiTextDelta 流 + 发消息请求(F-260620-01)
|
||||
|
||||
## 迁移路径(分阶段,每阶段独立可发布/可回退,配 feature flag)
|
||||
|
||||
1. **阶段1 后端 UnifiedEventBus 基础**:broadcast + request-reply(oneshot)+ 流式(mpsc)。df-workflow EventBus 包装为通用 DomainEvent。单测。
|
||||
2. **阶段2 首个应用:响应式压缩**:`CompressRequest` + 流式 reply(替 `compress_via_llm` await 死等,撤销 F-15 60s 硬 timeout)。验证 request-reply/流式可行。
|
||||
3. **阶段3 前端镜像**:Tauri bridge(后端 DomainEvent → 前端总线,前端订阅)。ai-drain-queue/ai-conversation-changed/ai-approval-clear-timers 等碎片迁移统一。
|
||||
4. **阶段4 数据联动泛化**:AR-11 → `DomainEvent::EntityChanged`(任务/知识/项目/灵感 CRUD 统一,前端 store 订阅刷新)。
|
||||
5. **阶段5 工具/审批经总线**:`ToolExecRequest` / `ApprovalRequest`(path_auth/risk 审批统一为 bus request-reply)。
|
||||
6. **阶段6 跨端透传**:df-tunnel adapter + 小程序远程端(F-260620-01)。
|
||||
|
||||
## 与现有关系
|
||||
- [[cross-end-rust-backend]] 三层(df-tunnel/relay/miniapp):总线跨端透传基础
|
||||
- [[devflow-product-positioning]] ai-working 可扩展:模块可插拔经总线(编码特化 → 通用工作能力)
|
||||
- df-workflow EventBus:升级/包装为通用 bus 一部分(不废弃,复用 broadcast 基础)
|
||||
- AR-11 df-data-changed:泛化为 `DomainEvent::EntityChanged`
|
||||
- F-260620-01 跨端小程序:总线远程端首个跨端应用
|
||||
- F-15 上下文压缩:阶段2 响应式压缩经总线,替超时死等
|
||||
|
||||
## 待决策
|
||||
1. **bus crate 位置**:新建 `df-bus`?df-workflow eventbus 升级为通用?df-ai-core?
|
||||
2. **事件 schema**:强类型 enum(编译期安全,扩展需改 enum)vs 动态 JSON(灵活,弱类型)→ 倾向强类型 + 开放式(未知类型透传)
|
||||
3. **request-reply 路由**:类型路由 HashMap<ReqType, Sender>(强类型)vs topic 字符串(灵活)
|
||||
4. **跨端序列化**:serde JSON(可读,调试友好)vs bincode(紧凑,性能)
|
||||
5. **现有事件迁移节奏**:AiChatEvent/前端专用事件一次性迁移 vs 渐进(新功能用 bus,旧的逐步迁)
|
||||
6. **背压/限流**:broadcast 慢消费者丢弃 vs mpsc 背压(请求-回复)
|
||||
Reference in New Issue
Block a user