Files
ycode/docs/reference/ygent-workbuddy-render-audit-2026-10-08.md

23 KiB
Raw Permalink Blame History

Ygent ↔ WorkBuddy 原生渲染精确差异清单(2026-10-08)

阶段收尾与当前实现状态见进度汇总。下文40项为历史采集基线,不是当前未完成数量;后续通用样式、字体、完整时间线/锚点折叠及动作摘要修复以动态记录为准。

对标范围已明确包含真实流式交互。动态P0、必测事件序列和证据分级见 动态交互对标清单。本文件的历史画面通过不等价于流式通过。

后续过程修复:真实原生1335×916、DPR1、默认2档下,D11—D13、D16、D18—D20、D28、D31已修复并检查折叠往返;D15的尺寸/位置/颜色及D17文字色已对齐,图标path形状仍需核验。首命令面板dy227.25、752×198.75已匹配,D23通过此状态复测。最终正文仍因缺少reasoning及其包装留白提前48.25px,D25—D26未完成;不能硬补高度。详细结果见动态清单中的“当前已验证的局部交互”。

后续字体修复:字体对齐验收。D01—D05、D14、D21—D24、D27、D32—D33涉及的字体/行高/文字行框已处理;此处40项保留为修复前基线,不能把其他层级、间距和操作栏缺失视为已修复。D23面板总高另需随着后续层级调整复测。

本轮确认 40项对话区渲染、结构及折叠差异,另列 4项外围差异、5项源码交互缺口、15项待验收场景。这是已检查范围的清单,不是整个产品缺口总数。仅梳理、采集和定位,本轮没有修改对话区实现。P0优先恢复当前同一对话的形态和交互,P1收敛细节,外围与复杂交互后置。

采集条件和坐标

  • 均为真实原生渲染器:WorkBuddy CDP 9223,Ygent Tauri WebView2 CDP 9335。没有模拟IPC或fixture。
  • 同一“处理大文件”对话,锚点为移动项目请求后的最后一个取消回合。YG真实会话5,829条消息。
  • WB原视口1200×762,临时调整YG真实窗口到相同视口;DPR均1、scale均1、字号均默认2档。
  • A:过程收起;B:过程展开,首个运行命令和意图结果展开。等待动画稳定并贴底后采集。没有发送消息、执行工具、读取或展开深度思考正文。
  • (x,y,w,h)为页面视口CSS px;dy为元素顶部减头像行顶部,用于排除不同历史高度和滚动位置。负y表示在滚动区域上方,不表示CSS错误。
  • A头像行:WB y267.98,YG y322.69;B头像行:WB y-40.02,YG y52.69。两端均贴底;不能把绝对y差直接当作需要修复的margin。
  • 字体通过CSS.getPlatformFontsForNode检查实际命中字库,不只读取font-family。数值保留两位小数,0.1px以内取整不单列缺陷。
  • 整理后的几何、样式、字体证据。原始DOM和截图保存在私有目录C:\Users\Administrator\.ygent\imports\render-audit-20261008,不入库。
  • 主比较为1200×762;YG1335×916已单独采集,但WB1335同条件比较未完成,不将结论外推到所有尺寸。

需要纠正的历史判断

WB用户气泡外层声明13px,内部Slate实际文字是15px;输入容器声明14px,内层编辑器实际也是15px。此前仅看外层得到的规格不能继续作为验收目标。YG“过程消息”最终级联命中13px,即便某条源码规则已写参照值也不能算通过。

D01—D10:字体、用户气泡和顶栏

