Files
ycode/docs/visual-audit-2026-10-16.md
T

87 lines
11 KiB
Markdown
Raw 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.
# 首页视觉审查与机器人可见参考(2026-10-16)
本次只新增审查脚本、证据派生资源和报告,没有修改 App、ChatPane、SourceHome 或既有 CSS。以下比较基于固定截图/fixture,不能宣称当前生产首页或全部场景已经 1:1。
## 固定证据与范围
| 对象 | 来源 | 范围 |
| --- | --- | --- |
| 原版首页 | REA `ev_4fd56b4f30ca87b4d7012c80195becea384ffa95582b059558a16b8d871d57a8`;`.tmp/rea-home-static-20261016/{workbuddy.png,layout.json}` | 2026-10-15T16:48:52.506Z;截图可见 WorkBuddy V5.8.2;1336×901;办公、未选空间、GLM-5.3 Flash、允许完全访问、空输入、focused input |
| 原版场景采集 | REA `ev_dcf614287152ff2d723fb4ac89f60be7162ec7f446eb81c52e466fea69cba80a`;`.tmp/rea-home-scenes-20261016/` | 2026-10-15T16:51:53.215Z;1336×901;包含已有场景连续图,本次不将其与办公 fixture 混为同一状态 |
| YCode 冻结 fixture | `.tmp/home-native-ui/index.html`;原图 `.tmp/source-home-native.png`;新增采样 `.tmp/home-visual-audit-20261016/{native.png,native-layout.json}` | 1336×901;已有冻结 bundle,保留左侧280px空间,但没有绘制实际侧栏;办公、自定义模型、未选空间、空输入、非 focused input |
| YCode 旧生产图 | `.tmp/ycode-live-main/{screen.png,layout.json}` | 1335×916,时间和状态更早,仅供历史观察;不据此给当前像素通过率 |
首页原图 SHA256:`360b076811ef19381f0670c314b24b06252310bf24fdc245f529f4894cfd7241`。场景主图 SHA256:`7e4ba766334049096df2c7b87becf1820b60184f3f070530c735db39710335c0`。脚本固定验证首页图 SHA,避免静默比较错图。
## 几何与字体残差
表中矩形为 CSS px,`[x,y,w,h]`。新 fixture 的主要纵向布局已与固定原版相同;可观察差异集中于横向基准、字体继承和绘制状态。
| 元素 | 原版 | fixture | 结论 |
| --- | --- | --- | --- |
| 标题容器 | `[405.125,158.5,800,42]` | `[403,158.5,800,42]` | 横向 -2.125,其他相同 |
| 标题文字 | `[666.375,158.5,277.5,42]` | `[664.25,158.5,277.5,42]` | 同字号30、weight600、line42、字体声明;颜色不同 |
| 场景切换外框 | `[693.125,216.5,224,36]` | `[691,216.5,224,36]` | 尺寸相同,横向 -2.125 |
| quick actions 容器 | `[405.125,316.5,800,32]` | `[403,316.5,800,32]` | 高度、padding-right120、gap8相同 |
| 制作PPT按钮 | `[675.125,316.5,81.234375,32]` | `[673,316.5,77.03125,32]` | 按钮窄4.203125;后续3项累计横向 -6.328125 |
| 输入 slot | `[405.125,364.5,800,184]` | `[403,364.5,800,184]` | 宽高和纵向相同 |
| 输入白色容器 | `[405.125,364.5,800,144]` | `[403,364.5,800,144]` | 宽高和 padding-top12相同 |
| 机器人外框 | `[1085.125,286.5,120,120]` | `[1083,286.5,120,120]` | 原几何已恢复,图像内容不同 |
| 机器人 img | `[1065.125,276.5,140,140]` | `[1063,276.5,140,140]` | 原几何已恢复,图像内容不同 |
| 推荐容器 | `[405.125,600.5,800,236]` | `[403,600.5,800,236]` | 纵向、宽高相同;文字数据不同 |
原版中心为805.125,fixture中心803;原版侧栏分界284.25,fixture保留280。4.25px侧栏差使主内容中心差2.125px。应在真实 App 的侧栏宽度/分配契约处校正,避免给首页所有元素添加补偿偏移。
原版 quick-action 按钮计算字体是 **Arial / 14px / 400 / normal**;fixture 是 **`"PingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif` / 14px / 400 / 22px**。已有 `source-home.css` 中 `.quick-actions__item{font-family:inherit}` 与该证据相冲突。中文纯文本按钮宽度恰好均82,不足以证明字形相同;混合拉丁字符的“制作PPT”直接暴露宽度差。
主标题声明字体、尺寸和文字宽度相同,但原版 `color:rgb(0,0,0)`,fixture继承 `rgba(0,0,0,0.9)`,白底下文字较浅。多处祖先字号/行高也不同(原13px/normal,fixture14px/22px),这些不是所有子控件的实效字号;修复应限定原版选择器,不能直接全局改字号。当前 REA 首页证据没有实际平台字体采样,所以不能将“CSS字体一致”写成“字形一致”。
## 绘制、数据与状态应分别验收
- 输入框:原版节点848带 `cr-input-container--focused`,border-top-color 为 `rgba(0,0,0,.15)`;shadow 为 `rgba(0,0,0,.06) 0px 16px 32px -8px, rgba(0,0,0,.1) 0px 2px 4px -4px`。fixture非 focused,border `rgb(230,230,230)`,shadow `none`。需在真实 UI 点击输入框,使状态相同后再判 focused 样式。非 focused 原版在本次固定图中未观察。
- 空输入 send:原版禁用灰色;冻结 fixture 显示黑色可发送。这是 fixture 的 `onSend`/disabled 交付契约差异,应验证真实 App 的空输入禁用逻辑;不能用截图中黑色按钮替原版禁用状态验收。
- placeholder:原版“今天帮你做些什么? @ 添加上下文,/调用技能与指令”;fixture“发送消息...”。这是可直接对齐的展示文本契约。
- model:GLM-5.3 Flash 与自定义模型属于数据差异。自定义模型应保留真实名称;图标、箭头、字体、间距应在相同控件状态下另测。
- voice:fixture常显“语音转写服务不可用”,原版只有mic图标。服务不可用是能力/状态差异;具体失败文案显示时机需原版对应失败态证据,不能把未观察失败态当成原版默认 UI。
- 推荐任务:两边文案不同,因此各行宽度不同不直接等于 CSS 错误;列表容器、行间距、胶囊边框和箭头可在统一文案后比较。原版真实数据来源/刷新规则未在本次运行时验证。
- 侧栏账号、任务、空间、增长卡和原生标题栏:冻结 fixture没有绘制,不能据此判断生产组件缺失;旧生产截图也不作当前通过依据。
- 场景/hover/键盘/动画/暗色:已有原版场景证据可继续逐状态测试;本次只量化办公稳定帧,不宣称开发、设计、切换动画、hover或暗色已验收。
局部像素诊断记录在 `.tmp/home-visual-audit-20261016/audit.json`。将 fixture 向右平移2整数像素仍剩0.125px raster phase,因而这些像素差只能用于定位,不能用于“零差通过”。标题区域12470像素中4228不同,RGB平均绝对差8.56;首chip区域2706中665不同,平均差16.63;直线输入框顶边7440中1240不同,平均差1.17。标题颜色、chip字体和输入focused状态分别已有计算样式证据解释,不能把整页差异都归于抗锯齿。
## 黑色机器人:已取得什么、尚未取得什么
已导出的 `default-miao-BlTmPevf.png` 是360×360透明灰/银猫(有青色单眼/星形另一眼),与原版首页截图中黑猫双竖眼不同。它是真实 fallback 源资产,不是本次运行时黑猫资产。
选中二进制导出证据:`ev_60a03f3376f0e0c04e16d12c7798e25401d1e697f33b39e4b5f7027794b09223`;ASAR root SHA `035254bc76310ea46317433e4840602094543ef323d2d5c5aff7c131729de918`;文件 `renderer/assets/default-miao-BlTmPevf.png`;资源 SHA `d164ac0e6e54438ea2a26a26e8ef622de3d911a674f55086d465ce10b011641d`。本次没有再次读取原版安装目录。
原版已由 REA 导出的 `contexts-BMeWSUHk.js`(证据 `ev_717fa5e846e64d67ac19c8925d121bff632c0d3aefb3603b10858559cabb2dcb`,SHA `5f35b7489b107e21ef452c8ee88a95265756f6fc444841eef869228bbc44768b`)说明:
1. `Wwn` 赋值从字符offset7018348开始,为 `new URL(default-miao-BlTmPevf.png,import.meta.url)`。
2. `GrowthBuddy` 所在代码从offset7027087开始,读取 `data.buddy.thumbnail_url`、`base_animated_url`;有thumbnail且没有img error时使用thumbnail,否则Wwn。hover时播放video、离开暂停,img/video opacity切换0.2s ease。
3. `useGrowthBuddy` 从offset4295749开始,使用 adapter `getGrowthBuddy()`;`pickCachedBuddy` 从4295216开始,只缓存thumbnail和animated URL。数据可能来自adapter响应或用户缓存,本次未观察具体返回值。
因此已定位资源选择逻辑,但**实际黑猫 thumbnail URL/视频URL还没有取到**。固定 REA layout 的IMG attributes为空;本地 REA视觉实现刻意未输出URL attributes,不能从该JSON逆推出URL。后续应由 REA增加明确的选中IMG src/currentSrc及已加载资源导出证据;如果指向ASAR,用REA `export-selected-artifact-binary` 定向取;如果指向远程/个性化资源,由REA读取已加载资源并记录媒体类型、SHA和来源,不走直接CDP/原版FS。
已提交可立即对比的最小参考:
- `src/renderer/src/components/source-home-assets/workbuddy-home-buddy-visible-reference.png`:**120×78静态可见片段**。
- 同名 `.json`:证据、原始截图SHA、原布局节点、crop、偏移、alpha推导、SHA和限制清单。
- 原crop `[1085,286,1205,364)`;原growth wrapper `[1085.125,286.5,120,120]`;片段相对wrapper偏移 `[-0.125,-0.5]`。alpha非零包围盒 `[21,25,79,78)`,即可见图像源坐标 `[1106,311,1164,364)`。
- 原输入框从y364.5开始,row364可能混有边缘/覆盖;**整个row364及以下均不包含**。不能补画被遮挡身体,也不能把该片段标为完整黑猫源图。
- alpha只去掉从crop边缘连通的纯白255背景,保留其他RGB及封闭的白色高光。6891像素透明,白底重新复合与原crop **0像素差**。这是白背景上成立的可见参考;不是恢复真实半透明alpha。抗锯齿边缘仍含白色matte,暗底未知。
- 若用于当前UI临时对标,应作为独立120×78片段按上述offset放入120×120wrapper,避免套140×140/top-10的原始img规则。它不含hover、动画或完整身体;使用后仍需明确记录这些未完成项。
## 验证与下一步
执行:
```powershell
node_modules/.bin/electron.cmd scripts/audit-home-native-geometry.cjs
& 'C:/Users/Administrator/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/python.exe' scripts/audit-home-visuals-20261016.py
```
结果:YCode fixture采样17个元素、console errors0;原版截图SHA通过;机器人白底复合零差、资源/manifest生成成功;geometry审查17项。脚本只读取既有REA导出、YCode fixture,并写入本次报告/新资源。
主上下文可先修:真实主界面侧栏宽度中心基准、chip Arial/normal、标题纯黑、空输入placeholder/send契约,再在相同focused状态下验输入shadow/border;机器人可见片段可以先静态接入,完整源缩略图/动效仍需REA补证。重拍必须使用真实生产UI并固定尺寸、DPR、权限、模型、空间、输入焦点、菜单状态和同一文案数据。一次办公截图通过不能代替全部状态验收。