Skip to content

fix(codex): add native marketplace manifest#402

Merged
lizhengfeng101 merged 2 commits into
alibaba:mainfrom
JIAFALSEDREAM:fix/codex-marketplace
Jul 20, 2026
Merged

fix(codex): add native marketplace manifest#402
lizhengfeng101 merged 2 commits into
alibaba:mainfrom
JIAFALSEDREAM:fix/codex-marketplace

Conversation

@JIAFALSEDREAM

@JIAFALSEDREAM JIAFALSEDREAM commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

问题

#350 将 Claude Code 插件隔离到 plugins/open-code-review/claude-code 后,Codex 仍从同一个 marketplace 发现插件。Codex 只使用优先级最高的一个 marketplace manifest;若新增 .agents/plugins/marketplace.json,会遮蔽已有的 .claude-plugin/marketplace.json

修复

使用现有的 .claude-plugin/marketplace.json 作为统一 marketplace:

  • 保留 Claude Code 条目 open-code-review,继续指向 ./plugins/open-code-review/claude-code
  • 新增 Codex 条目 open-code-review-codex,指向 ./plugins/open-code-review
  • .codex-plugin/plugin.jsonname 同步为 open-code-review-codex。实际 Codex CLI 要求 marketplace 条目名与该 manifest 名完全一致,否则拒绝安装;
  • 删除会产生遮蔽的 .agents/plugins/marketplace.json

这保留了现有 Claude Code 的安装名,同时让 Codex 能发现自己的插件包。

验证

在隔离的临时客户端状态中验证:

  • Codex 可从本地 marketplace 发现两个条目,并能安装 open-code-review-codex@open-code-review;缓存包含 .codex-plugin/plugin.json 和两个 skills;
  • Claude Code 仍可安装 open-code-review@open-code-review,缓存仅包含其 manifest 和 commands;
  • JSON 校验、Codex 插件校验、go vet ./...make build 均通过;
  • 对最终 diff 的独立 OCR 审查未发现问题。

@CLAassistant

CLAassistant commented Jul 18, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@github-actions

Copy link
Copy Markdown
Contributor

OpenCodeReview: No comments generated. Looks good to me.

@lizhengfeng101 lizhengfeng101 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Hi @JIAFALSEDREAM 👋 感谢这个 PR!问题定位得很准——#350 隔离 Claude Code 插件后,Codex 确实找不到 .codex-plugin 和 skills 了。

不过看了一下 Codex 的源码(codex-rs/core-plugins/src/marketplace.rs),发现一个潜在的遮蔽问题想和你讨论一下:

Marketplace 发现机制

Codex 的 find_marketplace_manifest_path 按优先级扫描以下路径,命中第一个就返回find_map):

  1. .agents/plugins/marketplace.json ← 本 PR 新增
  2. .agents/plugins/api_marketplace.json
  3. .claude-plugin/marketplace.json ← 仓库已有
  4. .cursor-plugin/marketplace.json

所以如果本 PR 合入后,.agents/plugins/marketplace.json 会遮蔽已有的 .claude-plugin/marketplace.json,导致 Claude Code 的插件(指向 ./plugins/open-code-review/claude-code)无法被 marketplace 发现。

建议的替代方案

既然 Codex 本来就能读 .claude-plugin/marketplace.json,更简单的做法是直接在现有的 marketplace 里增加一条 Codex 插件入口,不需要新建文件:

{
  "name": "open-code-review",
  "owner": {
    "name": "alibaba"
  },
  "description": "AI-powered code review agent...",
  "plugins": [
    {
      "name": "open-code-review",
      "source": "./plugins/open-code-review/claude-code",
      "description": "Perform AI code review on Git diffs...",
      "version": "1.0.0",
      "license": "Apache-2.0"
    },
    {
      "name": "open-code-review-codex",
      "source": "./plugins/open-code-review"
    }
  ]
}

这样两个平台的插件都能被发现,也避免了遮蔽风险。

你觉得这个方向怎么样?

@JIAFALSEDREAM

Copy link
Copy Markdown
Contributor Author

感谢指出 marketplace 的优先级问题。你说得对,Codex 在仓库根目录发现多个 manifest 时会优先选择 .agents/plugins/marketplace.json;本 PR 正是依赖这一点,让 Codex 选中 plugins/open-code-review/ 下包含 .codex-plugin 和 skills 的包。

我用隔离环境分别验证了两个客户端:Codex 能发现并安装 Codex 插件;Claude Code 在同一仓库下仍能从 .claude-plugin/marketplace.json 正常发现并安装 open-code-review,且缓存内容只有 claude-code/ 下的 manifest 和 commands。

#350 的目的正是隔离 Claude Code 的安装包。若把 Codex 条目加入 .claude-plugin/marketplace.json,需要另起名称以避免同名冲突,也会让 Claude Code 再次看到指向共享目录的入口。

不过只要 Codex 能正常运行,两种方案我都可以配合。

@JIAFALSEDREAM

Copy link
Copy Markdown
Contributor Author

我猜测你的顾虑是 Codex 只读取一个 manifest,因而不会同时列出 .claude-plugin/marketplace.json 中的 Claude 条目;如果这是需要保留的能力,我可以按统一 manifest 的方案调整。

@lizhengfeng101

Copy link
Copy Markdown
Collaborator

对,核心顾虑就是 Codex 的 find_map 只命中第一个 manifest——新增 .agents/plugins/marketplace.json 后,.claude-plugin/marketplace.json 就被遮蔽了,Claude Code 侧的插件发现会断掉。

统一 manifest 的方案最简单:在现有 .claude-plugin/marketplace.jsonplugins 数组里加一条 Codex 入口就行,不需要新建文件。两个客户端都能从同一个 manifest 发现各自的插件,也不存在遮蔽风险。

麻烦按这个方向调整一下,感谢 🙏

@JIAFALSEDREAM

Copy link
Copy Markdown
Contributor Author

@lizhengfeng101 感谢确认,已按统一 manifest 的方向调整(commit cd76e05):

  • 删除了 .agents/plugins/marketplace.json
  • 保留 Claude Code 的 open-code-review 条目与原安装路径;
  • 在现有 .claude-plugin/marketplace.json 中新增 open-code-review-codex 条目,指向 Codex 插件根目录。

补充一点:实际 Codex CLI 会校验 marketplace 条目名必须与 .codex-plugin/plugin.jsonname 完全一致。仅新增别名会导致安装失败,因此我同时将 Codex manifest 名对齐为 open-code-review-codex;Claude Code 原有安装名和用户可见的 Open Code Review 显示名保持不变。

已在隔离环境中实际验证 Codex 和 Claude Code 的安装与缓存内容,并通过 JSON/插件校验、go vet ./...make build 和最终 diff 审查。

@lizhengfeng101 lizhengfeng101 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM

@lizhengfeng101
lizhengfeng101 merged commit d75f945 into alibaba:main Jul 20, 2026
2 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.

3 participants