squash合并: - 意图识别层论证(8维度+10业界佐证) - 多主题上下文管理愿景+并存论证+补充论证(多轮agentic) - 架构设计文档物理分类(四子目录+INDEX+命名规范+引用同步+边界清晰化) - 前端架构技术债清单归档
14 KiB
14 KiB
待决策队列
职责分离:
- 主会话(汇总/巡检)→ 【写入】"当前队列",登记待人工决策项(背景 + 决策点 + 选项 a/b/c + 推荐)。
- 用户(人工)→ 【拍板】选选项或确认推荐,回填理由(可选)。
- 主会话(拍板后)→ 决策项回流 todo.md 推进 + 迁入"已决归档"。
这里只放需人工决策项(产品取舍 / 方向选型 / 排期 / 用户实测澄清)。不放可自主推进待办(见 todo.md)、不放审查登记(见 待审查.md)。
已决策历史按月归档,见 07-项目管理/待决策归档/。拍板后的项迁入对应
YYYY-MM.md(随时间增长追加月份文件,防本文件膨胀;文件不存在则新建)。 来源:2026-06-16 从 todo.md 抽离③④C类(可自主批 AE-03/复核⑪/UX-04 留 todo 推进)。
决策规则
- 每条须:背景 + 决策点 + 选项 + 推荐 + 关联 todo。
- 用户回填:
✅ 决策:X(选 + 理由可选)。 - 拍板后:主会话回流 todo 实施 + 迁入 07-项目管理/待决策归档/YYYY-MM.md(按月文件)。
- 暂缓项标 ⏸️,不删(条件变化可重启)。
状态图例
🟡 待决 / ✅ 已决(回填决策) / ⏸️ 暂缓(待条件)
当前队列
T-260614-11 条件表达式引擎升级
- 背景:df-workflow conditions 仅支持 true/false 字面量,升级为真表达式求值。引擎设计好但无前端 UI 消费方(demoDag edges 无 condition 字段)。
- 决策点:求值器实现方式?(已暂缓:等工作流真实场景)
- 选项:
- a: 手写求值器
- b: 复活 set_skipped
- c: default false + warn(均认可)
- 推荐:⏸️ 暂缓(无消费方,等 BuildNode 落地跑构建→测试→部署真实场景)
- 关联:todo T-260614-11
- 状态:⏸️ 暂缓
🟡 待用户实测/澄清(需用户操作,主会话无法代办)
S-260614-02 审批可见性实测重评
- 待用户操作:实测 tc 卡片是否渲染。B-01 修复后 pending_approvals 内存态不再被 switch 清空,前端查询有数据,但 state.pendingApprovals 在 AiChat.vue 是否有兜底渲染仍需实测。
- 选项:A 加兜底渲染 / B 实测确认(去重:AR-3 修完已缓解,改实测重评)
- 状态:🟡 待用户实测
T-260614-01 多项 tauri dev 实测
- 待用户操作:Sprint 9/10/14/15/16/18 多项未 tauri dev 实测 — 评分 IPC 缩放 / update_full / promote_idea / Store getter / token 落库 / 知识库 Tier 1 全栈 / LLM 并发 Semaphore / 知识生命线(#54 跟踪)。
- 状态:🟡 待用户实测
T-260614-02 切对话不中断路由实测
- 待用户操作:部分场景运行时实测(A 路线场景 2/3)。
- 状态:🟡 待用户实测
B-260617-11 tauri.conf.json 打包目标收窄确认
- 状态:✅ 已决(2026-06-18) — 已迁入归档。决策:A 临时本地构建,要求高速。提交前 revert 为
"all"。
🟡 待设计/架构演进(有决策点,需方案设计或长期规划)
ARC-260615-07 架构重构批(排期/优先级决策)
- 背景:src-tauri IPC 编排层 5711 行成事实业务层,7 项架构债。df-core→df-types 已完成(CR-61),剩 6 项独立大改。
- 决策点:6 项重构何时做/优先级/是否做(每项 ROI 与风险权衡,无法纯技术论证——做不做是资源/产品取舍)
- 选项(剩余 6 项):
- a: df-app 抽取(IPC 编排层 5711 行独立 crate)
- b: AI agent loop 从 IPC 下沉 df-ai(逻辑与 IO 分离)
- c: 类型契约 ts-rs 代码生成(替代手写 types.ts)
- d: AiSession 多会话(B 路线前置,关联 S-260614-01)
- e: AppState 分组(5711 行 state 拆分)
- f: IPC 命名统一
- 推荐:⏸️ 缓做(重构低 ROI,当前功能优先;待稳定后按 d→b→a 顺序,d 是 B 路线前置可先)
- 关联:todo ARC-260615-07 / memory aichat-arch-extensibility
- 状态:🟡 待排期决策
UX-260617-01 aichat 消息全量重叠(待 DevTools 定位根因)
- 背景:用户实测消息大量重叠堆叠。5 角度分析排除 CSS/scoped/DOM,核心嫌疑虚拟滚动 IO 半激活态不一致 + height=0 未设 minHeight → slot 塌 0 → 重叠。
- 决策点:根因确切触发路径(需 DevTools 实测,静态分析已到极限)
- 选项:
- a: 虚拟滚动 IO/RO 时序竞态(主嫌疑,unload 分支 minHeight 兜底修复)
- b: 其他(DOM 结构问题,需 DevTools 实查)
- 推荐:待用户 DevTools 实测(shouldRenderMsg 卸载时检查 slot 实际高度 + IO unobserve/observe 时序),定位后修法明确(unload 分支 minHeight fallback)
- 关联:todo UX-260617-01 / docs/05-代码审查/AI聊天组件极端数据场景分析-2026-06-17.md
- 状态:🟡 待 DevTools 验证根因
UX-260617-28 双监听器同通道(长期架构演进)
- 背景:useAiEvents + useAiContext 各自 listen('ai-chat-event'),人工 AiCompressing flag 协调防双重处理,非架构保证。未来新增事件处理可能触发双重 bug。
- 决策点:是否升级单一分发器模式(架构保证)
- 选项:
- a: 保持现状(AiCompressing flag 协调够用)
- b: 单一分发器(架构保证,但大改)
- 推荐:⏸️ 暂缓(当前 flag 协调有效,未来新增事件处理触发双重 bug 时再升级)
- 关联:todo UX-260617-28 [INFO]
- 状态:⏸️ 长期(INFO,当前够用)
B-260618-03 路由解耦 cost_tier/intelligence(用户已全局决策去掉,工程大需专项)
- 背景:用户 2026-06-18 决策「API 无判别依据的 cost_tier/intelligence 去掉,不写死不瞎填」。当前 router.rs 用 cost/intel 做硬过滤(步骤4 min_intelligence / 步骤5 max_cost)+ 排序(步骤7 Reverse(cost_tier)),但这两维度 100% 由 model_probe 瞎猜(预设表+启发式),零客观依据。GLM-5.2 被猜成 standard/medium(名不沾词素走兜底),title/compress 按 max_cost 过滤可能选不到合适模型。
- 决策点:用户已全局决策去掉。本项是落地(自主可推进)。记待决策因:工程大(~30 Edit)+ 主链路由行为变更需 cargo test router 全验证 + title/compress 选模型退化需在场核对。
- 选项:
- a: 自主推进(用户已决策,专项会话充分资源 + cargo test router 全验证 + 实测 title/compress 选模型)
- b: 等用户在场专项(核对路由行为退化 + 实测)
- 实施清单(勘察完成 2026-06-18):
- router.rs:TaskRequirements 删 min_intelligence(:29)/max_cost(:31)字段 + 删步骤4 filter(:62)/步骤5 filter(:63) + 步骤7 max_by_key 改纯 weight 删 Reverse(cost_tier)(:65) + 注释更新(:28/:31/:48-51/:55)
- 9 调用点删 min_intelligence/max_cost 传参:project.rs:535-536/631-632 · compress.rs:62-63 · knowledge_inject.rs:61-62/346-347 · agentic.rs:414-415 · title.rs:88-89 · ai_node.rs:203-204 · adversarial.rs:161-162
- import 清理:调用点 CostTier/IntelligenceTier 不再用则删 import(title.rs/compress.rs 用 CostTier;多处用 IntelligenceTier)
- test:router.rs 多 test 改/删(max_cost_filters_expensive / max_cost_none_allows_any / same_weight_picks_cheaper_cost_tier / intelligence 相关 + TaskRequirements 构造删字段)
- ModelConfig.cost_tier 字段保留(B-04 model_probe 去瞎填处理数据源,不删字段)
- df-ai-core/model.rs 注释更新(:47/:60 提及 router max_cost/min_intelligence)
- 推荐:a 自主推进(用户已全局决策,方向明确),建议专项会话充分资源;title/compress 失去 max_cost 约束后纯 weight 选模型,需核对 weight 配置合理(用户在 Settings 配)
- 关联:todo B-260618-03/04/05 · UX-260618-04 前端 cost/intel 标签(依赖本项)
- 状态:✅ 已实施(2026-06-18 workflow wexu1isx1,主代核查 cargo check --workspace EXIT 0 + cargo test df-ai 109 passed + vue-tsc EXIT 0;SW-02 借用 E0502 主代修)。title/compress 纯 weight 选模型退化点:用户核对 Settings weight 配置(同 weight 并列 max_by_key 返回最后一个)
ARC-260618-01 God 文件拆分批(架构重投入·需设计)
- 背景:2026-06-18 架构坏味道扫描出 3 个 God 文件:
tool_registry.rs1091行单函数(SMELL-P0-2)/AiChat.vue4026行单组件(SMELL-P0-3)/crud.rs2212行(SMELL-P1-9)。均属"功能能跑但维护成本高/测试难"的技术债,非功能 bug。 - 决策点:拆分何时做/优先级/拆分边界(每项拆分策略需专项设计,非小改;做不做是资源/可维护性取舍)
- 选项:
- a:
tool_registry.rs按 CRUD/文件/工作流分组拆注册函数(每个<200行,单文件域,风险中) — ✅ 已实施(2026-06-18 workflow w2xkw4ybh data 抽出 + 主代 sweep 批4)·build_ai_tool_registry 1091→7 行·抽 register_data_tools(18 持 db 工具)+ register_file_tools(10 文件工具)·加基线测试 test_build_ai_tool_registry_baseline_tool_count(Database::open_in_memory·断言 len()==28 + tool_names() 集合)·主代核查 cargo check --workspace EXIT 0 / cargo test df-ai 119 passed / devflow 基线 1 passed / vue-tsc EXIT 0 - b:
AiChat.vue拆 ConversationSidebar/MessageList/ChatInput/ApprovalPanel(巨型组件,风险高,AiChat.vue 已在频繁改动需择稳定窗口) — 🟡 待排期(并发改中缓) - c:
crud.rs按表拆 project/task/conversation/idea_repo(2212行,中风险) — 🟡 待排期
- a:
- 推荐:⏸️ 缓做(当前功能优先;三项均大改需专项设计+充分测试。建议按 a→c→b 顺序,a 单文件域最独立先做已实施,b 待 AiChat 改动沉淀后)
- 关联:todo SMELL-P0-2/P0-3/P1-9
- 状态:🟡 待排期决策(a 已实施·b/c 待排期:b AiChat 并发改中缓·c 待专项窗口)
SMELL-P1-6 String→newtype 强类型(需设计)
- 背景:execution_id/status/tool_type 等 5+ 处用裸 String,类型安全弱(混用/拼写错编译期不拦)。改 newtype(ExecutionId 等)需全栈波及(Rust struct 字段 + serde + IPC 边界 + 前端 ts 类型)。注:status 场景 df-types 已有 TaskStatus enum,部分代码用 String 而非 enum。
- 决策点:做不做 + newtype 边界(仅 Rust 内部 vs 跨 IPC 到前端)
- 选项:
- a: 全栈 newtype(Rust+IPC+前端,类型安全最强,波及大)
- b: 仅 Rust 内部 newtype(IPC 边界仍 String,折中)
- c: 不做(String 够用,status 已有 enum 部分覆盖)
- 推荐:⏸️ 缓做(全栈波及大 ROI 中等;倾向 b 折中或 c 现状 enum 已部分覆盖。若做需专项设计 newtype 边界)
- 关联:todo SMELL-P1-6
- 状态:🟡 待设计决策
SW-260618-21 死代码预留功能清理批(清理 vs 保留)
- 背景:2026-06-18 深层 sweep 核验出 4 类「0 外部消费者但设计预留」符号。清理减负 vs 保留未来功能取舍。注:
PendingApproval.diff经 IPC 活跃(useAiEvents:252event.diff→tc.diff+ ToolCard:44/754/772 渲染·UX-260618-06 审批 diff)非死代码不删;transition_status已删(批次7·0 消费者+TODO 未实现)。 - 核验(独立 grep 2026-06-18):
SessionStateenum +session_state()(mod.rs:172/393):0 外部调用·注释「读状态统一走 session_state() 收敛」设计预留(待重构 SW-02 类终态化复用)AppState.releases/node_executions(state.rs:206/210):\.releases\b|\.node_executions\b0 字段访问·df-storage ReleaseRepo/NodeExecutionRepo 预留(未来 release mgmt/node exec log):✅ 已删(2026-06-18·前端 types.ts 0 字段坐实真死·零波及·CR-22)PendingApproval.risk_level(mod.rs:410)
- 决策点:清理 0 消费者预留 vs 保留未来功能
- 选项:
- a: 全清理(删 SessionState/releases/node_executions/risk_level·连带 df-storage repo 定义·减 dead_code warning·但失去预留扩展点)
- b: 全保留+标
#[allow(dead_code)]注释预留意图(消 warning·保留未来·零波及) - c: 部分(SessionState/releases 近期无计划清·risk_level 核前端类型后定)
- 推荐:⏸️ b 保留+标 allow(预留设计意图明确·清理失去未来扩展点 ROI 低;标 allow 消 warning 即可·零波及)
- 关联:批次7 transition_status 已删 / CR-22 删 risk_level / CR-23 标 allow 5 处
- 状态:✅ 已实施 b(2026-06-18·主代自主决策·risk_level 删 + 预留/diff 标 allow·cargo 0 warning)
F-260616-09-B 多会话并发架构 B 阶段实施决策(设计完成 2026-06-19·待拍板)
- 背景:F-09 B 阶段设计文档完成 F-09-多会话并发架构设计-2026-06-19.md。核验发现 A 路线补漏已全部落地(commands.rs:1404-1409 + useAiConversations.ts:80-83)→ 阶段1 跳过。AiSession 12 字段。阶段2(B 主体,批1-8)待启动。
- 决策点:
- ⚠️ b-1(关键·须拍板):messages 是否 per-conv。原决策 b「messages 按 conv reload(不 per-conv)」与决策 e「切换不退出各自跑完」矛盾(单例 messages 下旧 loop push 污染新 conv,B-260615-11 退出校验必须保留→与 e 冲突)。设计推荐修正 b 为 messages per-conv(e 的技术必然必要条件,侵入面增量极小:ContextManager 挪 HashMap)。
- ⚠️ c-1:global permits=3 默认值 + Settings 加「并发会话数上限」配置项。
- e-1(主代已定✅):旧 loop save_conversation 保持原路径(save 接 conv_id 零改动)。低风险技术细节,主代裁决采纳。
- 推荐:✅ b-1 采纳(messages per-conv,技术必然)+ c-1 保持 3 + Settings 配置 + e-1 原路径。拍板后启动阶段2 批1(PerConvState 数据结构 + 访问器)。
- 关联:todo F-260616-09 / 设计文档 / memory aichat-arch-extensibility
- 状态:✅ 主代自主裁决采纳(2026-06-19) —— 用户授权「自主推进,能多角度确定的方案不等审批」。b-1 多角度论证充分(messages per-conv 是决策 e 技术必然必要条件,无替代);c-1 合理默认(global=3,Settings 配置后续);e-1 零改动技术细节。启动阶段2 批1。用户醒后可追认/推翻。
已决归档
按月归档(随时间增长追加月份文件,防主文件膨胀):
- 2026-06.md — 2026-06 已决策/已实施/已排期/已解决历史(③类产品取舍 12 项 / ④类设计方向 6 项 / 重投入排期 8 项 / ④类续 5 项 / C类已解决 2 项)
新月份拍板项累积时,新建
YYYY-MM.md承载。