chore: rebuild release package

This commit is contained in:
shiyue
2026-07-15 15:00:58 +08:00
parent 141a266f34
commit 614e222f14
11 changed files with 631 additions and 52 deletions

View File

@@ -15,3 +15,9 @@
- 静态源码契约不足以证明多 spawn 行为;需要提取并执行实际纯函数源码,覆盖独立 prompt 与 wait/close 保留。
- 后续状态会携带归一化空标题字段;合并时只有新状态含可读标题才允许覆盖旧标题。
- 归一化 `entry.label` 可能由 prompt 派生,必须携带 `hasReadableSourceTitle` 标记区分协议标题和派生标题。
- 当前真实会话持久化数据只剩一个 `receiverThreadIds: [] / agentsStates: {}``wait` 工具,说明不能只依赖同 ID 的历史工具快照。
- `closedCollabAgentIds` 只能标记已知 ID 的状态;需要额外缓存 `ccweb_mcp_child_agent_update.child` 的最后结构化状态,才能在空 wait/close 载荷中重建卡片。
- 当前工作树另有“放开图片数量限制”改动,涉及 `CHANGELOG.md``README*.md``public/app.js``server.js``scripts/regression.js`,本修复必须限制在不重叠代码区并避免格式化整文件。
- 独立复核确认实时缓存修复后,`renderMessages()` 会清空缓存;若历史只有空 close/wait刷新仍退化为工具 ID。
- 服务端 `updatePersistedCcwebMcpChildTool` 只按 `child.spawnToolId` 查找工具;真实会话缺少该 spawn 工具时返回 null未把 child 状态写入历史。
- 后端兜底应只选择最近的 `collab_agent_tool_call`,不得把 child 合并进普通工具。

View File

@@ -14,3 +14,11 @@
- 2026-07-11语法、diff、完整 regression 和独立复核全部通过;进入交付清理。
- 2026-07-11最终 diff 与行号核验完成。实时服务在线但两次 5 秒请求无响应,环境无 Playwright/Chromium因此未截图且未重启服务。
- 2026-07-11Trellis 规范沉淀判断:本次为局部子代理卡片行为,核心边界已固化在行为回归中,没有形成跨模块通用约定,不更新 `.trellis/spec/`
- 2026-07-15用户反馈关闭后卡片变成“子代 0 个”。定位到同 ID 关闭更新覆盖旧工具快照,开始修复。
- 2026-07-15真实会话仅持久化空 wait 工具;方案调整为缓存 child 结构化状态,并补充工作树保护和普通工具回归约束。
- 2026-07-15Phase 7 计划复审通过,进入关闭空载荷行为回归。
- 2026-07-15行为回归覆盖 close/wait 空载荷及普通工具隔离,进入状态缓存实现。
- 2026-07-15完成 threadId 状态缓存和 toolUseId 作用域映射,进入关闭卡片重建核验。
- 2026-07-15空 close/wait 卡片重建实现与完整回归通过,进入独立复核。
- 2026-07-15独立复核发现刷新后历史仍丢失追加服务端持久化兜底修复。
- 2026-07-15服务端在 spawnToolId 缺失时回退最近协作工具,刷新闭环回归及最终独立复核通过。

View File

@@ -12,7 +12,7 @@
## 当前阶段
已完成
Phase 7
## 阶段
@@ -40,6 +40,19 @@
- **Status:** complete
### Phase 7: 修复关闭后子代理卡片消失
- [ ] 覆盖关闭更新缺失结构化状态的回归场景
- [ ] 缓存子代理最后一次结构化状态
- [ ] 用已关闭 ID 和状态缓存重建关闭卡片
- [ ] 保留已关闭子代理的标题、简介与线程 ID
- [ ] 验证关闭状态、数量和卡片持续可见
- [ ] 验证普通工具调用不进入子代理合并路径
- [ ] 找不到原 spawn 工具时,将 child 状态合并到最近的协作工具历史记录
- [ ] 刷新/历史重渲染后仍保留标题、简介、线程 ID 和关闭状态
- [ ] 实施前后核对工作树,只改子代理相关代码与测试
- **Status:** in_progress
## 完成标准
-`label → title → nickname → name` 选择第一个非通用、非线程 ID 的协议标题。
@@ -57,12 +70,15 @@
2. 通用标题从各自 prompt 提炼。
3. 多代理不同 prompt 的标题和简介不串联。
4. 无 prompt 时回退短线程 ID。
5. 关闭更新即使不携带 `receiverThreadIds/agentsStates`,也保留原子代理卡片并显示“已关闭”。
## 范围约束
- 不新增依赖。
- 不改变后端协议。
- 不重启服务。
- 不覆盖当前工作树中 `CHANGELOG.md``README*.md`、图片附件数量相关 `public/app.js` / `server.js` / `scripts/regression.js` 改动。
- 允许定点修改 `server.js` 的子代理工具持久化函数,但不得触碰图片附件处理区。
## 错误记录
@@ -76,3 +92,6 @@
| 多文件补丁缺少合法 hunk 边界 | 1 | 拆分为独立小补丁应用 |
| prompt 派生 label 被误判为协议标题 | 1 | 归一化阶段携带标题来源标记并补行为回归 |
| 规划文档阶段格式未被完成检查器识别 | 1 | 改为标准 Phase 三级标题与完成状态字段格式 |
| 空 wait/close 工具缺少可渲染的子代理状态 | 1 | 缓存 `msg.child` 状态,并用已关闭 ID 重建关闭卡片 |
| 测试先行缺少 `rememberCollabAgentState` | 1 | 实现按 threadId 缓存 helper 后回归通过 |
| 实时缓存无法覆盖刷新后的历史重渲染 | 1 | 原 spawn 工具缺失时把 child 合并进最近协作工具并持久化 |