# 待决策归档(历史已决)

> 从 [待决策.md](../../待决策.md) 拆出的已决策 / 已实施 / 已排期 / 已解决历史项。
> 决策点已闭合,实施进度见 [todo.md](../../todo.md)。
>
> 创建:2026-06-17 | 维护:待决策.md 当前队列项拍板后迁入对应月份文件(本文件承载 2026-06)。

---

## ③类 — 产品取舍(已决)

#### CR-13-O1 in_progress 模板失败退回语义
- **背景**:in_progress 模板失败→`regression_target("in_progress")=Some("todo")`,但状态机 `backward_to_todo_rejected` 全拒(task_state_machine.rs:188-193)→回调 advance_task_atomic 被 InvalidState 拦截,任务原地保留 in_progress。
- **决策点**:in_progress 执行失败应如何退回?
- **选项**:
  - a: 接受现状(原地 in_progress)+ 补 UI 提示「执行失败,请手动处理」
  - b: 改 `regression_target("in_progress")=None` 对齐状态机(失败不自动退回,留 in_progress 等人介入)
  - c: 放开 todo 回退(破坏闸门,执行失败可回 todo 重来)
- **推荐**:**b**(对齐状态机现状,失败留 in_progress 显式待人介入,不破坏闸门语义)
- **关联**:todo CR-13-O1 / CR-260616-13
- **状态**:✅ 已决(2026-06-16)— **决策:b**。对齐状态机,失败留 in_progress 等人介入,blocked 状态已提供合法通道。

#### DEC-260616-03 CR-04/CR-06 流式核心改造授权
- **背景**:splitBlocks 手写正则切块(CR-04,行中裸 ```/4+ backtick 嵌套切错)+ loadMarkdown 重算(CR-06)是流式渲染核心改造,中风险(回归可能)。
- **决策点**:是否授权推进流式核心改造?
- **选项**:
  - a: ①授权巡检推进(主代理重点核查流式渲染/审批/输入不破坏)
  - b: ②单独立项谨慎做(不混巡检快推,独立验证)
  - c: ③暂不碰(保留自研块级 memo 现状)
- **推荐**:**a ①**(自研 memo 已稳,CR-04/06 是增强非阻断,授权巡检推进+重点核查)
- **关联**:todo DEC-260616-03 / CR-260615-04
- **状态**:✅ 已决(2026-06-16)— **决策:a**。授权巡检推进,自研 memo 已稳,CR-04/06 是增强非阻断。

#### CR-260615-04 splitBlocks→marked.lexer
- **背景**:splitBlocks 手写正则 `/```[^\n]*\n[\s\S]*?(?:```|$)/g` 不要求行首+固定 3 backtick,与 marked 围栏规则不一致;行中裸 ```/4+ backtick 嵌套围栏切错,前块缓存固化错误 html。
- **决策点**:是否改用 marked.lexer 原生切块?(依赖 DEC-260616-03 授权)
- **选项**:
  - a: 改 marked.lexer(机制2原生,根治切错)
  - b: 补正则边界(治标,维护成本)
  - c: 不改(现状可接受,极端输入才触发)
- **推荐**:**a**(根治,依赖 DEC-03 授权)
- **关联**:todo CR-260615-04 / DEC-260616-03
- **状态**:✅ 已决(2026-06-16)— **决策:a 改 marked.lexer**。DEC-260616-03 已决a 授权推进,batch57 workflow(w4h5ygko1) Agent B 已实施 AiChat.vue splitBlocks 改 marked.lexer(tokenize),vue-tsc 0err + cargo check 0 err。todo CR-260615-04 同步销账。

#### F-260616-06 审批「未找到挂起的审批」体验
- **背景**:pending_approvals 内存态(commands.rs:130 remove None 报错)与前端刷新/重复点击不同步;重试场景旧 id 已被处理;前端 useAiSend.ts:221 IPC 失败不回滚 pendingApprovals,按钮残留。
- **决策点**:修法组合选哪些?
- **选项**:
  - a: 后端 ai_approve 幂等(找不到 pending 查审计表,已 executed/rejected 返回「已处理」成功非报错)
  - b: 前端审批按钮防抖(同一 id 短期多次只发一次 IPC)
  - c: 前端刷新后 pending 态正确同步(核对 useAiConversations.ts:119 边界)
