# 对话区四项 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 图片关闭区条件样式实际生效。 图片原版全览 `` 没有错误/重试分支,本轮保持这一来源行为;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`,SHA `6c6ce63c93854783270e855572797d75e536e3b8d4548410e31fe9d147e1feb4`;`src-CyXHA0IC.css`,SHA `a5e26b537bb50323aefbf25abddad52e288dd3868598be8d255d70886fe77cfe`。来源位置与规则选择在 `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`,SHA `6720317ba018215f96a87d966b08c0d0aa74c26d2298d5fd95f71e8ff2e04e59`;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`。 ```powershell 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 的恢复结果检查。 ```json {"include_fonts":true,"track_selectors":[],"actions":[]} ``` 将上面保存为 `.tmp/workbuddy-font-probe.json`,执行: ```powershell 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`。运行: ```powershell node scripts/rea/compare-visual-pixels.mjs --output ``` 不允许用不同消息内容直接计算整个对话区的差异率。动效另需比较相同触发动作后的实际时间和几何变化,不能把 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 实际呈现。