7.4 KiB
对话区源码级续对齐
最新工程进展:对话样式与调试画面采集。已补 REA 截图、布局和 SVG 能力,并接入选定原版 CSS;下文为此前阶段记录。
本轮继续还原已有 REA 证据中的客户端实现。以下是源码分支恢复、工程集成和本地验证结果,不是完整 WorkBuddy 1:1 验收。
最新:已通过本地修复版 REA 实际取得 64 份当前加载的 CSS 正文(5,946,566 字节),读取失败 0、无截断。采集入口、Evidence、原包比对差异与范围见 REA CSS 采集修复。下文工程实现记录保留,不代表这些新 CSS 已全部接入 YCode。
证据与范围
WorkBuddy 5.8.2 / Electron 37.10.3;ASAR SHA-256 035254bc76310ea46317433e4840602094543ef323d2d5c5aff7c131729de918。本轮只处理既有 REA 导出 .tmp/rea-runtime-scripts.json,不直接读取原版安装目录、不连接原版 CDP、不执行捕获的脚本。
REA Evidence:ev_717fa5e846e64d67ac19c8925d121bff632c0d3aefb3603b10858559cabb2dcb。
| 原版脚本 | SHA-256 | 本轮观察 |
|---|---|---|
src-Cng7axVa.js |
5ce8649e3bfac10aec1e63afee726ab45abaafc5aa7cc372892e20f3eba18c8b |
ArtifactContentRenderer、自定义内容读取、Diff 内容恢复、HTML 预览分支 |
src-0FGg1seX.js |
f2c6dbae949041b4e2bb456e8a23ae2837f2d7893ac24bf471485f77c7b15178 |
补丁依赖、计划/任务/思考图标、复制格式 |
i18n-Cxy1Uuvv.js |
1c7223b12cb9e4e4bcb448563c6bb707fc81fda1bff17c7e44e07f1f12c94dda |
简体中文与英文词典;默认 zh-cn,原版可由 initLocale 改选 |
preview-size-limit-BPMUeizf.js |
a35b8b9877f689a4e0ac3d346efc58e7e4e71bb70a1123766ebc596416123c0a |
HTML 默认 50 MiB、达到上限即进入过大分支 |
main-content-core-Dlaq72qt.js |
998ada4969d1bf7af8d2dace15c0bc2a3ca5bf0ee9cf941823d85a66d6967991 |
上下文、文件、图片 content block 与元数据 |
npm run recover:artifact-reference 校验摘要,以 Babel AST 分拆指定定义到 .tmp/rea-artifact-recovered,manifest 保留 UTF-16 范围。npm run recover:conversation-labels 从已采集字典选择 20 条英/中文原文,生成工程里的类型化字典。两者只处理 REA 导出。
工程变化
| 项目 | 已接入内容 | 仍有差异 |
|---|---|---|
| 产物分发 | 计划、概览、自定义 Markdown、文件 Diff、HTML、媒体及 code/diff 的分支优先级;task 返回空,扩展/子代理通过独立 renderer 契约 | 子代理详情、扩展应用、Office、音视频等 renderer 未完整接入 |
| 自定义 Markdown | URI/缓存/读取优先级、加载与错误状态、按 URI 更新缓存;切换后丢弃迟到结果 | 原版 Lexical 编辑、自动保存、详情工具栏仍未还原;当前展示只读 |
| Diff 内容 | 缓存优先、读取当前文件后反向应用统一补丁、失败时解析保留片段;多 hunk、偏移查找、CRLF、末尾换行处理 | 当前 Diff UI 为本地双列适配器,不是原版 PierreDiffEditor;异常补丁全边界未对照执行原包 |
| 文件工具入口 | 识别宿主实际 path 参数及 success 状态;使用已持久化的完整 oldContent/newContent 构造产物,保留创建/清空文件 |
参数里的替换片段不充当完整文件;仅有片段时继续走文件读取 |
| 宿主读取与下载 | 新增完整文本读取 IPC,保留工作目录/符号链接边界及 2 MiB 上限;修复 text/markdown 被下载格式校验拒绝 | 原版 agent URI、云文档读取协议未接通;2 MiB 是当前宿主限制,与原版媒体限额不同 |
| HTML | 本地文件读取后 srcDoc 预览、原版 fallback 的 sandbox 能力列表、50 MiB 大小判断 | 原版 URL 解析、webview 分区、编辑/刷新/发布/分享工具栏仍未等价;本地读取先受 2 MiB 限制 |
| 富消息复制 | 将 YCode 的文本、图片、附件、资源投影为已观察到的 content blocks;恢复 Context 摘要、phrase HTML、版本化自定义 MIME | YCode 分离字段到 content blocks 的映射属于适配;任意连接器块及输入框富粘贴全流程未完整还原;浏览器降级路径可能只写标准 MIME |
| 图标与文案 | 计划、任务、思考、下载、状态、审批及展开/收起使用已采集 SVG;接入已确认中文原文,移除无源码依据的 Current/Task completed 标签 | 未恢复这些组件全部 CSS、tooltip 和动效;等待标记沿用原版空 span,本地缺少其 CSS;新增字典尚未恢复全应用 locale 初始化 |
PlanUpdate 的 confirmed/finished/analyzed 在原版组件中直接写为英文,未用计划编辑器的中文文案替换。图标按钮的辅助名称属于本地无障碍适配。
验证
已通过 build(含 typecheck)、test:artifacts、test:conversation、test:resources、test:conversation-ipc、test:markdown、test:media。
- Diff 回归:多 hunk、行偏移、CRLF、无末尾换行、无效缓存回退;完整写入投影覆盖新增、清空和空文件,拒绝把参数片段当作文件版本。
- 加载回归:URI 必需、缓存跳过读取、强制刷新、读取失败回退;类型分支优先级及 HTML 大小边界。
- 宿主回归:真实 IPC + 临时工作目录;完整读取 1000 行、拒绝越界/符号链接/二进制;Markdown 通过实际下载 handler 写到临时文件并核对内容。
- 浏览器使用
verify-ui.mjs?fixture=artifact-source的测试数据和测试桥,验证文件工具→完整 Diff、自定义 Markdown、缓存、HTML、读取失败、超时和空文件;300 ms 迟到读取没有覆盖随后打开的缓存预览。浏览器错误日志为空。 - 桌面布局使用 YCode 默认窗口宽度 1335;列宽为 280 / 408 / 647。截图
.tmp/artifact-source-alignment-2026-10-15.png是 YCode 测试页,没有原版同状态像素对照。
后续差异
历史阶段登记了原版组件 CSS 采集未知项 unk_7501f666de6716fa984de8a3135164da05d580ac8aa523e2770460329c892b39。现已用本地 REA 修复打通已覆盖样式正文,原先“当前组件 CSS 正文无法取得”的阻塞不再适用;这是项目状态更新,没有伪造原 REA 会话未知项的关闭记录。未加载样式、两个运行时/原清单摘要差异及截图仍有独立未知项。
修复前的调试路径复核纠正了阻塞归因:调试连接正常,不应把完整 ASAR 提取失败当作调试模式无法提供 CSS 的证明。REA list_electron_targets 再次确认 WorkBuddy 5.8.2,Evidence ev_ce09402c0eef01ab6d3f60d2db5cc598d6edc9715fcde64ed35d6acebe880d06。当时只读检查 REA 6.5.0 的 CdpElectronInspection.js,资源采集使用 Page.getResourceTree,仅返回路径/MIME/大小;DOM 快照的 computedStyles 为空,安装实现未发现 CSS 正文读取调用。具体缺口是该版本 REA 未暴露 CSS 正文导出。那次复核未修改 REA,记录位于 .tmp/rea-css-debug-check-2026-10-15.json;随后用户要求先解决采集问题,本次已在独立副本实现并实测 CSS 采集,详见上方修复记录。
下一阶段仍需补完整编辑器与产物媒体依赖、富输入粘贴、原版长列表/滚动、组件样式和相同状态运行对比。云端服务、子代理调度、原生宿主与系统沙箱保持独立未决项。此前八类清单见 对话区域八类对齐。