ID/优先级 具体位置 WorkBuddy实测 Ygent实测 差异、目标与代码定位
D01 P0 助手中文正文.cr-markdown p↔.md p;对话标题 实际Noto Sans SC,强调使用Bold 实际Microsoft YaHei,强调使用Bold 同字号仍有字形/笔画/行框差。先匹配字库和回退;src/styles/tokens.css:78
D02 P1 头像右侧名称,x393 Arial Bold,14px/24.5px,宽78.31 Segoe UI Semibold,14px/24.5px,宽74.67 文字短3.64px;头像和10px间距已一致,不能扩大整个头像行;.assistant-name
D03 P0 命令/结果灰面板英文,x375,内容宽720 Courier New,中文回退NSimSun Consolas,中文回退NSimSun 等宽字库不同导致换行字符不同;src/styles/chat.css:763、:775
D04 P0 最新用户气泡的内部实际文字 Slate15px/26.25px,内部p15px/26.7px .msg.me .txt13px/19px 少2px;不能以WB外层13px为参照;src/styles/chat.css:436
D05 P0 最新用户气泡,右边均x1111 x755.84、w355.16、h44.59 x800、w311、h35 左边向右缩44.16、高度少9.59;padding8×12、底色/圆角已一致。修内层文字,不写死355.16宽度
D06 P1 左上“处理大文件”,(304,46),h24 黑色rgb(0,0,0) rgb(31,35,40) 坐标/16px字号/24px行高一致,颜色冷灰;.chat-title
D07 P1 顶栏五按钮,x1012/1048/1084/1120/1156,y42,32×32 黑70% #5b6472 坐标都一致,颜色偏蓝灰;不能再整体平移按钮组
D08 P1 第二个分享按钮,(1048,42) 弯曲分享箭头 从托盘向上导出箭头 图形不同,应核对SVG/path;src/components/ChatView.tsx:464
D09 P1 第四个概览按钮,(1120,42) 纸张/文档轮廓 四块网格 外框一致,内部图形不同;ChatView.tsx:485
D10 P1 对话标题旁的编辑入口 有“编辑标题”按钮,默认隐藏 h1只有文字,无对应按钮 侧栏重命名不等价;已确认DOM缺失,hover后坐标待验收

路径标签及思考事件位置补齐(2026-10-08)

通用Markdown行内代码组件根据真实路径关联渲染文件/目录标签,其他代码不变。普通会话在自身工作目录下通过IPC只读分类;参照导入保留来源cwd下核实的路径关联。原生YG/WB同一ygent标签68.25×20、字号15/行高22.5、padding1px 4px、颜色#1470b4、背景#e9eef2、文件夹图标15×15已匹配;非按名字直接装饰的静态标签。标签键盘/点击接实际opener,未在参照采集中自动打开外部应用。

导入旧规则丢弃全部reasoning事件,现只保存存在和位置标记,不提取内部正文;相邻可见消息前通过通用组件呈现“深度思考”。标题15px/26.25px、灰色、包装padding2px 0。此为D25的数据/标题部分补齐,内容展开、真实思考流式阶段及D26上下层间距尚未通过,不能将标题出现等同于reasoning交互完整。

普通会话和参照会话共用TurnBlock/ToolCard/Markdown;本次工具摘要跨会话原生样式一致。仍需覆盖普通完成、单/多工具、特殊取消的分组标题、默认折叠和块间距,禁止按参照会话名称/ID加样式补丁。

失败命令显示规则修正(2026-10-08)

用户补充同一“检查目标位置与源目录”失败命令截图后,真实WorkBuddy CDP确认:外层“运行命令”摘要使用14px灰色终端图标,不因失败替换红叉;下方意图行.cr-tool-head__icon--error使用14px灰色圆形感叹号。失败数据与视觉位置独立,不能由Ygent自身的红叉规则推断参考行为。Ygent现保留toolError数据,按这一分层显示;终端图标/失败图标/箭头使用当前原生DOM核实的向量路径。

长结果面板宽752、高300、padding12px 16px,10px滚动条使文本可用宽710。命令12px/19.2px、输出12px/18px,pre-wrap且word-break:break-all。之前Ygent默认滚动条和overflow-wrap:anywhere导致长命令断行不同,现已修正。输出还遗漏非零Exit Code对应的执行失败 (退出码: 1)末行,已恢复。真实Ygent/CDP下同一命令高度95.9375、输出756,与WB一致;完整可见输出文本比较相同。

