# WorkBuddy 连接器复刻评估(2026-10-16) 当前可直接推进原 DOM/CSS 的商店、详情、搜索、自定义 MCP 列表和配置界面;真正可用的连接器还需要连接状态服务、凭据与授权流程、MCP host,以及会话工具选择/执行链路。YCode 现有工具展示组件不等于已实现 MCP 连接。官方目录、企业下发、WorkBuddy OAuth 中转与账号绑定包含 WorkBuddy 服务依赖;YCode 可实现自己的目录、授权和 MCP host,但不能把相同界面或受控测试成功称为原版云端等价。 本轮仅静态评估与拆解。没有改生产代码,没有安装 MCP、添加/启用连接器或授权任何账号。没有通过直接原版文件、CDP、WebSocket、evaluate 或旧文档取证。 ## 证据、范围、校验 版本 **WorkBuddy 5.8.2**;固定安装包 root pin **035254bc76310ea46317433e4840602094543ef323d2d5c5aff7c131729de918**。后续需要增补主进程/daemon 时,仍应通过 public REA 选中路径 export 并固定此 root;本轮未增补读取安装包。 - **S1**:`.tmp/rea-runtime-scripts.json`,REA `ev_717fa5e846e64d67ac19c8925d121bff632c0d3aefb3603b10858559cabb2dcb`;339/339 脚本文本按 UTF-8 SHA-256 验证通过。 - **S2**:Root 新采 `.tmp/rea-expert-runtime-scripts-20261016.json`,`ev_e91787b1d4dea651582c6cf12827775b9068b0ee8b80c68ba08d4c1d87d94e90`;329/329 通过,共有同名脚本没有 hash 变化。本轮实现结论以 S1 为主。 - **C1**:`.tmp/rea-css-recovered/manifest.json`,`ev_377c8790468b3c67dad8577aabb327f98d3140659f0fffdbabfcff5a40cc9e94`;下列 3 份连接器 CSS 实际文件 hash 已复验。 - **V1**:Root 原版连接器页 action 后 PNG `.tmp/rea-market-connectors-20261016/frame-000.png`,`ev_d0183b5ee9e28b74126f773e134d9e4b1e856fcc67083212c6e258813c9ea890`。该操作记录顶层 layout 属于 action 前,不能作为连接器页布局证据。 - **V2**:Root 随后静态捕获 `.tmp/rea-market-connectors-static-20261016/layout.json`、`workbuddy.png`,`ev_e91bdc6e46275f4460985cfff25fd7f7bc334afc45f49fac1935de1249f4cb22`,PNG SHA-256 `2a537f83fcad50cf355668cc007c70f48446c7d92dc9a3a6ec388b84c4b12854`。这里已存在连接器页 DOM。V1 可见“专家/技能/连接器”、搜索框、“自定义连接器”、三列卡片/加号;不能由此证明连接健康或成功授权。 - **V3(partial)**:Root `.tmp/rea-connector-detail-20261016/frame-000.png`、`frame-001.png`,`ev_b898a87832d1e800810d391145a6ec6c6999e98b5cea6c7f382a3fc19aa7b3ac`。frame 000 为 QQ 邮箱主体点击后的详情,frame 001 为 Escape 后仍打开的详情。Root 报告操作 steps 成功,但 neutral-pointer cleanup 被取消,因此 overall failed,不能把整条 probe 说成 PASS;顶层 layout 属于 action 前。两帧本地 SHA 分别 `0b4c3fd29fdedded1fafd7e53e4b1216a3ac3d9117ff6acb6a41269b99e4f6bc`、`38d15afce56622e03e50b93cbb52aaeb8174028faed83483e5729e6bef25786d`。 - **V4**:Root `.tmp/rea-custom-connectors-static-20261016/layout.json`、稳定 `workbuddy.png`,`ev_b89281177f6a1cf2e4697887d576b8ddf7d811a8fa2d1148b7024a4ec898906f`,PNG SHA-256 `8d76ef16a32d9415bb8116715b386df5fbd0c11f498837e74df083004bcfcd5d`。可见“MCP 服务管理”“我的 MCP(4)”“3 启用”、搜索/Hub/添加、80 工具警告、4 个现存 server 与工具数/健康点/开关。这里只观察现存状态,Root 没有 toggle/connect/save/auth。最初半透明过渡帧不作为稳定像素基线。 新增 `scripts/audit-connectors.cjs` 只读上述工作区 REA 归档,不读取原版路径、不执行源 JS。默认生成 `.tmp/connector-assessment-20261016/integrity-and-anchors.json`;`--find <精确文件名> <文本...>` 和 `--excerpt <精确文件名> ` 可复查。下文 offset 都是 **0 起始 JavaScript UTF-16 字符偏移,不是字节偏移**。 | S1 归档脚本 | SHA-256 | 核心锚点 | |---|---|---| | `skills-panel-CvMlV3m8.js` | `b30c43c11ec476db639d6be58065d927411845487d34b0ea8e839d1c6eb7a238` | `ConnectorPanel` 62950;`McpPanel` 27216;`McpConfigEditor` 20816;`ConnectorDetailSetting` 11484 | | `store-BKmTj0KI.js` | `ea51bfd988c299d00574dccdb28f73c199502d79074da9ae560031a3307a2f89` | `createConnectorCatalogGateway` 8673;状态投影 19577;`executeConnectorAction` 51049;cancel 57566 | | `use-connector-actions-DhLHDumM.js` | `04d7f42118e0d6190fde9fda001baef7ccfa78bc1035be31a35bd2c029b1c3a8` | `useConnectorActions`;handleConnect/Repair/Disconnect/Cancel;5 分钟 pending-auth 追踪 | | `open-deeplink-connector-store-GkwgNaZv.js` | `56095700d10ad8427243a03fb3257ce9df11b308e19b7287af5d39eefff2f9d3` | `setOpenDeeplinkPendingConnectors`、remove/clear;去重 ID 集合,非商店实现本体 | | `connector-token-config-gate-DtzOLq6x.js` | `da8bd45173a3d000dfa025481f29f196ff51bf1002ea9189d6d69e08c5d2825c` | `runTokenConnectorSaveFlow` 513;Gate 1154 | | `connector-token-config-modal-DXJvYxRD.js` | `16560cc681eb38e34be8687350d3782903a28ca6df9f9c4029939968e65887bf` | 必填 327;payload 574;初值 747;Modal 1342 | | `connector-device-code-modal-ClMm_s3k.js` | `ced26ec4253dc675267f136451322376cc81bf0d3f14cd86f73fffac49b720d7` | `formatRemaining` 1022;Modal 1173;Host 4434 | | `connector-runtime-toast-DmevVoHX.js` | `97431e4b57a37c3be9973e83903c99f860a43f3a8a226fbb5e2f6d64955384fa` | `ProgressToastBody` 618;Subscriber 1237 | | `oauth-contract-D3wxpVaW.js` | `39621f3478f1c56dcb2d0080581500d2036c2306baa10665ddca3481c3160b4f` | `readAuthScope`、`notifyIfAuthExpired`;account/runtime 过期分流,不等于 connector OAuth 后端 | | `connector-icon-C4VuqOCA.js` | `c14c59b43943fe4af821cb6155171dca1a3502743fa70deb65dbb16ad334d2cc` | 详情批量补齐、stateful 目录合并、图标失败 fallback | | `mcp-server-loader-DFUSVF9N.js` | `b37999cd9a1e38450f8ff30ce4ceb0f08ff3aca249135e77b426cf95c6a58db6` | `getMcpServersDedupedWithMeta`、`mergeMcpDescription`、状态/来源投影 | | `contexts-BMeWSUHk.js` | `5f35b7489b107e21ef452c8ee88a95265756f6fc444841eef869228bbc44768b` | `useConnectorFacade` 1762814;keyword filter 3526103;专家依赖 3934216;会话选择/注入 6072687/6076938 | | `workbuddy-provider-DkH2YFYM.js` | `b588e875c469978f216beec86bdf4b6c33a31c0266f9bf996881b8dbf37b5dc7` | `pollAuthStatus` 14550;`DesktopConnectorManager` 15291;desktop localOps 约 35200 | | `adapters-SPAem2E3.js` | `b1f740a608087d6ede5a94f3b485c189e3b57698a79aff4b07da9c66acfae1ba` | client.sessions MCP 113602;getConnectorConfigs 117713;updateConnectorEnv 120264 | | `common-DRZ6FwkK.js` | `924f348494323c3b09cfbde84f7729a178cd95a72e4f9ca654859c75fec9e2f5` | BackendProvider `/console/as/connector/user/`、task 约 430350–432500 | | `runtime-B7PLES2V.js` | `b944fdfed0d52ca4c588833f94f50f878169a9244c05ed186abfa4eb37957911` | `connector:init/getConfigs/getStates/connect/repairConnect/...` IPC 常量约 7260 | | `wb-CocRQn4C.js` | `d9ddb5d5464f2d863659a01493b58220bb5a0e270c22b16f405cfaeab2a7a972` | reason→动作 28900;bridge authorizer 89000;connectors/mcp/cloud guest proxy 101851 | | `wb-input-add-B045GnIg.js` | `7842fa4321d5351bf6c822bbd0253e0d6d6e68cc9cfae3f2470b3d493c23daf4` | `sortConnectorsLikeCapsule` 22935;ConnectorsSubmenu 约 24200 | | `desktop-sdk-setup-C2AUiJmx.js` | `ac3bdeb6d81776491e175ddfae262e64f77d3dc9c0821d6075a91bf1b889dc23` | `prepareInput` connectorIds→UI/configManager 约 376400 | | C1 CSS | SHA-256 | 已归档内容 | |---|---|---| | `skills-panel-CsnIUki4.css` | `c1d5c5de51554a886fde0399c5202cd45063fa091b213b842014bea91dbb69a0` | 59,787 bytes / 470 rules,包含连接器与 MCP 面板规则 | | `connector-token-config-modal-B4MFl7DI.css` | `08a4b349ae9020ad87fe798e2b5ea44f77f38ea46f5b4e7b4daa97fd21a297f7` | 4,610 bytes / 32 rules | | `connector-device-code-modal-DLS20fDt.css` | `b6ed4f94669f02815fb2969bfd2e8b6cbf40097c8840343e0a080480415d6bd8` | 4,818 bytes / 30 rules | ## 已知实现与原版边界 ### 商店、已添加、搜索与详情 `ConnectorPanel` 是实际连接器页。local 模式保留目录顺序,逐项映射 installed/available 卡片;非 local 会先显示 installed 再 available。installed 判定是 **bound 或 connected 或 pending 或 enabled 任一为真**,不是只有 connected。状态有 disconnected/connecting/connected/unauthorized/error,reason 类型驱动重授权、配置、重连、升级或联系管理员。 目录 gateway 支持 local `listMarket({start,limit,includeStateful})`,每页 50;market 模式才使用服务端 search/getDetails,legacy 模式在已加载名称/描述上过滤。列表与搜索分别有 loading/loadingMore/hasMore/cursor;搜索 trim、200ms 防抖、IME composition;epoch/关键词检查防止旧响应覆盖新结果。`useInfiniteScroll` 用 200px 接近阈值。初次列表 skeleton 数 9,面板加载超时 20s。详情补 examples 与 stateful 目录缺项,按 ID 去重。 本版本 `ConnectorPanel` 源码有 conditional **official/enterprise** tab:仅存在企业专有连接器时显示;没有证据表明这里必有“办公/开发/设计”或更多固定分类,不能把专家页分类移植成连接器分类。V1 当前画面没有该企业 tab,目录内容随服务和账号变化,不能写死为完整永恒清单。 卡片主体点击仅展示详情(必要时只读补 examples),卡片 `.connector-card-action` 的加号独立 stopPropagation 后连接。详情有名称、描述、图标、版本不兼容提示、最多 10 个 examples、连接/重授权/配置/试用/重置、已安装且存在 tools 时的可展开工具名与描述。背景点击/关闭按钮关闭详情。试用先确保连接,再 `conversations.prepareInput({target:{type:'new'},contentBlocks,connectorIds})`,不是静态提示文案。 V3 已只读观察 QQ 邮箱详情的未连接态、examples 与滚动截断;Escape 在该观察中未关闭,关闭按钮随后由 Root 使用。不得把其他 modal 的 Escape 规则擅加到该详情。没有点击“连接”或 examples,因此没有真实授权行为。 `open-deeplink-connector-store` 文件名容易误导:其中主体是首页草稿与 pending connector IDs 去重集合。商店列表和详情主体位于 `skills-panel`,不能仅复制 deeplink store 当成商店实现。 ### 添加、Token 配置、OAuth 与 device code 存在至少两条 Token UI 路径,不能强行合成一个返回 success 的表单: 1. schema 多字段 modal/gate:`tokenConfig.fields`,字段 key/label/type/required/defaultValue/placeholder/description,title/description/docUrl/docLabel。password 必填允许已有 `hasSecretFields` 且本次留空;password 空白不进入 env payload,其他字段即使为空也提交。初值优先 initialValues,非 password 才采用 defaultValue。修改清对应错误/submit error;第一字段 autofocus、最后字段 Enter 提交;保存时 input/close/cancel disabled,Escape 仅非 busy 可取消。overlay 没有 click-away cancel handler。 2. 新 `action-required/form` 分支:store 取 fields 的第一字段 key(缺省 token),显示 connectorTokenPrompt,submit `{kind:'form',values:{[key]:token}}`。Token invalid 可以保留表单重试,CLI_ 错误有终止分支。须在后续 UI 采集中区分它与多字段 modal。 Gate 的保存顺序是 **updateEnv 成功 → connect**。保存配置失败与连接失败分 stage;connecting 可返回 pending 而不是 connected。connect-failed/secretInvalidated 可再次打开配置并丢弃“已有 secret”标记;取消会调用真实 cancelMcpConnector。渲染端支持 hasSecretFields 不等于已经证明主进程凭据加密或“原版永不返明文”:buildInitialFormValues 对传入 string initialValues 也会设置 password,真实 adapter 返回值边界仍需后端证据。 `DesktopConnectorManager` 分 local、server-side、gateway 和 projectConnectorAuth。server-side 可从 service.authAccessToken 取 token 写 Authorization header;userInitiated 会走 authRevoke 后重新 OAuth。gateway 的 authStart 可能返回 connected、show_form 或 redirect;redirect 打开外部浏览器并轮询 authStatus(1.5s,默认期限 5 分钟/服务提供 expireAt,AbortSignal 支持取消)。这证明接口和前端分支,未证明任何账号实际授权成功、token refresh/PKCE/state 校验实现。普通本地连接转 localOps;WorkBuddy service facade 与本地操作同时存在。 device code 从 `connector:device-code` 事件取得 verificationUri/userCode/expiresIn/codeEmbeddedInUri。Modal 每秒更新时间、剩余不足 60s 高亮、到期调用 onExpired 或 onCancel;复制 code/link 成功提示 2s,Clipboard API 有 textarea fallback;可只有 URL 没有 code。Host cancel 会关闭 modal 并 cancelMcpConnector。Modal 声明 `onOpenInBrowser` 但本体此归档没有调用该 callback;打开浏览器可来自 action flow 或链接,不能推断“显示 modal 必自动打开”。QR code 有独立 `connector:auth-qr-url` 分支,也应保留待验。 ### 自定义 MCP、健康、工具、删除与 trust “自定义连接器”入口仅 local 且企业 customConnectorPolicy 允许时展示。入口刷新 policy、打开 McpModal 并只读计数;不是直接安装/启用。McpPanel 使用 `wb.mcp.list/describe/setEnabled/connect/beginAuthorization/remove/setToolEnabled/approve`。UI 的 connected/connecting/idle/disabled/disconnected 是 host 状态投影;工具列表、prompts/resources/resourceTemplates、来源 plugin/marketplace、editable、trusted/configHash 均影响操作。缓存 500ms、并发 list 去重;connecting 轮询 5s、最长 60s,隐藏窗口暂停。官方 connector store 的 pending poll 为 3s/最长 60s,状态 event 与异步 snapshot 的写入代次/intent guard 防回滚;两个 poll 不应混为一个。 自定义配置不是简单“名称+URL”表单:`McpConfigEditor` 为 JSON Monaco 编辑器,显示真实配置路径、dirty 标记,Ctrl/Cmd-V 支持 host clipboard,返回时确认未保存改动。空文本规范化 `{mcpServers:{}}`,JSON syntax 和顶层结构校验;兼容把误套的 mcpServers 扁平化。此处 validator **只证实结构**,不能据此宣称所有 command/args/env/HTTP/stdio/SSE transport 均已校验或支持。保存全配置走 `wb.mcp.saveConfiguration`,具体后端原子性/启动方式尚未知。 未信任 server 的 toggle 强制关且 disabled;有 approve 按钮,调用 **approve({id,configHash}) → setEnabled → connect**。服务/工具操作 busy 去重,工具 disabled/外层 server off 不可点;>80 个 enabled tools 有警告。OAuth unauthorized 的 reconnect 可调用 beginAuthorization 后外部浏览器,避免重复 authorizing。网络错误有 reconnect/troubleshooting/copyLog。 三种操作必须区分: - **disconnect/disable**:停用当前连接,可保留 bound/已授权关系;会话选择 off 也有 selection-only 分支。 - **unbind/reset 官方连接器**:详情实际调用 `wb.connectors.unbind`;manager 可先 service.authRevoke 或腾讯文档 revoke,再 local unbind。企业 oneidGate/admin 权限可阻止,builtinPluginId 可隐藏重置按钮。不能把它实现成简单本地删一行。 - **remove 自定义 MCP**:editable 条件下进入确认框后 `mcp.remove(id)`;非 editable/plugin 来源项不应随意显示相同删除入口。源当前详情 unbind handler 本身没有二次确认框;legacy connector revoke、MCP remove 则有确认。 runtime toast 单独处理 `connector-prepare` 与 `connector-install`、progress/complete/error,按 operationId 去重,进度可无百分比,complete 延迟 300ms 关闭、error 5s。这说明存在二进制/package 准备/安装流程,不能用 loading UI 冒充安装已实现。实际包分发、校验、可执行进程与 transport 不在本轮 renderer 证据内。 ### 会话工具注入、权限和凭据 `useConversationConnectorSelection` 把 enabled 选择写 `conversation.config.setConnectors`,保存 name/displayName/description/connectStatus/activeStatus。后台 automation 的 selectionOnlyToggle/scope 来自已持久 config;scope cache 以会话 ID 分离,删除清理。lookup missing 与 unresolved 有区别,只有确定 missing 才 reconcile 删除;外部 auth 完成可自动选择。普通 local 与 cloud-input 操作取不同 facade/runtime key;必须保留不同会话/传输边界。 `prepareInput` 将 connectorIds 同步给输入 UI/configManager;send diagnostics 获取真实 states,不可把菜单“已选中”当作 supplier tools 已注入。专家依赖另有 connector connect/repair 与 custom MCP import/connect/authorize 路径;importServer 冲突可在该依赖分支重试 overwrite。实际工具如何注册内核、名称空间冲突/权限、进程调用与结果回写仍需 host/daemon证据及端到端验收。 SDK connectors/mcp/cloud 是 guest proxy;bridge 具有 trusted subject/authorizer 分支。MCP UI approve/configHash 是信任边界的可见证据,但不是已证实所有 host 调用都被正确授权。企业 policy、authScope(account/runtime)、登录过期、connector reason 和每工具 enabled 状态需要分别处理。原版 secret at rest、日志脱敏、OAuth callback/state/refresh/revoke、取消后迟到回调无副作用都没有真实认证验证;不能由 renderer 猜成已完成。 ## YCode 当前真实基线与依赖 本轮只读当前 YCode:`SettingsDialog` 的 supportedTabs 为 models/appearance;Sidebar 非新建任务导航仍提示尚未实现;`src/main`、`src/shared`、`src/preload` 的 connector/MCP 检索没有连接器 host/API 实现;`agent/tools/index.ts` 的 ALL_TOOLS 是 8 个本地文件/命令/问答/计划工具。现有 `workbuddy/conversation/ToolCallRenderer.tsx` 可展示 MCP 名称/参数/结果,recovered summary/词典包含 MCP 文本,均不构成运行 MCP 的证据。模型凭据存储已有实现也不能自动推出连接器凭据已接入。 | 范围 | 可由 YCode 自有实现 | WorkBuddy/第三方依赖或未知 | |---|---|---| | 原 DOM/CSS/搜索/详情/空态/busy | 可按固定源码及 REA 画面恢复 | 更多尺寸、hover、暗色、动态异常的原版基线待采 | | 自有目录与已添加持久化 | 可定义自有 catalog/provider 适配与 registry,保留状态契约 | 官方 listMarket/search/details 排序、更新、资产和企业目录依赖原版服务;静态快照不能称实时商店 | | Token/环境配置 | 自有 secret store、schema/blank-preserve/update-then-connect 流程 | 每个连接器的真实 token scope/可用性需第三方配置与验证 | | OAuth/device/QR | 自有授权状态机、外部浏览器/回调、取消/过期界面 | 不能复用 WorkBuddy 私有 account token/client registration;自有第三方 OAuth app/redirect 配置是实际依赖 | | 自定义 MCP host | 可实现 list/describe/tools/resources/prompts、trust、连接/取消/删除 | transport/包安装/原版 daemon 细节尚未证实;需要受控 server 与真实内核端到端 | | 会话选择/注入 | 可接现有 session/OMP host tools,主上下文决定接口 | 当前 OMP 通路通过不等于动态 MCP 注入/审批/取消等价 | | 企业管理、server-side OAuth、项目授权、WB内置业务 | 自有服务可另行提供对应能力 | 原版企业 policy、registry2cList/revocation、腾讯文档/ima/乐享 oneid gate、云任务 APIs 等依赖 WB/第三方;无权限不能伪造成功 | 这里是任务/依赖建议,不替主上下文决定生产模块架构或授权账号。 ## 可委派任务与验收矩阵 建议先冻结一组只读原版基线和状态契约,再分界面与 host 两条实现任务;未接入后端的状态只能在显式 QA fixture 演示,不写回生产“已连接”。 | 任务边界 | 交付与依赖 | 验收状态 | |---|---|---| | A. 商店/详情 source UI | 新连接器 page/modal 组件及作用域化原 CSS;依赖 catalog/state props | 1336×901 V2 原几何/字体/卡片/搜索;长标题、图标失败、空目录、无结果、load failure/retry、分页/stale search;官方/企业分支独立 | | B. MCP 管理与配置 UI | McpModal/McpPanel/JSON editor source DOM;仅UI helper与明确 host callbacks | 空/连接中/健康/未授权/错误/disabled/untrusted/readonly plugin;工具 toggle;JSON syntax/schema/nested/blank/dirty/cancel;删除确认;原版像素以采样状态逐个验证 | | C. Token/device/QR UI | 两种 Token 路径分别恢复,通用 schema helpers、source CSS | 必填trim/已有secret留空/新secret/默认值、update失败/connect失败/pending、busy Enter/Escape、取消;device 无code/embedded/复制失败/低剩余/过期。原版未真实授权的状态标未验 | | D. 自有连接状态服务 | registry、op queue、generation/intent guard、bounded poll/event、cancel/repair/disconnect/unbind | 重复connect、迟到snapshot、搜索换代、窗口隐藏、取消后迟到success、restart恢复;禁用与解绑不混;具体生产文件由主上下文分配 | | E. 自有 MCP host/凭据 | trust/configHash、server/tool enable、describe/resources/prompts、secret storage、host生命周期 | 自有受控 MCP server证明list→connect→toolcall→结果→cancel/remove;未trust不启动、config变更重审、密钥不回显;安装/transport支持只按实测声明 | | F. 会话与内核接线 | per-session选择/scope、prepareInput、动态工具注册/执行/approval | 两会话不串、selection-only不开新全局连接、disconnect后不发工具、tools:false不注入、MCP错误/cancel不混done、历史回放;必须真实 App/preload/IPC→OMP→MCP 验收 | | G. 第三方授权适配 | 在明确用户授权后接自有 provider OAuth/device/token;不使用WB私钥/账号 | 真实提供方 success/deny/expire/cancel/revoke/reauth/刷新;原版服务无法访问的分支独立标依赖,不拿受控PASS替代真实auth | 每个任务都需返回修改文件、source Evidence/SHA/offset、验证命令与结果、未验状态。视觉验收需要同内容/同宽度/同主题/同渲染条件和严格像素报告;token 一致/编译通过不能算 UI 或服务全量 1:1。 ## 下一批只读取证与未知项 Root 当前独占原版 runtime,本 worker 未操作原版。已确认可只读采:card 主体详情;“自定义连接器”入口打开 MCP 列表;配置编辑页展示读取。不要误点 card action plus、详情连接/试用/reset、MCP toggle/reconnect/approve/remove/save。 已补 V3 QQ 邮箱未连接详情 action 后截图(partial,无 action 后 layout)和 V4 稳定现有 MCP 列表截图/layout。尚需:详情 action 后静态 DOM、MCP empty/config editor 基线;搜索文本及清除/IME/空结果与分页;原版现存 server 展开后的 readonly tools/prompts/resources;企业 tab 是否可观察;暗色/窄宽/hover/键盘 focus/滚动和 toast 动效。Token/device/QR auth 动态状态本轮不触发,后续需明确授权或经 REA 的受控原版场景,不能用 YCode fixture 冒充已观察。 核心后端未知:主进程 connectors/mcp namespace 的实现路径、daemon RPC 与具体 transport/schema、安装包下载/完整性/重启策略、secret at rest/refresh/revoke、服务端 state machine/回调校验、会话工具实际注入/权限。图标有失败 fallback 的源逻辑与 V1/V2 外观,完整实际图标资源尚未逐项经 REA 导出,不能用截图存在代替资源字节已恢复。客户端可读分支已足够拆任务,但尚不足声称完整连接器功能已能 1:1 等价。 ## 本轮验证 `node --check scripts/audit-connectors.cjs` 与 `node scripts/audit-connectors.cjs`:退出 0;339/339 baseline、329/329 supplementary script hashes、3/3 CSS hashes 通过,同名 source 无变化。25 个相关脚本的 SHA/function offsets 已写机器报告;3 份归档 workbuddy PNG 与 V3 的 2 份 action frame 均按 REA 声明 hash 复验,并保留 V3 failed/steps/restoration 原始状态。所有原版事实来自上述 REA 归档;未跑生产修改测试,因为没有生产修改;未真实 auth/安装/启用。