fix(codex): add native marketplace manifest#402
Conversation
|
✅ OpenCodeReview: No comments generated. Looks good to me. |
lizhengfeng101
left a comment
There was a problem hiding this comment.
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):
.agents/plugins/marketplace.json← 本 PR 新增.agents/plugins/api_marketplace.json.claude-plugin/marketplace.json← 仓库已有.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"
}
]
}这样两个平台的插件都能被发现,也避免了遮蔽风险。
你觉得这个方向怎么样?
|
感谢指出 marketplace 的优先级问题。你说得对,Codex 在仓库根目录发现多个 manifest 时会优先选择 我用隔离环境分别验证了两个客户端:Codex 能发现并安装 Codex 插件;Claude Code 在同一仓库下仍能从 #350 的目的正是隔离 Claude Code 的安装包。若把 Codex 条目加入 不过只要 Codex 能正常运行,两种方案我都可以配合。 |
|
我猜测你的顾虑是 Codex 只读取一个 manifest,因而不会同时列出 |
|
对,核心顾虑就是 Codex 的 统一 manifest 的方案最简单:在现有 麻烦按这个方向调整一下,感谢 🙏 |
|
@lizhengfeng101 感谢确认,已按统一 manifest 的方向调整(commit cd76e05):
补充一点:实际 Codex CLI 会校验 marketplace 条目名必须与 已在隔离环境中实际验证 Codex 和 Claude Code 的安装与缓存内容,并通过 JSON/插件校验、 |
问题
#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:open-code-review,继续指向./plugins/open-code-review/claude-code;open-code-review-codex,指向./plugins/open-code-review;.codex-plugin/plugin.json的name同步为open-code-review-codex。实际 Codex CLI 要求 marketplace 条目名与该 manifest 名完全一致,否则拒绝安装;.agents/plugins/marketplace.json。这保留了现有 Claude Code 的安装名,同时让 Codex 能发现自己的插件包。
验证
在隔离的临时客户端状态中验证:
open-code-review-codex@open-code-review;缓存包含.codex-plugin/plugin.json和两个 skills;open-code-review@open-code-review,缓存仅包含其 manifest 和 commands;go vet ./...与make build均通过;