Files
ycode/docs/能力中心与本地能力接入-2026-10-16.md

66 lines
8.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
> 后续专家实施已推进:真实创建/编辑/注册/会话激活及整应用51项通过,见[专家本地创建与激活](专家本地创建与激活-2026-10-16.md)。本文原“专家未实现”保留为前一轮基线,完整1:1尚未验收。
# 能力中心与本地能力接入(2026-10-16)
上一轮拆解已进入生产实现:侧栏入口、统一管理中心、本地技能与自定义 MCP 已接入真实服务,并进入完整应用验收。本轮没有改动原版账号、技能、连接器或任务,也没有向原版发送消息。云端服务与专家团调度仍按用户要求后置。
## 已实现范围
| 部分 | 真实行为 | 验证边界 |
| --- | --- | --- |
| 管理中心 | 侧栏入口、专家/技能/连接器切换、搜索/管理/详情入口;切换保留聊天组件与草稿,右栏按原会话保存 | 原版源 tab、header、卡片、SVG、token、基础组件规则已恢复;全状态像素尚未通过 |
| 本地技能 | 文件夹/SKILL.md/ZIP 导入、同名覆盖、启停、读取正文和资源、修改检测、导出、卸载;发现空间 `.agents/skills` 与 `.claude/skills` | 受管副本存于 userData;卸载保留导入源。空间技能只启停/读取,不能由受管卸载接口删除 |
| 技能会话联动 | 输入框添加菜单与 `/` 打开技能选择;搜索、置顶、最近使用;按草稿 owner 保存选择,消息持久化 `skill://` 引用;编辑/重发保留引用 | 新回合读取真实技能指令。手动调用与模型自动调用的 metadata flags 分开处理;并非原版完整富文本编辑器恢复 |
| 自定义 MCP | JSON/Monaco 编辑、配置 hash 批准、stdio 与 Streamable HTTP、分页发现工具、整服务/逐工具开关、重连、删除、取消与退出释放 | 实际 SDK client/server 往返;旧回合不能借配置变更调用新服务。第三方 Token/OAuth/device-code 尚未接入 |
| 对话运行时 | OMP 与备用 Gateway 共享动态工具快照/分派;自动加载技能、受限技能资源读取、MCP 调用审批与真实结果 | 两个内核分别经过受控真实本地服务验证,不以此证明原版内核等价 |
| MCP 消息视图 | 保留实际协议工具名;使用 server/tool 身份元数据投影到已有原版 `mcp_call_tool` 专用视图,审批显示可读名称 | 只改变展示投影,历史回传仍使用真实工具名;全状态像素未验收 |
| 专家页面 | 源导航、我的专家空态、创建入口、搜索/分类;缓存参考条目明确只读且不可激活 | 创建按钮目前返回真实新草稿讨论职责/依赖;尚未创建、发现、导入或激活专家包 |
## 集成选择与修复
三类能力独立于聊天 store;`src/shared/capabilities.ts` 定义类型契约,preload 仅暴露受控方法。会话层保存技能稳定 ID/URI 和实际回合上下文,以恢复原生分支及备用内核历史。连接器凭据使用系统 safeStorage,只返回字段名;本地注册表和技能安装通过原子提交保存。
不可用 MCP 在启动时后台连接,普通发送不会等待它的网络握手。回合只捕获已连接工具、连接 generation 与配置 hash;禁用、删除和改配置使旧调用失败,只有用户回合 signal 才产生用户取消语义。受管技能损坏、缺失或 YAML 无效时保留可定位/卸载的禁用条目,避免无关坏包阻断普通聊天。
完整应用启动验收发现主进程使用 ESM 产物却依赖 `__dirname`;改为 `dirname(fileURLToPath(import.meta.url))`,sandbox preload 继续 CommonJS。弹层继承管理中心主题变量,避免 portal 脱离作用域。源码几何验收还补齐了 Input/Button/Segmented 基础规则,修正空态垂直偏移。
## 验证
完整应用脚本 `scripts/verify-capability-flows.cjs` 使用隔离 userData/OMP profile、生产 renderer/preload/IPC、实际 OMP、真实 SDK stdio 服务和受控 OpenAI 上游。覆盖草稿往返、技能真实安装、Monaco JSON 保存、hash 批准、四个工具分页发现、技能引用、聊天内工具审批、真实结果渲染、模型自动加载,以及全新 Electron 进程的持久化和后台重连。
文件选择只控制 OS picker 的返回路径;JSON 编辑走实际 Monaco paste 事件,未改模型或连接器的后台状态来伪造 UI 成功,也未触碰系统剪贴板。模型/空间测试数据通过生产 IPC 设置于隔离目录;原版未参与该运行验收。父测试进程检查每阶段报告存在且 PASS,防止 Electron `app.quit()` 退出码掩盖失败。此前失败的独立目录保留,不计入通过。
详细最终结果与本机更新状态见文末验收记录;模块证据和局部测试分别见 [专家/统一中心实现](capability-center-implementation-20261016.md)、[技能实现](skills-implementation-20261016.md)、[MCP 实现](mcp-implementation-20261016.md)。已有对话、取消、持久化回归也已运行。少数旧 Node 测试在捆绑 YAML 后需要 `createRequire` ESM banner,已修正测试加载方式,未 mock 新生产能力以绕过失败。
## 原版证据
目标 WorkBuddy 5.8.2;ASAR SHA `035254bc76310ea46317433e4840602094543ef323d2d5c5aff7c131729de918`。所有原版信息均经 REA,包括本轮补采空态 SVG;本地恢复脚本只解析保存的 REA 正文。
- 基准 renderer JS:`ev_717fa5e846e64d67ac19c8925d121bff632c0d3aefb3603b10858559cabb2dcb`。
- 技能市场模块:`ev_e8faf60b3d22b99ede302f2d0efdfb3145f53f59789d4a345f5892dc13a589a4`。
- CSS:`ev_377c8790468b3c67dad8577aabb327f98d3140659f0fffdbabfcff5a40cc9e94`。
- 原版运行态截图、partial probe 限制和各模块 SHA/offset 见 [总拆解](专家技能连接器拆解-2026-10-16.md) 及模块恢复 manifest。
## 还需继续
1. 通过 REA 补 `expert-manager` 真正正文、专家包 schema、产出发现及 daemon 激活契约,接本地专家创建/编辑/导入、依赖与会话身份。当前角色咨询草稿不能算专家创建完成。
2. 技能详情的完整资源预览、URL 导入、更新、原版 Tooltip/Avatar/富文本引用和输入选择细节。目录、扫描、云同步、权益与购买依赖服务,当前诚实显示不可用。
3. 第三方应用连接器的 Token/OAuth/device-code、修复/取消/解绑及云目录;当前仅自定义 MCP 本地能力闭环。
4. 固定相同数据、视口、主题、侧栏宽度与渲染环境,逐项验收正常/空态/加载/错误/授权/编辑/禁用/窄窗/键盘/动效。局部源码与几何一致不代表整页或整个模块 1:1 已完成。
## 最终验收与本机更新
| 验证 | 结果与记录 |
| --- | --- |
| 生产 build + node/web typecheck | PASS,`.tmp/capability-build-20261016.log` |
| 完整应用 → 实际 OMP → 真实 MCP + 技能自动加载 → 新进程恢复 | 14 项主流程 + 6 项重启 PASS,`.tmp/capability-flows-n92g8Y/report.json`;包含结构化引用、实际工具身份、REA 专用 MCP renderer |
| 生产备用 Gateway → 真实 MCP + 技能正文/资源 → 真实 HTTP 上游 | 17/17 PASS,`.tmp/capability-gateway-TxUvcv/report.json` |
| 技能文件系统 / 原生局部 UI | 59/59 与 37/37 PASS,`.tmp/skills-files-iAkonv/report.json`、`.tmp/skills-ui-fR8rWr/report.json` |
| MCP SDK host / 新进程恢复 / 篡改失信 | 36 + 7 + 2 项 PASS,`.tmp/mcp-backend-7PNwXc/`;另有13项原生管理 UI 与12项配置 helper 验证 |
| 中心与专家源几何 / 原生交互 | 33/33 PASS,`.tmp/capability-center-k6vN5H/report.json`;源 header64、tabs60/60/78、gap24、我的专家空态Y472.5/548.5、创建108px/14px、右侧动作300px、稳定参考卡156px;IME/主题/480窄窗等已验 |
| 既有聊天回归 | `test:omp`、`test:chat`、`test:persistence`、`test:conversation` PASS;OMP 生命周期/取消/磁盘终态保持 |
当前用户 YCode 已加载最终 renderer `index-C0lP5ThT.js`,技能/MCP API 和侧栏入口可用。更新前确认无运行回合、附件、资源引用、编辑消息或模型设置表单;测试安装/模型/MCP/会话均留在隔离目录,没有导入用户正式数据。一次更新助手的末尾 CDP 检查失败,保留恢复文件后单独确认最终构建已加载,再通过原会话行恢复 owner,验证原 owner 与空草稿完全一致才清理该恢复文件;最终记录 `.tmp/live-capability-update-20261016.json`。原模型及会话数据保留。
原版截图保存的侧栏宽为284.28125,本机独立验收默认280;该保存状态差异不拿来假定整页X坐标/像素相等。参考专家首卡宽度仍为322.578125,对照原在线长列表319.234375:缺少原长列表滚动条及推广/数据状态,尚有差异,明确保留后续验收。