Files
DevFlow/todo.md
绝尘 6e1485e4f9 修复: BUG-260620-05 工程内路径弹窗 + G1 多目标累积 + 测试编译债
- BUG-260620-05: reload_allowed_dirs 无条件插入 workspace_root,工程内路径免授权
- G1: pinned_goal → pinned_goals Vec<String>,多目标追加去重 + MAX_GOALS=5
- tool_registry.rs 测试 4 处补 data_dir 形参
- 更新 todo.md / docs/todo.md 状态
2026-06-27 22:02:41 +08:00

5.9 KiB
Raw Blame History

DevFlow 待办

灵感模块功能完善(合并推进)

诊断发现的 P0-P2 问题合并为单次任务,逐项推进。
排除项:#3 status 无状态机(暂保留状态可跳跃迁移,不处理)。

P0 — 数据安全 / 正确性

  • #1 软删除机制ideas 表加 deleted_at 列 + 软删除(对标 tasks/projects 的 delete + restore 全套模板)。当前 delete_idea 是硬删除,误删不可恢复。
  • #2 白名单收紧settings.rs ideas 白名单移除 id / created_at,防止主键和创建时间被篡改。(对标 B-260616-16 tasks 白名单修复)
  • #4 priority 值域校验create_idea / update_idea 加 priority 校验(parse::<i32>() ∈ 0..=3,非法返 Err对标 B-260615-15 tasks priority 修复)

P1 — 架构 / 一致性

  • #5 有损转换修复record_to_idea() 不再硬编码 status=Draft / related_ids=空,从 IdeaRecord 读取真实值,评估时不丢失上下文。
  • #6 评分关键词拆文件:将 scoring.rs 硬编码关键词拆到独立 const 文件(最小改动)。启发式是过渡方案,对抗式评估上线后按需升级为 JSON 配置。不做 DB 表配置化(过度工程)。
  • #7 promote 补偿改软删除promote_idea 回写失败时的补偿删除从 purge_with_descendants(不可恢复)改为 soft_delete(软删除,可恢复)。
  • #8 关联双向同步A 关联 B 时自动在 B 的 related_ids 中补入 A解绑时同步移除保持关联关系对称。
  • #9 创建表单补 tags 输入:捕捉灵感表单增加 tags 输入(逗号分隔或 chip 组件),confirmCapture 传 tags JSON 字符串给后端。

P2 — 前端 / UX

  • #10 创建表单补全 priority/source:捕捉模态框增加 priority 下拉(低/中/高/紧急)和 source 输入框。
  • [~] #12 前端 filter 改后端查询hotscore≥80pending(多状态 OR仍保留前端 filter团队决策扩多值属过度设计keyword/order_by 已下沉后端。
  • #14 雷达图正名/替换:将 i18n key 和 CSS class 中的 "radar" 改为 "score-bar"(或引入真正的雷达图组件如 ECharts radar

AI 对话目标丢失(诊断待办)

诊断报告:docs/02-架构设计/专项设计/AI对话目标丢失诊断-2026-06-26.md 实测会话 54c8b5bd480 万 token原始目标消息被压缩出局LLM 尾部盲搜死循环。

  • [~] G1 目标钉扎 代码落地(编译过)PerConvState.pinned_goals: Vec<String> + chat.rs 三处提取(追加去重,支持累积多目标) + run_agentic_loop 入口拼全部目标到 system_prompt。待实测
  • [~] G2 探索熔断 代码落地(编译过)STALL_BREAKER_* 四开关 + stall_count + is_empty_tool_result(对齐 serde_json 紧凑格式)。警示 insert_at(0,system) 经核验安全(convert_request:101/117 把 system 抽顶层合并,无连续 System 1214 风险;G1 评审该论据不成立)。待实测
  • G3 状态机收敛目标 文档衔接:conv_state.rs/mod.rs 注释明示 pinned_goals 内容态与 ConvState 生命周期态正交,不进 enum。
  • [~] G4 话题标记修正 代码落地(编译过)TOPIC_MARKER_GOAL_AWARE guard,pinned_goals 非空时 take 后丢弃跳过 insert。待实测
  • G5 附 bug 已排查(不改代码)dump DB 确认 seq1(thinking 独白)+seq4(tool_result 内容)均 system+早期 timestamp(旧版本遗留脏数据),非当前 compress summary 机制问题(摘要四段式正常)。最新 system(seq0 topic marker)正常。结论:历史脏数据,数据治理项(可选清 DB),非当前 bug。anthropic_compat thinking 隔离你在进行中(M)。
  • G1 多目标累积:pinned_goal: Option<String>pinned_goals: Vec<String>,每次发消息/编辑/强制发送提取目标追加到列表(去重),支持换目标且不丢失历史目标。MAX_GOALS=5 防无限膨胀。

落地开关(均可单点回退):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 接入

  • A1 evaluate_idea 命令:新增 IPC command按 Provider 配置构造 AdversarialEngine(有 Provider → new(provider),无 → heuristic()),调 evaluate(idea) 返回 AdversarialEval
  • A2 批量评估命令evaluate_ideas_batch,遍历多个 idea 调同一 engine 实例(复用 provider 连接)。 待定
  • A3 评估结果持久化:评估结果写回 ideasscores + evaluated_by + evaluated_at避免每次重新评估。
  • A4 类型导出AdversarialEval / EvaluatedBy / Recommendation 等类型经 IPC serde 暴露给前端(检查 df-types 是否需补充)— 已验证:当前通过 df_ideas::adversarial::* 路径直接可用,前端经 IdeaRecord.ai_analysis JSON 字符串消费,无需搬运到 df-types

前端 — 结果展示

  • B1 灵感详情页评估面板:展示正方论点 / 反方论点 / 分析师综合评分,evaluated_by 标签区分LLM / 启发式兜底 / 纯启发式)。
  • B2 评估触发按钮:灵感详情页加「深度评估」按钮,调 evaluate_idea IPCloading 状态 + 错误提示。
  • B3 评分维度可视化:可行性 / 影响力 / 紧急度三维度展示(复用现有 score-bar 或引入 radar