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

11 KiB
Raw Permalink Blame History

首页视觉审查与机器人可见参考(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、动画或完整身体;使用后仍需明确记录这些未完成项。

验证与下一步

执行:

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、权限、模型、空间、输入焦点、菜单状态和同一文案数据。一次办公截图通过不能代替全部状态验收。