此结果覆盖该失败命令的局部显示,不代表整段完成:截图中的“深度思考”、路径标签及上层布局仍在原有待办中;未伪造推理内容。其他工具类别、运行中/取消/信号终止的图标策略仍须分别验证。此前补验中“失败红叉保留”仅是当时YG状态,以上修正取代该视觉规则。

取消历史工具样式补验(2026-10-08)

此前D20等工具样式修复只限定在.process-fold,遗漏了“已取消”展开后的.turn-history:同一ToolCard上方仍为2px竖线、4px左缩进、摘要负margin和蓝灰文字,下方已使用无边框的中性灰样式。现将共同规则移至基础.tool,移除父容器限定覆盖,历史/过程/实时回合共享基础外观;失败红叉与运行中状态独立保留。

真实Ygent WebView2、1335×916下,已核验同一取消回合中的5条历史命令和1条过程命令:边框/左缩进/摘要margin均为0,文字rgba(0,0,0,0.5)、15px/26.25px;逐条展开意图和结果,详情上间距4px,结果面板宽752px、padding12px 16px、左边缘对齐。2条失败命令仍保留红色状态图标。操作后恢复各工具原有展开状态;未发送消息或执行命令。这是Ygent两条渲染路径的一致性补验,未据此新增WorkBuddy失败图标或实时状态验收结论。

D11—D20:回合间距、过程标题和工具层级

ID/优先级 具体位置 WorkBuddy Ygent 差异与代码定位
D11 P0 头像行底→取消耗时行顶 12px;状态dy36.5 16px;状态dy40.5 下移4;头像margin12又叠加msg gap4;.assistant-header、.msg
D12 P0 状态行底→首段正文顶 12px 8px 少4,抵消D11,所以首段dy都74.75;不能只看首段坐标;.turn-body与WB文本块margin
D13 P0 首段正文底→过程消息顶 12px;过程dy140.25 8px;过程dy136.25 过程标题相对头像提前4;统一gap不能模拟所有局部间距
D14 P0 “过程消息”标题 15px/26.25px,文字宽60;点击行76×26.25 13px/20.8px,文字宽52;点击行80×26.80 文字小2px但按钮反而更宽;src/styles/chat.css:845、.mf-label
D15 P1 过程标题右侧箭头 x423,12×12,黑50% x419,14×14,#8a93a3 左移4、变大2,颜色/线形不同;.mf-arrow,连同标题字号/gap/padding修复
D16 P0 过程标题底→运行命令顶(B) 2px;命令dy168.50 8px;命令dy171.05 命令相对头像晚2.55;需process-inner局部padding;.mf-body
D17 P1 运行命令文字、意图和终端图标 黑50% #5b6472 整体偏蓝灰;摘要15px/26.25已一致;.fn、.tool-intent、.tool-ico.command
D18 P0 意图“切换工作目录后重试移动”左侧 x359有独立14px终端图标,文字x381 文字x381,但本层图标缺失 不是第一层运行命令图标能代替;TurnBlock.tsx:190
D19 P0 工具意图及邻近右箭头 独立可点击/折叠;文字宽154,标题主区192,有箭头 .tool-intent普通div,宽730,无箭头/折叠 WB“过程→运行命令→意图→结果”,YG少一层;需结构和状态共同补齐
D20 P0 展开工具左边x≈359 无贯穿意图/面板的竖线 旧工具卡border-left仍形成竖线 检查.toolborder-left/padding和.tool-row负margin,不能用白色遮盖

D21—D31:命令结果、深度思考和回合尾部

