- 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 状态
5.9 KiB
5.9 KiB
DevFlow 待办
灵感模块功能完善(合并推进)
诊断发现的 P0-P2 问题合并为单次任务,逐项推进。
排除项:#3 status 无状态机(暂保留状态可跳跃迁移,不处理)。
P0 — 数据安全 / 正确性
- #1 软删除机制:ideas 表加
deleted_at列 + 软删除(对标 tasks/projects 的delete+restore全套模板)。当前delete_idea是硬删除,误删不可恢复。 - #2 白名单收紧:
settings.rsideas 白名单移除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 改后端查询:
hot(score≥80)和pending(多状态 OR)仍保留前端 filter(团队决策:扩多值属过度设计),keyword/order_by 已下沉后端。 - #14 雷达图正名/替换:将 i18n key 和 CSS class 中的 "radar" 改为 "score-bar"(或引入真正的雷达图组件如 ECharts radar)。
AI 对话目标丢失(诊断待办)
诊断报告:
docs/02-架构设计/专项设计/AI对话目标丢失诊断-2026-06-26.md实测会话54c8b5bd:480 万 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_AWAREguard,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 等价改动前。 方案源:设计 workflowwf_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 评估结果持久化:评估结果写回
ideas表(scores + evaluated_by + evaluated_at),避免每次重新评估。 - A4 类型导出:
AdversarialEval/EvaluatedBy/Recommendation等类型经 IPC serde 暴露给前端(检查df-types是否需补充)— 已验证:当前通过df_ideas::adversarial::*路径直接可用,前端经IdeaRecord.ai_analysisJSON 字符串消费,无需搬运到df-types。
前端 — 结果展示
- B1 灵感详情页评估面板:展示正方论点 / 反方论点 / 分析师综合评分,
evaluated_by标签区分(LLM / 启发式兜底 / 纯启发式)。 - B2 评估触发按钮:灵感详情页加「深度评估」按钮,调
evaluate_ideaIPC,loading 状态 + 错误提示。 - B3 评分维度可视化:可行性 / 影响力 / 紧急度三维度展示(复用现有 score-bar 或引入 radar)。