chore: establish YCode replication baseline and TODO

This commit is contained in:
xiaohan.yuan committed 2026-10-17 02:43:49 +08:00
commit 6dc59f89ba
1118 files changed
+196002

No files matched your search

+64
View File
@@ -0,0 +1,64 @@
# REA CSS 正文采集修复
> 后续已升级本地副本至 `6.5.0-visual.1`,补齐 PNG、计算布局和 SVG 采集,开始实际接入对话组件;见 [对话样式与调试画面采集](对话样式实对齐-2026-10-15.md)。下文保留 CSS 首次修复结果,旧的问答选择器、计算样式和截图阻塞已推进解决。
当前已通过本地修复版 REA 取得 WorkBuddy 已加载的 CSS 正文。原来的阻塞是 REA 6.5.0 Electron provider 没有实现样式正文采集,而不是调试连接不可用。此结果解除当前已覆盖组件的 CSS 正文获取阻塞,不代表 YCode 界面已完成 1:1 对齐。
## 实测结果
- WorkBuddy 5.8.2 / Electron 37.10.3 / Chrome 138.0.7204.251;既有端口 `http://127.0.0.1:9223`,页面 `WorkBuddy/resources/app.asar/renderer/index.html`。
- 本地 REA `6.5.0-css.1`,provider `rea-cdp-electron` / `1+css-local.1`。这是基于已安装 6.5.0 编译模块的本地修复,**不是上游正式发布版本,也不是恢复了 REA 的原始 TypeScript 工程**。
- 实际 REA Evidence:`ev_377c8790468b3c67dad8577aabb327f98d3140659f0fffdbabfcff5a40cc9e94`,归档 `.tmp/rea-css-evidence/ev_377c8790468b3c67dad8577aabb327f98d3140659f0fffdbabfcff5a40cc9e94.json`。
- 观察到 65 张样式表,64 张正文读取成功,1 张因来源或 frame 范围不符排除;读取失败 0,未触发截断。64 份合计 **5,946,566 UTF-8 字节**,其中 63 份文件样式、1 份内联样式。
- 导出到 `.tmp/rea-css-recovered/`;每份都核对 REA 文本 SHA-256、UTF-8 字节数、media type,使用 PostCSS 解析,并重新读取导出文件复验摘要。清单位于 `.tmp/rea-css-recovered/manifest.json`。
- 没有导航、点击、重载 WorkBuddy,也没有执行 renderer JavaScript。
## 已找到的组件规则
| 选择器族 | CSS 文件 | 匹配规则数 |
| --- | --- | --- |
| `cr-tool-call` | `src-CyXHA0IC.css` | 17 |
| `cr-reasoning` | `src-CyXHA0IC.css` | 7 |
| `cb-plan-task-wait-icon` | `cb-bridge-jsj-8pWS.css`、`src-CBaV_A3S.css` | 各 1 |
| `cb-plan-tool-container` | `src-CBaV_A3S.css` | 38 |
| `cb-task-tool-renderer` | `src-CBaV_A3S.css` | 40 |
| `artifact-content` | `src-BPUOynUo.css` | 2 |
| `markdown-editor-container` | `src-BPUOynUo.css` | 16 |
规则数按 PostCSS rule selector 包含上述字符串统计,是覆盖定位,不是组件完整性证明。对 `question-floating` 没有匹配选择器;变量名中出现该字符串不能当作组件样式已经定位。另已取得输入区、图片预览、编辑器与全局 token 的样式正文。
## 运行时正文与原包身份
与此前 REA 导出的 17 项 ASAR 样式清单比对:当前观察到其中 15 项,**13 项摘要与大小完全一致、2 项不一致**;其余 2 项未在本次加载样式中观察到。清单父 Evidence 为 `ev_97959691fb7cabf7c41f948b08332196924fec1fa8cb71e34dbafd65d912e637`,当时 ASAR SHA-256 为 `035254bc76310ea46317433e4840602094543ef323d2d5c5aff7c131729de918`。本次没有重新散列整个 ASAR。
| 不一致文件 | 运行时字节数 | 既有 ASAR 清单字节数 |
| --- | --- | --- |
| `main-content-core-D2cL2TEf.css` | 717360 | 717356 |
| `src-CBaV_A3S.css` | 912607 | 909372 |
两份仍以实际运行时正文保存,manifest 同时保留原清单的预期摘要和大小,`asarComparison.status` 标为 `mismatch`。差异原因未确定,不能宣称它们与包内原文件逐字节相同;也没有拿本地内容替换原版。未观察到的清单文件是 `lightbox-shell-impl-CZr0IQzL.css` 与 `src-CJIPtKK-.css`。
## 修复入口与复用
```powershell
npm run rea:css:prepare
npm run test:rea-css
npm run rea:css:capture
npm run recover:css-reference
```
`prepare-css-runtime.mjs` 将已安装 REA 6.5.0 复制到 `.tmp/rea-css-runtime`,在副本应用受锚点校验的补丁;依赖通过只读复用的 junction 解析,代码不会写入该依赖目录。源安装位置可通过 `npm run rea:css:prepare -- <绝对路径>` 指定。不修改全局 REA、Codex 注册或技能;当前会话原有 REA MCP 仍是原版本,后续采集使用上述本地入口。
采集包装器只启动本地 REA 的公开 `scripts/rea.mjs`,先通过 REA `list-electron-targets` 按完整文件路径唯一选定 WorkBuddy,再调用 REA `inspect-electron-page`。包装器自身没有 CDP/WebSocket 实现。可显式指定其他已授权端口及页面:`npm run rea:css:capture -- <loopback端点> <完整页面路径>`。证据按 ID 归档,同时更新最新证据别名;导出脚本只读取 REA Evidence,不访问原版。
REA 内部新增 `include_style_sources`(默认 false):在选定 target session 启用 DOM/CSS,收集样式表生命周期事件,仅对获准本地 frame、`regular` 来源的本地文件或内联/constructed 样式调用 `CSS.getStyleSheetText`,沿用 REA 文本 artifact 摘要与 Evidence 生成。CLI 参数为 `--include-style-sources`;本地副本 MCP 的输入 schema 同步暴露该选项。限制为最多 1024 次正文请求、单份 8 MiB、合计 64 MiB,正文读取后执行字节预算检查;CSS 有独立失败/排除/截断字段,不能只看旧的 scripts/resources 完整性字段。
可审查文件:`scripts/rea/prepare-css-runtime.mjs`、`scripts/rea/patches/CdpElectronStyles.js`、`scripts/rea/capture-css.mjs`、`scripts/rea/export-css-reference.mjs`。副本里的 `css-repair-manifest.json` 保存 11 个变更模块的原始/修改摘要,`css-repair-baseline/` 保存对应原模块。`.tmp` 中的运行时和证据应保留;删除副本后可以重新 prepare,但删除 Evidence 会失去此次观察记录。
## 验证与剩余范围
`npm run test:rea-css` 已通过:真实修复模块配合隔离 mock 协议测试来源/frame/session 过滤、默认不开启、移除事件、读取错误和字节/数量预算;验证输入/输出 schema 与实际 Evidence 保留正文;通过公开 launcher 启动真实 MCP 进程验证版本、工具列表和 CSS 参数;最后检查 11 个本地模块摘要及对应全局原文件未改变。测试只用自有临时 fixture,不采集原版。
另外已通过公开 REA CLI 真实采集 WorkBuddy,并完成 64 份文件的导出校验。本轮没有修改 YCode 产品组件,所以不以应用构建代替采集验证。
仍需后续单独处理:未加载/未归属的样式、两个摘要差异的原因、问答组件选择器定位、字体资源及最终计算样式、同状态截图和动效对照。当前 CSS 可以作为后续组件源码级对齐的依据;仍需连同原版 DOM、变量、资源路径和组件行为集成并验收,不能只全局导入便宣称 1:1。