- **推荐**:**a + b**(后端幂等治本 + 前端防抖治标,c 已部分由现有恢复逻辑覆盖)
- **关联**:todo F-260616-06
- **状态**:✅ 已决(2026-06-16)— **决策:a + b**。先 b 前端防抖止血(5 分钟改动),后 a 后端幂等治本。**子决策:实施顺序=A(先 b 防抖,后 a 幂等)**。

#### F-260616-07 流式对话失败自动重试
- **背景**:流式 stream_llm 零重试(agentic.rs:231-238 返回 None 直接放弃);df-ai retry.rs 只覆盖非流式 complete();手工重试已存在(错误气泡「重试」按钮)。
- **决策点**(4 个子决策):
  - (a) 流中途失败如何重试:a1 只重试流前失败(简单稳妥)/ a2 流中途失败截断已流文本重请求(复杂)
  - (b) 重试计数器粒度:每条消息预算 N 次(倾向)/ 每轮独立
  - (c) 退避策略:复用 retry.rs(1s→2s→4s 倾向)/ 用户可配
  - (d) 重试期 UI:错误气泡内「重试 n/m」(倾向)/ 独立 toast
- **推荐**:**a1 + 每条消息预算 + 复用 retry.rs 退避 + 错误气泡内更新**
- **关联**:todo F-260616-07
- **状态**:✅ 已决(2026-06-16)— **决策:a1 + 每条消息预算3次 + 复用 retry.rs 退避 + 错误气泡内更新**。流前失败重试,不碰流中途。**子决策:不加 Settings UI,硬编码默认 3 次(A)**。

#### F-260616-08 AI 数据获取工具突破 50 条上限
- **背景**:MAX_LIST_RESULTS=50 硬覆盖 6 工具(list_projects/tasks/ideas/trash/search_files/read_file 搜索),配套只给 has_more/truncated 提示无 offset 翻页;knowledge_search min(3) 钳死。
- **决策点**(4 子):
  - (a) 翻页范围:全量工具补 offset(对齐 read_file 统一)/ 仅 hot 工具(list_tasks/search_files)
  - (b) 翻页 limit 默认:沿用 50 / 提到 100-200
  - (c) knowledge_search 上限:20 / 50
  - (d) 是否加 get_count/list_all 探总量工具
- **推荐**:原推荐不加探总量;用户决策:**需加 get_count/list_all 探总量工具**(AI 需知总量做分页策略,has_more 仅告知"还有"不知多少)
- **关联**:todo F-260616-08
- **状态**:✅ 已决(2026-06-16)— **决策:全量 offset + 沿用 50 + knowledge 20 + 加探总量工具(get_count/list_all)**。用户要求 AI 具备探总量能力。

#### F-260616-09 AiSession 单例→多会话并发架构
- **背景**:用户需求(3 条消息强化):「应用级支持同时具备多会话」+「多个会话窗口来回切,**并行执行**」。现状 `AiSession` 应用级单例(state.rs:164 `ai_session: Arc<Mutex<AiSession>>`),messages/generating/stop_flag/pending_approvals 全一份;同一时刻只一个对话能跑。残留 bug:新建会话上下文残留(前端 newConversation 漏清 queue/generatingConvId/agentRound;后端 ai_conversation_create 漏清 agent_language/stop_flag)。
- **决策点**(5 个子决策):
  - (a) **推进路径**:A 先做隔离修复(补漏清字段维持单例,解残留,低风险) vs 直接 B 架构升级 — 倾向 **A 先**(残留真 bug 立即解,B 另立项)
  - (b) **B 多会话形态**:AiSession 整体 HashMap<conv_id, SessionState> vs 仅拆 generating/stop_flag per-conv(messages/pending 已可按 conv reload) — 倾向**后者**(侵入小)
  - (c) **B 并发上限**:复用 llm_concurrency.global 限并发会话数防 token 暴增 vs 无上限 — 倾向**复用限并发**
  - (d) **多窗口 UI 形态**:(d1) 单面板侧栏会话列表切换+后台并行(改动小) vs (d2) 每会话独立 Tauri 窗口(useAiWindow.ts detached 已有基础可扩,改动大但「窗口来回切」语义最贴) — **待用户定**,倾向先 d1 后 d2
  - (e) **旧 loop 切换处理**:不退出各自跑完(真并发) vs 仍退出 — 倾向**不退出真并发**
