- AI 入口图标:灯泡→星花 sparkles+发光,与灵感入口区分 - 目标提取根本性改造:用户消息规则→工具调用推理(infer_goal_from_tool_calls) - Vec<String>→Vec<GoalEntry>(text+status),active→completed 状态流转 - 多条/轮提取,system_prompt 仅注入 active 目标 - 代码拆分到 helpers.rs(解决 brace 嵌套致 pub(crate) 不可见) - 审批修复:patch_file 全档位自动放行,批量审批防抖,乐观更新竞态保护 - 审批通知浮层:全局右上角 ApprovalOverlay,窗口遮挡时可见 - 设置导入导出移除:价值低占用空间,跨设备同步建议复制 SQLite - 分离窗口默认置顶+置顶状态持久化(刷新后保持) - header 菜单聚合:清空/压缩上下文收入 ... popout - LLM 文字重叠防御:delta 重复检测+丢弃 - 置顶图标:星→大头针 pushpin - 文档/注释更新:过期 Vec<String>/chat.rs 提取描述修正
7.3 KiB
DevFlow 待办
灵感模块功能完善(合并推进)
诊断发现的 P0-P2 问题合并为单次任务,逐项推进。
排除项:#3 status 无状态机(暂保留状态可跳跃迁移,不处理)。
P2 — 前端 / UX
- #12 前端 filter 改后端查询 ✅ 团队决策已落地:
hot/pending保留前端 filter(keyword/order_by 已下沉后端)。
AI 对话目标丢失(诊断待办)
诊断报告:
docs/02-架构设计/专项设计/AI对话目标丢失诊断-2026-06-26.md实测会话54c8b5bd:480 万 token,原始目标消息被压缩出局,LLM 尾部盲搜死循环。
- G1 目标钉扎 ✅ 代码已落地(
GOAL_PIN_ENABLED=true),pinned_goals 入口拼入 system_prompt。PerConvState.pinned_goals: Vec<GoalEntry>(含 text+status 状态追踪)。- 2026-07-03 改:提取方式从「用户消息规则提取」→「工具调用推理」(infer_goal_from_tool_calls),支持多条/轮 + 自动 active→completed 状态流转。
- G2 探索熔断 ✅ 代码已落地(
STALL_BREAKER_ENABLED=true,STALL_BREAKER_THRESHOLD=3),stall_count + is_empty_tool_result 完整实现。 - 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 等价改动前。 方案源:设计 workflowwf_09a0385f-2ee综合裁决(system_prompt 字符串注入 > insert_at(0))。
对抗式评估接入(引擎已实现 → IPC + 前端打通)
引擎代码已就绪(
df-ideas/src/adversarial.rs+adversarial_helpers.rs), 但 IPC 层和前端零引用,用户无法使用。需补接入层。
后端 — IPC 接入
- A2 批量评估命令 ⏸️ 暂不做:单 idea 评估
evaluate_ideaIPC 已接入(AdversarialEngine),批量评估当前无前端消费方,属过度设计。
最新对话分析-2026-06-28:死锁与审批卡死
分析来源:
devflow-trace.log+devflow-dev.db最新对话d9aef24f(语音输入应用需求)。 核心表现:7 次工具连续失败后 L1 断路器熔断,1 条 pending 审批导致全链路死锁。
P0 — 审批 pending 死锁
- 审批超时自动取消 ✅ 已实现(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 KVdf-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),前端定时器负责运行期会话内超时,后端负责重启恢复场景兼底。
- 后端
create_project自动创建目录 ✅ 已实现(project.rs:137):有 path 且目录不存在时自动create_dir_all,死锁链已消除(非参数控制,直接自动创建)。
P1 — Windows 平台兼容
run_command失败追加 shell 适配提示 ✅ 已实现(tool_registry.rs:2351-2358):Windows 下 tool result 尾部追加 PowerShell 适配提示(路径引用、&&→;)。- PowerShell 反斜杠自动转义 ✅ 已修复(
tool_registry.rs:2306-2328注释说明根因):serde_json 已正确还原反斜杠,不做额外转义,PowerShell 正确接受裸反斜杠路径。
P2 — 标题 LLM 失败
- 标题摘要合并连续同 role ✅ 已实现(
title.rs:79-83):merge_consecutive_roles发 LLM 前合并相邻 user/assistant,已覆盖 Anthropic/GLM 1214。
P3 — 其他
- migration V33 ✅ 已实现(
migrations.rsmigrate_v33):workflow_executions加updated_at列 +ai_conversations加pending_approvals(审批重启恢复)。 - L0-handshake 防抖 ✅ 已实现(
lib.rs:73-82):3s 内重复ai-client-ready跳过。
AI Chat 体验优化(2026-07-03 批次)
本轮完成的 10 项需求中,8 项已落地,3 项暂缓待后续批次。
已完成
- AI Chat 入口图标换 ✅ 灯泡→星花 sparkles + 发光效果(
AppSidebar.vue) - LLM 回复文字重叠防御 ✅ delta 重复检测+丢弃(
useAiEvents.ts) - 全部接管仍审批 ✅ patch_file 全档位自动放行(
approval.rs) + 诊断日志(audit/mod.rs) - 设置导入导出去除 ✅
SettingsImportExport.vue已删,引用清理(Settings.vue/SettingsNav.vue) - 分离窗口默认置顶 ✅
alwaysOnTop: true(useAiWindow.ts) - 审批通知浮层 ✅ 全局右上角浮层(
ApprovalOverlay.vue+App.vue挂载) - header 菜单聚合
...✅ 清空/压缩上下文收入 popout(TopBar.vue) - 置顶图标换 ✅ 星→大头针 pushpin(
TopBar.vue) - 全部批准无响应 ✅ 防抖守卫
_batchProcessing(useAiApproval.ts) - 工具卡执行中卡死 ✅ 乐观更新
status !== 'completed'守卫(useAiApproval.ts) - 置顶状态刷新丢失 ✅ 持久化到 appSettings KV(
AiChat.vue) - 目标提取根本性改造 ✅ 工具调用推理(
infer_goal_from_tool_callsinhelpers.rs)- 提取源:用户消息规则 → 工具调用推理(结构化数据,零污染)
- 数据结构:
Vec<String>→Vec<GoalEntry>(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已设计未实现 - 覆盖场景:意图增强/纠偏/递进(用户补充信息后发现之前目标提取偏了)
- 优先级:中——价值高改动小,补全目标维护闭环