修复: DeepSeek 400 全量扫描 + 队列 per-conv 隔离
- openai_compat: 扫描所有 assistant 消息剥离 orphan tool_calls(原仅查末条) - queue 加 conversationId 字段,按会话精准 drain - regenerate/editMessage 只清本会话排队消息 - newConversation 保留旧会话排队消息 - AiError 只清出错会话的队列项
This commit is contained in:
47
PROGRESS.md
47
PROGRESS.md
@@ -1031,17 +1031,46 @@
|
||||
|
||||
---
|
||||
|
||||
### 2026-06-28 — 最新对话 DB & Log 诊断:审批死锁 + Windows 兼容 + 标题 LLM 失败
|
||||
### 2026-07-19 — ConvStateStore 无锁重构 + 前端 P0 修复 + DeepSeek 400 修复 + 标题策略改进
|
||||
|
||||
> 分析来源:`devflow-trace.log` + `devflow-dev.db` 最新对话 `d9aef24f`(语音输入应用需求)。
|
||||
> 7 次工具连续失败后 L1 断路器熔断,1 条 pending 审批导致全链路死锁。
|
||||
> 本轮(Zed Agent 接管)完成 B-Phase 全量迁移、前端 P0、多轮 bug 修复、代码审查清理。
|
||||
> 代码变更 50 文件,+2454/-1251 行,未提交。
|
||||
|
||||
- [ ] **P0 — 审批 pending 超时自动取消**:`try_continue` 入口清理 >5min 的 pending。
|
||||
- [ ] **P0 — `create_project` 加 auto_create_dir**:消除建项目→建目录→绑定的死锁链。
|
||||
- [ ] **P1 — `run_command` 失败追加 shell 适配提示**:引导 LLM 改正 PowerShell 命令。
|
||||
- [ ] **P1 — PowerShell 反斜杠自动转义**:消除 `os error 123`(Unicode 转义误识别)。
|
||||
- [ ] **P2 — 标题摘要合并连续同 role**:避免标题 LLM 的 GLM 1214 拒绝。
|
||||
- [ ] **P3 — migration V33 + L0-handshake 防抖**。
|
||||
**B-Phase ConvStateStore 无锁重构(根治 session lock 竞争)**
|
||||
|
||||
| Phase | 内容 |
|
||||
|---|---|
|
||||
| Phase0-1 | DashMap 骨架 + AppState 接入(Claude Code 完成)|
|
||||
| Phase2 | guard/L0/chat IPC 写侧全量切 conv_states |
|
||||
| Phase3 | 读侧迁移 + 删 PerConvState.conv_state 字段 → 单源收敛 |
|
||||
| Phase4 | conversation_delete 同步 conv_states.remove |
|
||||
|
||||
**前端修复**
|
||||
- P0-1: watchdog `convStates.clear()` → `delete(activeConversationId)`
|
||||
- P0-2: switch/deleteConversation 入口加 `clearAllApprovalTimers()` + 注释修正
|
||||
- 每轮 token 独立显示(🔣 XXX in · YYY out)
|
||||
- STREAM_TIMEOUT_MS 45s → 90s
|
||||
|
||||
**后端修复**
|
||||
- DeepSeek 400「insufficient tool messages」→ 末尾 orphan tool_calls 自动剥离
|
||||
- `env_snapshot.rs` 5s 超时兜底(Windows Store alias 卡死)
|
||||
- L0 握手始终推 AiConvStateChanged{idle} 防前端状态残留
|
||||
- `openai_compat.rs` send 阶段 60s timeout
|
||||
- 原生 SSE 解析器替代 eventsource-stream(Windows 兼容)
|
||||
- run_agentic_loop 20s AiHeartbeat 保活
|
||||
- grep 正则自动修复(未分组 `|` → `(?:...)` 包裹)
|
||||
- read_file 路径不存在提示 list_directory
|
||||
|
||||
**标题策略改进**
|
||||
- extract_title: 取前 5 条 user 消息中最长的一条(替代第一条截取)
|
||||
- extract 不再落库 → LLM 每次都有重试机会,不再永久锁定差标题
|
||||
|
||||
**代码审查清理**
|
||||
- 修复 lib.rs 重复 handler 注册(🔴 严重)
|
||||
- 清理 unused import / [STUCK] 调试日志 / 过时注释
|
||||
- 340 tests passed, vue-tsc clean
|
||||
|
||||
**待提交**:50 文件改动,含 B-Phase 重构 + 前端 P0 + 多轮 bug 修复
|
||||
|
||||
## 七、开发约定
|
||||
|
||||
|
||||
Reference in New Issue
Block a user