# 统一能力中心与专家页面实施(2026-10-16) 本子任务只新增能力中心、专家页面、源码恢复资产/样式/工具及独立 QA;App、Sidebar、主进程、IPC、preload、聊天内核由 root 接线,SkillsPage 与 ConnectorsPage 由其他 worker 实施。未安装专家、未启用 WorkBuddy 服务、未操作用户数据或原版界面。 ## 已实现 - `CapabilityCenter.tsx` 默认导出包含 `cwd/onBackToChat/onUseSkill/onCreateSkill/onFindSkill/onCreateExpert` 的约定接口,另支持 `initialTab` 初始化及 prop 变化。三 tabs 专家/技能/连接器使用原 `UnifiedMarketHeader` 源体。中心只有一个顶栏,页面通过 `CapabilityToolbar` portal 提供搜索/管理动作;`CapabilitySubpageHeader` 恢复“我的专家”的返回导航。 - 通过源 token 的 Electron desktop 条件获得64px顶栏;主题跟随当前 document dataset 变化。中心填满现有主视图,样式限定 `.yc-capability-center`。480px窄窗换行是明确的 YCode host 适配,未声称是原版同宽行为。 - 专家页默认明确“在线专家目录尚未接入”,不会把原版云端目录当作 YCode 已拥有专家。用户可选择查看缓存参考目录;9条是从已核验 REA 截图的可见文字转录,使用 `rea-reference-*` 独立引用 ID,禁用召唤/激活。头像原资产没有取得,使用原 `ExpertCardAvatar` 的文字 fallback。 - 专家参考卡使用完整原 `ExpertCard$1` 源体、头像/加载 hooks、locale/格式/标签/搜索纯函数。源码中的 `useCount` formatter 用于重现截图显示数字:输入值由已显示的 `w` 数字反推,只用于只读归档展示,**不是精确后端计数,也不是实时统计**。原 metadata 结构令卡片恢复156px高。 - 搜索框使用原 `ExpertSearchBar` 源体,300ms debounce、composition期间暂停提交、compositionend提交。分类、专家/专家团、排序按钮可操作;未归档分类/排序显示“此归档未保存”,不会编造结果。详情使用源外框/内容 class,展示仅已保存摘要和标签;未安装包不能召唤。详情关闭、Escape、焦点恢复及 Tab 限制已接。 - 我的专家采用源 `ec-my-panel/toolbar/tabs/empty` DOM、真实空态 SVG、“搜索我创建的专家”、源返回/加号/我的专家 SVG。创建只调用 root 的对话入口回调;不是普通prompt CRUD,也不假称 expert-manager 包已工作。原“我创建的/我购买的”segmented 可切换,购买目录未接时明确不可用。 - 模块不请求 WorkBuddy CDN、商店、账号或模型服务,不加载原 contexts 的 app 初始化;React/JSX使用 YCode 自身同一实例。 ## 源码与证据 目标 **WorkBuddy5.8.2**;ASAR固定SHA: `035254bc76310ea46317433e4840602094543ef323d2d5c5aff7c131729de918`。 旧 runtime归档:`ev_717fa5e846e64d67ac19c8925d121bff632c0d3aefb3603b10858559cabb2dcb`(339正文);当前归档:`ev_e91787b1d4dea651582c6cf12827775b9068b0ee8b80c68ba08d4c1d87d94e90`(329正文),相关同名JS SHA一致。每次恢复先核验源文件SHA。 | 源文件 | SHA-256 / 用途 | | --- | --- | | `contexts-BMeWSUHk.js` | `5f35b7489b107e21ef452c8ee88a95265756f6fc444841eef869228bbc44768b`;UnifiedMarketHeader2420000附近、ExpertSearchBar3546674、ExpertCard3531248、class maps及纯函数 | | `src-DPDj7_qD.js` | `747e41d215375e1214c366213aea7e077d85421923029c61cbb6e9562be58de0`;专家/技能/连接器/返回/加号/我的专家6个源SVG | | `contexts-BkjwYSZT.css` | `50cbd673f7f35fc7f966bdddc6c9f5677fdfe944cb904888d214619fca259380`;页面、主题、卡片、详情、空态、分类排序 | | `tokens-Df-i-zsO.css` | `13f2bf82c96e5167a7d7098e36950c6c22c475b3337dbb8bb29ad2fe79cde696`;源颜色/字体/间距/尺寸/动效token;root与dark条件映射到本地scope | | `src-Bh3YZ35H.css` | `88dbdc1cd3f59d0e8b75824512a465a2be714bc7af481d790fe3a9484f85e01a`;真正的WB Input/Button/Segmented基础组件规则,保留媒体条件 | | `src-CBaV_A3S.css` | `2090ed21045c8f8b0fc388d76424c8751bf18fcd065cbbd5d0ef485163a2e36c`;已有REA原样式中的补充组件规则 | CSS Evidence:`ev_377c8790468b3c67dad8577aabb327f98d3140659f0fffdbabfcff5a40cc9e94`。完整恢复索引 `capabilities/assets/recovery-manifest.json` 记录 **32源体**、**1256 CSS记录**、原文件/UTF-16 offset/源体SHA/输出SHA及显式 host adaptations;CSS声明/顺序、keyframes、媒体条件保留,选择器加scope。标题/搜索/卡片及搜索高亮原主体没有转写为自创 JSX。 空态 SVG 经 public REA `export-selected-artifact-binary`、固定根pin导出: `renderer/assets/empty-created-expert-BOI6XYXm.svg`;Evidence `ev_e5515aa84117724605f73439d065222c2e23b6ab8226be5d03f1ee0c7b387a9b`;SHA `157f07ef40d6cdf5f3aed362509861151fbdde0a8a9c89c98c26de6f35f664b7`。 仅保存到本项目assets,不安装原版包。 页面参考:`.tmp/rea-expert-entry-static-20261016`,Evidence `ev_20de2f04c99b1c27bc39b61f5e2f5a430c3c7029b09afb76b363652eb4fadc89`,PNG SHA `e49ce30072a11898f3114b73dd3b941fe93fc0da46eee6fb15cb765635c5591a`。 我的专家参考:`.tmp/rea-my-experts-static-20261016`,Evidence `ev_6f00d8b339cb4baf0af2a68f797e93dd6b5ce3ab18da2b43aa63ec09952c1d93`,PNG SHA `8b4c7ca84a4475131f5f43c7d746e6a7376a46a68b90adace60f774476a95f9b`。 本 worker 只读 Root 的这些 REA 归档;未新增原版 runtime 动作。 ## 宿主替换与未完成部分 - 原 tooltips采用本地 title、不接原遥测;source header visible-tabs由本地固定三项提供,原远端产品flag/覆盖icon尚未接。source search input通过匹配DOM合同的 React input 绑定,真实原primitive CSS已接。 - 缓存详情是按源 DOM/CSS组织的本地只读视图,不是全部 `ExpertDetailContent` 源体;相关案例、团队成员、购买/退款、完整简介与快捷提示未取得该条目数据,未造值。 - 专家市场推广横条的照片/动态布局资料尚未取得原图片资源,本轮不拼截图假装可交互组件。默认不可用态和缓存参考页因此不能宣称与原在线市场首屏全图像素一致。 - 分类/其他排序/团队的归档为空;真实市场加载、分页/失败重试/企业权限和账号布局未接。 - 本地 daemon handler、plugin/agent/skill包schema、expert-manager技能正文、安装/导入/导出、真实运行时绑定与专家执行仍待证据与宿主实现。原选择路径涉及激活、会话配置、craft模式、recents/pins和依赖检查;当前root创建只做到对话入口。详见 `assessment-experts-2026-10-16.md`。 - 云同步、分享、扫描服务、配额、付费、专家团调度未实现/未验证。没有以UI或source hash通过宣称整项1:1完成。 ## 验证记录 `node scripts/rea/recover-capability-center.mjs --check`:源体/资产/输出可重现,PASS。 `npx tsc --noEmit -p tsconfig.web.json`:包含三个worker页面的合并类型检查,PASS。 源组件 SSR 试渲染 header/search/empty/card,无缺失全局标识或无效值,PASS。 真实隔离生产App QA脚本 `scripts/verify-capability-center.cjs` 不伪造IPC、不发消息、不安装能力,只浏览测试profile并点击真实UI。第一轮 `.tmp/capability-center-SPgt1f/report.json` **23/23 PASS**:源header64px、tab宽60/60/78与gap24、默认目录不可用、9条只读引用/无召唤按钮、搜索过滤/清理、详情Escape、初始tab路由更新、三个tab、480px无溢出、创建仅草稿且0会话保存、HTTP0、renderer errors0。这个结果属于补齐segmented基础CSS之前的构建。 随后对原版我的专家布局定位真实差异:icon/title分别Y468.5/544.5,较源472.5/548.5提前4px;原因是缺失原segmented基样式令toolbar只有24px,原版32px。失败报告 `.tmp/capability-center-627u1I/report.json` 保留,未调整容差。已从正确 REA CSS文件补全基础规则,并移除不准确的手写Input/Button样式;另补创建按钮遗漏的源 `topbarActionBtn` class,恢复原16px水平padding与108px宽。 **最终统一build后的真实生产App扩展验收:33/33 PASS**,报告 `.tmp/capability-center-k6vN5H/report.json`,包含6张PNG与对应布局。除首轮项外,还验证:空态icon `[776.125,472.5,64,64]`、title `[745.125,548.5,126,22]`、toolbar32、创建按钮108px宽/14px字号、右侧动作区300px宽;原卡片动画结束后height156;真实DOM composition期间不筛选/end立即筛选;真实native appearance窗口深浅主题同步。HTTP请求0、renderer errors0、浏览及创建入口保存会话0。卡片曾在原fade动画中测得156.000015,最终测量等待原动画finished,没有放宽容差。 宽度前提是1336×901、YCode保存sidebar284.25;原版保存sidebar284.28125。最终my-experts空态icon/title坐标与原样本精确一致;header右侧宽300一致,其X1012与原X1011.984375有保存宽度/取整差异。参考卡为9项且无推广横条、头像包、完整目录或原版长列表滚动条,首卡宽322.578125;原在线长列表样本宽319.234375,**没有把这两个不同数据/滚动状态宣称为完整网格像素1:1**。窄窗只证480px无文档横向溢出,不宣称原版同宽布局已对比通过。 本轮不进行全页像素零差异、全动效/hover、完整云端行为等价验收。 ## 修改文件 - `src/renderer/src/capabilities/CapabilityCenter.tsx` - `src/renderer/src/capabilities/ExpertsPage.tsx` - `src/renderer/src/capabilities/{capability-center-source,expert-source}.css` - `src/renderer/src/capabilities/assets/{source-ui.mjs,source-ui.d.mts,source-classes.json,recovery-manifest.json,empty-created-expert.svg}` - `scripts/rea/recover-capability-center.mjs` - `scripts/verify-capability-center.cjs` - 本文;`.tmp/rea-expert-empty-asset-evidence-20261016.json` 与独立QA报告/截图。 未修改App/Sidebar/shared/ipc/preload/main或其它worker文件。边界内后续source恢复以生成器为准,禁止直接改生成CSS再误称原体未变。