- **选项**:
  - a: A 先做隔离修复(B 前置,解残留) + B 立项排期(UI 待用户定 d1/d2)
  - b: 直接 B 架构升级(一步到位,大改+高风险)
  - c: 仅 A 隔离修复(满足"切会话不残留",并行执行缓做)
- **推荐**:**a**(A 先解燃眉真 bug,B 按架构演进另立项;UI 形态 d 待用户拍板再定 B 的工作量)
- **关联**:todo F-260616-09 / memory aichat-arch-extensibility(AiSession 单例未动架构债)
- **状态**:✅ 已决(2026-06-16)— **决策:a**(A 先隔离修复 + B 立项)。**UI 形态:d1+d2 都做**——侧边栏可切换,也可多窗口打开。先 d1(侧栏切换+后台并行),再 d2(独立 Tauri 窗口,detached 已有基础)。**🔥 用户要求(2026-06-16):B 阶段架构升级提升为高优先级,尽快实施。**

#### F-260615-14 AiChat 气泡截图拷贝
- **背景**:截图拷贝(气泡 DOM→图片→剪贴板)需加依赖 html2canvas(~90KB)或 dom-to-image-more(~3KB)。
- **决策点**:选型?
- **选项**:
  - a: html2canvas(~90KB,CSS 支持有限但社区成熟)
  - b: dom-to-image-more(~3KB,轻量,CSS 支持更弱)
  - c: 不做(文本拷贝 F-13 已够,截图 ROI 低)
- **推荐**:**b**(做减法,3KB 轻量,气泡样式简单风险低)或 **c**(等用户反馈需求强度)
- **关联**:todo F-260615-14
- **状态**:✅ 已决(2026-06-16)— **决策:c 不做**。文本拷贝+代码块复制已覆盖核心需求,等用户真实反馈再定。

#### F-260616-11 审批续跑 iteration 计数策略
- **背景**:`try_continue_agent_loop` 审批后续跑 iteration 从 0 重计(agentic.rs:418 注释,F-260616-03 续跑决策 a 延伸),多次审批(Med/High 工具)=反复重跑 max_iterations 轮,token 消耗不受 max_iterations 严格控制。
- **决策点**:iteration 累计 vs 重置?
- **选项**:
  - a: 累计计数(try_continue 不重置 iteration,跨审批续跑延续累计)
  - b: 重置 + 独立「审批次数」配额
  - c: token 总量兜底(不碰 iteration,加 token 硬上限)
- **推荐**:**a + c**(累计防超配 + token 兜底)
- **关联**:todo F-260616-11 / F-260616-03
- **状态**:✅ 已决(2026-06-16)— **决策:a**。累计计数,try_continue 不重置 iteration 跨审批累计,防多次审批 token 失控。token 兜底 c 暂不加(避免过度设计,iteration 累计已控)。实施待 batch60 完成(agentic.rs 锁释放)。

