Files
DevFlow/todo.md
绝尘 b923d700fd 新增: 审批超时后端兜底,覆盖重启恢复场景
前端早已有审批超时定时器(AdvancedSection.vue 0/5/15/30/60 分钟
可配置),负责会话内运行的审批超时检测。但重启后前端定时器丢失,
恢复的 pending_approvals(经 audit/restore.rs 从 DB 重建)无人
计时,会永久卡死会话。

本次补充后端兜底机制:
- PendingApproval 新增 created_at 字段(SystemTime),记录创建时刻
- 新增 agentic/approval_timeout.rs,在 try_continue_agent_loop
  入口检测超时,自动取消并写入审计(rejected)
- AppState 新增 approval_timeout_minutes 字段 + 启动从 KV 恢复
- IPC 新增 ai_get_approval_timeout / ai_set_approval_timeout
- KV 复用前端 df-approval-timeout key(值为毫秒),保持单一真相源

同时更新 todo.md / 待决策.md,把已实现项标记为完成。
2026-06-28 18:16:34 +08:00

62 lines
4.2 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.
# DevFlow 待办
## 灵感模块功能完善(合并推进)
> 诊断发现的 P0-P2 问题合并为单次任务,逐项推进。
> 排除项:#3 status 无状态机(暂保留状态可跳跃迁移,不处理)。
### P2 — 前端 / UX
- [~] **#12 前端 filter 改后端查询**`hot`score≥80`pending`(多状态 OR仍保留前端 filter团队决策扩多值属性过度设计keyword/order_by 已下沉后端。
## AI 对话目标丢失(诊断待办)
> 诊断报告:`docs/02-架构设计/专项设计/AI对话目标丢失诊断-2026-06-26.md`
> 实测会话 `54c8b5bd`480 万 token原始目标消息被压缩出局LLM 尾部盲搜死循环。
- [x] **G1 目标钉扎** ✅ 代码已落地(`GOAL_PIN_ENABLED=true`)pinned_goals 入口拼入 system_prompt。`PerConvState.pinned_goals: Vec<String>` + chat.rs 三处提取(追加去重,支持累积多目标)。
- [x] **G2 探索熔断** ✅ 代码已落地(`STALL_BREAKER_ENABLED=true``STALL_BREAKER_THRESHOLD=3`)stall_count + is_empty_tool_result 完整实现。
- [x] **G4 话题标记修正** ✅ 代码已落地(`TOPIC_MARKER_GOAL_AWARE=true`)pinned_goals 非空时 take 后丢弃跳过 insert。
> 落地开关(均可单点回退):`GOAL_PIN_ENABLED`/`GOAL_INJECT_BANNER`/`GOAL_MAX_CHARS=500`/`MAX_GOALS=5`/`STALL_BREAKER_ENABLED`/`STALL_BREAKER_THRESHOLD=3`/`STALL_BREAKER_WARN_FIRST`/`STALL_BREAKER_GOAL_REMIND`/`TOPIC_MARKER_GOAL_AWARE`。全置 false 等价改动前。
> 方案源:设计 workflow `wf_09a0385f-2ee` 综合裁决(system_prompt 字符串注入 > insert_at(0))。
## 对抗式评估接入(引擎已实现 → IPC + 前端打通)
> 引擎代码已就绪(`df-ideas/src/adversarial.rs` + `adversarial_helpers.rs`
> 但 IPC 层和前端零引用,用户无法使用。需补接入层。
### 后端 — IPC 接入
- [ ] **A2 批量评估命令**`evaluate_ideas_batch`,遍历多个 idea 调同一 engine 实例(复用 provider 连接)。**⏳ 待定**
## 最新对话分析-2026-06-28死锁与审批卡死
> 分析来源:`devflow-trace.log` + `devflow-dev.db` 最新对话 `d9aef24f`(语音输入应用需求)。
> 核心表现7 次工具连续失败后 L1 断路器熔断1 条 pending 审批导致全链路死锁。
### P0 — 审批 pending 死锁
- [x] **审批超时自动取消** ✅ 已实现(15min 默认,可配置):
- 后端 `agentic/approval_timeout.rs::cleanup_expired_approvals``try_continue_agent_loop` 入口检测超时,超时审批自动取消 + emit AiApprovalResult + audit_finalize 记入审计。
- `PendingApproval.created_at` 记录创建时刻(SystemTime,重启恢复的按重启时刻计)。
- `AppState.approval_timeout_minutes` + `reload_approval_timeout()` 从 Settings KV `df-approval-timeout` 启动恢复(与前端 AdvancedSection.vue 同 key,值为毫秒)。
- IPC `ai_get_approval_timeout` / `ai_set_approval_timeout`(0=禁用,范围 0-1440 分钟)。
- 前端已有 Settings UI(0/5/15/30/60 分钟 select),前端定时器负责运行期会话内超时,后端负责重启恢复场景兼底。
- [x] **`create_project` 自动创建目录** ✅ 已实现(`project.rs:137`):有 path 且目录不存在时自动 `create_dir_all`,死锁链已消除(非参数控制,直接自动创建)。
### P1 — Windows 平台兼容
- [x] **`run_command` 失败追加 shell 适配提示** ✅ 已实现(`tool_registry.rs:2351-2358`)Windows 下 tool result 尾部追加 PowerShell 适配提示(路径引用、`&&``;`)。
- [x] **PowerShell 反斜杠自动转义** ✅ 已修复(`tool_registry.rs:2306-2328` 注释说明根因)serde_json 已正确还原反斜杠不做额外转义PowerShell 正确接受裸反斜杠路径。
### P2 — 标题 LLM 失败
- [x] **标题摘要合并连续同 role** ✅ 已实现(`title.rs:79-83`)`merge_consecutive_roles` 发 LLM 前合并相邻 user/assistant已覆盖 Anthropic/GLM 1214。
### P3 — 其他
- [x] **migration V33** ✅ 已实现(`migrations.rs` migrate_v33)`workflow_executions``updated_at` 列 + `ai_conversations``pending_approvals`(审批重启恢复)。
- [x] **L0-handshake 防抖** ✅ 已实现(`lib.rs:73-82`)3s 内重复 `ai-client-ready` 跳过。