ID/优先级 具体位置 WorkBuddy Ygent 差异与代码定位
D21 P0 灰面板命令结束→stdout 独立__command与__output,块间4px 一个pre拼接命令/输出 缺分块,无法独立设行高;formatToolResult、ToolCard
D22 P0 stdout正文,WB(x375,y283.98)(B) 12px/18px,当前5行高90 同命令共用12px/19.2px 每行多1.2;命令本身19.2已一致,不应全部改18
D23 P1 命令灰面板(B),x359,w752 h198.75,dy227.25 h200.69,dy231.80 高多1.94,顶部晚4.55;圆角16、padding12×16、内容宽720已对齐,不写死高度
D24 P1 bash标签与代码文字 黑90% #1f2328 冷灰字色;背景同为#f2f2f2,不再调整背景
D25 P0 结果面板后、最终正文前(B) reasoning外框h30.25、dy440;标题dy442,15px/26.25 整段缺失 缺“深度思考”收起行;normalized数据未映射该段,需要数据/时间线联合处理。本轮未读取正文
D26 P0 过程组底→最终正文(B) 12px,最终正文dy486.25 8px,最终正文dy440.48 最终正文提前45.77,含D25及过程高度差;不能硬加45.77margin
D27 P0 “用户已取消” 15px/20px,内容宽75 13px/20.15px,外框拉伸752 少2px且渲染类型不同;chat.css:527、TurnBlock.tsx:471
D28 P0 最终正文底→取消提示 0px 8px YG多统一gap;需取消状态局部规则,不能清零所有回合间距
D29 P0 取消提示下所有产物入口 x359;B y504.48,129.83×25,15px/25,“查看所有产物(5)” 无本回合尾部入口 顶栏概览不等价;需真实回合产物关联和计数,不硬编码5
D30 P0 所有产物下助手操作栏 B(359,537.48,547.59,38.25);复制/赞/踩/朗读/重试/分享/更多,消耗/模型/时间 助手回合整行缺失;MessageToolbar只用于用户 缺整行,不是像素偏移;入口、排列和后台能力分别验收,不伪造消耗/模型数据或放无效按钮
D31 P1 关闭过程再重新展开 本轮首命令/意图展开状态保留 ToolCard卸载后open重置false 相同点击看见不同内容;本轮往返操作与useState/条件挂载已确认;需状态存放策略

D32—D40:输入编辑区、提示和滚动条

ID/优先级 具体位置 WorkBuddy Ygent 差异与代码定位
D32 P0 输入实际文字,左上(365,605) Slate15px/26.25;空p高28.38 textarea14px/21 少1px、行高少5.25;外框64px一致不代表文字一致;chat.css:1105
D33 P1 输入占位 实体span15px/26.25,黑90%×opacity.5 ::placeholder14px/21,黑40% 字号见D32;深浅不同;YG问号与@之间多一个空格;Composer placeholder
D34 P1 权限项文字及警告图标 文字(x429,y687,h20),#b42c3f,13px/20;盾牌感轮廓 (x430,y688.5,h17),#d5304f,13px/normal;圆圈叹号 右移1、下移1.5、行框少3,图形/颜色不同;Chips.tsx:43
D35 P1 右下模型选择 品牌图标+模型名+6×3箭头,文字黑90% 品牌图标缺失、蓝灰文字、15px caret外框 当前Deepseek与gpt-6-luna最高是配置差异,不强改模型;对齐真实模型的图标槽/字体/箭头
D36 P1 模型项左侧圆环,中心约(885.27,697) 有上下文/用量类指示控件 spacer空白 控件缺失;准确语义/tooltip待验收,不用常驻loading伪装
D37 P1 发送按钮,均(1087,681,32,32) 白实心纸飞机/上行形状 细线向上箭头,路径约8.4×10 内部轮廓不一致,外框无需移动;Composer SEND
D38 P1 框下免责声明 外框(348,726,784,36),12px/20,黑30%,内部padding定位 (348,736,784,14),12px/14,#8a93a3 外框含padding,不能把y差10直接当文本偏移;颜色/行高不同,需对内部基线;.composer-hint
D39 P1 历史最右滚动条 宽6、thumb黑20%、圆角3 宽10、thumb蓝灰14%、圆角4 粗4且颜色不同;改宽会影响可用宽度和居中,应联动复测正文;chat.css:373
D40 P1 滚动条上下端小箭头 当前截图可见原生小三角,pseudo display inline 未呈现同样箭头,pseudo display block 宿主可能影响外观,需匹配可见效果和点击/滚动表现,不机械复制display