#### F-260616-07b AiNode 自审闸门 — 自审对象来源(架构决策)
- **背景**:推进链阶段3 AiNode 自审闸门,AiNode 自审拓扑(testing 模板 `ai_self_review→human_review`)+ AiNode 通用执行(ai_node.rs:116-164)已就绪,缺口:run_workflow 不注入 ai 节点 config(workflow.rs:84-115 dag 选模板后直接 build_dag 执行,无 config 注入步骤)+ **自审对象无来源**。核心瓶颈:推进链每次 run_workflow 独立执行,executor.rs 内存跑 DAG(outputs HashMap :94/:145)产出**不持久化**(node_executions 表 executor 不写,state.rs:150 NodeExecutionRepo dead_code 印证),TaskRecord(models.rs:53-56)无产出字段,NodeContext(node.rs:13-26)无 task 数据。ai_self_review(testing 模板 in_review→testing)自审什么无来源——ai_execute(in_progress 模板)产出跨执行不传。
- **决策点**:ai_self_review 自审对象来源?
- **选项**:
  - a: **TaskRecord 加 `output_json` 产出字段**(ai_execute 写 / ai_self_review 读 / human_review 展示)+ run_workflow 注入 task 数据到 NodeContext + 自审 prompt 模板(需求符合度+产出完整性,产出 通过/不通过+理由+建议)。task 中心,最直接解锁自审闭环,human_review 读产出展示给人核受益。
  - b: ai_self_review 自审 task.title+description(任务定义)。无需改数据模型,但语义弱(自审任务定义非产出,意义存疑)。
  - c: 补 executor 写 node_executions(output_json)+ ai_self_review 跨执行读 task 最近 ai_execute 产出。通用(任何节点产出可查),但 executor 改动+跨执行查 task_id 关联。
  - d: 等 git 集成(阶段4 F-260616-08 暂缓),自审代码改动 diff。最贴切(自审代码)但阻塞于阶段4。
- **推荐**:**a**(task 中心,最直接解锁自审闭环+人核,数据模型变更小:TaskRecord 加 output_json+迁移+run_workflow 注入 task 到 NodeContext+自审 prompt 模板,中等工作量)。c 通用但 executor 改动大,b 语义弱,d 阻塞阶段4。
- **关联**:todo F-260616-07 阶段3(AiNode 自审 ⏳ 子条) / task_workflow_templates.rs:57-72(testing 模板) / ai_node.rs(AiNode 通用执行) / memory aichat-arch-extensibility(AiNode 空壳架构债)
- **状态**:✅ 已决(2026-06-16)— **决策:a**。TaskRecord 加 `output_json` 产出字段,ai_execute 写 / ai_self_review 读 / human_review 展示。task 中心,产出跟着 task 走,跨工作流执行可传递。**阶段1迁移+方案✅(539b5ed+25409e5) 阶段2②③④⑤✅(c10adaf ai 侧 + 741b0b9 前端),⑥联调阻塞 P0 provider 注入见 F-260616-07c**。

#### F-260616-07c AiNode provider 注入安全(FR-S1 api_key 下沉)
- **背景**:AiNode 自审闭环②③④⑤已实施(c10adaf+741b0b9),provider 配置注入阻塞⑥联调。根因:secret 解析(ensure_resolved_key)在 src-tauri/commands/ai/secret.rs(app crate),df-nodes 不可依赖 src-tauri(单向 app→df-nodes),AiNode/AiSelfReviewNode 只能从 config 读明文 api_key,违背 FR-S1 mask 设计(前端/LLM tool_call schema 可拿明文 key)。
- **决策点**:secret 解析下沉方式?
- **选项**:
  - a: 完整下沉 secret.rs → df-storage(新建 df-storage/src/secret.rs,src-tauri 改调 df-storage::secret)
  - b: df-storage 加薄 secret 查询方法(AiProviderRepo::resolve_api_key(id) 封装 mask/env 解析,df-nodes 调此)
  - c: provider_id 注入 config + df-nodes 直查 ai_providers.api_key(不走 secret.rs,df-nodes 自实现解析)
- **推荐**:**方案 B**(df-storage 加薄 secret 查询,纯密钥逻辑下沉不含 build_provider_for 避循环依赖)
- **关联**:todo F-260616-07 阶段3(⑥联调) / secret.rs / FR-S1 / memory FR-S1 api_key IPC mask
- **状态**:✅ 已决+实施(2026-06-16)— **方案 B 落地**:①secret 纯密钥逻辑下沉 df-storage/src/secret.rs(766f235,避循环依赖 build_provider_for 留 src-tauri 转发壳,12 调用点零改)②AiNode provider_id 注入链(84a6fc4,resolve_provider 三路径:provider_id 优先/老明文兼容 warn/空兜底 is_default)。**FR-S1 闭环**:api_key 经 df_storage::secret 解析 AiNode 内存内,不进 config/NodeOutput/schema。⑥联调代码层解锁,待实测(tauri dev)。

