文档: 待办与决策更新
This commit is contained in:
99
docs/待决策.md
99
docs/待决策.md
@@ -50,6 +50,17 @@
|
||||
- **待用户操作**:部分场景运行时实测(A 路线场景 2/3)。
|
||||
- **状态**:🟡 待用户实测
|
||||
|
||||
#### S-260623-01 「自托管」含义澄清
|
||||
- **背景**:用户要求设置支持「自主执行(含高危)+ 自托管」。**自主执行含高危已实现** —— `autoExecuteMode` 三档 `low`/`medium`/`all`(AdvancedSection.vue F-#97, 2026-06-22),`all` = 完全 AI 接管含高危(delete/purge/run_command),选时二次确认。设置 → 高级 → AI 自动执行范围。但「自托管」grep 全项目无匹配,含义未明确。
|
||||
- **待用户澄清**:「自托管」指什么?
|
||||
- **选项**:
|
||||
- a: 自托管 AI 模型 endpoint(用户配自己的模型 API/本地模型,非默认 provider)
|
||||
- b: 自管执行策略(= autoExecuteMode 已覆盖,无需另做)
|
||||
- c: 自托管后端服务(用户自部署 df-relay/df-tunnel,非默认 `u-work.1216.top`)
|
||||
- d: 其他(用户补充)
|
||||
- **关联**:task105 / memory(设置自主执行已实现)
|
||||
- **状态**:✅ **自用阶段定案(2026-06-23)** —— 用户决策:小程序当前自用(开发阶段),分发是产品终态但留后续(过渡期靠改 device_id 实现多机)。故「自托管」现阶段 = 已实现的自主执行(autoExecuteMode all 含高危),无另义。分发阶段再做配置层(MINIDEC-01)+ 配对(MINIDEC-02)。
|
||||
|
||||
#### ~~B-260617-11 tauri.conf.json 打包目标收窄确认~~
|
||||
- **状态**:✅ 已决(2026-06-18) — 已迁入归档。决策:A 临时本地构建,要求高速。提交前 revert 为 `"all"`。
|
||||
|
||||
@@ -172,6 +183,92 @@
|
||||
- **关联**:消息级溯源 P0(CR-10 ✅)/ P1(CR-12 ✅)/ 消息拆分存储设计文档
|
||||
- **状态**:🟡 待用户拍板(P2 是否现在做 + 策略 a/b)。大改建议用户知情后启动。
|
||||
|
||||
#### BUG-260623-03 审批 pending 无超时兜底(aichat 卡死·架构)
|
||||
- **背景**:实测会话 4ae73423 末尾 advance_task 触发审批 `__PENDING__` 后,`agentic/mod.rs:1464` loop return,恢复唯一依赖用户主动 ai_approve。全库无审批超时定时器(cache.rs:31 占位标记无时间戳)。用户离开/忘记 → generating=true 永久挂起,会话卡死,用户须手动重发(且该会话 token 已大,重发易触上限)。属 aichat 中断B,非 generating 状态机卡死(generating 已收敛 GeneratingGuard)。
|
||||
- **决策点**:审批 pending 超时兜底怎么实现?
|
||||
- **选项**:
|
||||
- a: 后端 per-conv 定时器(到期自动 reject + emit 超时,触及 AiSession 单例 + 定时器机制,最彻底)
|
||||
- b: 前端倒计时提示(用户可见到期,后端不变,最小改动)
|
||||
- c: 无超时(现状,靠用户手动)
|
||||
- **推荐**:**b 前端倒计时**(最小改动不触 AiSession;用户可见主动处理)。a 后端定时器最彻底但触及单例大改,归 [[devflow-async-approval-concept]]
|
||||
- **关联**:memory devflow-async-approval-concept / docs/05-代码审查/aichat-会话实测分析-2026-06-22.md(CR-260622-01 修正)
|
||||
- **状态**:🟡 待决策
|
||||
|
||||
### df-miniapp 全功能审查(2026-06-23 workflow wll7qabgr + 主代补审)
|
||||
|
||||
> 6 区域并行审查(chat/会话页/useAiChat/连接层/组件/工程)。已**自主实施**:F1 看门狗 clearWatchdog 兜底 / F2 regenerate 守卫 / F3 flushCurrentText id 精确回填 / F9 stop 终态兜底 + 停止按钮(原无停止入口) / F21 连接状态中文文案 + 手动重连 / switch default 分支 / 二进制帧 warn / scheduleReconnect maxAttempts / 删 test 死页。以下为需决策项。
|
||||
|
||||
#### MINIDEC-260623-01 relay 配置层范围(F15·产品方向·分发卡点)
|
||||
- **背景**:config.ts relayHost/deviceId/token 全硬编码(setConfig 零调用方,storage 未接,无设置页)。当前填测试服 wss + 本机 device_id(联调期)。分发后用户无法改连自托管中继 → 连不上。
|
||||
- **决策点**:配置层做到什么程度?
|
||||
- **选项**:
|
||||
- a: 完整设置页(表单 + setConfig 接 storage 持久化 + getConfig 回退),用户可改 relay/device/token
|
||||
- b: 仅接 storage 持久化(setConfig 真生效,无 UI,靠代码/build env 注入)
|
||||
- c: MVP 接受硬编码(仅自用联调),设置页立项后续
|
||||
- **推荐**:**b 至少接 storage**(成本极小让配置真生效);a 设置页 UI 视分发排期。依赖 S-260623-01「自托管」含义(c 自托管后端 → 必须 a)。
|
||||
- **关联**:S-260623-01 / memory cross-end-rust-backend
|
||||
- **状态**:⏸️ **暂缓(2026-06-23)** —— 用户决策:当前自用,硬编码够;分发阶段(产品终态)再做设置页。过渡期多机靠改 device_id。
|
||||
|
||||
#### MINIDEC-260623-02 配对绑定流程(F16·跨端大改)
|
||||
- **背景**:ControlMessage.pair 类型已定义但从不发送,deviceId/token 靠用户手抄(查桌面端 KV)。无二维码配对/绑定校验链路。
|
||||
- **决策点**:配对流程是否本轮做?
|
||||
- **选项**:
|
||||
- a: 完整配对(桌面端生成 QR → relay 校验绑定 → miniapp 扫码获 device_id/token)
|
||||
- b: MVP 过渡(设置页手填 + UI 提示去哪找 device_id/token)
|
||||
- c: 不做(手抄够用)
|
||||
- **推荐**:**⏸️ b MVP 过渡**(a 跨端协作工作量大,依赖 MINIDEC-260623-01 设置页先落)
|
||||
- **关联**:MINIDEC-260623-01
|
||||
- **用户已定未来愿景(2026-06-23)**:分发阶段做完整配对授权,三步:① 设备端弹二维码 ② 小程序扫码识别并授权,双方来回点击确认 ③ 授权管理(设定授权的权限范围等)。本轮不做,留专项。
|
||||
- **状态**:⏸️ **暂缓(2026-06-23)** —— 当前自用靠手抄 device_id;分发阶段按上述愿景做完整 QR 配对 + 权限范围管理(跨端 df-miniapp/df-relay/桌面端协同,专项立项)。
|
||||
|
||||
#### MINIDEC-260623-03 WS 重连续流策略(F10·行为差异·需拍板)
|
||||
- **背景**:watchdog 在 WS 重连后不重启。重连期间 device 续推 AiTextDelta 会丢(断连窗口)或半截文本错位。当前断连 onStatus 已 reset generating + clearWatchdog(连接断肯定停),但重连后续流未处理。
|
||||
- **决策点**:重连后续流策略?
|
||||
- **选项**:
|
||||
- a: onStatus 'connected' 主动发 load_messages 重新同步整个会话(最稳,但重置视图)
|
||||
- b: 收到 AiTextDelta 时若 !generating 隐式恢复 + 补 assistant 占位(最平滑,有幽灵续流风险)
|
||||
- c: 不处理(接受断连窗口该轮丢失)
|
||||
- **推荐**:**c 现状**(MVP 断连窗口丢失可接受,a/b 复杂度高)。重度依赖移动端弱网再升级 a。
|
||||
- **状态**:✅ **已实施 a**(2026-06-23)—— 用户决策「断网不丢消息 + 从远端拉完整」。useAiChat syncOnConnect:ws 'connected' → 发 load_messages 拉完整历史(断网期间 missed 消息恢复 + 兼修冷启动空白 P1-C)。cargo check 0 + vue-tsc 0 + build DONE。
|
||||
|
||||
#### MINIDEC-260623-04 审批双源状态分裂统一(F4/F5/F6/F13·渲染源决策)
|
||||
- **背景**:审批状态双写——pendingApprovals 数组 + messages[].toolCalls.status。AiApprovalRequired 双写为源头,AiError/switchConversation 只清 pendingApprovals 一侧(messages 内 tc 留陈旧 pending_approval)→ 可能渲染陈旧审批按钮,点 approve 命中已失效 tool_call。chat 页按 m.toolCalls 内联渲染审批按钮,pendingApprovals 仅顶部徽标计数。
|
||||
- **决策点**:统一单一渲染源?
|
||||
- **选项**:
|
||||
- a: 以 pendingApprovals 为准(messages tc 仅显示 status 不渲染按钮)—— 改 chat 页渲染逻辑(行为变更)
|
||||
- b: switchConversation/AiError 清 pendingApprovals 时同步遍历 messages 把 pending_approval 标 rejected —— 改 useAiChat 状态清理(纯后端态,UI 不变)
|
||||
- **推荐**:**b 同步清理**(最小行为变更,治陈旧按钮根因)。a 渲染源统一更彻底但 UI 改动大。
|
||||
- **关联**:BUG-260623-03(审批超时,后端侧)
|
||||
- **状态**:✅ **已实施 a 单一渲染源**(2026-06-23)—— 用户决策「审批断网重连恢复卡片状态」。审批卡改从 pendingApprovals 独立面板渲染(与 messages 解耦,避重连 load_messages 替换 messages 的竞态);remote_bridge 加 sync_pending 路由(读 AiSession.pending_approvals 按 conv 过滤重发 AiApprovalRequired/AiDirAuthRequired);useAiChat onStatus 'connected' 清 pendingApprovals + 发 sync_pending 重建;handleEvent 加同 id 去重防竞态重复。内联工具卡保留状态徽标/参数/结果(按钮移面板)。cargo 0 + vue-tsc 0 + build DONE。
|
||||
|
||||
#### MINIDEC-260623-05 会话页管理缺口(删除/重命名·需后端命令)
|
||||
- **背景**:conversations/index.vue 仅列表/切换/新建/下拉刷新。无删除/重命名(需后端 delete_conversation/rename_conversation 命令 + remote_bridge 路由,当前无)。
|
||||
- **决策点**:miniapp 是否需要会话管理?
|
||||
- **选项**:
|
||||
- a: 本轮加(后端命令 + bridge 路由 + 会话页长按菜单)
|
||||
- b: 暂不做(用户回桌面端管理,MVP 仅查看/切换)
|
||||
- **推荐**:**⏸️ b 暂不做**(miniapp 定位轻量操作终端,会话管理桌面端足够)
|
||||
- **状态**:✅ **重命名已实施 / 删除暂缓**(2026-06-23)—— 用户决策「小程序对齐桌面端能改会话名」。remote_bridge 加 rename_conversation 路由(调 ai_conversation_rename + 推 AiConversationList 刷新);useAiChat renameConversation 方法(乐观本地更新);conversations/index.vue 长按会话 uni.showModal 编辑。删除会话暂不做(桌面端管理)。cargo 0 + vue-tsc 0 + build DONE。
|
||||
|
||||
#### MINIDEC-260623-06 心跳/历史替换协议(F8/F20·跨模块·低优先)
|
||||
- **背景**:(F8)心跳活性检测依赖「任意入站消息」,低活跃场景每 ~60s 误判半开死连接触发无谓重连(relay 无 pong);(F20)AiMessageHistory 整体替换会丢弃正在进行的乐观气泡(device 主动推历史路径难区分 load 响应)。
|
||||
- **决策点**:是否本轮改 relay 协议?
|
||||
- **选项**:
|
||||
- a: relay 加 pong + 历史事件加 load_id/sync_source flag(跨模块改 df-relay + 后端 events)
|
||||
- b: 前端缓解(放宽 DEAD_FACTOR / 「仅本地空才替换历史」启发式,语义脆弱)
|
||||
- c: 暂缓(MVP 低频空闲场景可忍)
|
||||
- **推荐**:**⏸️ c 暂缓**(跨模块改动 ROI 低)
|
||||
- **状态**:⏸️ 暂缓
|
||||
|
||||
#### MINIDEC-260623-07 regenerate 零调用方 + 备份组件漂移(P3 收尾)
|
||||
- **背景**:(1) useAiChat.regenerate() 零调用方(全死,已加 generating 守卫防御);(2) MdView.vue/MentionInput.vue 因绕工具组件解析 bug 被 chat 页内联,源文件保留备用但已与内联实现漂移(MdView 无 mdCache、MentionInput 是 MVP 占位)——「拆回」时会引入旧实现。
|
||||
- **决策点**:regenerate 加 UI(重发按钮)or 删?备份组件同步/删/保留?
|
||||
- **选项**:
|
||||
- a: regenerate 加重发按钮 + 备份组件同步内联实现(或删)
|
||||
- b: regenerate 删减负 + 备份组件保留标注释(预留工具 bug 修复后拆回)
|
||||
- **推荐**:**b**(regenerate 删减负,备份保留预留意图)。或 a 视移动端重发需求。
|
||||
- **状态**:✅ **随 P1-F 选 a**(2026-06-23)—— 🟡 收尾批给 regenerate 加「重发」UI 入口(对齐桌面端),故保留函数不再删;备份组件(MdView/MentionInput)保留预留注释(绕工具解析 bug,未来拆回)。
|
||||
|
||||
---
|
||||
|
||||
## workspace_root 分发适配(编译期 CARGO_MANIFEST_DIR 写死,跨机器/跨平台失效)
|
||||
@@ -200,6 +297,8 @@
|
||||
**关联**:F-260619-03 去固定根(已删 is_authorized 硬编码放行)/ projects.path 自动授权(reload_allowed_dirs)/ memory [[devflow-project-path-binding]]
|
||||
**状态**:🟡 待决策(workspace_root 运行期动态方案 a/b/c/d)。**分发前必须解决**(否则分发后 AI 文件工具全部失效)。
|
||||
|
||||
**2026-06-23 进展(BUG-260623-01)**:实测会话 6acb7f9b 暴露 write_file/append_file/rename_file 父目录校验**误用 workspace_root**(tool_registry.rs:1112/1418/1555 原用 `starts_with(workspace_root())`)→ 用户授权的其他项目目录(ai-news 等)parent 不 starts_with devflow 源码目录 → 误拒「禁止在项目目录之外创建目录」(用户授权了仍拒)。**已修**:三处改用 `allowed_dirs.is_authorized(parent)` 脱离 workspace_root。**仍写死残留**(待本决策 a/b/c/d 根治):delete_file:1482 trash 目录 / resolve_workspace_path_impl:380 相对路径 join / run_command:1791 working_dir 默认。
|
||||
|
||||
---
|
||||
|
||||
## F-260619-03 路径授权政策:工程内默认免授权(用户 2026-06-20 指令)
|
||||
|
||||
Reference in New Issue
Block a user