精确定位:相对回合头像行

A过程收起,除头像名称x393外,以下锚点x359。

锚点 WB绝对y YG绝对y WB dy YG dy 说明
头像行 267.98 322.69 0 0 h24.5一致
取消耗时 304.48 363.19 36.5 40.5 YG相对晚4
首段正文 342.73 397.44 74.75 74.75 上下间距抵消,不能误判
过程消息 408.23 458.94 140.25 136.25 YG提前4
最终正文 446.48 493.73 178.5 171.05 YG提前7.45
用户已取消 472.73 527.98 204.75 205.30 近似同起点但字号/前间距不同
所有产物 504.73 缺失 236.75 — 实际入口缺失

B过程、首命令、意图结果展开。

锚点 x WB绝对y YG绝对y WB dy YG dy
头像行 359 -40.02 52.69 0 0
首段正文 359 34.73 127.44 74.75 74.75
过程消息 359 100.23 188.94 140.25 136.25
运行命令 359 128.48 223.73 168.50 171.05
意图文字 381 158.73 255.98 198.75 203.30
灰面板 359 187.23 284.48 227.25 231.80
bash标签 375 199.23 296.48 239.25 243.80
命令文本 375 222.42 319.67 262.44 266.98
stdout 375 283.98 没有独立块 324.00 —
深度思考标题 359 401.98 缺失 442.00 —
最终正文 359 446.23 493.17 486.25 440.48
用户已取消 359 472.48 527.42 512.50 474.73
所有产物 359 504.48 缺失 544.50 —
助手操作栏 359 537.48 缺失 577.50 —

已对齐的基准,不应继续盲调

元素 两端共同值(1200×762)
主区/历史视口 主区x280,w920;滚动视口(280,86,920,506)
正文列 x359,w752,右边1111
标题/顶栏按钮 标题(304,46),16px/24;五按钮位置和32×32尺寸一致
头像行 x359,头像24×24,名称x393,gap10,h24.5
Markdown默认字号 根17.143/30.0002;段落15.0001/26.2502;首段h53.5、最终段h26.25
普通inline code Device or resource busy宽197.69、高18、字号15.0001
用户气泡外壳 #f2f2f2、padding8×12、圆角16且右下直角;实际文字另见D04
输入外框 (348,592,784,134),1px #e6e6e6,圆角24,同一双层阴影
编辑宿主/工具栏 宿主(349,605,782,64),左右padding16;工具栏(349,669,782,56),padding12
发送按钮外框 (1087,681,32,32),圆形灰底;内部图形未齐
命令面板壳层 w752、内容720、圆角16、#f2f2f2、padding12×16

4项外围壳层差异,另行记录

ID/位置 差异 范围说明
X01 顶部 WB菜单与全局图标,主顶栏(280,30,920,56);YG品牌标题栏,主顶栏(280,46,920,40) 宿主结构不同,但内部对话标题/按钮坐标一致;不应为复制菜单破坏这些坐标
X02 左栏x0—280 WB中性浅灰;YG冷色背景及顶部渐变 整窗视觉仍不同;核心对话优先
X03 当前选中任务 WB项目ygent下子项,文字约(48,417)、条h31;YG独立任务,文字约(20,240)、条h35 同时含层级/导入归属/不同列表数据;不能硬移整个侧栏
X04 左下y626—744 WB邀请卡、头像账号;YG设置与收起侧栏 外围产品入口;不默认复制平台商业体系

5项源码确认的交互缺口,未发送消息实测