---

## ④类 — 设计方向(已决)

#### F-260614-03 灵感对抗评估接 LLM
- **背景**:df-ideas adversarial.rs `evaluate()` 纯启发式,接 LLM 需改签名注入 provider。
- **决策点**:注入方式?
- **选项**:
  - a: trait 解耦(df-ideas 定义 IdeaAnalyzer trait,推荐)
  - b: df-ideas 直接依赖 df-ai
  - c: closure 注入
- **推荐**:**a**(trait 解耦,但前置 F-07 trait 下沉)
- **关联**:todo F-260614-03 / F-07
- **状态**:✅ 已实施(F-07 batch61·2069f79 解锁 + F-03 batch62·dfe0096 evaluate_with_llm 真实实现落地,19单测过,CR-40审查中)

#### F-260616-07 阶段3 AI 执行闭环 + F-03 收口三件
- **背景**:advance_task/run_workflow 注册为 AI 工具 + AiNode 自审闸门;F-03 收口三件(advance_task 注册 + update_task 描述/schema 移 status + df-storage tasks 白名单移 status)须同步落地防 AI 工具行为不一致。
- **决策点**:阶段3 范围/优先级?(依赖 F-07 trait 下沉让 AiNode 可复用)
- **选项**:
  - a: 全量(三件 + AiNode 自审 + run_workflow 工具)
  - b: 仅 F-03 收口三件(防行为不一致,先小步)
  - c: 暂缓(等 F-07 + 真实推进场景)
- **推荐**:**b 先做 F-03 收口**(防现状行为不一致),AiNode 自审等 F-07
- **关联**:todo F-260616-07 阶段3 / F-07
- **状态**:✅ 决策b 实施中(F-07 batch61·2069f79 解锁,F-03收口三件 batch64·workflow wii1u1lnm 推进中,AiNode自审等后续批)

#### F-260616-08 阶段4 Git 集成
- **背景**:kind 字段 + git 闸门节点 + worktree 隔离。
- **决策点**:阶段4 是否进路线?(工作流当前内部基础设施无真实 CI/CD 场景,R-PD-12 已否决做实 run_workflow)
- **选项**:
  - a: 进路线(设计+实施)
  - b: 暂缓(等工作流有真实使用场景)
- **推荐**:**b 暂缓**(对齐 R-PD-12 否决,等真实场景)
- **关联**:todo F-260616-08 阶段4
- **状态**:✅ 已决(2026-06-16)— **决策:b 暂缓**。对齐 R-PD-12 否决,等工作流有真实 CI/CD 场景。

#### F-260614-08 决策治理产品化
- **背景**:活契约/规格契约自检机制(当前散落文档机制)产品化为可操作功能。
- **决策点**:产品化形态?(规格契约机制 devflow-spec-contract-mechanism 文档已定稿,落地链②-⑤未做)
- **选项**:
  - a: 独立功能页(规格契约自检 UI)
  - b: 嵌入现有流程(锚点+AI自检+子代理活契约化)
  - c: 暂缓(机制先行文档化,产品化等需求)
- **推荐**:**c 暂缓**(机制文档已定稿,产品化等真实需求驱动)
- **关联**:todo F-260614-08 / memory devflow-spec-contract-mechanism
- **状态**:✅ 已决(2026-06-16)— **决策:c 暂缓**。机制文档已定稿,产品化等真实需求驱动。

#### F-260614-09 项目 status 字段治理
- **背景**:status 状态机规范化(planning/active/archived 等枚举约束)。F-09 前端已对齐(planning/active/completed),后端 df-core enum 7 值是独立大改。
- **决策点**:后端 status 枚举收口范围?
- **选项**:
  - a: 后端 enum 收窄对齐前端(planning/active/archived)
  - b: 双字段(status 生命周期 + stage 开发阶段,已否决过度设计)
  - c: 暂缓(DB 实际只产生 planning + deleted_at 软删二态,现状可接受)
