Files
ycode/docs/对话区四项对接-2026-10-15.md

92 lines
8.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 对话区四项 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`,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 <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 实际呈现。