ID/位置 YG已确认实现 与目标的关系
C01 左下+按钮(361,681,32,32) Composer.tsx:115仅showToast附件上传M4落地 不是可用附件入口,需添加/展示/删除/提交链路
C02 编辑器@与/ 普通textarea onChange/Enter,未接候选菜单 占位提示承诺的上下文/技能交互未接通;菜单、chip、键盘导航待做
C03 生成中发送 Composer.tsx:68 pending直接return,按钮变停止 暂无忙时队列UI/编辑删除立即发送;需真实流式测试
C04 字号设置/快捷键 六档滑杆与token表已实现;设置旁暴露Markdown px;未找到对应全局Ctrl+-/Ctrl++/Ctrl+0处理 token参数一致不等于设置形态/快捷键/持久化/全覆盖一致
C05 长会话与系统事件 当前全量829消息;分页、回退、队列、模型切换/压缩事件未全部接通 旧“几十条消息无需虚拟列表”的规模假设失效;两端DOM总高不能直接推出性能结论

15项待验收场景,暂不声称一致或确定差异

编号 精确验收状态/位置 需要检查
V01 两端1335×916 正文/输入上限、换行、贴底;本轮仅YG该尺寸已采集
V02 窄窗、最小980×640 padding切换、模型权限挤压、横向溢出、标题省略
V03 六档1—6实际设置 正文、用户文字、过程、代码、输入、按钮行框;操作后恢复原档
V04 设置滑杆 轨道刻度thumb颜色、键盘/点击调节、重启持久化
V05 用户气泡hover 时间/复制/编辑坐标、出现时机、hover间隙、键盘焦点
V06 顶栏搜索打开/有命中/无命中 输入宽高、计数、导航、高亮、折叠命中与滚动定位
V07 分享模式 选择框、底部操作条、复制导出;与平台分享链接分开
V08 最近任务/概览popover 锚点、行距、最大高、外部关闭、产物计数/跳转
V09 右工作台打开 两列变化、主列收缩、工具和产物列表、空态
V10 真实表格 字体、padding、横滚、添加到对话hover位置/引用内容
V11 Markdown代码块 与命令面板分开:语言栏、复制、字库、背景、横滚、最大高
V12 真实widget/SVG iframe高度、前后间距、响应尺寸、产物链接;不沿用模拟页结论
V13 流式/失败/取消/重试 文案、耗时、按钮状态、错误、重复丢消息、折叠稳定
V14 上翻后新消息/展开变高 阅读锚点、自动跟随条件、回底按钮位置/appearance
V15 图片附件引用路径长文本 tooltip/图标/点击、加载尺寸、复制、310px长气泡、输入增长/IME

修复顺序与完成标准

用户明确动态目标后的优先顺序:先处理 S01/S02/S06事件管线,建立增量、折叠、滚动与取消的双端验收,再继续下列静态细节;不能只沿像素微调顺序推进。

  1. 先修真实文字和字库:D01—D05、D14、D27、D32。重测六档,不仅核对font-size数值。
  2. 恢复过程真实层级:D11—D23、D25—D28、D31。摘要、意图、命令、输出、reasoning应有独立可测间距和状态,移除旧工具卡干扰。
  3. 补当前回合尾部:D29—D30。真实产物关联、操作栏及有依据的元数据,分项接通交互。
  4. 收敛图标颜色滚动:D06—D10、D24、D33—D40。改尺寸后重新核对正文与输入,避免引入全局偏移。
  5. 扩展V01—V15验收矩阵和C项;明确外围X项是否纳入同轮,平台能力不阻塞核心对话区。

每项完成需提供同条件原生采集,记录字库、字号档位、视口/DPR、展开状态、rect/样式及行为结果。字库差先消除;关键几何允许不超过1px取整误差,缺失结构/入口/错误交互不按像素误差豁免。无法获取的元数据和未操作场景明确标记,不伪造数据、不以“组件存在”标记已完成。