- **推荐**:**c 暂缓**(DB 实际二态,收口 ROI 低,等真实多态需求)
- **关联**:todo F-260614-09 / F-09
- **状态**:✅ 已决(2026-06-16)— **决策:c 暂缓**。DB 实际只产生 planning 二态,收口 ROI 低。

#### F-260614-10 知识库 MCP Server + Tier 2/3
- **背景**:对外 MCP 暴露 + 分层存储(当前仅 Tier 1 全栈)。
- **决策点**:MCP 暴露范围 + Tier 2/3 存储选型?
- **选项**:
  - a: 全量(MCP Server + Tier2 向量 + Tier3 冷归档)
  - b: 仅 MCP Server(对外暴露 Tier1)
  - c: 暂缓(等知识库真实外部消费需求)
- **推荐**:**c 暂缓**(Tier1 全栈已满足当前,等外部消费需求)
- **关联**:todo F-260614-10
- **状态**:✅ 已决(2026-06-16)— **决策:c 暂缓**。Tier1 全栈已满足当前,等知识库真实外部消费需求。

---

## 重投入排期(已排期/实施)

> 方案已定(📐设计完成/完备),非"待决策方向",而是"待排期投入"。

#### F-260614-07(F-07) df-ai-core trait 下沉拆 crate
- **背景**:架构前置,4 项决策全定稿。退路可放 df-core。解锁 F-03/F-01。
- **设计状态**:📐 完备(决策记录已收敛:原 F-03 A/B/C 作废,统一全局 AI trait 下沉独立 crate)
- **决策点**:排期?(解锁多项后续,但拆 crate 重投入)
- **推荐**:原推荐优先(可先放 df-core 过渡);用户决策:**拆独立 crate df-ai-core**(不放 df-core,一步到位)
- **关联**:todo F-260614-07 / F-03
- **状态**:✅ 已决(2026-06-16)— **决策:拆独立 crate df-ai-core**。不放 df-core 过渡,LlmProvider trait + 核心数据结构下沉独立 crate,df-ai/df-ideas/df-nodes 均依赖 df-ai-core。**✅ 已实施(batch61·2026-06-16·commit 2069f79·workflow wwtn2knn6+主代核查,cargo 0err+7单测)**。解锁 F-01/F-03 注入。

#### F-260614-01 模型能力系统 Phase 1
- **背景**:ModelConfig 数据模型(模态/能力/价格/智力 4 维度) + ModelRouter 智能路由 + 多源探测(预设表+启发式) + 厂商模型列表自动拉取(适配 OpenAI/Anthropic 协议差异) + 7 调用点接入 + Settings 模型池 UI + AiChat 模型下拉。按需求自动匹配合适模型。
- **设计状态**:📐 设计定稿(2026-06-16,含 7 角度佐证 + 厂商适配 + 用户流程,见 [F-01-模型能力系统与智能路由设计-2026-06-16.md](../../02-架构设计/F-01-模型能力系统与智能路由设计-2026-06-16.md))
- **决策点**:排期?(依赖 F-07 trait 下沉)
- **推荐**:F-07 后接续
- **关联**:todo F-260614-01 / F-07
- **状态**:✅ 已排期(2026-06-16)— 用户确认推进。设计已定稿,F-07 已完成解除阻塞,列为 P1🔥 可立即实施。6 阶段子任务已拆解见 todo.md。

#### F-260614-06 导入历史项目(scan 第二步)
- **背景**:description 走 LLM(复用 scan_project_with_ai)+ 采样保留内容图(待 F-260614-05 多模态)+ monorepo 一层 + 批量并发;抽 create_with_binding 缓解 TODO。
- **设计状态**:📐 设计定稿(6 决策 06-14)
- **决策点**:排期?(依赖 F-260614-05 多模态采样)
- **推荐**:F-05 多模态后接续
- **关联**:todo F-260614-06 / memory devflow-project-path-binding
- **状态**:✅ 已实施(batch61·2026-06-16·commit 2069f79·workflow wwtn2knn6+主代核查,cargo 0err+vue-tsc 0err)。6 决策全落地,image 多模态留接口待 F-260614-05。

