Skip to content

[v2] Plugins 页去掉所有假的安装:无服务端支持的类型只浏览 - #366

Merged
EricWvi merged 6 commits into
ora-space:mainfrom
TannyXie:fix/1098-no-fake-plugin-install
Nov 13, 2026
Merged

EricWvi merged 6 commits into
ora-space:mainfrom
TannyXie:fix/1098-no-fake-plugin-install

Conversation

@TannyXie

Copy link
Copy Markdown
Contributor

做了什么

Plugins 页去掉所有假的安装:没有服务端支持的插件类型一律只浏览。

  1. 服务端:installSpacePlugin 只允许 Skill 和官方工作流插件安装;市场 Agent、Hook、MCP、合集等新建选择返回 400 plugin_kind_not_installable(预装 Agent 仍返回 409 plugin_runtime_managed)。去掉目录同步时补的无包体示例 Hook(WithDemoHook)。
  2. 前端:
    • 市场 Agent、Hook、MCP、合集:只浏览,显示「暂不支持安装」,无安装/移除按钮。
    • 预装 OpenCode/Claude Code:只读显示「运行时预装」,无安装操作。
    • 非官方工作流插件(Workflow Examples):只浏览。
    • 去掉 install-delay.ts(3–5 秒随机等待);去掉 withDemoCatalog 补的 MCP 本地条目;去掉浏览器本地假安装状态在 Plugins 页的使用。
    • Skill 与官方工作流插件的真实安装/移除不变。
  3. README:v2-server 与 settings 说明同步。

决策待 owner 确认(#1129 已提,暂按推荐方案实现)

  • 已有这类选择怎么处理:按推荐方案「保留只读展示」(badge 显示「仅空间选择」,无操作按钮),不清除数据。
  • 非官方工作流插件:按推荐方案「只浏览」。

测试

  • v2-server:TestPluginMarketLifecycle 断言市场 Agent 安装被拒;TestHookInstallIsRejected;去掉 WithDemoHook 相关测试并更新 Syncer 断言;go test ./... 全绿。
  • 前端:page.test.tsx 覆盖市场 Agent/Hook/MCP/非官方工作流/预装 Agent 无安装入口、Skill/官方工作流照常安装;808 个测试、typecheck、lint、build 全绿。
  • e2e settings.spec.ts:相关场景改为只浏览断言;本地 16/17 通过(1 个「owner manages a space market」在全量序列下偶发 502,单跑通过,为本地网络时序问题、与本次改动无关,CI 直连公网不受影响)。

v2 流程,送审附截图(见运行 issue)。

@EricWvi EricWvi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

服务端的改动方向对:新建市场 Agent、Hook、MCP 选择返回 plugin_kind_not_installable,预装 Agent 仍是 plugin_runtime_managed,工作流插件不限来源,WithDemoHook 已去掉。

前端没有按 owner 在 circus 运行 issue 里的结论做(见那里 11-13 01:28 和 01:32 的两条评论),需要修改:

  1. 不挂「仅空间选择」标记(frontend-v2/src/features/settings/plugins/page.tsx:50、:588)。市场 Agent、Hook 一律只浏览,也不显示已选状态。已有的数据库记录不动。
  2. 删掉 localWorkflow 白名单(frontend-v2/src/lib/settings-demo/plugin-catalog.ts:41-59,以及 page.tsx 里用到它的 3 处)。所有 workflow 插件,包括官方的 workflow-examples 和自定义来源的,都走服务端安装和移除;服务端路径本来就不看来源。再补一条 v2-server 测试:从带凭据的自定义来源安装一个工作流插件,能下载、校验并导入。
  3. 假的安装移到演示 mock,不直接删:放进 frontend-v2/src/lib/demo/,照 dts.ts 的写法经 demoMockEnabled() 接入,只有 VITE_DEMO_MOCK=1 时生效,状态只存浏览器、不发安装请求。要移过去的有:预装 Agent 的「安装」、MCP 示例条目和安装、Hook 示例条目和安装、市场 Agent 的安装、3–5 秒随机等待。测试覆盖开关打开和关闭两种情况。
  4. 已有的用户市场 Agent 选择也不能更新(v2-server/internal/store/plugins.go 的 installSpacePlugin):现在只在 ErrNotFound 分支拒绝,requested_by_user_id 不为空的旧记录走更新分支,仍然能重新安装或升级。更新分支也要对非 Skill、非工作流的类型返回 plugin_kind_not_installable,并补测试。

工作流编辑器的「添加 MCP」:owner 同意部署版没有候选项(MCP 执行归另一个事项)。VITE_DEMO_MOCK=1 时,示例 MCP 随第 3 条的 mock 回来,在工作流编辑器里也能选到。

改完后重新附截图送审,截图要包括非官方工作流插件可以安装。

@TannyXie
TannyXie force-pushed the fix/1098-no-fake-plugin-install branch from 69e77d6 to 2ac6990 Compare November 13, 2026 05:37
@TannyXie
TannyXie force-pushed the fix/1098-no-fake-plugin-install branch from 2ac6990 to d2787aa Compare November 13, 2026 05:47
@EricWvi
EricWvi merged commit 62ccdaa into ora-space:main Nov 13, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants