# 专家本地创建、编辑与会话激活 2026-10-16。本轮继续实现专家模块。技能/MCP 的上一轮基线见《能力中心与本地能力接入-2026-10-16.md》。此处的功能通过不等于全状态 UI 1:1 通过。 ## 原版证据与恢复 原版为 WorkBuddy 5.8.2;安装包 SHA-256 `035254bc76310ea46317433e4840602094543ef323d2d5c5aff7c131729de918`。所有原版查看均经过 REA。 - `main/module.app-server.js`:`ev_81de6f628a156599f26ca795f6747ad3f8ec108de66fdba6e3723705905716f3`,SHA `281666dbf81b76d64f95162a19dd2d02a41b35ec54239e0efc4e8e52419eb125`。确认本地包、marketplace 索引、会话标记及激活身份。 - `expert-manager/SKILL.md`:`ev_3cba49fcb15fefc59f54c7691500ad1121a937edb55e606addae17e4186ebfef`。另恢复四份 references、五份 Python 管理脚本及插件 metadata,共 11 份原文。逐文件 SHA 和 Evidence 见 `src/main/capabilities/assets/expert-manager/rea-source-manifest.json`。 - 隔离 REA 文本 provider 正式增加 Markdown/Python 等文本后缀;自有 ASAR fixture、原回归和完整性检查通过。没有改全局 REA,也没有执行原包 Python。 - 恢复 CreatedExpertCard、CreatedExpertsPanel、菜单、删除框等 25 个源码体及 273 条 CSS;恢复专家选择器 10 个源码体/中文文案及样式。原几何和宿主适配范围分别见《created-expert-source-20261016.md》《expert-picker-source-20261016.md》。 ## 已实现 “创建专家”采用原默认提示词并引用 `skill://expert-manager`;“修改专家”采用带专家 ID 的原编辑提示词。两者进入新的管理任务,保留空间/模型,解除当前专家角色绑定。 管理器使用恢复的完整正文与资源,经过明确的 YCode 宿主适配调用 `ycode_expert_package`:read → write → validate → register。包结构继续采用 `.codebuddy-plugin/plugin.json`、Agent MD、skills 和同级资源。主进程接管固定目录、marketplace 索引与会话标记;不会写入 WorkBuddy 数据。 专家包存储在 YCode userData 下的 `plugins/marketplaces/my-experts/plugins/`。草稿按会话隔离;注册前校验必填展示字段、三标签/提示词、Agent YAML 与真实资源。原版建议项保留为警告。编辑保留未修改文件及二进制资源;固定 name/agentName,冲突必须 refresh 重读。目录/资源拒绝越界及符号链接;注册采用临时目录和备份,删除先改名再提交索引。 “我的专家”接真实注册目录及源码卡片,支持搜索、预览、召唤、编辑、打开目录和删除。删除失败保留原弹窗。输入框+菜单接源码专家选择器,支持搜索、置顶/最近、选择当前专家、异步失败保持与任务作用域隔离。 会话保存 expertId。回合开始读取一个一致的包快照,注入真实 Agent 正文及技能资源,并为助手消息保存专家展示身份;后续切换不会重命名旧回复。移除专家后明确恢复默认助手角色。MCP 依赖检查已连接/受信任及相应命令、参数、传输和目录;快照先取连接代次,配置替换会使旧执行失效。 首次发送创建会话后,将输入、附件、资源和技能迁移到新会话 owner;主进程 preflight 拒绝时保留,成功时才清空。专家资源读取使用包内自有文本键,不允许命中对象原型。 ## 验证 - `npm run build`:包含 node/web TypeScript,通过。日志 `.tmp/expert-build-20261016.log`。 - `node scripts/test-experts-backend.mjs`:73 项(59 操作、14 实际新 Electron 进程恢复/删除)通过。最终重验 `.tmp/experts-backend-LSzrsZ/report.json`。 - `node scripts/rea/recover-created-experts.mjs --check --native-qa`:34 项,0 HTTP/renderer error,`.tmp/created-expert-source-H0svkz/report.json`。 - 专家选择器原生验证:39 项,`.tmp/expert-picker-native-iFW4nG/report.json`。 - `node scripts/test-capability-gateway.mjs`:17 项通过,`.tmp/capability-gateway-GsHx96/report.json`。 - OMP 生命周期、Chat、Persistence、Conversation 回归通过。持久化 fixture 将取消触发条件改为首行文本,以覆盖附带能力上下文的真实 prompt;未删除 partial/disk/cancel 断言。 - 整应用 UI → preload/IPC → 实际 OMP → localhost 受控上游验证:创建/资源读取/写包/校验/注册、原生 hover 召唤、专家指令和身份、编辑、实际新进程恢复已通过 39 项。`.tmp/expert-flows-pR6WCR/README.md` 是首轮完整结果;最终新增无模型 preflight 草稿保留验收另记于下方。 最终构建整应用验收:`node scripts/verify-expert-flows.cjs`,**51/51 通过**(40 主阶段、11 新进程恢复),`.tmp/expert-flows-2nE9Bc/report.json` / `README.md`。主进程构建 SHA `16b15106c73c25ba04ae6e679b655c77bb8e7cefd33c7735dc1d9d53effe8b51`,两阶段一致。真实 UI 先在无模型状态发送,确认新会话 owner 下原文/技能保留、0 消息;随后配置本地受控模型,在同会话不重填草稿重试成功。整个成功流程 13+1 次 localhost 请求。早期错误 QA 前置未清除默认模型,收到远程 401;失败事实留在 `qa-history.json`,未算作通过或远程效果证据;最终脚本清空默认 profile 且发送前检查只允许 127.0.0.1。 独立快照/事务故障注入 **15/15 通过**:`.tmp/expert-review-snapshot-HDKwX1/report.json`。覆盖同回合单文档、MCP 参数 gate、提交/清理失败、回滚、坏索引与原型资源键。该测试的 MCP 状态为受控 fixture;真实 SDK 代次失效的覆盖来自已有能力网关测试。 最终构建已重启更新用户 YCode(PID 59256),更新前确认无运行回合、无附件/能力引用草稿、设置窗口关闭;文本草稿与会话 owner 经过备份/恢复/再检查。没有将隔离 QA 专家写进用户目录,也未改变用户模型配置。 独立审查发现并修复了旧编辑覆盖、同回合身份/正文竞态、英文搜索、MCP 参数匹配、删除事务、原型资源键及首次发送草稿丢失。未将测试工具的成功返回替代真实磁盘或模型输入验证。 ## 尚未完成的等价性 本轮 OMP 使用宿主能力上下文和工具适配专家包,尚未证明等同于原版原生 agent/plugin 注册、切换及工具发现。Python 生命周期由主进程受控工具适配,不能称为原样运行原版 daemon。 专家团可显示/编辑/校验包;调度未接入,激活明确拒绝。ImageGen 未接入,不能宣称已生成头像。当前工具写入文本包,新增二进制头像自动复制/生成尚未打通。云端专家市场、购买、OAuth/云连接器仍未接入。 预览详情、Popover/Tooltip、完整+菜单入口和已选专家首页布局仍有宿主适配;创建完成后的原版右侧专家产物自动预览及外部文件实时 watcher 尚未完成。组件源码恢复和局部几何通过,不代表同状态截图、所有主题/极窄窗口/动效/字体字形已通过像素验收。 受控上游证明产品链路,不证明任意模型均能按规范产出专家包。原版云端账号与数据未修改。