docs: update v1.27.0 release notes

This commit is contained in:
coso
2026-05-05 10:57:32 +08:00
parent eb5794553b
commit 98ddf332d7
3 changed files with 50 additions and 2 deletions
+1 -1
View File
@@ -43,7 +43,7 @@
#### 5. 会话恢复、消息投影与性能稳定性
- 新增会话详情拉取、hydration、retry、metadata sync、finalize 和切换快照控制器,把 `useAgentSession` 中的会话恢复逻辑拆成可测边界,降低切换历史会话时的竞态风险。
- 新增会话详情拉取、hydration、retry、metadata sync、finalize、post-finalize persistence 和切换快照控制器,把 `useAgentSession` 中的会话恢复逻辑拆成可测边界,降低切换历史会话时的竞态风险。
- 新增 conversation projection store、历史消息 hydration、消息渲染窗口、timeline render 和 thread timeline window 投影,减少长历史消息列表渲染和恢复路径漂移。
- 旧会话切换失败时增加可重试/可跳过分类, transient 失败不再直接破坏当前快照;不可恢复错误仍按原错误路径处理。
- MessageList 和 Agent UI 性能指标补齐旧历史内容扫描、markdown 延迟渲染、线程 item 扫描和首帧 paint 的采集与回归。
@@ -2355,3 +2355,50 @@ GUI / E2E 状态:
1. 继续 Phase 2:抽 `sessionPostFinalizePersistenceController`,把 workspace 保存、topic workspace upsert、provider preference apply 从 `finalizeResolvedTopicDetail` 主体继续移出。
2. 恢复 GUI 环境后按 `conversation-projection-acceptance.md` 采集旧会话 A/B 打开、切换与首字指标,决定是否进入 MessageList idle / worker 化。
### 2026-05-05:P3 第十三刀,Session post-finalize persistence controller
已完成:
- 新增 `src/components/agent/chat/hooks/sessionPostFinalizePersistenceController.ts`:
- `resolveSessionDetailTopicWorkspaceId`
- `resolvePersistedSessionWorkspaceId`
- `buildSessionPostFinalizePersistencePlan`
- `useAgentSession.ts` 中 `finalizeResolvedTopicDetail` 的 post-finalize 后处理决策改为委托 controller:
- `mapSessionDetailToTopic` 使用的 topic workspace 来源。
- `agent_session_workspace` 映射持久化 workspace 来源。
- runtime workspace 回写 topic 字段的条件和值。
- provider preference apply 的目标 preference。
- 新增 `sessionPostFinalizePersistenceController.test.ts`,覆盖 topic workspace 优先级、持久化 workspace 来源和完整 post-finalize plan。
主线收益:
- Phase 2 继续瘦 `finalizeResolvedTopicDetail`:会话详情 apply 后的 workspace / provider 后处理不再散落在 hook 主体里。
- workspace 相关恢复规则进一步可单测,降低旧会话恢复慢问题排查时“到底是 runtime workspace、topic snapshot 还是 shadow cache 生效”的定位成本。
- provider preference apply 的决策进入同一个 post-finalize plan,为后续继续拆 `finalizeResolvedTopicDetail` 或把 post-apply side effects 降优先级打基础。
已验证:
```bash
npm exec -- vitest run "src/components/agent/chat/hooks/sessionPostFinalizePersistenceController.test.ts" "src/components/agent/chat/hooks/sessionMetadataSyncScheduler.test.ts" "src/components/agent/chat/hooks/sessionMetadataSyncController.test.ts" "src/components/agent/chat/hooks/sessionFinalizeController.test.ts" "src/components/agent/chat/hooks/sessionSwitchSnapshotController.test.ts" "src/components/agent/chat/hooks/sessionHydrationRetryController.test.ts" "src/components/agent/chat/hooks/sessionDetailFetchController.test.ts" "src/components/agent/chat/hooks/sessionHydrationController.test.ts"
npm exec -- vitest run "src/components/agent/chat/hooks/useAsterAgentChat.test.tsx" -t "模型|权限|执行策略|metadata|stale 快照|预取|workspace|跨工作区" --hookTimeout 180000 --testTimeout 120000
npx eslint "src/components/agent/chat/hooks/sessionPostFinalizePersistenceController.ts" "src/components/agent/chat/hooks/sessionPostFinalizePersistenceController.test.ts" "src/components/agent/chat/hooks/sessionMetadataSyncScheduler.ts" "src/components/agent/chat/hooks/sessionMetadataSyncScheduler.test.ts" "src/components/agent/chat/hooks/sessionMetadataSyncController.ts" "src/components/agent/chat/hooks/sessionFinalizeController.ts" "src/components/agent/chat/hooks/sessionSwitchSnapshotController.ts" "src/components/agent/chat/hooks/sessionHydrationRetryController.ts" "src/components/agent/chat/hooks/sessionDetailFetchController.ts" "src/components/agent/chat/hooks/sessionHydrationController.ts" "src/components/agent/chat/hooks/useAgentSession.ts" --max-warnings 0
npm run typecheck -- --pretty false
```
结果:
- Post-finalize / scheduler / finalize / metadata / snapshot / retry / fetch / hydration controller:通过,`36` 个测试通过。
- `useAsterAgentChat` 模型、权限、metadata、stale 快照、预取、workspace 定向:通过,`29` 个测试通过。
- ESLint touched files:通过。
- TypeScript `tsc --noEmit --pretty false`:通过。
GUI / E2E 状态:
- 本刀未复跑 `verify:gui-smoke`,原因同前:当前 smoke 会切到独立 Rust target 全量重编,容易造成 CPU 和鼠标繁忙;本刀是纯前端 controller 抽取,先用定向行为测试收口。
- Playwright MCP 仍等待 profile 释放;不使用 isolated profile 绕过仓库规则。
下一刀:
1. 继续 Phase 2:抽 `sessionSwitchErrorController`,把 session not found、preserve current snapshot、toast/error metric 等错误恢复判断从 `useAgentSession` 中移出。
2. 或抽 `sessionHistoryPaginationController`,把完整历史分页窗口计算、stale guard 与 merge 计划从主 hook 中移出。
@@ -250,4 +250,5 @@ AgentChatWorkspace
- Phase 2 已继续抽出 `sessionMetadataSyncController`,统一 finalize 后 accessMode / provider / executionStrategy fallback patch、switch success metric source 与批量/分散 metadata sync。
- Phase 2 已继续抽出 `sessionFinalizeController`,统一 finalize 阶段 workspace restore guard、runtime/topic/shadow workspace 汇总、shadow execution strategy fallback 与最终 execution strategy override。
- Phase 2 已继续抽出 `sessionMetadataSyncScheduler`,统一 finalize 后 metadata patch 的 invoke capability guard、旧调度取消、idle 调度、stale guard、成功回写与失败回调。
- 下一刀建议继续 Phase 2:抽 `sessionPostFinalizePersistenceController`,把保存 workspace、同步 topic 字段、provider preference apply 继续从 `finalizeResolvedTopicDetail` 主体中移出;只有 E2E 指标显示 `messageListTimelineBuildMs` 仍高时才进入 worker 化。
- Phase 2 已继续抽出 `sessionPostFinalizePersistenceController`,统一 finalize 后 topic workspace、workspace 映射持久化、runtime workspace topic 回写与 provider preference apply 的决策。
- 下一刀建议继续 Phase 2:抽 `sessionSwitchErrorController` 或 `sessionHistoryPaginationController`,把错误恢复与完整历史分页状态继续从 `useAgentSession` 主体中移出;只有 E2E 指标显示 `messageListTimelineBuildMs` 仍高时才进入 worker 化。