fix: stabilize session list and Codex imports

This commit is contained in:
shiyue
2026-07-30 18:06:39 +08:00
parent 21b10e3eb4
commit cc600bdf31
13 changed files with 1247 additions and 42 deletions

View File

@@ -0,0 +1,56 @@
# 任务计划:修复侧栏标题刷新风暴
## 目标
定位并修复子代理活跃时侧栏会话标题区域频繁刷新重绘、暂时无法点击的问题,同时建立可重复的回归验证。
## 当前阶段
阶段 4验证与交付
## 阶段
### 阶段 1确认索引与侧栏更新链路
- [x] 确认代码索引状态
- [x] 定位侧栏列表渲染、会话状态事件和子代理更新入口
- **状态:** complete
### 阶段 2复现并定位高频重绘根因
- [x] 建立事件到 DOM 更新的调用链
- [x] 确认是否存在全量重建、重复事件或无效状态更新
- **状态:** complete
### 阶段 3回归测试与修复
- [x] 先编写能覆盖状态更新风暴的回归测试
- [x] 实施最小且可维护的修复
- **状态:** complete
### 阶段 4验证与交付
- [ ] 运行相关单元测试、静态检查与构建
- [ ] 进行浏览器交互和性能验证
- [ ] 审查变更并整理结论
- **状态:** in_progress
## 关键问题
1. 哪类子代理/会话事件会触发侧栏刷新,频率和生命周期如何?
2. 侧栏是否使用 `innerHTML` 或等价方式重建全部项目分组?
3. 是否能在不牺牲实时状态的前提下保持节点身份和点击稳定性?
## 已作决策
| 决策 | 理由 |
|---|---|
| 优先验证状态更新风暴与全量 DOM 重建的组合问题 | 用户描述与截图均指向运行会话密集时的短时高频重绘 |
| 先补回归测试再改实现 | 该问题偶发,必须把触发条件固化成可重复检查 |
| 使用结构视图签名并原位更新时间 | 保留节点身份,同时不牺牲真正的顺序、标题和状态更新 |
## 遇到的错误
| 错误 | 次数 | 处理 |
|---|---:|---|
| 多次误把代理等待当成执行单元等待 | 20+ | 后续停止通用轮询,改用代理主动结果、共享工作区变更与正确协作接口 |
| 错误日志再次使用动态时间作补丁上下文 | 1 | 改为只匹配稳定表头追加记录 |
| 使用 full-history fork 同时指定 worker 角色被运行时拒绝 | 1 | 改为无历史 fork并在任务提示中要求读取 Trellis PRD、上下文和项目规范 |
| Default 模式误调用引导输入工具 | 1 | 本任务不需要用户选择,停止调用并继续既定实现流程 |
| 记录错误时使用了变化后的动态时间导致补丁上下文不匹配 | 1 | 先读取文件尾部,再基于稳定行追加记录 |