优化: 界面交互完善与设置体验
- 审批卡尊重滚动意图,等长切换回底,排队超时按钮修活 - 带图编辑提示不静默丢,删除目标回写,切换文案消歧 - 会话键盘可达+搜索态重命名,筛选计数口径对齐 - 子任务提示正名,看板加载态 - 主题跟随系统,表单脏态拦截,密钥显隐留空提示
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
# 二期池第一批:子轨迹落库 + 来源标记(2026-10-03)
|
||||
|
||||
> 指令源:「已确定的 自主推进」。改动已完成并全量验证,**未提交**(攒批等用户令)。
|
||||
|
||||
## 目标
|
||||
|
||||
子代理轨迹从「纯内存零落库、会话结束即蒸发」改为「出口整轨迹落库」,origin=sub_agent
|
||||
标记使桌面侧栏/miniapp 列表过滤子会话——轨迹可追溯(调试金矿 + 后续轨迹树/TaskDrawer
|
||||
跳转的数据地基),不污染主会话列表。
|
||||
|
||||
## 已完成(全部验证通过)
|
||||
|
||||
| 项 | 文件 | 内容 |
|
||||
|---|---|---|
|
||||
| V44 迁移 | crates/df-storage/src/migrations.rs | ai_conversations 加 origin TEXT 列(column_exists 幂等守卫,同 V42 模式),steps 43→44,三处版本号断言同步 |
|
||||
| record 字段 | crates/df-storage/src/models.rs | AiConversationRecord.origin: Option<String>(不可变列,UPDATE 不写) |
|
||||
| 落库链路 | crates/df-storage/src/crud/conversation_repo.rs | from_row 读 origin(unwrap_or(None) 兜底,同 message_id v21 模式)+ INSERT 加列 |
|
||||
| 会话内存标记 | src-tauri .../ai/mod.rs | AiSession.conv_origins: HashMap<String,String>(与 deleted_convs 对称:init 写入、出口清理回收) |
|
||||
| save 透传 | src-tauri .../ai/conversation.rs | save 快照 lock 段取 conv_origin → record 构建落 origin(主会话恒 None) |
|
||||
| 列表过滤×2 | src-tauri .../commands/conversation.rs + remote_bridge.rs | 桌面侧栏 ai_conversation_list 与 miniapp list_conversations 同口径过滤 origin 非空 |
|
||||
| 出口落库 | src-tauri .../agentic/sub_agent.rs | 统一出口 run_sub_agent_loop:判活(deleted_convs 未重打 且 per_conv 在)→ 摘拦截 → save_conversation 整轨迹持久化 → per_conv/save_locks/conv_origins 三清;启动时 conv_origins 与 deleted_convs 对称写入;模块头文档重写为新语义 |
|
||||
|
||||
## 验证证据
|
||||
|
||||
- cargo test -p df-storage:**182+12 全绿**(含 V44 全链幂等两遍测试)
|
||||
- cargo check --workspace:0 error(2 个 warning 为工作区遗留改动自带:Emitter 未用导入、evaluate_ideas_batch 死代码,非本批)
|
||||
- cargo test -p devflow --lib:**624 过 0 失败**
|
||||
|
||||
## 顺手修的遗留半成品(同文件明确 bug,主动修原则)
|
||||
|
||||
v21 断点续迁改造批(工作区未提交遗留)新增的两个测试从未跑绿:
|
||||
1. `v21_crash_midway_resumes_missing_convs`:模拟 INSERT 3 占位符只绑 2 参数(seq 漏绑)+ 建表缺失 → 补 seq 参数 + execute_batch(V21_SQL) 前置
|
||||
2. `v21_batch_boundary_crash_resumes_remaining_batch`:建表缺失 → 同法修复
|
||||
3. `test_full_migration_on_fresh_db`:版本号断言写死 43 → 44
|
||||
|
||||
## 设计要点(为何这样落)
|
||||
|
||||
- **零新破坏性**:运行期仍零落库(deleted_convs 拦截不动),只改出口一次落库;主会话链路只多一次 HashMap get
|
||||
- **防空壳复活**:出口判活查两处(级联删除会重打 deleted_convs / 父删除会清 per_conv),任一命中放弃落库
|
||||
- **过滤双口径**:桌面 + miniapp 两处列表同 filter,前端零改动
|
||||
- Truncated/Failed 轨迹同样落库(调试价值);usage/model 落 None(宁少,轨迹树批再补)
|
||||
|
||||
## 待办(等用户令)
|
||||
|
||||
- [ ] 提交(攒批授权)→ push → 换装(一字令)
|
||||
- [ ] 后续批:AiAgentFinished 前端展示(前端零消费已确认)→ 子代理审批挂起 → 轨迹调用树 → TaskDrawer 查看会话跳转
|
||||
Reference in New Issue
Block a user