#### F-260614-02 技能联想「使用」
- **背景**:首批 3 类联想已做,联想后实际触发/执行技能未实现。
- **决策点**:「使用」语义?(执行本机 claude 技能?AI 调用?需明确)
- **推荐**:需先澄清语义(关联 memory aichat-skill-slash-autocomplete)
- **关联**:todo F-260614-02
- **状态**:✅ 已决(2026-06-16)— **决策:ai调用**。**✅ 主干已实施(batch62·2026-06-16 走查发现 commands.rs:172-175 已注入 system_prompt 头尾标注隔离+前端全链路通)**。设计文档推荐方案 A(注入 system),剩 P1(argument_hint 参数 UI)/P2(空文本标题)边界打磨。详见 docs/02-架构设计/F-02-技能联想使用-实施机制设计-2026-06-16.md。

#### F-260614-04 多 Provider 负载均衡池
- **背景**:备用模型/多账号聚合,全局容量=min(各 provider 上限之和, global_cap)。
- **决策点**:排期?(增强非阻断)
- **推荐**:低优先(等 F-01 模型能力后)
- **关联**:todo F-260614-04
- **状态**:✅ 已排期(2026-06-16)— 用户确认推进。P2 优先级,等 F-01 模型能力系统落地后接续(路由器需要知道哪些模型可用)。

#### F-260614-05 模型能力系统 Phase 2(多模态)
- **背景**:ChatMessage.content: String → Vec<ContentPart>(Text/Image);前端粘贴/拖拽图片;vision 模型自动路由。
- **决策点**:排期?(解锁 F-06 导入采样)
- **推荐**:中等(解锁 F-06)
- **关联**:todo F-260614-05 / F-01
- **状态**:✅ 已排期(2026-06-16)— 用户确认推进。P2 优先级,F-01 后接续。设计已定稿见 [F-05-多模态实施方案设计-2026-06-16.md](../../02-架构设计/F-05-多模态实施方案设计-2026-06-16.md)。

#### AE-2025-04 会话级授权(Session Trust)
- **背景**:同会话内用户批准过某类操作后,后续同类自动放行;换会话清空重审。首批 write_file + run_command。设计已定(目录级粒度 + 仅写+执行首批 + Webhook 走独立 execution_token)。
- **设计状态**:📐 设计定(2026-06-16)
- **决策点**:排期?(涉及 mod.rs AiSession + audit.rs 审批链)
- **推荐**:中高(写→跑→看→改闭环高频连续操作,体验提升大)
- **关联**:todo AE-2025-04
- **状态**:✅ 已排期(2026-06-16)— 用户确认推进。P1 优先级,写→跑→看→改闭环高频连续操作体验提升大。设计已定(目录级粒度 + 仅写+执行首批)。

#### T-260614-06 Settings.vue 拆 panel 子组件
- **背景**:1042 行 god file,4 大功能域(AI 模型/Provider 表单/连接管理/通用设置)可拆 src/components/settings/。评估非低风险(纯重构零功能价值,新建 4 子组件 + props/emits + CSS 拆)。
- **决策点**:排期?(单独立项做更稳)
- **推荐**:低(纯重构零功能,等 god file 痛点加剧)
- **关联**:todo T-260614-06
- **状态**:✅ 已排期(2026-06-16)— 用户确认推进。P3 优先级(纯重构零功能),等 god file 痛点加剧或配合 F-01 模型池 UI 一并做。

---

## ④类续 — 设计方向(已决·batch55迁移)

