318 lines
23 KiB
Markdown
318 lines
23 KiB
Markdown
# 验收问题收集:记忆、智能体、导航、关于、Git 与上下文
|
||
|
||
日期:2026-10-17
|
||
范围:复刻待办清单 14、15、16、17、19、21
|
||
约束:不改业务代码、测试或 TODO;WorkBuddy 结论只引用现有 REA Evidence,不把已知 9223 `endpoint_unreachable` 推断成 REA 全部不可用。
|
||
|
||
## 本轮结论
|
||
|
||
| 条目 | 当前结论 | 需要关注的内容 |
|
||
| --- | --- | --- |
|
||
| 14 记忆与进化 | **P2 实际问题** | 首次只切换“对话记忆”会错误把“本地记忆与技能”偏好写成开启;本地执行器未接,不把偏好错误写成记忆内容丢失。 |
|
||
| 15 智能体团队管理 | **当前范围主体通过** | 持久化、重开恢复、深浅主题、布局均通过;子代理调度和云端服务按用户要求不计 Bug。另有首帧默认值闪烁和键盘交互测试缺口。 |
|
||
| 16 移除助理与设备连接 | **当前范围通过** | 四个移除入口均不在导航、搜索和渲染页面中;旧深链接回退有效。`settings-nav` 的失败是脚本仍把 memory 当未接入。 |
|
||
| 17 移除数据管理与应用管理 | **当前范围通过** | 与 16 同一实现和回归;没有发现业务缺陷。 |
|
||
| 19 关于与获取帮助 | **当前范围通过,有证据缺口** | 布局、版本、深浅主题和“无外跳链接”通过;独立更新窗口未实现,但外跳/更新服务按本轮约束不计 Bug。获取帮助深色态和按钮点击无动作缺直接断言。 |
|
||
| 21 Git 分支与会话上下文 | **不能验收为 1:1 完成** | 有 P2 功能缺口、准确性风险、实现限制、布局风险和证据缺口:Chat Completions usage 未接、切模型样本来源未绑定、detached HEAD 保守不渲染、五类占比和窗口控件未实现、紧凑分支未启用、浮层碰撞未验收、刷新与状态未验收。 |
|
||
|
||
## 分类口径
|
||
|
||
- **实际问题**:源码行为可确定地产生错误、错误状态或与验收条件冲突。
|
||
- **功能未接**:界面已存在但能力没有实现;若是用户本轮明确排除的云端、子代理调度或外跳链接,不列为 Bug。
|
||
- **证据缺口**:原版行为或视觉尚未取得 REA 证据,当前不能宣称 1:1。
|
||
- **验收脚本维护缺陷**:产品行为符合当前基线,但专项脚本仍检查旧 DOM、旧支持列表或旧默认状态。
|
||
- **测试盲区**:已有断言通过,但没有覆盖验收条件中的关键状态或副作用。
|
||
|
||
## 14. 记忆与进化
|
||
|
||
### 14-1 [P2 实际问题] 首次切换“对话记忆”会顺带把“本地记忆与技能”偏好写成开启
|
||
|
||
触发条件:
|
||
|
||
1. 新用户配置或 `config.json` 中尚无 `memoryPreferences`。
|
||
2. 打开“设置 → 记忆与进化”,页面正确显示“对话记忆”开启、“本地记忆与技能”关闭。
|
||
3. 只切换“对话记忆”。
|
||
|
||
源码原因:
|
||
|
||
- `src/shared/memory.ts:30` 把两个默认值定义为 `conversationMemory: true`、`localMemorySkills: false`。
|
||
- `src/shared/memory.ts:38` 却用 `value?.localMemorySkills !== false` 归一化;传入 `undefined` 时返回 `true`,与声明的默认值不一致。
|
||
- `src/main/memory-settings.ts:34` 在更新前直接调用 `normalizeMemoryPreferences(await getStoredMemoryPreferences())`,没有先合并 `DEFAULT_MEMORY_PREFERENCES`。
|
||
- 因此第一次只更新任一项偏好时,`localMemorySkills` 会被归一化成 `true`,随后写入 `config.json`。
|
||
- `src/renderer/src/components/MemorySettingsPanel.tsx:26` 的初始视图也使用同一个函数;在真实数据返回前,“本地记忆与技能”会短暂显示开启。
|
||
|
||
影响:
|
||
|
||
- 用户没有操作“本地记忆与技能”,其本地偏好却被持久化修改。
|
||
- 现有 `.tmp/memory-settings-poBX32/report.json` 虽然 PASS,但没有在“只切换对话记忆”后断言第二项仍为关闭。
|
||
|
||
边界:
|
||
|
||
- 当前“本地记忆与技能”自动记录执行器尚未接入,因此没有证据表明本次偏好误写已经造成记忆正文、工作记录或技能数据丢失。
|
||
- 本项定级为 P2 偏好写入副作用,不做 P1 数据损坏判断。
|
||
|
||
独立复核结果:
|
||
|
||
```json
|
||
{"empty":{"conversationMemory":true,"localMemorySkills":true},"after":{"conversationMemory":false,"localMemorySkills":true}}
|
||
```
|
||
|
||
建议回归:
|
||
|
||
- 空配置加载后断言两项分别为 `true`、`false`。
|
||
- 只切换 `conversationMemory`,读取 IPC 返回值和 `config.json`,断言 `localMemorySkills` 仍为 `false`。
|
||
- 反方向只切换 `localMemorySkills`,断言 `conversationMemory` 不变。
|
||
- 在延迟 IPC 下断言首帧不会显示错误的本地记忆开关状态。
|
||
|
||
### 14-2 [P2 验收缺口] 编辑保存没有忙碌态、重复提交保护和成功反馈
|
||
|
||
`MemorySettingsPanel.tsx:368` 的 `saveEdit` 没有独立 busy 状态,保存按钮不改变文案也不禁用;双击可产生并发写入。TODO 也已记录原版“更新中/成功 toast”没有源码级等价。该问题不影响现有专项 24 项 PASS,但未覆盖真实慢写入和失败后重复点击。
|
||
|
||
### 14-3 [证据缺口] 原版重置弹窗、自动记忆和服务流转仍未验证
|
||
|
||
- 重置弹窗目前按原版共享 Modal 源码复原,未取得原版运行态逐像素证据。
|
||
- 账户侧自动生成、每夜整理、更新时间和服务端编辑流转未接入。按用户“云端服务先不管”的边界,这些不列为本轮 Bug,但当前页面仍展示“每晚自动整理更新”等表述,不能对外宣称该能力已实装。
|
||
- 打开/关闭动画、窄窗口、刷新失败和所有错误 toast 还没有逐帧验收。
|
||
|
||
## 15. 智能体页面:团队管理
|
||
|
||
### 15-1 [P3 实际问题] 已存禁用值在首帧仍按“开启”渲染
|
||
|
||
`AgentsSettingsPanel.tsx:151` 使用 `view?.teamManagement ?? true`。当持久化值为“禁用”且 IPC 返回较慢时,页面会先显示“开启”,返回后再切成“禁用”;测试在固定等待后读取,未观察首帧。该问题不会覆盖持久化结果,但属于可见状态闪烁,也不利于逐像素验收。
|
||
|
||
建议回归:
|
||
|
||
- 人为延迟 `agents:get`,断言加载前不显示错误的“开启”值,或使用已确认的原版加载骨架。
|
||
- 加载完成前禁用下拉,避免用户基于默认值误操作。
|
||
|
||
### 15-2 [测试盲区] 当前专项覆盖面有限
|
||
|
||
- `.tmp/agents-settings-YLCzhi/report.json` PASS,当前实际验证了布局、三枚图标、下拉持久化、重开恢复、禁用标注和深浅主题。
|
||
- 没有验证下拉的 Escape、外部点击关闭、键盘选择、加载态、重复快速更新和 IPC 失败后的最终值。
|
||
- `teamManagement` 只在设置页持久化,代码库中没有消费者;这符合“子代理调度先不管”的明确排除条件,不列 Bug。
|
||
- 经济模式只还原开关外观,浏览器扩展按钮只是禁用的本地入口。前者属于功能未接;后者涉及外跳/安装服务,按当前约束不列 Bug,但都不能计入完整 1:1 功能验收。
|
||
|
||
## 16. 移除助理与设备连接
|
||
|
||
### 16-1 [当前范围通过]
|
||
|
||
- `SettingsDialog.tsx:29` 的移除列表包含 `claw`、`deviceConnections`、`dataManagement`、`buddyApps`。
|
||
- `SettingsDialog.tsx:32` 依据该列表生成 12 项可见导航。
|
||
- `SettingsDialog.tsx:35` 对旧深链接统一回退到模型页。
|
||
- `SourceSettingsNavigation.tsx:17` 的搜索结果先按 `visibleTabs` 过滤,因此移除项不会通过搜索重新出现。
|
||
|
||
本轮 `settings-nav` 实际产品状态符合要求:助理、设备连接、数据管理、应用管理均不在 DOM、标签或搜索结果中;旧深链接 `claw`、`dataManagement` 正确回退。布局差异仅是移除条数后导航不再溢出,条目宽度从原版溢出态的 190px 变为当前内容宽 200px;现有 CSS 没有人为补滚动条槽位,符合已有证据。
|
||
|
||
### 16-2 [P2 验收脚本维护缺陷] `verify-settings-nav` 仍把 memory 当“暂未接入”
|
||
|
||
当前 `.tmp/settings-nav-grP9jC/report.json` 为 19 项检查、3 项失败。失败项全部来自旧期望:
|
||
|
||
- `scripts/verify-settings-nav.cjs:128` 构造 `expectedDisabled` 时仍包含 `memory`。
|
||
- 脚本期望启用项时仍排除 `memory`;实际产品已启用并渲染 `MemorySettingsPanel`。
|
||
- 实际导航为 9 个启用项:`settings`、`appearance`、`keyboardShortcuts`、`personalization`、`memory`、`extensions`、`models`、`helpFeedback`、`getHelp`;未接入项只剩 `account`、`subscriptionUsage`、`securityCenter`。
|
||
|
||
结论:这是脚本断言陈旧,不是 16/17 产品或 14 记忆页回归。更新专项时应把 memory 从 disabled 期望移到 enabled 期望。
|
||
|
||
## 17. 移除数据管理与应用管理
|
||
|
||
### 17-1 [当前范围通过]
|
||
|
||
16 与 17 共用同一份移除列表、深链接归一化、搜索过滤和真实窗口回归。没有发现数据管理或应用管理残留入口;没有删除本地会话、安装内容或其他用户数据。
|
||
|
||
### 17-2 [证据缺口]
|
||
|
||
`verify-settings-nav` 对旧深链接实际执行了 `claw` 和新窗口 `dataManagement`,对 `deviceConnections`、`buddyApps` 只通过同一个 `REMOVED_SETTINGS_TABS.includes()` 分支静态覆盖。实现本身没有分叉,风险低;若要把四个入口逐项纳入验收,可补两个启动参数场景。
|
||
|
||
## 19. 关于与获取帮助
|
||
|
||
### 19-1 [当前范围通过]
|
||
|
||
`.tmp/about-help-settings-WFvFHM/report.json` PASS。当前实现满足:
|
||
|
||
- 两页 638×620 内容区、顶部卡片、按钮、二维码占位和页脚主几何通过。
|
||
- 版本来自真实 `window.ycode.app.info().version`。
|
||
- 页面没有 `<a href>`,所有会跳向 WorkBuddy 的入口均被禁用并说明未配置。
|
||
- 深浅主题 token 已在关于页直接验证。
|
||
|
||
### 19-2 [非本轮 Bug,功能未接] “检查更新”只保留禁用外观
|
||
|
||
`AboutHelpSettingsPanel.tsx:69` 没有接更新通道,原版独立软件更新窗口也未复刻。用户本轮要求不复刻外跳链接,并明确排除外部服务;因此不列生产 Bug。若未来需要完整功能 1:1,需要单独接入 YCode 的更新源、版本检查、下载/重启状态和错误恢复。
|
||
|
||
### 19-3 [测试盲区]
|
||
|
||
- 当前专项仅直接测了“关于”深色;“获取帮助”深色由其共享样式推导,未单独断言。
|
||
- 专项读取了 `aria-disabled` 和标题,但没有真实点击并断言窗口 URL、窗口数量、设置页状态均不变。
|
||
- “检查更新”原版独立窗口只有“已是最新版”的 REA 观察,没有完整更新流程证据。
|
||
|
||
## 21. 对话框 Git 分支与会话上下文信息
|
||
|
||
### 21-1 [P2 文档验收缺陷] checklist 已勾选“完成”,但同一段明确写明关键状态未采集
|
||
|
||
`docs/复刻待办清单-2026-10-17.md:616` 勾选了“核对 detached HEAD、无首次提交、非仓库、检测失败”,同文件 `:632` 和 `:657` 又明确说原版这些状态未覆盖。`:619` 勾选了“浅色/深色及窄窗口布局”,`:655-656` 又说明五类占比、窗口控件和紧凑分支未实现。当前完成标记高于实际证据,不能作为 1:1 验收依据。
|
||
|
||
### 21-2 [实现限制/原版证据待补] detached HEAD 短 SHA 在数据层已算出,UI 层采用保守隐藏
|
||
|
||
- `src/main/git.ts:51` 在 detached HEAD 时执行 `rev-parse --short HEAD`,并在 `:52` 返回 `head`。
|
||
- `scripts/verify-git-branch.cjs:78` 只验证了这个后端返回值。
|
||
- `ComposerContextInfo.tsx:62` 只保留 `info.branch`。
|
||
- `ComposerContextInfo.tsx:63` 在 branch 为空时直接返回 `null`,完全没有使用 `info.head`。
|
||
|
||
结果:真实 Git 检测通过,但界面在 detached HEAD 下不展示短 SHA。源码注释和 TODO 已明确这是原版状态未采集时的保守策略,因此不能认定为生产业务 Bug。可以确定的问题是:`head` 回退目前未被 UI 使用,属于实现限制;要实现原版等价,仍需 REA 补 detached HEAD 的运行时表现。
|
||
|
||
### 21-3 [P2 功能缺口] 非 OMP 的 Chat Completions 回退未解析上游 `usage`
|
||
|
||
`src/main/gateway/index.ts:120` 到 `:159` 只解析文本、reasoning、工具调用和 finish reason,从未读取 SSE payload 中的 `usage`。因此 OpenAI 兼容 `/chat/completions` 即使返回:
|
||
|
||
```json
|
||
{"usage":{"prompt_tokens":128,"completion_tokens":2,"total_tokens":130}}
|
||
```
|
||
|
||
也不会产生 `GatewayDelta { type: "usage" }`,用量环保持“无法获取”。
|
||
|
||
独立纯测试实际输出:
|
||
|
||
```json
|
||
[{"type":"text","text":"ok"},{"type":"finish","reason":"stop"}]
|
||
```
|
||
|
||
现有 `.tmp/composer-context-Jbp2ol/failure.json` 在失败前 41/41 检查通过,但它走的是真实 OMP;OMP 自己从助手消息读取 usage,不能证明备用网关已解析。TODO `:658` 虽记录了 Chat Completions 缺口,但 checklist `:619` 仍被勾选,且当前专项没有网关回退用例。
|
||
|
||
### 21-4 [P2 准确性风险] 切换模型后未绑定 token 样本来源,可能沿用旧样本并换用新模型分母
|
||
|
||
- `src/renderer/src/stores/chat.ts:41` 的 `sessionUsage` 只按 sessionId 存储。
|
||
- `chat.ts:421` 收到 usage 后只写 `sessionUsage[sessionId]`。
|
||
- `chat.ts:164` 到 `:169` 切换现有会话模型时没有清除或标记旧用量。
|
||
- `ChatPane.tsx:208` 立即用新模型的 `maxInputTokens` 作为分母。
|
||
|
||
静态触发路径:模型 A(64K 窗口)跑一轮得到 12,800 tokens,切换到模型 B(128K 窗口),不发送新消息。按当前状态关联可推导界面会把 A 的 12,800 除以 B 的 128K,显示 10%,而不是保留 A 的 20%,也不是显示“新模型尚无真实用量”。
|
||
|
||
边界:本轮没有真实 UI 复现该切换时序,也不能仅凭现有 REA 证据断言原版在相同情况下采用何种状态。当前只能确定为 P2“用量样本未绑定模型/窗口”的准确性风险,需补真实 UI 用例和原版对照后才能判断是否存在行为差异。
|
||
|
||
### 21-5 [P2 功能/验收缺口] 重启后已有会话没有真实 usage 可恢复
|
||
|
||
`sessionUsage` 仅是 renderer 内存状态,初始值在 `chat.ts:126` 为空对象,代码库没有将它写入 `sessions.json` 或在打开会话时恢复。应用重启后,历史消息仍在,但下一次 usage 事件前无法展示上一轮真实用量。
|
||
|
||
现有验收没有重启应用或重新载入会话。若原版也要求新回合才能显示,此处属于证据缺口;若“已有会话”验收要求保留真实 context 信息,则这是实际功能缺口。
|
||
|
||
### 21-6 [P2 功能未接] 五类上下文占比固定为“—”
|
||
|
||
`ComposerContextInfo.tsx:172` 到 `:177` 渲染五个分类,但每项 value 都是固定字符串 `—`。TODO `:655` 明确承认分类统计无法获得。圆环总用量可以是真实的,但浮层的系统提示词、工具及子智能体、对话消息、MCP、技能拆分并没有实现,不能将整个浮层计为 1:1 数据完成。
|
||
|
||
### 21-7 [P2 功能未接] `__window-control` 只有 CSS,没有 JSX
|
||
|
||
`src/renderer/src/workbuddy/composer/context-info/source.css:330` 保留了 `.cr-context-usage-popover__window-control` 样式,但 `ComposerContextInfo.tsx:149` 的浮层内容没有该节点。原版内容也未采集,因此目前缺少一整块可能的上下文窗口控制/说明界面。
|
||
|
||
### 21-8 [P2 功能未接] 紧凑分支标签没有触发条件
|
||
|
||
`source.css:48` 定义了 `._branchLabelCompact_jdvlk_274` 的 32px 紧凑形态,`ComposerContextInfo.tsx:65` 始终只输出正式类名,没有根据宽度、容器空间或窗口状态添加 compact 类。窄窗口下不会进入原版紧凑形态;原版触发阈值仍是证据缺口。
|
||
|
||
### 21-9 [P2 布局风险/待验收] 浮层使用固定上方右对齐,未见 collision flip/shift
|
||
|
||
`source.css:144` 到 `:157` 把 280px 浮层固定为 `bottom: calc(100% + 8px); right: 0`。TODO `:654` 说明原版由 floating-ui 定位,YCode 没有逐像素核对。
|
||
|
||
风险:矮窗口、窄窗口、窗口边缘或输入区上方空间不足时,固定浮层存在越出窗口的可能。当前只通过静态 CSS 确认没有 flip/shift 处理,尚未真实复现裁切,因此不算已确认越界。当前专项只在 1336×902 的正常位置测量,没有覆盖边界翻转和横向平移。
|
||
|
||
### 21-10 [P2 测试盲区] 分支刷新时机和关键 Git 状态没有 UI 验收
|
||
|
||
`ComposerContextInfo.tsx:27`、`:47`、`:48` 使用 20 秒轮询和 window `focus` 刷新,原版刷新时机未采集。测试只验证初始分支,没有:
|
||
|
||
- 在外部/同一窗口终端执行 checkout 后,观察标签是否在预期时间内刷新;
|
||
- 切换两个不同 `cwd` 的会话,确认没有旧请求串线;
|
||
- 覆盖 detached HEAD、无提交仓库、非 Git 目录、git 缺失或超时的 UI 行为;
|
||
- 新建任务从无 `sessionId` 到首条消息创建会话后的标签出现时机。
|
||
|
||
后端 `.tmp/audit19-20261017-165014/verify-git-branch.log` 当前 6/6 PASS;它验证的是 `readGitBranch`,不能替代上面的 UI 验收。
|
||
|
||
### 21-11 [P2 验收脚本维护缺陷] `verify-composer-context-info` 等待已不存在的 `.segmented`
|
||
|
||
当前专题在 `.tmp/composer-context-Jbp2ol/failure.json` 中保存了失败前 41 项检查,41 项全部 PASS,随后在 `phase: dark-theme-via-native-settings` 超时:
|
||
|
||
```text
|
||
Timeout: appearance panel
|
||
scripts/verify-composer-context-info.cjs:330
|
||
```
|
||
|
||
原因:
|
||
|
||
- 脚本 `:330` 等待 `.segmented`。
|
||
- 脚本 `:331`、`:346` 仍点击 `.segmented__item`。
|
||
- 当前 `AppearanceSettingsPanel.tsx:47-53` 使用 `.appearance-card-grid` 和带 `aria-label="深色"/"浅色"` 的 `.appearance-card`。
|
||
- 其他新脚本 `verify-appearance-settings.cjs` 与 `verify-desktop-appearance.cjs` 已使用当前主题卡选择器。
|
||
|
||
结论:这是验收脚本维护缺陷,不是 21 的产品回归。失败前已真实覆盖分支标签、复制、32×32 用量环、真实 OMP usage、tooltip、浮层、五类占位和浅色状态;未完成当前构建的深色段。历史 `.tmp/composer-context-lEIWRF/report.json` 曾完成 47 项并 PASS,但不能代替本轮构建完成深色复跑。
|
||
|
||
### 21-12 [测试盲区] 当前专项未覆盖模型切换、重启和回退网关
|
||
|
||
现有通过路径是“单个 Git 仓库 + 单个会话 + 真实 OMP + Chat Completions 形态的受控上游”。它没有覆盖:
|
||
|
||
- OMP 不可用后的自建网关;
|
||
- Responses 协议回退;
|
||
- 切模型后 usage 与分母的配对;
|
||
- 应用重启后的历史 usage;
|
||
- 五类真实占比;
|
||
- 窗口控件;
|
||
- 紧凑分支;
|
||
- 矮/窄窗口浮层定位;
|
||
- 外部 branch change;
|
||
- detached/unborn/non-Git UI。
|
||
|
||
因此“真实 OMP 主路径 PASS”不能推导出 21 已全量 1:1。
|
||
|
||
## 本轮专项验收结果
|
||
|
||
逐项 checks 与 report 路径汇总:`.tmp/audit19-20261017-165014/summary.json`
|
||
运行顺序与退出码汇总:`.tmp/audit19-20261017-165014/results.json`
|
||
|
||
| 脚本 | 结果 | 说明 |
|
||
| --- | --- | --- |
|
||
| `verify-memory-settings` | PASS | `.tmp/memory-settings-poBX32`;没有覆盖 14-1 的默认值副作用。 |
|
||
| `verify-agents-settings` | PASS | `.tmp/agents-settings-YLCzhi`;当前范围主链路通过。 |
|
||
| `verify-settings-nav` | FAIL:3 个旧断言 | `.tmp/settings-nav-grP9jC/report.json`;实际移除入口与回退均通过,memory 旧期望错误。 |
|
||
| `verify-about-help-settings` | PASS | `.tmp/about-help-settings-WFvFHM`。 |
|
||
| `verify-git-branch` | PASS | 6/6;只测后端 Git 检测。 |
|
||
| `verify-composer-context-info` | 未完成当前构建深色段 | 前 41/41 checks PASS;旧 `.segmented` 选择器超时,不是业务回归。 |
|
||
|
||
全量运行结果为 19 个脚本中 17 通过、2 失败;两个失败均已定位为验收脚本维护缺陷,没有因此误报生产功能坏。
|
||
|
||
本轮可直接确认的检查数:
|
||
|
||
- `verify-memory-settings`:24/24 PASS,但没有覆盖“只切换对话记忆时不得修改本地记忆偏好”的事务副作用。
|
||
- `verify-agents-settings`:17/17 PASS。
|
||
- `verify-about-help-settings`:15/15 PASS。
|
||
- `verify-git-branch`:6/6 PASS,仅覆盖主进程 Git 检测。
|
||
- `verify-settings-nav`:16/19 PASS;其余 3 项是 memory 支持状态更新后的旧预期,16/17 的移除、搜索和深链接回退检查均通过。
|
||
- `verify-composer-context-info`:当前构建在失败前 41/41 PASS;深色主题段因旧选择器未执行,不能写成当前构建 47/47 完成。
|
||
|
||
分类汇总:
|
||
|
||
- **已确认且本轮发生**:14-1 偏好误写;Chat Completions 回退不解析 usage。
|
||
- **静态可证、尚需真实 UI 复现**:切模型后的 token/分母来源未绑定。
|
||
- **保守实现或原版证据待补**:detached HEAD、无提交、非 Git、检测失败的展示。
|
||
- **已知功能未接**:五类占比、窗口控件、紧凑分支。
|
||
- **仅静态布局风险**:浮层 collision flip/shift。
|
||
- **验收脚本维护缺陷**:memory 旧期望和 `.segmented` 旧选择器。
|
||
|
||
## 建议的后续验收用例
|
||
|
||
1. 记忆默认值事务:空配置、只更新 conversationMemory、只更新 localMemorySkills、慢 IPC 首帧。
|
||
2. 智能体加载态:已存 `teamManagement=false` 时延迟 get,首帧不得显示“开启”;下拉补 Escape、外部点击、键盘和失败恢复。
|
||
3. 导航脚本更新:把 memory 加入 enabled 期望,从 disabled 与“暂未接入”计数中移除。
|
||
4. 关于/帮助:补获取帮助深色页;真实点击所有禁用动作,断言无新窗口、URL 不变、无 IPC 调用。
|
||
5. Chat Completions usage:强制 OMP 不可用,由备用网关返回带 usage 的 SSE,断言渲染环更新。
|
||
6. Model switch:模型 A 产生真实 usage 后切到不同窗口大小的模型 B,断言旧样本失效或明确绑定原始模型。
|
||
7. Existing session restart:保存真实 usage 后重启,断言原版要求的显示状态;若不能恢复,必须显示“暂无本模型用量”。
|
||
8. Git UI states:detached、unborn、non-Git、git unavailable 分别截图并断言文案/显示。
|
||
9. Git refresh:运行中外部 checkout,记录标签更新延迟和旧会话隔离。
|
||
10. Responsive context UI:至少 1336×902、900×680、窄窗口和矮窗口,覆盖 compact 分支、浮层 flip/shift、tooltip 边界。
|
||
11. 上下文浮层:补 `window-control` 与五类真实占比的原版证据和实现,不能继续用固定 `—` 计完成。
|
||
12. 更新专项选择器:将 `.segmented` / `.segmented__item` 改为 `.appearance-card[aria-label="深色"]` / `.appearance-card[aria-label="浅色"]`,再复跑当前构建 47 项。
|
||
|
||
## 验证与限制
|
||
|
||
- 本轮未启动 Electron;全部 UI 专项由主 agent 串行执行。
|
||
- 已独立运行 `node scripts/verify-git-branch.cjs`,6/6 PASS。
|
||
- 已独立构建并执行 `src/shared/memory.ts` 的纯函数审计,复现 14-1。
|
||
- 已独立构建 `src/main/gateway/index.ts` 并用带 usage 的 Chat Completions SSE 调用,确认 usage 未进入输出事件。
|
||
- 未重新观察 WorkBuddy。当前端口 9223 `endpoint_unreachable` 只代表该已知入口不可达,不代表 REA 全部不可用;需要的新证据已在第 21 段逐项列出。
|
||
- 工作树原有 dirty 修改全部保留;本轮只新增本文档。
|