组件修订 · 已实现并审查

Plugins、Skills 与 MCP 的统一管理方式

本文定义 OpenProgram 所有者如何在 Web UI 中发现、添加、配置、启用、诊断和移除三类扩展。读者是 Web 与运行时维护者。本任务不涉及 Programs、agent 专属允许列表、第三方市场治理或新包格式。

修订基线 74d971ff候选版本 5e754c2b审查通过无新增依赖

当前实现与已验证缺口

任务名称不同

Plugins 使用 Installed / Marketplace / Errors 和“Install”;Skills 使用 Browse / Discovery 和“New skill”;MCP 使用服务器侧栏、“Browse catalog”和“Add server”。相同用户意图在不同页面使用不同名称和位置。

失败行为不同

Skills 有页面错误栏。Plugin 初始加载可能失败却没有页面级错误。若干 MCP 修改操作忽略非 2xx 响应,使可见状态保持不变且没有说明。

状态信息密度不同

Plugins 展示信任与加载错误,Skills 展示启用状态,MCP 展示实时就绪状态和工具数量。页面框架未说明各计数代表已安装、已启用、已就绪还是失败。

重复的 MCP 发现入口

MCP 同时将 Discover 用作二级标签和顶层操作。该标签仅打开模态框,而 Installed 仍保持激活,因此导航状态与可见内容不一致。

共享任务模型

用户任务PluginsSkillsMCP 服务器
已安装已安装的包本地及内置 SKILL.md 条目已配置的服务器
发现市场索引已配置的技能目录精选及自定义 MCP 目录
添加安装包或本地路径从目录安装或本地创建安装目录条目或手动配置
可用性已启用 + 已加载已启用已启用 + 已就绪
诊断验证与加载错误解析/加载错误连接错误与工具
移除卸载删除自有技能删除配置

目标 Web 界面

视觉系统由共享条目组件定义。已安装条目使用统一行结构;发现条目使用统一目录卡片结构。页面保持开放背景,与 OpenProgram 其余界面一致。

能力
PluginsSkillsMCP
搜索刷新
已安装 8发现问题 1
6 项可用添加插件
无法刷新插件列表:需要身份验证。请从 App 打开 OpenProgram 后重试。
▦
browser 可用已验证
控制内嵌浏览器
已启用
▦
example-plugin 已禁用
本地插件 · 可在详情中查看验证
已禁用

状态与失败流程

公开页面操作

添加、启用、刷新、测试、更新或移除。控件进入忙碌状态,并保留操作名称。

→

类型化 JSON 请求

由一个客户端解析 error 和 FastAPI detail,保留 status/code,并抛出统一错误类型。

→

可观察结果

成功后刷新受影响集合和选择。失败在集合或对话框附近持续可见,并说明恢复操作。

采用、修改和拒绝的选择

采用

复用 ManagePageHeader, ManageSubnav, ManageRow、现有对话框、现有路由和原生 fetch。保留各子系统的后端与安全边界。

修改

统一任务用语、摘要位置、加载/错误反馈及请求错误解析。顶部工具栏仅包含搜索和刷新。二级标签决定主体内容,并包含唯一的添加操作。Plugins、Skills 和 MCP 共享相同的已安装行与发现目录卡片。MCP 详情采用标准详情对话框,不使用永久分栏布局。

拒绝

不添加装饰性外层主体边框,不采用 MCP 专属分栏页面结构,不重复发现操作,不使用发现模态框,不建立通用扩展后端,不合并持久化 schema,不引入新状态库。

参考比较:Claude Code 插件管理器支持已安装/发现/错误任务,但未定义 OpenProgram Skills 或 MCP 运行时就绪状态;opencode 的 MCP 和插件界面没有提供跨类型统一管理模型;Hermes 对技能分组,但缺少三类扩展的可用性摘要。因此目标采用共享任务用语,同时保留 OpenProgram 专属的 MCP 实时状态和 Skill 层级。

任务简述与验收

批准的来源本文;skills-and-plugins; mcp-integration;位于以下位置的当前公开路由:/plugins, /skills,以及 /mcp.
生产文件apps/web/components/capabilities/、三个管理页面组件目录、apps/web/components/ui/manage-page*,以及 apps/web/lib/net/fetch-client.ts.
RED 证据当任务用语/状态摘要不一致,或非 2xx 扩展请求没有可见错误路径时,专项可执行 Web 检查必须失败。
必要行为每种类型将已安装和发现作为决定主体内容的导航状态;顶部工具栏仅包含搜索与刷新;二级导航包含唯一的添加操作;二级标签比顶部能力标签使用更弱的视觉处理;不添加装饰性外层主体边框;Plugins、Skills 和 MCP 的已安装列表使用相同行结构;三个发现视图使用相同目录卡片结构;MCP 详情在标准详情对话框中打开,不使用永久分栏布局;计数明确区分已安装/可用/问题;修改操作展示进度、成功后的刷新和可操作错误。
兼容性现有 URL、API payload、存储数据、密钥掩码、目录来源、Skill 层级、插件信任确认和 MCP 重启/选择行为保持不变。
安全性不读取或回显已存储密钥。远程目录策略保留在服务端。UI 错误不得增加凭据或原始密钥值。
排除范围Programs、agent 允许列表、后端 schema 合并、Windows 工作、密钥环、新市场和插件运行时隔离。
门禁清单扩展管理专项检查;Web 单元测试;TypeScript/构建检查;所有者身份验证与密钥不可取回检查;文档链接检查;diff 检查;默认 App/18100 实例上的桌面可视验收及窄屏验收。

实现证据

先前视觉修订f6bad3ac → f43c327a 将添加移至二级任务栏并引入更弱的标签样式,但外层边框处理及 MCP 专属内部组件未符合批准的产品界面规范。
组件修订74d971ff → 5e754c2b。已移除装饰性主体边框和 MCP 分栏侧栏。已安装条目共享 ManageRow;三个发现视图共享 ManageCatalogCard;MCP 详情使用标准 Dialog。
RED / GREEN专项检查起初因缺少共享条目/卡片约定而失败,随后连同无障碍关联、所有者身份验证、密钥不可取回、TypeScript、51 项 Web 单元测试、生产构建、文档链接及 diff 检查一起通过。
审查在以下版本完善标签/面板、Switch 和文件夹按钮语义后,规格审查通过:ff3ec9a1。在以下版本补充对话框内 MCP 错误及真实 Plugins/Skills 加载状态后,质量审查通过:5e754c2b.
剩余门禁可视验收明确留给用户提供截图或直接检查。完整 Web 门禁仍在此前已复现、位于本子系统之外的 check:center-tabs 目标提示断言处停止。