8.8 KiB
对话区四项 1:1 对接(2026-10-15)
本轮按用户指定推进工具专用视图/命令结果、附件/产物预览、字体/字形、全状态像素/动效四项。已有来源支持的组件结构、样式与向量已经接入;尚未完成原版与 YCode 的全状态 1:1 验收。云端服务与子代理调度暂后。
本轮落地
| 项目 | 已接入、已验证 | 尚未验收 |
|---|---|---|
| 工具专用视图、命令结果 | 共享 ToolHeader/ToolExpandable;Read 文件名、行范围和文件打开 payload;命令原版 div 输出结构、stdout/stderr 合并、空输出完成态;文件列表/Web/MCP 的专用结果结构。恢复脚本校验 JS/CSS SHA,投影 105 条来源规则。完整输出及局部读取防误写回归通过。 |
原版 per-tool icon resolver、本地化文案;Write/部分工具 fallback 仍有宿主适配;所有工具状态均未完成原版实时像素比较。 |
| 附件、产物预览 | 114 条来源样式;CSS module 映射、主题 token 和动效规则;媒体头部、HTML frame、图片遮罩/工具栏;可追溯的缩放、适配、镜像、旋转、下载、关闭图标。HTML 沙箱/尺寸、下载、Markdown 异步读取/过期读取、图片交互在本地 Electron 验证通过。 | Diff 仍使用宿主双栏文本视图,未接入原版 Monaco;Markdown 产物仍使用已有 React Markdown 适配,Lexical 相关选择器未全部作用于相同 DOM;专业文档、音视频等分支未全量实测;图库导航为已有宿主适配。 |
| 字体与字形 | REA 增加实际平台字体采集,记录 familyName、postScriptName、custom 标记、glyphCount;YCode 相同文本五类探针对照脚本;校验原版归档 SHA、Evidence ID、目标与版本,缺样本必须 incomplete。 | 当前没有新原版实际 glyph Evidence。已存在的 5 个 font-family 字符串一致不代表实际字体一致。没有依据将编辑器 Source Code Pro 盲目接入聊天区。 |
| 像素与动效 | REA 原生输入、连续 PNG、实测时间戳、区域 bounds、恢复记录;像素比较脚本支持默认零容差、差异图、状态覆盖缺失检查。隔离 Electron 实测取得五类字体、10 张 PNG,并恢复折叠及 viewport。 | 连续截图属于顺序采样,不是固定帧率录像;尚无相同内容、尺寸、主题、状态和时间基准的原版/YCode 成对记录,全状态像素及动效不能判通过。 |
主审额外修复了命令空 stdout 被误当 JSON 输出、成功结果 message 被误当失败,以及 HTML sheet 中宿主宽度塌缩。YCode 现在设置原版样式需要的 data-electron-desktop 和 data-platform,本地 Windows Electron 图片关闭区条件样式实际生效。
图片原版全览 <img> 没有错误/重试分支,本轮保持这一来源行为;Markdown 内联图片的 alt/source fallback 属于另一组件。图库和原生下载桥不作为原版等价的证明。
来源与观察范围
来源属于此前已识别的 WorkBuddy 5.8.2 / Electron 37.10.3 / Chromium 138 基线。下面 CSS/脚本 Evidence 自身没有单独记录产品版本,产品版本来自同一基线的目标观察;它们不是本轮重新观察当前原版所得。
- JavaScript:
ev_717fa5e846e64d67ac19c8925d121bff632c0d3aefb3603b10858559cabb2dcb,.tmp/rea-runtime-scripts.json。 - CSS:
ev_377c8790468b3c67dad8577aabb327f98d3140659f0fffdbabfcff5a40cc9e94,.tmp/rea-css-recovered/manifest.json。原始规则正文经过固定摘要校验;禁止用新的 latest alias 覆盖该固定来源 manifest。 - 既有原版画面:
ev_dbd7b4f6304305b0428d19c891088806a09d05b33a1b69d7e7df95e22f3914f4,1336×901,.tmp/rea-visual-reference/。这张画面与本地 fixture 内容不同,不能直接作为全聊天区像素差异结论。 - 工具视图:
src-DbE1_mgM.js,SHA6c6ce63c93854783270e855572797d75e536e3b8d4548410e31fe9d147e1feb4;src-CyXHA0IC.css,SHAa5e26b537bb50323aefbf25abddad52e288dd3868598be8d255d70886fe77cfe。来源位置与规则选择在recover-tool-result-styles.mjs。 - 附件/产物:
recover-artifact-styles.mjs固定 5 份 CSS、4 份 JS、CSS module 映射和 ASAR 比对身份;输出.tmp/rea-css-recovered/artifact-projection.json。 - 图片向量:
image-preview-component-BgOcW3Xe.js,SHA6720317ba018215f96a87d966b08c0d0aa74c26d2298d5fd95f71e8ff2e04e59;ZoomIn 与 Close 的导入/导出链另见PreviewIcon.tsx注释。11 个填充路径与两个关闭路径比对通过。
以上查看原版均沿用 REA 导出;没有使用历史 wb-*、直接连接原版 CDP、浏览器 evaluate 或其他旁路。
当前现场阻碍
此前 9223 调试端口已不可达,结束前复查仍是 REA endpoint_unreachable。
本轮通过新增的 REA Windows 进程元数据 provider 取得 Evidence:
ev_053764eb174383f778c003b4d2a73180c801760f7cfd40fd5359f061671e4088
归档:.tmp/rea-workbuddy-process-metadata.json。观察时 WorkBuddy.exe 仍有进程,记录中没有 --remote-debugging-port;其当时 6 个监听端口经 REA 目标发现都未返回有效调试接口。这里只能证明观察时无可用的已发现接口,不能推断当前任务已结束。
继续原版字体、全状态和动态画面验收需要恢复原版调试接口。用户此前说明原版正在执行任务,重启可能中断它;本轮未中断原版。
REA 本地能力与复现命令
本地副本 6.5.0-visual.2,provider 1+visual-local.2;16 个本地模块有摘要清单,全局 REA 文件未变更。源代码在 scripts/rea/patches/,准备脚本为 prepare-css-runtime.mjs。
npm run rea:css:prepare
npm run test:rea-css
npm run test:rea-visual-live
npm run test:font-platform
node scripts/rea/compare-visual-pixels.mjs --self-test
隔离窗口实测文件:.tmp/rea-visual-probe-self-test/verification.json、capture.json、frame-000.png 等。它们标记为本地自检,不是 WorkBuddy 字体或动效通过证据。实测截图修复为 fromSurface:true,避免隐藏 offscreen 窗口在旧截图路径断开调试连接。
原版调试恢复后,先用仅字体的被动 probe;声明操作的 probe 会改变原版 UI 状态,应只选择当前许可范围内的折叠、hover 等目标,按 Evidence 的恢复结果检查。
{"include_fonts":true,"track_selectors":[],"actions":[]}
将上面保存为 .tmp/workbuddy-font-probe.json,执行:
npm run rea:visual:capture -- --probe .tmp/workbuddy-font-probe.json --output .tmp/rea-visual-four-items
node scripts/rea/verify-font-platform-parity.mjs
capture-css.mjs 通过 REA 公共入口获取并归档真实 Evidence;新输出目录避免覆盖既有参考画面。字体报告自动写入 .tmp/rea-font-platform-report.json。version=unobserved 或五类中任意缺失都不能通过原版字体验收。
动态 probe 支持 hover、click、scroll、key、wait、viewport,最多 12 步/64 帧,声明等待/采样预算 15 秒。恢复为尽力执行:toggle 回点、反向滚轮、清除 viewport override、指针移至原点;键盘焦点、原先 viewport override 和其他业务副作用不能自动还原。选用前必须阅读结果中的 limitations,不能把恢复命令执行成功当成业务状态完全恢复。
像素比较 manifest 包含 source.kind、requiredStates 和 pairs,每对指定 name/reference/candidate,可指定整数像素 region;原版来源还必须指定 referenceEvidence.id/archive。运行:
node scripts/rea/compare-visual-pixels.mjs <manifest.json> --output <output-directory>
不允许用不同消息内容直接计算整个对话区的差异率。动效另需比较相同触发动作后的实际时间和几何变化,不能把 frame 序号视为等间隔时间。
已完成验证
npm run build(含两个 TypeScript 检查)通过。test:conversation、test:artifacts、test:media、test:resources、test:chat通过。- REA CSS/布局/PNG/字体/原生输入合约、公共 MCP 入口、16 模块完整性验证通过。
test:rea-visual-live、五类字体本地自检通过;像素比较器的相同/单像素变化/尺寸/缺状态/证据绑定自检通过。- 本地实际 UI:
npm run verify:previews通过,依赖已构建文件和 8789 fixture server。.tmp/conversation-preview-qa.json记录 HTML 头 48px、frame 646×759、图片 stage 1256×701、toolbar bottom 40px、Windows 关闭区 top 40px/right 148px、零 console errors。 - 原有对话 UI 验证继续通过:问答键盘选择、审批恢复、Task 键盘折叠、命令输出结构、28 项选定计算属性、5 个 font-family 字符串。上述有限检查不等于字体文件、字形或全状态像素通过。
本地画面:.tmp/conversation-artifact-html-2026-10-15.png、.tmp/conversation-image-preview-2026-10-15.png。它们用于检查 YCode 实际呈现。