#### UX-2025-04 断线保文(incomplete标志)
- **背景**:流式中断时已接收文本不丢弃;stream_llm mid-stream error 改返回 partial_text + incomplete 标志;agentic 收 incomplete→正常入库+AiCompleted(非AiError)+「⚠ 响应因网络中断不完整」+「继续生成」按钮。
- **决策点**:改 stream_recv.rs 流式核心是否做?(中风险,回归可能)
- **选项**: a:授权推进(关联 DEC-260616-03 已决a) / b:暂不碰
- **推荐**:**a**(DEC-03 已授权,断线保文是用户体验硬伤)
- **关联**:todo UX-2025-04 / DEC-260616-03
- **状态**:✅ 已决(2026-06-16)— **决策:a**(授权推进。DEC-03 已授权,断线保文是用户体验硬伤)。

#### ARC-260615-03 df-execute 归宿
- **背景**:df-execute 非空壳(shell.rs execute() 已完整实现+被 tool_registry.rs run_command 复用)。原todo「76行/1函数+TODO」基于 lib.rs 空判过时。
- **决策点**:合并进 df-nodes(破职责分离+动依赖树) vs 维持独立?
- **选项**: a:维持独立(职责清晰:节点定义vs执行运行时) / b:合并df-nodes(减少crate数)
- **推荐**:**a**(维持独立,转架构维护记录非清债)
- **关联**:todo ARC-260615-03
- **状态**:✅ 已决(2026-06-16)— **决策:a**(维持独立,df-execute 非空壳 shell.rs execute() 已完整实现 + 被 run_command 复用,转架构维护记录非清债)。

#### ARC-260615-07 中期技术债7件
- **背景**:df-core改名df-types / IPC层抽取df-app / AI loop下沉df-ai / 3 view绕store调api / 类型契约ts-rs代码生成 / AiSession多会话 / AppState分组 / IPC命名统一。
- **决策点**:哪些值得投?哪些暂缓?
- **选项**: a:逐项评估后挑高ROI的做 / b:全部暂缓(等业务功能优先)
- **推荐**:**b 暂缓**(当前业务功能未饱和,技术债不急)
- **关联**:todo ARC-260615-07
- **状态**:✅ 已决(2026-06-16)— **决策:a**(逐项评估挑高 ROI 的做,用户要求推进非暂缓)。

#### B-260615-41 工作流执行无进度指示
- **背景**:长时间工作流执行用户不知进度/剩余时间。需进度条+步骤提示+预估剩余时间。
- **决策点**:实现深度?纯前端 vs 后端emit事件驱动
- **选项**: a:轻量(WorkflowDetail.vue 进度条+步骤文本,后端复用已有NodeStarted/Completed事件) / b:完整(后端新progress事件+预估算法)
- **推荐**:**a 轻量**(复用现有事件,最小改动)
- **关联**:todo B-260615-41
- **状态**:✅ 已决(2026-06-16)— **决策:a 轻量**(复用现有 NodeStarted/Completed 事件,纯前端消费)。

#### B-260615-43 无撤销重做功能
- **背景**:AI操作(delete_project等)无撤销。操作历史栈+撤销/重做UI。
- **决策点**:撤销范围?全局vs仅AI操作?
- **选项**: a:仅AI工具操作(delete_task/delete_project/restore/run_command等) / b:全局(含项目/任务CRUD) / c:暂缓(二次确认已部分覆盖)
- **推荐**:**c 暂缓**(High-risk工具已有二次确认AE-05,撤销复杂度高)
- **关联**:todo B-260615-43
- **状态**:✅ 已决(2026-06-16)— **决策:c 暂缓**(High-risk 已有二次确认 AE-05,撤销复杂度高)。

---

## C类 — 已解决

#### ~~S-260615-01 aichat API Key 401 根因~~
- **状态**:✅ 已解决(2026-06-16)— 用户确认已解决。

#### ~~S-260614-01 「显示多开」需求澄清~~
- **状态**:✅ 已解决(2026-06-16)— 用户澄清:需求本质是「会话来回切并行处理」(A 对话回复中切到 B 发消息,A 后台继续跑),非设置页开关。已被 F-260616-09(决策 a:d1 侧栏切换+后台并行)完整覆盖收编。
