# DevFlow 待办 ## 灵感模块功能完善(合并推进) > 诊断发现的 P0-P2 问题合并为单次任务,逐项推进。 > 排除项:#3 status 无状态机(暂保留状态可跳跃迁移,不处理)。 ### P2 — 前端 / UX - [x] **#12 前端 filter 改后端查询** ✅ 团队决策已落地:`hot`/`pending` 保留前端 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`(含 text+status 状态追踪)。 - 2026-07-03 改:提取方式从「用户消息规则提取」→「工具调用推理」(infer_goal_from_tool_calls),支持多条/轮 + 自动 active→completed 状态流转。 - [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 接入 - [x] **A2 批量评估命令** ⏸️ **暂不做**:单 idea 评估 `evaluate_idea` IPC 已接入(AdversarialEngine),批量评估当前无前端消费方,属过度设计。 ## 最新对话分析-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` 跳过。 ## AI Chat 体验优化(2026-07-03 批次) > 本轮完成的 10 项需求中,8 项已落地,3 项暂缓待后续批次。 ### 已完成 - [x] **AI Chat 入口图标换** ✅ 灯泡→星花 sparkles + 发光效果(`AppSidebar.vue`) - [x] **LLM 回复文字重叠防御** ✅ delta 重复检测+丢弃(`useAiEvents.ts`) - [x] **全部接管仍审批** ✅ patch_file 全档位自动放行(`approval.rs`) + 诊断日志(`audit/mod.rs`) - [x] **设置导入导出去除** ✅ `SettingsImportExport.vue` 已删,引用清理(`Settings.vue`/`SettingsNav.vue`) - [x] **分离窗口默认置顶** ✅ `alwaysOnTop: true`(`useAiWindow.ts`) - [x] **审批通知浮层** ✅ 全局右上角浮层(`ApprovalOverlay.vue` + `App.vue` 挂载) - [x] **header 菜单聚合 `...`** ✅ 清空/压缩上下文收入 popout(`TopBar.vue`) - [x] **置顶图标换** ✅ 星→大头针 pushpin(`TopBar.vue`) - [x] **全部批准无响应** ✅ 防抖守卫 `_batchProcessing`(`useAiApproval.ts`) - [x] **工具卡执行中卡死** ✅ 乐观更新 `status !== 'completed'` 守卫(`useAiApproval.ts`) - [x] **置顶状态刷新丢失** ✅ 持久化到 appSettings KV(`AiChat.vue`) - [x] **目标提取根本性改造** ✅ 工具调用推理(`infer_goal_from_tool_calls` in `helpers.rs`) - 提取源:用户消息规则 → **工具调用推理**(结构化数据,零污染) - 数据结构:`Vec` → **`Vec`**(text+status) - 状态流转:新目标加入 → 之前 active 自动标记 completed - system_prompt 仅注入 active 目标 - 前端显示 3/5 计数 + ✓/● 状态标记 - 代码拆分到 `helpers.rs`(解决 brace 嵌套致 pub(crate) 不可见) ### 暂缓待后续批次 - [ ] **9b 审批交互 UI/UX 重新设计** ⏸️ - 当前:审批卡片是 ToolCard 的 pending_approval 态,布局单调、args 展示过长、风险等级不直观 - 待做:重新设计卡片布局(缩短 args 预览 + 展开/收起、风险等级着色条、审批耗时提示、批量操作栏视觉增强) - 涉及:`ToolCard.vue`(~360 行) + `ToolCardList.vue` 少量调整 - 优先级:中——现有功能可用但体验不够好 - [ ] **9d 底部工具区(目标/历史/上下文)展开交互优化** ⏸️ - 当前:底部 🎯📋📄 三个入口紧凑排列,展开后内容区窄、超出不滚动、缺少动画 - 待做:popover 浮层替代内联展开、加入平滑过渡动画、内容超出滚动、点击外部收起 - 涉及:`TopBar.vue` 底部区 - 优先级:低——功能完整,体验改善不迫切 - [ ] **`[UPDATE_GOALS]` LLM 主动修正目标列表** ⏸️ - 设计已完成,实现暂缓 - 格式:`[UPDATE_GOALS]\n1: 目标文本 (active)\n2: 目标文本 (completed)\n[END]` - LLM 输出此标记 → 后端解析并替换 pinned_goals → 标记从正文剥离 - 函数签名 `extract_update_goals_block` 已设计未实现 - 覆盖场景:意图增强/纠偏/递进(用户补充信息后发现之前目标提取偏了) - 优先级:中——价值高改动小,补全目标维护闭环