修复: 消息溯源P2切读确认完成 + 走查报告高优项
- P2 切读方案文档更新(确认批次B已上线) - query LIKE 通配符转义(project/idea/task/knowledge 4 repo) - dag.rs deep_merge null 覆盖全局配置 - dag.rs 通配 match 展开显式变体 - INDEX.md 补漏 10 个文档索引 - ARCHITECTURE.md 删除与新文档逐字重复 - coordinator.rs 加 #[deprecated] 编译守卫 - AiChat.vue 空值传播加 console.warn
This commit is contained in:
@@ -49,6 +49,8 @@
|
||||
| [F-260620-01-跨端AIChat-微信小程序-2026-06-20.md](./已编号方案/F-260620-01-跨端AIChat-微信小程序-2026-06-20.md) | F-260620-01 | 📐 草案(灵感 4495fbcd 待晋升) | 微信小程序 ↔ Rust 云后端(df-relay) ↔ DevFlow 桌面端(df-tunnel)实时同步,Rust 选型代码复用 |
|
||||
| [B-03-人工审批响应机制-2026-06-14.md](./已编号方案/B-03-人工审批响应机制-2026-06-14.md) | B-260614-03 | ✅ 已落地(B-03a) | HumanNode execute subscribe/send/select 完整审批链 |
|
||||
| [B-260616-21排查方案-2026-06-16.md](./已编号方案/B-260616-21排查方案-2026-06-16.md) | B-260616-21 | 📐 排查方案 | 工具卡片重复渲染根因(audit 重复 emit Started) + 修复方案 |
|
||||
| [F-260622-01-跨端AIChat-Phase3联调设计-2026-06-22.md](./已编号方案/F-260622-01-跨端AIChat-Phase3联调设计-2026-06-22.md) | F-260622-01 | 📐 设计 | 微信小程序跨端联调:云隧道握手 / MCP 工具路由 / DF 事件同步 |
|
||||
| [消息级溯源P2-切读方案-2026-06-28.md](./已编号方案/消息级溯源P2-切读方案-2026-06-28.md) | — | 📐 设计 | 消息级溯源 Phase 2:切读切换到 ai_messages 视图 |
|
||||
|
||||
---
|
||||
|
||||
@@ -74,6 +76,13 @@
|
||||
| [消息级溯源设计-2026-06-19.md](./专项设计/消息级溯源设计-2026-06-19.md) | 📐 设计待实施(F-260619-04) | ChatMessage.id + source_ref/audit/idea 四场景从对话级升级消息级 |
|
||||
| [全局事件数据总线-2026-06-21.md](./专项设计/全局事件数据总线-2026-06-21.md) | 📐 构想定稿待评审 | pub-sub + request-reply + 流式 reply 统一总线:跨模块解耦 / 响应式根治死等 / 跨端透传 |
|
||||
| [三层模型-流程模板与人设体系-2026-06-28.md](./专项设计/三层模型-流程模板与人设体系-2026-06-28.md) | 📐 设计 | 模板→工作流→人设三层架构:流程模板YAML定义、人设AgentPersona数据结构、三层实例化流程 |
|
||||
| [aichat体验与agent能力系统化重构-2026-06-21.md](./专项设计/aichat体验与agent能力系统化重构-2026-06-21.md) | 📐 设计 | AI Chat 体验 + Agent 能力统一重构:消息模型 / 上下文管理 / 工具路由 |
|
||||
| [查询能力补全方案-2026-06-21.md](./专项设计/查询能力补全方案-2026-06-21.md) | 📐 设计 | 查询接口能力补全:多维度筛选 / 聚合 / 跨表关联 |
|
||||
| [AST符号解析-设计-2026-06-24.md](./专项设计/AST符号解析-设计-2026-06-24.md) | 📐 设计 | AST 符号解析:代码结构提取 / 符号索引 / 跳转支持 |
|
||||
| [插件机制-设计-2026-06-24.md](./专项设计/插件机制-设计-2026-06-24.md) | 📐 设计 | 插件系统:动态加载 / 生命周期 / 权限沙箱 |
|
||||
| [AI对话目标丢失诊断-2026-06-26.md](./专项设计/AI对话目标丢失诊断-2026-06-26.md) | 📐 诊断 | AI 对话目标丢失根因分析:上下文漂移 / 意图衰减 |
|
||||
| [AI原生上下文地图与去AI化进化系统-2026-06-26.md](./专项设计/AI原生上下文地图与去AI化进化系统-2026-06-26.md) | 📐 设计 | AI 原生上下文地图:语义索引 / 去 AI 化渐进演进路径 |
|
||||
| [项目知识图谱与任务队列系统-2026-06-26.md](./专项设计/项目知识图谱与任务队列系统-2026-06-26.md) | 📐 设计 | 项目级知识图谱 + 任务队列:依赖解析 / 优先级调度 |
|
||||
|
||||
---
|
||||
|
||||
@@ -98,6 +107,7 @@
|
||||
| [意图识别层论证-2026-06-19.md](./构想审查/意图识别层论证-2026-06-19.md) | 📐 论证(供决策) | 通用前置意图识别层 8 维度论证 + 触发时机 |
|
||||
| [多主题上下文管理愿景-2026-06-19.md](./构想审查/多主题上下文管理愿景-2026-06-19.md) | 💡 远期愿景 | 无感多主题对话:主题检测前置 + 多主题多摘要(关联 F-15 / 意图识别) |
|
||||
| [多主题并存补充论证-多轮模式-2026-06-19.md](./构想审查/多主题并存补充论证-多轮模式-2026-06-19.md) | 📐 论证(供决策) | agentic 多轮模式可突破天花板,但近期结论不变 |
|
||||
| [跑题改进试验记录-2026-06-20.md](./构想审查/跑题改进试验记录-2026-06-20.md) | 📋 试验 | AI 跑题改进试验:系统 prompt 加固 / 上下文钳制 / 行为约束 |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -2,50 +2,18 @@
|
||||
|
||||
> 决策:2026-06-28 — 一次性切读 + 脚本迁移历史数据
|
||||
|
||||
## 现状
|
||||
## 现状(2026-06-28 代码核查)
|
||||
|
||||
- `ai_messages` 表 ✅ 已存在(V21 迁移)
|
||||
- `AiMessageRepo` ✅ CRUD 已实现
|
||||
- V21 已有一次性数据迁移(从 `ai_conversations.messages` JSON 读 → 写入 `ai_messages`)
|
||||
- **但当前读写路径仍走 `ai_conversations.messages` JSON 列**,`ai_messages` 表未启用
|
||||
**P2 切读已完成**。上一阶段「批次 B」已经实现了读写路径切换:
|
||||
|
||||
## 目标
|
||||
### ✅ 读路径
|
||||
`ai_conversation_switch` 已优先从 `ai_messages` 表加载(`list_by_conversation`),
|
||||
空时 fallback 旧 `messages` JSON 列。见 `conversation.rs:257-282`。
|
||||
|
||||
读/写消息完全切换到 `ai_messages` 表,删除 `ai_conversations.messages` JSON 列。
|
||||
### ✅ 写路径
|
||||
`save_conversation` 已走 `AiMessageRepo.replace_conversation`(`DELETE + INSERT` 事务原子),
|
||||
旧 messages JSON 列保留不写作备份。见 `conversation.rs` 中 `save_conversation` 实现。
|
||||
|
||||
## 涉及改动
|
||||
|
||||
### 1. 数据迁移(已有 V21,补充幂等脚本)
|
||||
|
||||
V21 迁移已有从 `ai_conversations.messages` → `ai_messages` 的逻辑。补充:
|
||||
- V21 已幂等(`INSERT OR IGNORE`),可重复跑
|
||||
- 补充校验:迁移后 `ai_messages` 行数 = 各对话 messages JSON 汇总行数
|
||||
|
||||
### 2. 切读 — 后端代码
|
||||
|
||||
| 模块 | 当前 | 改为 |
|
||||
|------|------|------|
|
||||
| `restore_from_messages` | 从 `rec.messages` JSON 反序列化 | 从 `ai_messages` 表按 `conversation_id` 查询 + seq 排序 |
|
||||
| `save_conversation` | 写 `rec.messages` JSON 列 | 写 `ai_messages` 表(insert_batch + delete_range) |
|
||||
| `ai_conversation_switch` | 返回 `rec.messages`(JSON 反序列化) | 返回 `AiMessageRepo.list_by_conversation()` |
|
||||
| `clear_context` | 读/写 messages JSON | 读写 ai_messages 表 |
|
||||
| `compress_context` | 同上 | 同上 |
|
||||
| `replace_last_active_user_content` | 同上 | 同上 |
|
||||
| messages 相关 IPC 查询 | 走 JSON 列 | 走 ai_messages 表 |
|
||||
|
||||
### 3. 清理
|
||||
|
||||
- `ai_conversations.messages` 列标记废弃(暂不删列,避免大表 ALTER 风险)
|
||||
### 剩余工作
|
||||
- `ai_conversations.messages` 列标记废弃(暂不删列)
|
||||
- 后续 V22 可选删除该列
|
||||
|
||||
### 4. 风险控制
|
||||
|
||||
- **双写保护**:切读后写入同时写 ai_messages 表 + messages JSON 列(双写期 1 周,可回退)
|
||||
- **回退方案**:撤切读 → 恢复从 messages JSON 列读
|
||||
|
||||
## 执行顺序
|
||||
|
||||
1. 实现切读:改 `restore_from_messages` / `save_conversation` / `switch_conversation` 等核心路径
|
||||
2. 运行 V21 迁移(幂等,补全遗留数据)
|
||||
3. 双写期观察(ai_messages 数据一致)
|
||||
4. 切读完成,标记 messages 列废弃
|
||||
|
||||
Reference in New Issue
Block a user